Inject SignalWebSocket into IncomingMessageObserver.

Resolves #13820
This commit is contained in:
Oscar Mira
2024-11-22 20:02:57 +01:00
committed by Greyson Parrelli
parent 0913b84657
commit 10d394f39e
5 changed files with 10 additions and 10 deletions

View File

@@ -339,7 +339,7 @@ object AppDependencies {
fun provideMegaphoneRepository(): MegaphoneRepository
fun provideEarlyMessageCache(): EarlyMessageCache
fun provideMessageNotifier(): MessageNotifier
fun provideIncomingMessageObserver(): IncomingMessageObserver
fun provideIncomingMessageObserver(signalWebSocket: SignalWebSocket): IncomingMessageObserver
fun provideTrimThreadsByDateManager(): TrimThreadsByDateManager
fun provideViewOnceMessageManager(): ViewOnceMessageManager
fun provideExpiringStoriesManager(): ExpiringStoriesManager

View File

@@ -207,8 +207,8 @@ public class ApplicationDependencyProvider implements AppDependencies.Provider {
}
@Override
public @NonNull IncomingMessageObserver provideIncomingMessageObserver() {
return new IncomingMessageObserver(context);
public @NonNull IncomingMessageObserver provideIncomingMessageObserver(@NonNull SignalWebSocket signalWebSocket) {
return new IncomingMessageObserver(context, signalWebSocket);
}
@Override

View File

@@ -75,7 +75,7 @@ class NetworkDependenciesModule(
val signalServiceMessageSender: SignalServiceMessageSender by _signalServiceMessageSender
val incomingMessageObserver: IncomingMessageObserver by lazy {
provider.provideIncomingMessageObserver()
provider.provideIncomingMessageObserver(signalWebSocket)
}
val pushServiceSocket: PushServiceSocket by lazy {

View File

@@ -31,6 +31,7 @@ import org.thoughtcrime.securesms.util.AlarmSleepTimer
import org.thoughtcrime.securesms.util.AppForegroundObserver
import org.thoughtcrime.securesms.util.SignalLocalMetrics
import org.thoughtcrime.securesms.util.asChain
import org.whispersystems.signalservice.api.SignalWebSocket
import org.whispersystems.signalservice.api.push.ServiceId
import org.whispersystems.signalservice.api.util.SleepTimer
import org.whispersystems.signalservice.api.util.UptimeSleepTimer
@@ -54,7 +55,7 @@ import kotlin.time.Duration.Companion.seconds
*
* This class is responsible for opening/closing the websocket based on the app's state and observing new inbound messages received on the websocket.
*/
class IncomingMessageObserver(private val context: Application) {
class IncomingMessageObserver(private val context: Application, private val signalWebSocket: SignalWebSocket) {
companion object {
private val TAG = Log.tag(IncomingMessageObserver::class.java)
@@ -238,7 +239,7 @@ class IncomingMessageObserver(private val context: Application) {
}
private fun disconnect() {
AppDependencies.signalWebSocket.disconnect()
signalWebSocket.disconnect()
}
@JvmOverloads
@@ -378,8 +379,7 @@ class IncomingMessageObserver(private val context: Application) {
waitForConnectionNecessary()
Log.i(TAG, "Making websocket connection....")
val signalWebSocket = AppDependencies.signalWebSocket
val webSocketDisposable = AppDependencies.webSocketObserver.subscribe { state: WebSocketConnectionState ->
val webSocketDisposable = signalWebSocket.webSocketState.subscribe { state: WebSocketConnectionState ->
Log.d(TAG, "WebSocket State: $state")
// Any change to a non-connected state means that we are not drained
@@ -394,7 +394,7 @@ class IncomingMessageObserver(private val context: Application) {
signalWebSocket.connect()
try {
while (isConnectionNecessary()) {
while (!terminated && isConnectionNecessary()) {
try {
Log.d(TAG, "Reading message...")

View File

@@ -101,7 +101,7 @@ class MockApplicationDependencyProvider : AppDependencies.Provider {
return mockk(relaxed = true)
}
override fun provideIncomingMessageObserver(): IncomingMessageObserver {
override fun provideIncomingMessageObserver(signalWebSocket: SignalWebSocket): IncomingMessageObserver {
return mockk(relaxed = true)
}