forked from starfish23/mangafeed
-
Notifications
You must be signed in to change notification settings - Fork 226
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Targeting SDK 33 (Android 13) (#1525)
* starting workmanager updates * Update Download service to download job Also making downloader use suspend methods like upstream Co-Authored-By: Ivan Iskandar <12537387+ivaniskandar@users.noreply.github.com> * Make BackupRestorer a job * Make LibraryUpdateJob a datasync service type * Changing Extension auto installer to a job instead of service * Changing App auto installer to a job instead of service With it theres no more services, and nearly ready to up the target sdk * Add runtime permission for notifications Shows permission when adding to library, seeing the app update in app prompt, or loading library or recents Tries to show the permission again (or a warning message) when trying to restore a backup or set library update timing Same warning messages shows when not allowing notifications * Set target sdk to 33 we made it. * Clean up ContextExtensions * Add notification check for incognito mode * Add last updated timestamp to updates job * Update LibraryUpdateJob.kt minor changes to the notifier's placeholder, and making sure it uses localeContext for versions under A13 * update channel logic in library updater * Change library update channel to just take a Long instead a whole Manga * Use extensionManager flow in ExtensionInstallerJob * Update MainActivity.kt * Fixes to downloadFlow * reworking running extensions after library update logic * Change update channel to shared flow in library job * More updates to the library updates flow no longer using a suspend, instead holding a buffer for the flow * updates to the flow in extensionInstaller from state to shared, also using "tryEmit" less for it * Fix extension auto installing notification not dismissing/dismissable * Version 1.7.0 * Update AppDownloadInstallJob.kt * Refactor DownloadJob * Version 1.7.0-b02 * Fix uninstalling extensions not refreshing the list * Show notification permission prompt when pressing update all * Chunked the extension install job in case too many extensions are being updated at once The limit is around 62 extensions, but to be safe it runs 32 per job (which jobs still update 3 at a time) Closes #1584 * Update Java Version --------- Co-authored-by: Ivan Iskandar <12537387+ivaniskandar@users.noreply.github.com>
- Loading branch information
1 parent
21a2705
commit 3140361
Showing
60 changed files
with
2,129 additions
and
2,344 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
81 changes: 81 additions & 0 deletions
81
app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestoreJob.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
package eu.kanade.tachiyomi.data.backup | ||
|
||
import android.content.Context | ||
import android.content.pm.ServiceInfo | ||
import android.net.Uri | ||
import android.os.Build | ||
import androidx.work.CoroutineWorker | ||
import androidx.work.ExistingWorkPolicy | ||
import androidx.work.ForegroundInfo | ||
import androidx.work.OneTimeWorkRequestBuilder | ||
import androidx.work.OutOfQuotaPolicy | ||
import androidx.work.WorkManager | ||
import androidx.work.WorkerParameters | ||
import androidx.work.workDataOf | ||
import eu.kanade.tachiyomi.R | ||
import eu.kanade.tachiyomi.data.notification.Notifications | ||
import eu.kanade.tachiyomi.util.system.jobIsRunning | ||
import eu.kanade.tachiyomi.util.system.localeContext | ||
import eu.kanade.tachiyomi.util.system.tryToSetForeground | ||
import eu.kanade.tachiyomi.util.system.withIOContext | ||
import kotlinx.coroutines.CancellationException | ||
|
||
class BackupRestoreJob(val context: Context, workerParams: WorkerParameters) : CoroutineWorker(context, workerParams) { | ||
|
||
private val notifier = BackupNotifier(context.localeContext) | ||
private val restorer = BackupRestorer(context, notifier) | ||
|
||
override suspend fun getForegroundInfo(): ForegroundInfo { | ||
val notification = notifier.showRestoreProgress(progress = -1).build() | ||
val id = Notifications.ID_RESTORE_PROGRESS | ||
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { | ||
ForegroundInfo(id, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC) | ||
} else { | ||
ForegroundInfo(id, notification) | ||
} | ||
} | ||
|
||
override suspend fun doWork(): Result { | ||
tryToSetForeground() | ||
|
||
val uriPath = inputData.getString(BackupConst.EXTRA_URI) ?: return Result.failure() | ||
|
||
val uri = Uri.parse(uriPath) ?: return Result.failure() | ||
|
||
withIOContext { | ||
try { | ||
if (!restorer.restoreBackup(uri)) { | ||
notifier.showRestoreError(context.getString(R.string.restoring_backup_canceled)) | ||
} | ||
} catch (exception: Exception) { | ||
if (exception is CancellationException) { | ||
notifier.showRestoreError(context.getString(R.string.restoring_backup_canceled)) | ||
} else { | ||
restorer.writeErrorLog() | ||
notifier.showRestoreError(exception.message) | ||
} | ||
} | ||
} | ||
return Result.success() | ||
} | ||
|
||
companion object { | ||
private const val TAG = "BackupRestorer" | ||
|
||
fun start(context: Context, uri: Uri) { | ||
val request = OneTimeWorkRequestBuilder<BackupRestoreJob>() | ||
.addTag(TAG) | ||
.setInputData(workDataOf(BackupConst.EXTRA_URI to uri.toString())) | ||
.setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST) | ||
.build() | ||
WorkManager.getInstance(context) | ||
.enqueueUniqueWork(TAG, ExistingWorkPolicy.REPLACE, request) | ||
} | ||
|
||
fun stop(context: Context) { | ||
WorkManager.getInstance(context).cancelUniqueWork(TAG) | ||
} | ||
|
||
fun isRunning(context: Context) = WorkManager.getInstance(context).jobIsRunning(TAG) | ||
} | ||
} |
Oops, something went wrong.