From 14a4a4fec0221e07472e492403c90b00a9a4ab0f Mon Sep 17 00:00:00 2001 From: Infi Date: Sat, 18 Feb 2023 14:59:35 +0100 Subject: [PATCH] feat: auto reconnect (3 attempts) --- .../components/chat/DisconnectedNotice.kt | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/app/src/main/java/chat/revolt/components/chat/DisconnectedNotice.kt b/app/src/main/java/chat/revolt/components/chat/DisconnectedNotice.kt index c4af2107..2f97631d 100644 --- a/app/src/main/java/chat/revolt/components/chat/DisconnectedNotice.kt +++ b/app/src/main/java/chat/revolt/components/chat/DisconnectedNotice.kt @@ -12,6 +12,9 @@ import androidx.compose.material.icons.filled.Warning import androidx.compose.material3.Icon import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector @@ -60,6 +63,23 @@ fun DisconnectedNotice( state: DisconnectionState, onReconnect: () -> Unit ) { + val retries = remember { mutableStateOf(0) } + + LaunchedEffect(state) { + when (state) { + DisconnectionState.Disconnected -> { + if (retries.value < 3) { + onReconnect() + retries.value++ + } + } + DisconnectionState.Connected -> { + retries.value = 0 + } + else -> Unit + } + } + when (state) { DisconnectionState.Disconnected -> DisconnectedNoticeBase( background = Color(0xfffe4654),