Update dependency com.google.android.material:material to v1.14.0 (#3226)
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
This commit is contained in:
@@ -1,17 +1,13 @@
|
|||||||
package eu.kanade.tachiyomi.extension.installer
|
package eu.kanade.tachiyomi.extension.installer
|
||||||
|
|
||||||
import android.app.Service
|
import android.app.Service
|
||||||
import android.content.BroadcastReceiver
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.Intent
|
|
||||||
import android.content.IntentFilter
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import androidx.annotation.CallSuper
|
import androidx.annotation.CallSuper
|
||||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
|
||||||
import eu.kanade.tachiyomi.extension.ExtensionManager
|
import eu.kanade.tachiyomi.extension.ExtensionManager
|
||||||
import eu.kanade.tachiyomi.extension.model.InstallStep
|
import eu.kanade.tachiyomi.extension.model.InstallStep
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
import java.util.Collections
|
import java.util.Collections
|
||||||
|
import java.util.concurrent.CopyOnWriteArraySet
|
||||||
import kotlin.concurrent.atomics.AtomicReference
|
import kotlin.concurrent.atomics.AtomicReference
|
||||||
import kotlin.concurrent.atomics.ExperimentalAtomicApi
|
import kotlin.concurrent.atomics.ExperimentalAtomicApi
|
||||||
|
|
||||||
@@ -26,12 +22,7 @@ abstract class Installer(private val service: Service) {
|
|||||||
private var waitingInstall = AtomicReference<Entry?>(null)
|
private var waitingInstall = AtomicReference<Entry?>(null)
|
||||||
private val queue = Collections.synchronizedList(mutableListOf<Entry>())
|
private val queue = Collections.synchronizedList(mutableListOf<Entry>())
|
||||||
|
|
||||||
private val cancelReceiver = object : BroadcastReceiver() {
|
private val cancelListener: (Long) -> Unit = { downloadId -> cancelQueue(downloadId) }
|
||||||
override fun onReceive(context: Context, intent: Intent) {
|
|
||||||
val downloadId = intent.getLongExtra(EXTRA_DOWNLOAD_ID, -1).takeIf { it >= 0 } ?: return
|
|
||||||
cancelQueue(downloadId)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Installer readiness. If false, queue check will not run.
|
* Installer readiness. If false, queue check will not run.
|
||||||
@@ -114,7 +105,7 @@ abstract class Installer(private val service: Service) {
|
|||||||
*/
|
*/
|
||||||
@CallSuper
|
@CallSuper
|
||||||
open fun onDestroy() {
|
open fun onDestroy() {
|
||||||
LocalBroadcastManager.getInstance(service).unregisterReceiver(cancelReceiver)
|
cancelListeners -= cancelListener
|
||||||
queue.forEach { extensionManager.updateInstallStep(it.downloadId, InstallStep.Error) }
|
queue.forEach { extensionManager.updateInstallStep(it.downloadId, InstallStep.Error) }
|
||||||
queue.clear()
|
queue.clear()
|
||||||
waitingInstall.store(null)
|
waitingInstall.store(null)
|
||||||
@@ -150,23 +141,21 @@ abstract class Installer(private val service: Service) {
|
|||||||
data class Entry(val downloadId: Long, val uri: Uri)
|
data class Entry(val downloadId: Long, val uri: Uri)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
val filter = IntentFilter(ACTION_CANCEL_QUEUE)
|
cancelListeners += cancelListener
|
||||||
LocalBroadcastManager.getInstance(service).registerReceiver(cancelReceiver, filter)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val ACTION_CANCEL_QUEUE = "Installer.action.CANCEL_QUEUE"
|
private val cancelListeners = CopyOnWriteArraySet<(Long) -> Unit>()
|
||||||
private const val EXTRA_DOWNLOAD_ID = "Installer.extra.DOWNLOAD_ID"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attempts to cancel the installation entry for the provided download ID.
|
* Attempts to cancel the installation entry for the provided download ID.
|
||||||
*
|
*
|
||||||
|
* Runs on the calling thread, so the cancellation is done by the time this returns.
|
||||||
|
*
|
||||||
* @param downloadId Download ID as known by [ExtensionManager]
|
* @param downloadId Download ID as known by [ExtensionManager]
|
||||||
*/
|
*/
|
||||||
fun cancelInstallQueue(context: Context, downloadId: Long) {
|
fun cancelInstallQueue(downloadId: Long) {
|
||||||
val intent = Intent(ACTION_CANCEL_QUEUE)
|
cancelListeners.forEach { it(downloadId) }
|
||||||
intent.putExtra(EXTRA_DOWNLOAD_ID, downloadId)
|
|
||||||
LocalBroadcastManager.getInstance(context).sendBroadcast(intent)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ class ExtensionInstaller(
|
|||||||
*/
|
*/
|
||||||
fun cancelInstall(pkgName: String) {
|
fun cancelInstall(pkgName: String) {
|
||||||
activeJobs.remove(pkgName)?.cancel()
|
activeJobs.remove(pkgName)?.cancel()
|
||||||
Installer.cancelInstallQueue(context, pkgName.hashCode().toLong())
|
Installer.cancelInstallQueue(pkgName.hashCode().toLong())
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ ktlint = "1.8.0"
|
|||||||
leakCanary = "2.14"
|
leakCanary = "2.14"
|
||||||
logcat = "0.4"
|
logcat = "0.4"
|
||||||
markdown = "0.45.0"
|
markdown = "0.45.0"
|
||||||
material = "1.12.0"
|
material = "1.14.0"
|
||||||
materialKolor = "5.0.1"
|
materialKolor = "5.0.1"
|
||||||
metro = "1.4.3"
|
metro = "1.4.3"
|
||||||
mockk = "1.14.11"
|
mockk = "1.14.11"
|
||||||
|
|||||||
Reference in New Issue
Block a user