mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Dismiss extension update notification if all updates installed
This commit is contained in:
		@@ -5,6 +5,7 @@ import android.graphics.drawable.Drawable
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.extension.api.ExtensionGithubApi
 | 
			
		||||
import eu.kanade.tachiyomi.extension.api.ExtensionUpdateNotifier
 | 
			
		||||
import eu.kanade.tachiyomi.extension.model.Extension
 | 
			
		||||
import eu.kanade.tachiyomi.extension.model.InstallStep
 | 
			
		||||
import eu.kanade.tachiyomi.extension.model.LoadResult
 | 
			
		||||
@@ -195,7 +196,7 @@ class ExtensionManager(
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns an observable of the installation process for the given extension. It will complete
 | 
			
		||||
     * Returns a flow of the installation process for the given extension. It will complete
 | 
			
		||||
     * once the extension is installed or throws an error. The process will be canceled if
 | 
			
		||||
     * unsubscribed before its completion.
 | 
			
		||||
     *
 | 
			
		||||
@@ -206,7 +207,7 @@ class ExtensionManager(
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns an observable of the installation process for the given extension. It will complete
 | 
			
		||||
     * Returns a flow of the installation process for the given extension. It will complete
 | 
			
		||||
     * once the extension is updated or throws an error. The process will be canceled if
 | 
			
		||||
     * unsubscribed before its completion.
 | 
			
		||||
     *
 | 
			
		||||
@@ -356,6 +357,10 @@ class ExtensionManager(
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun updatePendingUpdatesCount() {
 | 
			
		||||
        preferences.extensionUpdatesCount().set(_installedExtensionsFlow.value.count { it.hasUpdate })
 | 
			
		||||
        val pendingUpdateCount = _installedExtensionsFlow.value.count { it.hasUpdate }
 | 
			
		||||
        preferences.extensionUpdatesCount().set(pendingUpdateCount)
 | 
			
		||||
        if (pendingUpdateCount == 0) {
 | 
			
		||||
            ExtensionUpdateNotifier(context).dismiss()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -5,6 +5,7 @@ import androidx.core.app.NotificationCompat
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.data.notification.NotificationReceiver
 | 
			
		||||
import eu.kanade.tachiyomi.data.notification.Notifications
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.cancelNotification
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.notify
 | 
			
		||||
 | 
			
		||||
class ExtensionUpdateNotifier(private val context: Context) {
 | 
			
		||||
@@ -29,4 +30,8 @@ class ExtensionUpdateNotifier(private val context: Context) {
 | 
			
		||||
            setAutoCancel(true)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun dismiss() {
 | 
			
		||||
        context.cancelNotification(Notifications.ID_UPDATES_TO_EXTS)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -157,14 +157,14 @@ class ExtensionsScreenModel(
 | 
			
		||||
        extensionManager.cancelInstallUpdateExtension(extension)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun removeDownloadState(extension: Extension) {
 | 
			
		||||
        _currentDownloads.update { it - extension.pkgName }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun addDownloadState(extension: Extension, installStep: InstallStep) {
 | 
			
		||||
        _currentDownloads.update { it + Pair(extension.pkgName, installStep) }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun removeDownloadState(extension: Extension) {
 | 
			
		||||
        _currentDownloads.update { it - extension.pkgName }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private suspend fun Flow<InstallStep>.collectToInstallUpdate(extension: Extension) =
 | 
			
		||||
        this
 | 
			
		||||
            .onEach { installStep -> addDownloadState(extension, installStep) }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user