diff --git a/vector/src/main/java/im/vector/app/VectorApplication.kt b/vector/src/main/java/im/vector/app/VectorApplication.kt index 240bbca908..f57c143aa3 100644 --- a/vector/src/main/java/im/vector/app/VectorApplication.kt +++ b/vector/src/main/java/im/vector/app/VectorApplication.kt @@ -43,6 +43,7 @@ import im.vector.app.core.di.DaggerVectorComponent import im.vector.app.core.di.HasVectorInjector import im.vector.app.core.di.VectorComponent import im.vector.app.core.extensions.configureAndStart +import im.vector.app.core.extensions.startSyncing import im.vector.app.core.rx.RxConfig import im.vector.app.features.call.webrtc.WebRtcCallManager import im.vector.app.features.configuration.VectorConfiguration @@ -162,11 +163,15 @@ class VectorApplication : // Do not display the name change popup doNotShowDisclaimerDialog(this) } + if (authenticationService.hasAuthenticatedSessions() && !activeSessionHolder.hasActiveSession()) { val lastAuthenticatedSession = authenticationService.getLastAuthenticatedSession()!! activeSessionHolder.setActiveSession(lastAuthenticatedSession) - lastAuthenticatedSession.configureAndStart(applicationContext) + lastAuthenticatedSession.configureAndStart(applicationContext, startSyncing = false) } + + ProcessLifecycleOwner.get().lifecycle.addObserver(startSyncOnFirstStart) + ProcessLifecycleOwner.get().lifecycle.addObserver(object : LifecycleObserver { @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) fun entersForeground() { @@ -199,6 +204,15 @@ class VectorApplication : EmojiManager.install(GoogleEmojiProvider()) } + private val startSyncOnFirstStart = object : LifecycleObserver { + @OnLifecycleEvent(Lifecycle.Event.ON_START) + fun onStart() { + Timber.i("App process started") + authenticationService.getLastAuthenticatedSession()?.startSyncing(appContext) + ProcessLifecycleOwner.get().lifecycle.removeObserver(this) + } + } + private fun enableStrictModeIfNeeded() { if (BuildConfig.ENABLE_STRICT_MODE_LOGS) { StrictMode.setThreadPolicy(StrictMode.ThreadPolicy.Builder() diff --git a/vector/src/main/java/im/vector/app/core/extensions/Session.kt b/vector/src/main/java/im/vector/app/core/extensions/Session.kt index 215c421291..f066fd6784 100644 --- a/vector/src/main/java/im/vector/app/core/extensions/Session.kt +++ b/vector/src/main/java/im/vector/app/core/extensions/Session.kt @@ -26,11 +26,13 @@ import org.matrix.android.sdk.api.session.crypto.keysbackup.KeysBackupState import org.matrix.android.sdk.api.session.sync.FilterService import timber.log.Timber -fun Session.configureAndStart(context: Context) { +fun Session.configureAndStart(context: Context, startSyncing: Boolean = true) { Timber.i("Configure and start session for $myUserId") open() setFilter(FilterService.FilterPreset.ElementFilter) - startSyncing(context) + if (startSyncing) { + startSyncing(context) + } refreshPushers() context.vectorComponent().webRtcCallManager().checkForProtocolsSupportIfNeeded() }