diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupCreateService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupCreateService.kt index a212db9de..8b000f0cf 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupCreateService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupCreateService.kt @@ -9,6 +9,7 @@ import android.os.IBinder import android.os.PowerManager import com.hippo.unifile.UniFile import eu.kanade.tachiyomi.data.notification.Notifications +import eu.kanade.tachiyomi.util.system.acquireWakeLock import eu.kanade.tachiyomi.util.system.isServiceRunning /** @@ -73,10 +74,7 @@ class BackupCreateService : Service() { startForeground(Notifications.ID_BACKUP_PROGRESS, notifier.showBackupProgress().build()) - wakeLock = (getSystemService(Context.POWER_SERVICE) as PowerManager).newWakeLock( - PowerManager.PARTIAL_WAKE_LOCK, "${javaClass.name}:WakeLock" - ) - wakeLock.acquire() + wakeLock = acquireWakeLock(javaClass.name) } override fun stopService(name: Intent?): Boolean { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt index 3ab48fab2..014664b14 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt @@ -46,6 +46,7 @@ import eu.kanade.tachiyomi.data.database.models.Track import eu.kanade.tachiyomi.data.database.models.TrackImpl import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.track.TrackManager +import eu.kanade.tachiyomi.source.LocalSource import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.online.all.EHentai @@ -133,8 +134,10 @@ class BackupManager(val context: Context, version: Int = CURRENT_VERSION) { mangaEntries.add(backupMangaObject(manga, flags)) // Maintain set of extensions/sources used (excludes local source) - if (manga.source != 0L && sourceManager.get(manga.source) != null) { - extensions.add("${manga.source}:${sourceManager.get(manga.source)!!.name}") + if (manga.source != LocalSource.ID) { + sourceManager.get(manga.source)?.let { + extensions.add("${manga.source}:${it.name}") + } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestoreService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestoreService.kt index b623191fe..2f431a550 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestoreService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestoreService.kt @@ -32,6 +32,7 @@ import eu.kanade.tachiyomi.data.database.models.TrackImpl import eu.kanade.tachiyomi.data.notification.Notifications import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.source.Source +import eu.kanade.tachiyomi.util.system.acquireWakeLock import eu.kanade.tachiyomi.util.system.isServiceRunning import exh.EXHMigrations import exh.eh.EHentaiThrottleManager @@ -135,10 +136,7 @@ class BackupRestoreService : Service() { startForeground(Notifications.ID_RESTORE_PROGRESS, notifier.showRestoreProgress().build()) - wakeLock = (getSystemService(Context.POWER_SERVICE) as PowerManager).newWakeLock( - PowerManager.PARTIAL_WAKE_LOCK, "${javaClass.name}:WakeLock" - ) - wakeLock.acquire() + wakeLock = acquireWakeLock(javaClass.name) } override fun stopService(name: Intent?): Boolean { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadService.kt index 332ac1ea8..6b3dda299 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadService.kt @@ -16,9 +16,9 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.notification.Notifications import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.util.lang.plusAssign +import eu.kanade.tachiyomi.util.system.acquireWakeLock import eu.kanade.tachiyomi.util.system.connectivityManager import eu.kanade.tachiyomi.util.system.notification -import eu.kanade.tachiyomi.util.system.powerManager import eu.kanade.tachiyomi.util.system.toast import rx.android.schedulers.AndroidSchedulers import rx.schedulers.Schedulers @@ -70,9 +70,7 @@ class DownloadService : Service() { /** * Wake lock to prevent the device to enter sleep mode. */ - private val wakeLock by lazy { - powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "DownloadService:WakeLock") - } + private lateinit var wakeLock: PowerManager.WakeLock /** * Subscriptions to store while the service is running. @@ -85,6 +83,7 @@ class DownloadService : Service() { override fun onCreate() { super.onCreate() startForeground(Notifications.ID_DOWNLOAD_CHAPTER, getPlaceholderNotification()) + wakeLock = acquireWakeLock(javaClass.name) runningRelay.call(true) subscriptions = CompositeSubscription() listenDownloaderState() diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt index 4a218991a..924c2c3af 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt @@ -35,6 +35,7 @@ import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.ui.main.MainActivity import eu.kanade.tachiyomi.util.chapter.syncChaptersWithSource import eu.kanade.tachiyomi.util.lang.chop +import eu.kanade.tachiyomi.util.system.acquireWakeLock import eu.kanade.tachiyomi.util.system.isServiceRunning import eu.kanade.tachiyomi.util.system.notification import eu.kanade.tachiyomi.util.system.notificationBuilder @@ -183,11 +184,10 @@ class LibraryUpdateService( */ override fun onCreate() { super.onCreate() + startForeground(Notifications.ID_LIBRARY_PROGRESS, progressNotificationBuilder.build()) - wakeLock = (getSystemService(Context.POWER_SERVICE) as PowerManager).newWakeLock( - PowerManager.PARTIAL_WAKE_LOCK, "LibraryUpdateService:WakeLock" - ) - wakeLock.acquire() + + wakeLock = acquireWakeLock(javaClass.name) } /** diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/UpdaterService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/UpdaterService.kt index 4cfec811b..23e015438 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/UpdaterService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/updater/UpdaterService.kt @@ -18,6 +18,7 @@ import eu.kanade.tachiyomi.network.newCallWithProgress import eu.kanade.tachiyomi.util.lang.launchIO import eu.kanade.tachiyomi.util.storage.getUriCompat import eu.kanade.tachiyomi.util.storage.saveTo +import eu.kanade.tachiyomi.util.system.acquireWakeLock import eu.kanade.tachiyomi.util.system.isServiceRunning import java.io.File import timber.log.Timber @@ -40,10 +41,7 @@ class UpdaterService : Service() { startForeground(Notifications.ID_UPDATER, notifier.onDownloadStarted().build()) - wakeLock = (getSystemService(Context.POWER_SERVICE) as PowerManager).newWakeLock( - PowerManager.PARTIAL_WAKE_LOCK, "${javaClass.name}:WakeLock" - ) - wakeLock.acquire() + wakeLock = acquireWakeLock(javaClass.name) } /** @@ -143,11 +141,10 @@ class UpdaterService : Service() { context.isServiceRunning(UpdaterService::class.java) /** - * Make a backup from library + * Downloads a new update and let the user install the new version from a notification. * - * @param context context of application - * @param uri path of Uri - * @param flags determines what to backup + * @param context the application context. + * @param url the url to the new update. */ fun start(context: Context, url: String, title: String = context.getString(R.string.app_name)) { if (!isRunning(context)) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt index 59e9f814f..7804c306e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt @@ -3,12 +3,10 @@ package eu.kanade.tachiyomi.ui.setting import android.annotation.SuppressLint import android.app.Dialog import android.content.ActivityNotFoundException -import android.content.Context.POWER_SERVICE import android.content.Intent import android.net.Uri import android.os.Build import android.os.Bundle -import android.os.PowerManager import android.provider.Settings import androidx.core.text.HtmlCompat import androidx.preference.PreferenceScreen @@ -34,6 +32,7 @@ import eu.kanade.tachiyomi.util.preference.preferenceCategory import eu.kanade.tachiyomi.util.preference.summaryRes import eu.kanade.tachiyomi.util.preference.switchPreference import eu.kanade.tachiyomi.util.preference.titleRes +import eu.kanade.tachiyomi.util.system.powerManager import eu.kanade.tachiyomi.util.system.toast import exh.debug.SettingsDebugController import exh.log.EHLogLevel @@ -98,8 +97,7 @@ class SettingsAdvancedController : SettingsController() { onClick { val packageName: String = context.packageName - val pm = context.getSystemService(POWER_SERVICE) as PowerManager? - if (!pm!!.isIgnoringBatteryOptimizations(packageName)) { + if (!context.powerManager.isIgnoringBatteryOptimizations(packageName)) { try { val intent = Intent().apply { action = Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt index 2f73b1427..a6d058d81 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt @@ -3,9 +3,7 @@ package eu.kanade.tachiyomi.util.system import android.app.ActivityManager import android.app.Notification import android.app.NotificationManager -import android.app.job.JobScheduler import android.content.BroadcastReceiver -import android.content.ClipboardManager import android.content.Context import android.content.Intent import android.content.IntentFilter @@ -14,7 +12,6 @@ import android.content.res.Resources import android.graphics.Color import android.net.ConnectivityManager import android.net.Uri -import android.net.wifi.WifiManager import android.os.PowerManager import android.widget.Toast import androidx.annotation.AttrRes @@ -158,18 +155,13 @@ val Context.powerManager: PowerManager get() = getSystemService(Context.POWER_SERVICE) as PowerManager /** - * Property to get the wifi manager from the context. + * Convenience method to acquire a partial wake lock. */ -val Context.wifiManager: WifiManager - get() = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager - -// --> EH -val Context.clipboardManager: ClipboardManager - get() = applicationContext.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager - -val Context.jobScheduler: JobScheduler - get() = applicationContext.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler -// <-- EH +fun Context.acquireWakeLock(tag: String): PowerManager.WakeLock { + val wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "$tag:WakeLock") + wakeLock.acquire() + return wakeLock +} /** * Function used to send a local broadcast asynchronous diff --git a/app/src/main/java/exh/debug/DebugFunctions.kt b/app/src/main/java/exh/debug/DebugFunctions.kt index 5a063c8c7..cc22c0ba3 100644 --- a/app/src/main/java/exh/debug/DebugFunctions.kt +++ b/app/src/main/java/exh/debug/DebugFunctions.kt @@ -6,7 +6,6 @@ import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.tables.MangaTable import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.source.SourceManager -import eu.kanade.tachiyomi.util.system.jobScheduler import exh.EH_SOURCE_ID import exh.EXHMigrations import exh.EXH_SOURCE_ID @@ -16,6 +15,7 @@ import exh.metadata.metadata.base.getFlatMetadataForManga import exh.metadata.metadata.base.insertFlatMetadata import exh.util.await import exh.util.cancellable +import exh.util.jobScheduler import kotlinx.coroutines.flow.asFlow import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.toList diff --git a/app/src/main/java/exh/eh/EHentaiUpdateWorker.kt b/app/src/main/java/exh/eh/EHentaiUpdateWorker.kt index f3e260146..4c0d9ca74 100644 --- a/app/src/main/java/exh/eh/EHentaiUpdateWorker.kt +++ b/app/src/main/java/exh/eh/EHentaiUpdateWorker.kt @@ -20,7 +20,6 @@ import eu.kanade.tachiyomi.data.preference.getOrDefault import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.online.all.EHentai import eu.kanade.tachiyomi.util.chapter.syncChaptersWithSource -import eu.kanade.tachiyomi.util.system.jobScheduler import exh.EH_SOURCE_ID import exh.EXH_SOURCE_ID import exh.debug.DebugToggles @@ -30,6 +29,7 @@ import exh.metadata.metadata.base.getFlatMetadataForManga import exh.metadata.metadata.base.insertFlatMetadata import exh.util.await import exh.util.cancellable +import exh.util.jobScheduler import kotlin.coroutines.CoroutineContext import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers diff --git a/app/src/main/java/exh/favorites/FavoritesSyncHelper.kt b/app/src/main/java/exh/favorites/FavoritesSyncHelper.kt index 04b2b8ff6..d44901509 100644 --- a/app/src/main/java/exh/favorites/FavoritesSyncHelper.kt +++ b/app/src/main/java/exh/favorites/FavoritesSyncHelper.kt @@ -15,7 +15,6 @@ import eu.kanade.tachiyomi.source.online.all.EHentai import eu.kanade.tachiyomi.util.lang.launchUI import eu.kanade.tachiyomi.util.system.powerManager import eu.kanade.tachiyomi.util.system.toast -import eu.kanade.tachiyomi.util.system.wifiManager import exh.EH_SOURCE_ID import exh.EXH_SOURCE_ID import exh.GalleryAddEvent @@ -24,6 +23,7 @@ import exh.eh.EHentaiThrottleManager import exh.eh.EHentaiUpdateWorker import exh.util.ignore import exh.util.trans +import exh.util.wifiManager import kotlin.concurrent.thread import okhttp3.FormBody import okhttp3.Request diff --git a/app/src/main/java/exh/util/ContextExtensions.kt b/app/src/main/java/exh/util/ContextExtensions.kt new file mode 100644 index 000000000..876e65a06 --- /dev/null +++ b/app/src/main/java/exh/util/ContextExtensions.kt @@ -0,0 +1,18 @@ +package exh.util + +import android.app.job.JobScheduler +import android.content.ClipboardManager +import android.content.Context +import android.net.wifi.WifiManager + +/** + * Property to get the wifi manager from the context. + */ +val Context.wifiManager: WifiManager + get() = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager + +val Context.clipboardManager: ClipboardManager + get() = applicationContext.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + +val Context.jobScheduler: JobScheduler + get() = applicationContext.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler