Rename app updating classes

"So I stop confusing it for updaters of other things." - arkon

agreed

Co-Authored-By: arkon <4098258+arkon@users.noreply.github.com>
This commit is contained in:
Jays2Kings 2021-10-17 12:59:08 -04:00
parent aa2d794b47
commit 895395944b
18 changed files with 100 additions and 100 deletions

View file

@ -213,7 +213,7 @@
android:exported="false" />
<receiver
android:name=".data.updater.UpdaterBroadcast"
android:name=".data.updater.AppUpdateBroadcast"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
@ -233,7 +233,7 @@
android:exported="false" />
<service
android:name=".data.updater.UpdaterService"
android:name=".data.updater.AppUpdateService"
android:exported="false" />
<service

View file

@ -9,8 +9,8 @@ import eu.kanade.tachiyomi.data.preference.PreferenceKeys
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.plusAssign
import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.data.updater.UpdaterJob
import eu.kanade.tachiyomi.data.updater.UpdaterService
import eu.kanade.tachiyomi.data.updater.AppUpdateJob
import eu.kanade.tachiyomi.data.updater.AppUpdateService
import eu.kanade.tachiyomi.extension.ExtensionUpdateJob
import eu.kanade.tachiyomi.network.PREF_DOH_CLOUDFLARE
import eu.kanade.tachiyomi.ui.library.LibraryPresenter
@ -32,7 +32,7 @@ object Migrations {
val context = preferences.context
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
prefs.edit {
remove(UpdaterService.NOTIFY_ON_INSTALL_KEY)
remove(AppUpdateService.NOTIFY_ON_INSTALL_KEY)
}
val oldVersion = preferences.lastVersionCode().get()
if (oldVersion < BuildConfig.VERSION_CODE) {
@ -40,7 +40,7 @@ object Migrations {
// Always set up background tasks to ensure they're running
if (BuildConfig.INCLUDE_UPDATER) {
UpdaterJob.setupTask(context)
AppUpdateJob.setupTask(context)
}
ExtensionUpdateJob.setupTask(context)
LibraryUpdateJob.setupTask(context)
@ -53,7 +53,7 @@ object Migrations {
if (oldVersion < 14) {
// Restore jobs after upgrading to evernote's job scheduler.
if (BuildConfig.INCLUDE_UPDATER) {
UpdaterJob.setupTask(context)
AppUpdateJob.setupTask(context)
}
LibraryUpdateJob.setupTask(context)
}
@ -90,7 +90,7 @@ object Migrations {
LibraryPresenter.updateDB()
// Restore jobs after migrating from Evernote's job scheduler to WorkManager.
if (BuildConfig.INCLUDE_UPDATER) {
UpdaterJob.setupTask(context)
AppUpdateJob.setupTask(context)
}
LibraryUpdateJob.setupTask(context)
BackupCreatorJob.setupTask(context)
@ -130,7 +130,7 @@ object Migrations {
if (oldVersion < 74) {
// Turn on auto updates for all users
if (BuildConfig.INCLUDE_UPDATER) {
UpdaterJob.setupTask(context)
AppUpdateJob.setupTask(context)
}
}
if (oldVersion < 75) {

View file

@ -16,7 +16,7 @@ import eu.kanade.tachiyomi.data.download.DownloadManager
import eu.kanade.tachiyomi.data.download.DownloadService
import eu.kanade.tachiyomi.data.library.LibraryUpdateService
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.updater.UpdaterService
import eu.kanade.tachiyomi.data.updater.AppUpdateService
import eu.kanade.tachiyomi.extension.ExtensionInstallService
import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.ui.main.MainActivity
@ -216,7 +216,7 @@ class NotificationReceiver : BroadcastReceiver() {
}
private fun cancelDownloadUpdate(context: Context) {
UpdaterService.stop(context)
AppUpdateService.stop(context)
}
companion object {

View file

@ -418,7 +418,7 @@ class PreferencesHelper(val context: Context) {
fun sideNavMode() = flowPrefs.getInt(Keys.sideNavMode, 0)
fun shouldAutoUpdate() = prefs.getInt(Keys.shouldAutoUpdate, AutoUpdaterJob.ONLY_ON_UNMETERED)
fun appShouldAutoUpdate() = prefs.getInt(Keys.shouldAutoUpdate, AutoUpdaterJob.ONLY_ON_UNMETERED)
fun autoUpdateExtensions() = prefs.getInt(Keys.autoUpdateExtensions, AutoUpdaterJob.ONLY_ON_UNMETERED)

View file

@ -10,9 +10,9 @@ import androidx.preference.PreferenceManager
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.util.system.toast
class UpdaterBroadcast : BroadcastReceiver() {
class AppUpdateBroadcast : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if (UpdaterService.PACKAGE_INSTALLED_ACTION == intent.action) {
if (AppUpdateService.PACKAGE_INSTALLED_ACTION == intent.action) {
val extras = intent.extras ?: return
when (val status = extras.getInt(PackageInstaller.EXTRA_STATUS)) {
PackageInstaller.STATUS_PENDING_USER_ACTION -> {
@ -22,33 +22,33 @@ class UpdaterBroadcast : BroadcastReceiver() {
PackageInstaller.STATUS_SUCCESS -> {
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
prefs.edit {
remove(UpdaterService.NOTIFY_ON_INSTALL_KEY)
remove(AppUpdateService.NOTIFY_ON_INSTALL_KEY)
}
val notifyOnInstall = extras.getBoolean(UpdaterService.EXTRA_NOTIFY_ON_INSTALL, false)
val notifyOnInstall = extras.getBoolean(AppUpdateService.EXTRA_NOTIFY_ON_INSTALL, false)
try {
if (notifyOnInstall) {
UpdaterNotifier(context).onInstallFinished()
AppUpdateNotifier(context).onInstallFinished()
}
} finally {
UpdaterService.stop(context)
AppUpdateService.stop(context)
}
}
PackageInstaller.STATUS_FAILURE, PackageInstaller.STATUS_FAILURE_ABORTED, PackageInstaller.STATUS_FAILURE_BLOCKED, PackageInstaller.STATUS_FAILURE_CONFLICT, PackageInstaller.STATUS_FAILURE_INCOMPATIBLE, PackageInstaller.STATUS_FAILURE_INVALID, PackageInstaller.STATUS_FAILURE_STORAGE -> {
if (status != PackageInstaller.STATUS_FAILURE_ABORTED) {
context.toast(R.string.could_not_install_update)
val uri = intent.getStringExtra(UpdaterService.EXTRA_FILE_URI) ?: return
UpdaterNotifier(context).onInstallError(uri.toUri())
val uri = intent.getStringExtra(AppUpdateService.EXTRA_FILE_URI) ?: return
AppUpdateNotifier(context).onInstallError(uri.toUri())
}
}
}
} else if (intent.action == Intent.ACTION_MY_PACKAGE_REPLACED) {
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
val notifyOnInstall = prefs.getBoolean(UpdaterService.NOTIFY_ON_INSTALL_KEY, false)
val notifyOnInstall = prefs.getBoolean(AppUpdateService.NOTIFY_ON_INSTALL_KEY, false)
prefs.edit {
remove(UpdaterService.NOTIFY_ON_INSTALL_KEY)
remove(AppUpdateService.NOTIFY_ON_INSTALL_KEY)
}
if (notifyOnInstall) {
UpdaterNotifier(context).onInstallFinished()
AppUpdateNotifier(context).onInstallFinished()
}
}
}

View file

@ -0,0 +1,15 @@
package eu.kanade.tachiyomi.data.updater
import eu.kanade.tachiyomi.data.updater.github.GithubAppUpdateChecker
abstract class AppUpdateChecker {
companion object {
fun getUpdateChecker(): AppUpdateChecker = GithubAppUpdateChecker()
}
/**
* Returns suspended result containing release information
*/
abstract suspend fun checkForUpdate(): AppUpdateResult
}

View file

@ -17,20 +17,20 @@ import kotlinx.coroutines.coroutineScope
import uy.kohesive.injekt.injectLazy
import java.util.concurrent.TimeUnit
class UpdaterJob(private val context: Context, workerParams: WorkerParameters) :
class AppUpdateJob(private val context: Context, workerParams: WorkerParameters) :
CoroutineWorker(context, workerParams) {
override suspend fun doWork(): Result = coroutineScope {
try {
val preferences: PreferencesHelper by injectLazy()
val result = UpdateChecker.getUpdateChecker().checkForUpdate()
if (result is UpdateResult.NewUpdate<*>) {
val result = AppUpdateChecker.getUpdateChecker().checkForUpdate()
if (result is AppUpdateResult.NewUpdate<*>) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S &&
preferences.shouldAutoUpdate() != AutoUpdaterJob.NEVER
preferences.appShouldAutoUpdate() != AutoUpdaterJob.NEVER
) {
AutoUpdaterJob.setupTask(context)
}
UpdaterNotifier(context).promptUpdate(
AppUpdateNotifier(context).promptUpdate(
result.release.info,
result.release.downloadLink,
result.release.releaseLink
@ -55,7 +55,7 @@ class UpdaterJob(private val context: Context, workerParams: WorkerParameters) :
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()
val request = PeriodicWorkRequestBuilder<UpdaterJob>(
val request = PeriodicWorkRequestBuilder<AppUpdateJob>(
2,
TimeUnit.DAYS,
3,

View file

@ -21,7 +21,7 @@ import eu.kanade.tachiyomi.util.system.notificationManager
*
* @param context context of application.
*/
internal class UpdaterNotifier(private val context: Context) {
internal class AppUpdateNotifier(private val context: Context) {
/**
* Builder to manage notifications.
@ -44,9 +44,9 @@ internal class UpdaterNotifier(private val context: Context) {
}
fun promptUpdate(body: String, url: String, releaseUrl: String) {
val intent = Intent(context, UpdaterService::class.java).apply {
putExtra(UpdaterService.EXTRA_DOWNLOAD_URL, url)
putExtra(UpdaterService.EXTRA_NOTIFY_ON_INSTALL, true)
val intent = Intent(context, AppUpdateService::class.java).apply {
putExtra(AppUpdateService.EXTRA_DOWNLOAD_URL, url)
putExtra(AppUpdateService.EXTRA_NOTIFY_ON_INSTALL, true)
}
val pendingIntent = NotificationReceiver.openUpdatePendingActivity(context, body, url)
@ -202,7 +202,7 @@ internal class UpdaterNotifier(private val context: Context) {
addAction(
R.drawable.ic_refresh_24dp,
context.getString(R.string.retry),
UpdaterService.downloadApkPendingService(context, url)
AppUpdateService.downloadApkPendingService(context, url)
)
// Cancel action
addAction(

View file

@ -0,0 +1,7 @@
package eu.kanade.tachiyomi.data.updater
abstract class AppUpdateResult {
open class NewUpdate<T : Release>(val release: T) : AppUpdateResult()
open class NoNewUpdate : AppUpdateResult()
}

View file

@ -35,7 +35,7 @@ import timber.log.Timber
import uy.kohesive.injekt.injectLazy
import java.io.File
class UpdaterService : Service() {
class AppUpdateService : Service() {
private val network: NetworkHelper by injectLazy()
@ -44,7 +44,7 @@ class UpdaterService : Service() {
*/
private lateinit var wakeLock: PowerManager.WakeLock
private lateinit var notifier: UpdaterNotifier
private lateinit var notifier: AppUpdateNotifier
private var runningJob: Job? = null
@ -52,7 +52,7 @@ class UpdaterService : Service() {
override fun onCreate() {
super.onCreate()
notifier = UpdaterNotifier(this)
notifier = AppUpdateNotifier(this)
startForeground(Notifications.ID_UPDATER, notifier.onDownloadStarted(getString(R.string.app_name)).build())
@ -189,7 +189,7 @@ class UpdaterService : Service() {
}
}
val newIntent = Intent(this, UpdaterBroadcast::class.java)
val newIntent = Intent(this, AppUpdateBroadcast::class.java)
.setAction(PACKAGE_INSTALLED_ACTION)
.putExtra(EXTRA_NOTIFY_ON_INSTALL, notifyOnInstall)
.putExtra(EXTRA_FILE_URI, file.getUriCompat(this).toString())
@ -216,7 +216,7 @@ class UpdaterService : Service() {
internal const val NOTIFY_ON_INSTALL_KEY = "notify_on_install_complete"
private var instance: UpdaterService? = null
private var instance: AppUpdateService? = null
/**
* Returns the status of the service.
@ -234,7 +234,7 @@ class UpdaterService : Service() {
fun start(context: Context, url: String, notifyOnInstall: Boolean) {
if (!isRunning()) {
val title = context.getString(R.string.app_name)
val intent = Intent(context, UpdaterService::class.java).apply {
val intent = Intent(context, AppUpdateService::class.java).apply {
putExtra(EXTRA_DOWNLOAD_TITLE, title)
putExtra(EXTRA_DOWNLOAD_URL, url)
putExtra(EXTRA_NOTIFY_ON_INSTALL, notifyOnInstall)
@ -253,7 +253,7 @@ class UpdaterService : Service() {
* @param context the application context.
*/
fun stop(context: Context) {
context.stopService(Intent(context, UpdaterService::class.java))
context.stopService(Intent(context, AppUpdateService::class.java))
}
/**
@ -263,7 +263,7 @@ class UpdaterService : Service() {
* @return [PendingIntent]
*/
internal fun downloadApkPendingService(context: Context, url: String, notifyOnInstall: Boolean = false): PendingIntent {
val intent = Intent(context, UpdaterService::class.java).apply {
val intent = Intent(context, AppUpdateService::class.java).apply {
putExtra(EXTRA_DOWNLOAD_URL, url)
putExtra(EXTRA_NOTIFY_ON_INSTALL, notifyOnInstall)
}

View file

@ -25,11 +25,11 @@ class AutoUpdaterJob(private val context: Context, workerParams: WorkerParameter
) {
return@coroutineScope Result.failure()
}
val result = UpdateChecker.getUpdateChecker().checkForUpdate()
if (result is UpdateResult.NewUpdate<*> && !UpdaterService.isRunning()) {
UpdaterNotifier(context).cancel()
UpdaterNotifier.releasePageUrl = result.release.releaseLink
UpdaterService.start(context, result.release.downloadLink, false)
val result = AppUpdateChecker.getUpdateChecker().checkForUpdate()
if (result is AppUpdateResult.NewUpdate<*> && !AppUpdateService.isRunning()) {
AppUpdateNotifier(context).cancel()
AppUpdateNotifier.releasePageUrl = result.release.releaseLink
AppUpdateService.start(context, result.release.downloadLink, false)
}
Result.success()
} catch (e: Exception) {
@ -45,7 +45,7 @@ class AutoUpdaterJob(private val context: Context, workerParams: WorkerParameter
fun setupTask(context: Context) {
val preferences = Injekt.get<PreferencesHelper>()
val restrictions = preferences.shouldAutoUpdate()
val restrictions = preferences.appShouldAutoUpdate()
val wifiRestriction = if (restrictions == ONLY_ON_UNMETERED) {
NetworkType.UNMETERED
} else {

View file

@ -1,15 +0,0 @@
package eu.kanade.tachiyomi.data.updater
import eu.kanade.tachiyomi.data.updater.github.GithubUpdateChecker
abstract class UpdateChecker {
companion object {
fun getUpdateChecker(): UpdateChecker = GithubUpdateChecker()
}
/**
* Returns suspended result containing release information
*/
abstract suspend fun checkForUpdate(): UpdateResult
}

View file

@ -1,7 +0,0 @@
package eu.kanade.tachiyomi.data.updater
abstract class UpdateResult {
open class NewUpdate<T : Release>(val release: T) : UpdateResult()
open class NoNewUpdate : UpdateResult()
}

View file

@ -1,22 +1,22 @@
package eu.kanade.tachiyomi.data.updater.github
import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.data.updater.UpdateChecker
import eu.kanade.tachiyomi.data.updater.UpdateResult
import eu.kanade.tachiyomi.data.updater.AppUpdateChecker
import eu.kanade.tachiyomi.data.updater.AppUpdateResult
class GithubUpdateChecker : UpdateChecker() {
class GithubAppUpdateChecker : AppUpdateChecker() {
private val service: GithubService = GithubService.create()
override suspend fun checkForUpdate(): UpdateResult {
override suspend fun checkForUpdate(): AppUpdateResult {
val release = service.getLatestVersion()
val newVersion = release.version.replace("[^\\d.]".toRegex(), "")
// Check if latest version is different from current version
return if (newVersion != BuildConfig.VERSION_NAME) {
GithubUpdateResult.NewUpdate(release)
GithubAppUpdateResult.NewUpdate(release)
} else {
GithubUpdateResult.NoNewUpdate()
GithubAppUpdateResult.NoNewUpdate()
}
}
}

View file

@ -0,0 +1,9 @@
package eu.kanade.tachiyomi.data.updater.github
import eu.kanade.tachiyomi.data.updater.AppUpdateResult
sealed class GithubAppUpdateResult : AppUpdateResult() {
class NewUpdate(release: GithubRelease) : AppUpdateResult.NewUpdate<GithubRelease>(release)
class NoNewUpdate : AppUpdateResult.NoNewUpdate()
}

View file

@ -1,9 +0,0 @@
package eu.kanade.tachiyomi.data.updater.github
import eu.kanade.tachiyomi.data.updater.UpdateResult
sealed class GithubUpdateResult : UpdateResult() {
class NewUpdate(release: GithubRelease) : UpdateResult.NewUpdate<GithubRelease>(release)
class NoNewUpdate : UpdateResult.NoNewUpdate()
}

View file

@ -52,9 +52,9 @@ import eu.kanade.tachiyomi.data.library.LibraryUpdateService
import eu.kanade.tachiyomi.data.notification.NotificationReceiver
import eu.kanade.tachiyomi.data.notification.Notifications
import eu.kanade.tachiyomi.data.preference.asImmediateFlowIn
import eu.kanade.tachiyomi.data.updater.UpdateChecker
import eu.kanade.tachiyomi.data.updater.UpdateResult
import eu.kanade.tachiyomi.data.updater.UpdaterNotifier
import eu.kanade.tachiyomi.data.updater.AppUpdateChecker
import eu.kanade.tachiyomi.data.updater.AppUpdateNotifier
import eu.kanade.tachiyomi.data.updater.AppUpdateResult
import eu.kanade.tachiyomi.databinding.MainActivityBinding
import eu.kanade.tachiyomi.extension.ExtensionManager
import eu.kanade.tachiyomi.extension.api.ExtensionGithubApi
@ -122,7 +122,7 @@ open class MainActivity : BaseActivity<MainActivityBinding>(), DownloadServiceLi
private val hideBottomNav
get() = router.backstackSize > 1 && router.backstack[1].controller !is DialogController
private val updateChecker by lazy { UpdateChecker.getUpdateChecker() }
private val updateChecker by lazy { AppUpdateChecker.getUpdateChecker() }
private val isUpdaterEnabled = BuildConfig.INCLUDE_UPDATER
private var tabAnimation: ValueAnimator? = null
private var overflowDialog: Dialog? = null
@ -565,13 +565,13 @@ open class MainActivity : BaseActivity<MainActivityBinding>(), DownloadServiceLi
try {
val result = updateChecker.checkForUpdate()
preferences.lastAppCheck().set(Date().time)
if (result is UpdateResult.NewUpdate<*>) {
if (result is AppUpdateResult.NewUpdate<*>) {
val body = result.release.info
val url = result.release.downloadLink
// Create confirmation window
withContext(Dispatchers.Main) {
UpdaterNotifier.releasePageUrl = result.release.releaseLink
AppUpdateNotifier.releasePageUrl = result.release.releaseLink
AboutController.NewUpdateDialogController(body, url).showDialog(router)
}
}

View file

@ -10,10 +10,10 @@ import com.google.android.gms.oss.licenses.OssLicensesMenuActivity
import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.updater.UpdateChecker
import eu.kanade.tachiyomi.data.updater.UpdateResult
import eu.kanade.tachiyomi.data.updater.UpdaterNotifier
import eu.kanade.tachiyomi.data.updater.UpdaterService
import eu.kanade.tachiyomi.data.updater.AppUpdateChecker
import eu.kanade.tachiyomi.data.updater.AppUpdateNotifier
import eu.kanade.tachiyomi.data.updater.AppUpdateResult
import eu.kanade.tachiyomi.data.updater.AppUpdateService
import eu.kanade.tachiyomi.ui.base.controller.DialogController
import eu.kanade.tachiyomi.util.lang.toTimestampString
import eu.kanade.tachiyomi.util.system.isOnline
@ -36,7 +36,7 @@ class AboutController : SettingsController() {
/**
* Checks for new releases
*/
private val updateChecker by lazy { UpdateChecker.getUpdateChecker() }
private val updateChecker by lazy { AppUpdateChecker.getUpdateChecker() }
private val userPreferences: PreferencesHelper by injectLazy()
@ -178,17 +178,17 @@ class AboutController : SettingsController() {
}
}
when (result) {
is UpdateResult.NewUpdate<*> -> {
is AppUpdateResult.NewUpdate<*> -> {
val body = result.release.info
val url = result.release.downloadLink
// Create confirmation window
withContext(Dispatchers.Main) {
UpdaterNotifier.releasePageUrl = result.release.releaseLink
AppUpdateNotifier.releasePageUrl = result.release.releaseLink
NewUpdateDialogController(body, url).showDialog(router)
}
}
is UpdateResult.NoNewUpdate -> {
is AppUpdateResult.NoNewUpdate -> {
withContext(Dispatchers.Main) {
activity?.toast(R.string.no_new_updates_available)
}
@ -216,7 +216,7 @@ class AboutController : SettingsController() {
if (appContext != null) {
// Start download
val url = args.getString(URL_KEY) ?: ""
UpdaterService.start(appContext, url, true)
AppUpdateService.start(appContext, url, true)
}
}
.setNegativeButton(R.string.ignore, null)