diff options
author | Daniel Schaal <daniel@schaal.email> | 2021-07-19 07:22:33 +0300 |
---|---|---|
committer | Daniel Schaal <daniel@schaal.email> | 2021-07-25 10:10:47 +0300 |
commit | 35d708027cf9adc654c3fdf7542f55ddd44f1bb8 (patch) | |
tree | a0f33e933cdf36b770573892319f4d77876c3e51 | |
parent | 8137abd31ec83204edb1ff9d47f49b22d9bb3351 (diff) |
Move sync method to SyncWorker
3 files changed, 18 insertions, 23 deletions
diff --git a/app/src/main/java/email/schaal/ocreader/ListActivity.kt b/app/src/main/java/email/schaal/ocreader/ListActivity.kt index 9c23b2bd..f92386cd 100644 --- a/app/src/main/java/email/schaal/ocreader/ListActivity.kt +++ b/app/src/main/java/email/schaal/ocreader/ListActivity.kt @@ -123,7 +123,7 @@ class ListActivity : AppCompatActivity(), ItemViewHolder.OnClickListener, OnRefr true } R.id.menu_sync -> { - observeWork(feedViewModel.sync(this, SyncType.FULL_SYNC)) + observeWork(SyncWorker.sync(this, SyncType.FULL_SYNC)) true } R.id.menu_about -> { @@ -239,7 +239,7 @@ class ListActivity : AppCompatActivity(), ItemViewHolder.OnClickListener, OnRefr } if(result.first == Activity.RESULT_OK) { Queries.resetDatabase() - observeWork(feedViewModel.sync(this, SyncType.FULL_SYNC)) + observeWork(SyncWorker.sync(this, SyncType.FULL_SYNC)) } } @@ -311,7 +311,7 @@ class ListActivity : AppCompatActivity(), ItemViewHolder.OnClickListener, OnRefr } override fun onRefresh() { - observeWork(feedViewModel.sync(this, SyncType.FULL_SYNC)) + observeWork(SyncWorker.sync(this, SyncType.FULL_SYNC)) } override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean { diff --git a/app/src/main/java/email/schaal/ocreader/database/FeedViewModel.kt b/app/src/main/java/email/schaal/ocreader/database/FeedViewModel.kt index 48a343b6..27b9881f 100644 --- a/app/src/main/java/email/schaal/ocreader/database/FeedViewModel.kt +++ b/app/src/main/java/email/schaal/ocreader/database/FeedViewModel.kt @@ -20,21 +20,17 @@ package email.schaal.ocreader.database import android.content.Context import android.content.SharedPreferences -import androidx.lifecycle.* +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider import androidx.preference.PreferenceManager -import androidx.work.OneTimeWorkRequestBuilder -import androidx.work.WorkInfo -import androidx.work.WorkManager -import androidx.work.workDataOf import email.schaal.ocreader.Preferences import email.schaal.ocreader.database.model.* import email.schaal.ocreader.database.model.TemporaryFeed.Companion.getListTemporaryFeed import email.schaal.ocreader.putBreadCrumbs -import email.schaal.ocreader.service.SyncType -import email.schaal.ocreader.service.SyncWorker import io.realm.Realm import io.realm.kotlin.where -import kotlin.IllegalArgumentException class FeedViewModel(context: Context) : RealmViewModel() { private val temporaryFeedLiveData: MutableLiveData<TemporaryFeed> @@ -60,15 +56,6 @@ class FeedViewModel(context: Context) : RealmViewModel() { val user: LiveData<User> get() = userLiveData - fun sync(context: Context, syncType: SyncType): LiveData<WorkInfo> { - val workManager = WorkManager.getInstance(context) - val syncWork = OneTimeWorkRequestBuilder<SyncWorker>() - .setInputData(workDataOf(SyncWorker.KEY_SYNC_TYPE to syncType.action)) - .build() - workManager.enqueue(syncWork) - return workManager.getWorkInfoByIdLiveData(syncWork.id) - } - fun updateFolders(onlyUnread: Boolean) { foldersLiveData.value = Folder.getAll(realm, onlyUnread) } diff --git a/app/src/main/java/email/schaal/ocreader/service/SyncWorker.kt b/app/src/main/java/email/schaal/ocreader/service/SyncWorker.kt index 0039482b..8380fb41 100644 --- a/app/src/main/java/email/schaal/ocreader/service/SyncWorker.kt +++ b/app/src/main/java/email/schaal/ocreader/service/SyncWorker.kt @@ -1,10 +1,9 @@ package email.schaal.ocreader.service import android.content.Context +import androidx.lifecycle.LiveData import androidx.preference.PreferenceManager -import androidx.work.CoroutineWorker -import androidx.work.WorkerParameters -import androidx.work.workDataOf +import androidx.work.* import email.schaal.ocreader.Preferences import email.schaal.ocreader.api.API import email.schaal.ocreader.util.LoginError @@ -13,6 +12,15 @@ class SyncWorker(context: Context, workerParams: WorkerParameters) : CoroutineWo companion object { const val KEY_SYNC_TYPE = "KEY_SYNC_TYPE" const val KEY_EXCEPTION = "KEY_EXCEPTION" + + fun sync(context: Context, syncType: SyncType): LiveData<WorkInfo> { + val workManager = WorkManager.getInstance(context) + val syncWork = OneTimeWorkRequestBuilder<SyncWorker>() + .setInputData(workDataOf(KEY_SYNC_TYPE to syncType.action)) + .build() + workManager.enqueue(syncWork) + return workManager.getWorkInfoByIdLiveData(syncWork.id) + } } override suspend fun doWork(): Result { |