Add handling for AppExpiredConnection in LibSignalChatConnection:connect.

Co-authored-by: Cody Henthorne <cody@signal.org>
This commit is contained in:
andrew-signal
2025-03-28 11:30:52 -04:00
committed by Greyson Parrelli
parent defe94c4fa
commit 88fd8fb36b
5 changed files with 27 additions and 8 deletions

View File

@@ -310,7 +310,9 @@ class MainActivityListHostFragment : Fragment(R.layout.main_activity_list_host_f
when (state) {
WebSocketConnectionState.CONNECTING, WebSocketConnectionState.DISCONNECTING, WebSocketConnectionState.DISCONNECTED -> proxyStatus.setImageResource(R.drawable.ic_proxy_connecting_24)
WebSocketConnectionState.CONNECTED -> proxyStatus.setImageResource(R.drawable.ic_proxy_connected_24)
WebSocketConnectionState.AUTHENTICATION_FAILED, WebSocketConnectionState.FAILED -> proxyStatus.setImageResource(R.drawable.ic_proxy_failed_24)
WebSocketConnectionState.AUTHENTICATION_FAILED,
WebSocketConnectionState.REMOTE_DEPRECATED,
WebSocketConnectionState.FAILED -> proxyStatus.setImageResource(R.drawable.ic_proxy_failed_24)
else -> proxyStatus.visibility = View.GONE
}
} else {

View File

@@ -9,6 +9,7 @@ import io.reactivex.rxjava3.kotlin.subscribeBy
import io.reactivex.rxjava3.schedulers.Schedulers
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.util.TextSecurePreferences
import org.whispersystems.signalservice.api.util.SleepTimer
import org.whispersystems.signalservice.api.websocket.HealthMonitor
@@ -17,7 +18,6 @@ import org.whispersystems.signalservice.api.websocket.WebSocketConnectionState
import org.whispersystems.signalservice.internal.websocket.OkHttpWebSocketConnection
import java.util.concurrent.Executor
import java.util.concurrent.Executors
import kotlin.concurrent.Volatile
import kotlin.time.Duration
import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.seconds
@@ -80,6 +80,12 @@ class SignalWebSocketHealthMonitor(
TextSecurePreferences.setUnauthorizedReceived(AppDependencies.application, true)
}
}
WebSocketConnectionState.REMOTE_DEPRECATED -> {
if (!SignalStore.misc.isClientDeprecated) {
Log.w(TAG, "Received remote deprecation. Client version is deprecated.", true)
SignalStore.misc.isClientDeprecated = true
}
}
else -> Unit
}

View File

@@ -142,6 +142,7 @@ public class EditProxyFragment extends Fragment {
proxyStatus.setTextColor(getResources().getColor(R.color.signal_accent_green));
break;
case AUTHENTICATION_FAILED:
case REMOTE_DEPRECATED:
case FAILED:
proxyStatus.setText(R.string.preferences_connection_failed);
proxyStatus.setTextColor(getResources().getColor(R.color.signal_alert_primary));