Sync: add syncOnce method
This commit is contained in:
parent
8a68b31f1b
commit
4c2b28075c
|
@ -21,6 +21,9 @@ import kotlinx.coroutines.flow.SharedFlow
|
||||||
import org.matrix.android.sdk.api.session.sync.model.SyncResponse
|
import org.matrix.android.sdk.api.session.sync.model.SyncResponse
|
||||||
|
|
||||||
interface SyncService {
|
interface SyncService {
|
||||||
|
|
||||||
|
suspend fun syncOnce(timeout: Long): SyncResponse
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method start the sync thread.
|
* This method start the sync thread.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -17,8 +17,15 @@
|
||||||
package org.matrix.android.sdk.internal.session.sync
|
package org.matrix.android.sdk.internal.session.sync
|
||||||
|
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
|
import io.realm.RealmConfiguration
|
||||||
|
import org.matrix.android.sdk.api.MatrixCoroutineDispatchers
|
||||||
import org.matrix.android.sdk.api.session.sync.SyncRequestState
|
import org.matrix.android.sdk.api.session.sync.SyncRequestState
|
||||||
import org.matrix.android.sdk.api.session.sync.SyncService
|
import org.matrix.android.sdk.api.session.sync.SyncService
|
||||||
|
import org.matrix.android.sdk.api.session.sync.model.SyncResponse
|
||||||
|
import org.matrix.android.sdk.internal.database.awaitNotEmptyResult
|
||||||
|
import org.matrix.android.sdk.internal.database.model.SyncEntity
|
||||||
|
import org.matrix.android.sdk.internal.database.model.SyncEntityFields
|
||||||
|
import org.matrix.android.sdk.internal.di.SessionDatabase
|
||||||
import org.matrix.android.sdk.internal.di.SessionId
|
import org.matrix.android.sdk.internal.di.SessionId
|
||||||
import org.matrix.android.sdk.internal.di.WorkManagerProvider
|
import org.matrix.android.sdk.internal.di.WorkManagerProvider
|
||||||
import org.matrix.android.sdk.internal.session.SessionState
|
import org.matrix.android.sdk.internal.session.SessionState
|
||||||
|
@ -35,7 +42,9 @@ internal class DefaultSyncService @Inject constructor(
|
||||||
private val syncTokenStore: SyncTokenStore,
|
private val syncTokenStore: SyncTokenStore,
|
||||||
private val syncRequestStateTracker: SyncRequestStateTracker,
|
private val syncRequestStateTracker: SyncRequestStateTracker,
|
||||||
private val sessionState: SessionState,
|
private val sessionState: SessionState,
|
||||||
|
private val syncTask: SyncTask,
|
||||||
) : SyncService {
|
) : SyncService {
|
||||||
|
|
||||||
private var syncThread: SyncThread? = null
|
private var syncThread: SyncThread? = null
|
||||||
|
|
||||||
override fun requireBackgroundSync() {
|
override fun requireBackgroundSync() {
|
||||||
|
@ -50,6 +59,11 @@ internal class DefaultSyncService @Inject constructor(
|
||||||
SyncWorker.stopAnyBackgroundSync(workManagerProvider)
|
SyncWorker.stopAnyBackgroundSync(workManagerProvider)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override suspend fun syncOnce(timeout: Long): SyncResponse {
|
||||||
|
val syncParams = SyncTask.Params(timeout = timeout, presence = null, afterPause = false)
|
||||||
|
return syncTask.execute(syncParams)
|
||||||
|
}
|
||||||
|
|
||||||
override fun startSync(fromForeground: Boolean) {
|
override fun startSync(fromForeground: Boolean) {
|
||||||
Timber.i("Starting sync thread")
|
Timber.i("Starting sync thread")
|
||||||
assert(sessionState.isOpen)
|
assert(sessionState.isOpen)
|
||||||
|
|
Loading…
Reference in New Issue