Do not sync automatically when not connected to a network. (jobobby04/TachiyomiSY#1312)

(cherry picked from commit d88f570f65c23d8478c6a781633aa7db3ea8731f)
This commit is contained in:
NGB-Was-Taken 2024-11-04 10:27:39 +05:45 committed by Cuong-Tran
parent 2834fe9763
commit 781dfa06f3
No known key found for this signature in database
GPG key ID: 733AA7624B9315C2
3 changed files with 10 additions and 5 deletions

View file

@ -556,7 +556,7 @@ object SettingsDataScreen : SearchableSettings {
subtitle = stringResource(SYMR.strings.pref_sync_now_subtitle),
onClick = {
if (!SyncDataJob.isRunning(context)) {
SyncDataJob.startNow(context)
SyncDataJob.startNow(context, manual = true)
} else {
context.toast(SYMR.strings.sync_in_progress)
}

View file

@ -16,6 +16,7 @@ import eu.kanade.domain.sync.SyncPreferences
import eu.kanade.tachiyomi.data.SyncStatus
import eu.kanade.tachiyomi.data.notification.Notifications
import eu.kanade.tachiyomi.util.system.cancelNotification
import eu.kanade.tachiyomi.util.system.isOnline
import eu.kanade.tachiyomi.util.system.isRunning
import eu.kanade.tachiyomi.util.system.setForegroundSafely
import eu.kanade.tachiyomi.util.system.workManager
@ -37,6 +38,9 @@ class SyncDataJob(private val context: Context, workerParams: WorkerParameters)
override suspend fun doWork(): Result {
if (tags.contains(TAG_AUTO)) {
if (!context.isOnline()) {
return Result.retry()
}
// Find a running manual worker. If exists, try again later
if (context.workManager.isRunning(TAG_MANUAL)) {
return Result.retry()
@ -106,17 +110,18 @@ class SyncDataJob(private val context: Context, workerParams: WorkerParameters)
}
}
fun startNow(context: Context) {
fun startNow(context: Context, manual: Boolean = false) {
val wm = context.workManager
if (wm.isRunning(TAG_JOB)) {
// Already running either as a scheduled or manual job
return
}
val tag = if (manual) TAG_MANUAL else TAG_AUTO
val request = OneTimeWorkRequestBuilder<SyncDataJob>()
.addTag(TAG_JOB)
.addTag(TAG_MANUAL)
.addTag(tag)
.build()
context.workManager.enqueueUniqueWork(TAG_MANUAL, ExistingWorkPolicy.KEEP, request)
context.workManager.enqueueUniqueWork(tag, ExistingWorkPolicy.KEEP, request)
}
fun stop(context: Context) {

View file

@ -169,7 +169,7 @@ data object LibraryTab : Tab {
},
onClickSyncNow = {
if (!SyncDataJob.isRunning(context)) {
SyncDataJob.startNow(context)
SyncDataJob.startNow(context, manual = true)
} else {
context.toast(SYMR.strings.sync_in_progress)
}