fix(backup-job): Fix disappearing backup job (#1250)
* fix(backup-job): Fix disappearing backup job * optimize * localization * fix string resource * try/catch exception on workinfo
This commit is contained in:
parent
317a21adc0
commit
212e0d8a45
3 changed files with 56 additions and 0 deletions
|
|
@ -23,6 +23,7 @@ import eu.kanade.tachiyomi.util.system.cancelNotification
|
|||
import eu.kanade.tachiyomi.util.system.isRunning
|
||||
import eu.kanade.tachiyomi.util.system.setForegroundSafely
|
||||
import eu.kanade.tachiyomi.util.system.workManager
|
||||
import kotlinx.coroutines.guava.await
|
||||
import logcat.LogPriority
|
||||
import tachiyomi.core.common.util.system.logcat
|
||||
import tachiyomi.domain.backup.service.BackupPreferences
|
||||
|
|
@ -125,6 +126,24 @@ class BackupCreateJob(private val context: Context, workerParams: WorkerParamete
|
|||
.build()
|
||||
context.workManager.enqueueUniqueWork(TAG_MANUAL, ExistingWorkPolicy.KEEP, request)
|
||||
}
|
||||
|
||||
// KMK -->
|
||||
/**
|
||||
* Returns true if a periodic backup job is currently scheduled.
|
||||
* @param context The application context.
|
||||
* @return True if a periodic backup job is scheduled, false otherwise.
|
||||
* @throws Exception If there is an error retrieving the work info.
|
||||
*/
|
||||
suspend fun isPeriodicBackupScheduled(context: Context): Boolean {
|
||||
val workInfos = context.workManager
|
||||
.getWorkInfosForUniqueWork(TAG_AUTO)
|
||||
.await()
|
||||
|
||||
return workInfos.any { workInfo ->
|
||||
!workInfo.state.isFinished
|
||||
}
|
||||
}
|
||||
// KMK <--
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import android.os.Build
|
|||
import android.os.Bundle
|
||||
import android.os.Looper
|
||||
import android.view.View
|
||||
import android.widget.Toast
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.SystemBarStyle
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
|
|
@ -73,6 +74,7 @@ import eu.kanade.tachiyomi.BuildConfig
|
|||
import eu.kanade.tachiyomi.data.BackupRestoreStatus
|
||||
import eu.kanade.tachiyomi.data.LibraryUpdateStatus
|
||||
import eu.kanade.tachiyomi.data.SyncStatus
|
||||
import eu.kanade.tachiyomi.data.backup.create.BackupCreateJob
|
||||
import eu.kanade.tachiyomi.data.cache.ChapterCache
|
||||
import eu.kanade.tachiyomi.data.coil.MangaCoverMetadata
|
||||
import eu.kanade.tachiyomi.data.connections.discord.DiscordRPCService
|
||||
|
|
@ -101,6 +103,7 @@ import eu.kanade.tachiyomi.util.view.setComposeContent
|
|||
import exh.debug.DebugToggles
|
||||
import exh.eh.EHentaiUpdateWorker
|
||||
import exh.log.DebugModeOverlay
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.channels.awaitClose
|
||||
import kotlinx.coroutines.flow.callbackFlow
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
|
|
@ -109,10 +112,12 @@ import kotlinx.coroutines.flow.filter
|
|||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import logcat.LogPriority
|
||||
import mihon.core.migration.Migrator
|
||||
import mihon.core.migration.Migrator.scope
|
||||
import tachiyomi.core.common.Constants
|
||||
import tachiyomi.core.common.i18n.stringResource
|
||||
import tachiyomi.core.common.preference.Preference
|
||||
import tachiyomi.core.common.preference.PreferenceStore
|
||||
import tachiyomi.core.common.util.lang.launchIO
|
||||
|
|
@ -121,6 +126,8 @@ import tachiyomi.domain.UnsortedPreferences
|
|||
import tachiyomi.domain.backup.service.BackupPreferences
|
||||
import tachiyomi.domain.library.service.LibraryPreferences
|
||||
import tachiyomi.domain.release.interactor.GetApplicationRelease
|
||||
import tachiyomi.i18n.MR
|
||||
import tachiyomi.i18n.kmk.KMR
|
||||
import tachiyomi.presentation.core.components.material.Scaffold
|
||||
import tachiyomi.presentation.core.util.collectAsState
|
||||
import uy.kohesive.injekt.Injekt
|
||||
|
|
@ -376,6 +383,9 @@ class MainActivity : BaseActivity() {
|
|||
|
||||
HandleOnNewIntent(context = context, navigator = navigator)
|
||||
|
||||
// KMK -->
|
||||
RearmJobs()
|
||||
// KMK <--
|
||||
CheckForUpdates()
|
||||
ShowOnboarding()
|
||||
}
|
||||
|
|
@ -493,6 +503,32 @@ class MainActivity : BaseActivity() {
|
|||
}
|
||||
}
|
||||
|
||||
// KMK -->
|
||||
@Composable
|
||||
private fun RearmJobs() {
|
||||
val context = LocalContext.current
|
||||
|
||||
LaunchedEffect(Unit) {
|
||||
launchIO {
|
||||
try {
|
||||
if (!BackupCreateJob.isPeriodicBackupScheduled(context)) {
|
||||
BackupCreateJob.setupTask(context)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
logcat(LogPriority.ERROR, e)
|
||||
withContext(Dispatchers.Main) {
|
||||
Toast.makeText(
|
||||
context,
|
||||
stringResource(KMR.strings.job_failed_schedule_update_check, stringResource(MR.strings.unknown_error)),
|
||||
Toast.LENGTH_LONG,
|
||||
).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// KMK <--
|
||||
|
||||
@Composable
|
||||
private fun CheckForUpdates() {
|
||||
val context = LocalContext.current
|
||||
|
|
|
|||
|
|
@ -173,6 +173,7 @@
|
|||
<string name="current_">Current: %1$s</string>
|
||||
<string name="migrating_all_entries">Migrating all entries from source</string>
|
||||
<!-- Misc -->
|
||||
<string name="job_failed_schedule_update_check">Failed to schedule automatic backup: %s</string>
|
||||
<string name="label_to_be_updated">To be updated</string>
|
||||
<string name="sponsor_me">Sponsor Me</string>
|
||||
<string name="batch_add_description">Support: MangaDex, E-H, ExH, nH, 8Muses, Tsumino</string>
|
||||
|
|
|
|||
Loading…
Reference in a new issue