diff --git a/app/src/main/java/eu/kanade/presentation/library/LibraryScreen.kt b/app/src/main/java/eu/kanade/presentation/library/LibraryScreen.kt index 02994e10f..1e2734aed 100644 --- a/app/src/main/java/eu/kanade/presentation/library/LibraryScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/library/LibraryScreen.kt @@ -36,7 +36,7 @@ fun LibraryScreen( onClickSelectAll: () -> Unit, onClickInvertSelection: () -> Unit, onClickFilter: () -> Unit, - onClickRefresh: (Category?) -> Unit, + onClickRefresh: (Category?) -> Boolean, // SY --> onClickCleanTitles: () -> Unit, onClickMigrate: () -> Unit, diff --git a/app/src/main/java/eu/kanade/presentation/library/components/LibraryContent.kt b/app/src/main/java/eu/kanade/presentation/library/components/LibraryContent.kt index 7e1e75f19..92fde912b 100644 --- a/app/src/main/java/eu/kanade/presentation/library/components/LibraryContent.kt +++ b/app/src/main/java/eu/kanade/presentation/library/components/LibraryContent.kt @@ -45,7 +45,7 @@ fun LibraryContent( onChangeCurrentPage: (Int) -> Unit, onMangaClicked: (Long) -> Unit, onToggleSelection: (LibraryManga) -> Unit, - onRefresh: (Category?) -> Unit, + onRefresh: (Category?) -> Boolean, onGlobalSearchClicked: () -> Unit, getNumberOfMangaForCategory: @Composable (Long) -> State, getDisplayModeForPage: @Composable (Int) -> State, @@ -99,7 +99,8 @@ fun LibraryContent( SwipeRefresh( state = rememberSwipeRefreshState(isRefreshing = isRefreshing), onRefresh = { - onRefresh(categories[currentPage()]) + val started = onRefresh(categories[currentPage()]) + if (!started) return@SwipeRefresh scope.launch { // Fake refresh status but hide it after a second as it's a long running task isRefreshing = true diff --git a/app/src/main/java/eu/kanade/presentation/updates/UpdatesScreen.kt b/app/src/main/java/eu/kanade/presentation/updates/UpdatesScreen.kt index 18a2e3bb1..310687e89 100644 --- a/app/src/main/java/eu/kanade/presentation/updates/UpdatesScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/updates/UpdatesScreen.kt @@ -83,9 +83,9 @@ fun UpdateScreen( val context = LocalContext.current val onUpdateLibrary = { - if (LibraryUpdateService.start(context)) { - context.toast(R.string.updating_library) - } + val started = LibraryUpdateService.start(context) + context.toast(if (started) R.string.updating_library else R.string.update_already_running) + started } val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState()) @@ -97,7 +97,7 @@ fun UpdateScreen( UpdatesAppBar( incognitoMode = presenter.isIncognitoMode, downloadedOnlyMode = presenter.isDownloadOnly, - onUpdateLibrary = onUpdateLibrary, + onUpdateLibrary = { onUpdateLibrary() }, actionModeCounter = presenter.selected.size, onSelectAll = { presenter.toggleAllSelection(true) }, onInvertSelection = { presenter.invertSelection() }, @@ -132,7 +132,8 @@ fun UpdateScreen( SwipeRefresh( state = rememberSwipeRefreshState(isRefreshing = isRefreshing), onRefresh = { - onUpdateLibrary() + val started = onUpdateLibrary() + if (!started) return@SwipeRefresh scope.launch { // Fake refresh status but hide it after a second as it's a long running task isRefreshing = true 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 b464537d7..3d6b824dd 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 @@ -193,22 +193,19 @@ class LibraryUpdateService( * @return true if service newly started, false otherwise */ fun start(context: Context, category: Category? = null, target: Target = Target.CHAPTERS /* SY --> */, group: Int = LibraryGroup.BY_DEFAULT, groupExtra: String? = null /* SY <-- */): Boolean { - return if (!isRunning(context)) { - val intent = Intent(context, LibraryUpdateService::class.java).apply { - putExtra(KEY_TARGET, target) - category?.let { putExtra(KEY_CATEGORY, it.id) } - // SY --> - putExtra(KEY_GROUP, group) - groupExtra?.let { putExtra(KEY_GROUP_EXTRA, it) } - // SY <-- - } - ContextCompat.startForegroundService(context, intent) + if (isRunning(context)) return false - true - } else { - instance?.addMangaToQueue(category?.id ?: -1, group, groupExtra) - false + val intent = Intent(context, LibraryUpdateService::class.java).apply { + putExtra(KEY_TARGET, target) + category?.let { putExtra(KEY_CATEGORY, it.id) } + // SY --> + putExtra(KEY_GROUP, group) + groupExtra?.let { putExtra(KEY_GROUP_EXTRA, it) } + // SY <-- } + ContextCompat.startForegroundService(context, intent) + + return true } /** diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt index 044505614..641429160 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt @@ -93,21 +93,20 @@ class LibraryController( onClickRefresh = { // SY --> val groupType = presenter.groupType - if ( - LibraryUpdateService.start( - context = context, - category = if (groupType == LibraryGroup.BY_DEFAULT) it else null, - group = groupType, - groupExtra = when (groupType) { - LibraryGroup.BY_DEFAULT -> null - LibraryGroup.BY_SOURCE, LibraryGroup.BY_STATUS, LibraryGroup.BY_TRACK_STATUS -> it?.id?.toString() - else -> null - }, - ) - ) { - // SY <-- - context.toast(R.string.updating_library) - } + // SY --> + val started = LibraryUpdateService.start( + context = context, + category = if (groupType == LibraryGroup.BY_DEFAULT) it else null, + group = groupType, + groupExtra = when (groupType) { + LibraryGroup.BY_DEFAULT -> null + LibraryGroup.BY_SOURCE, LibraryGroup.BY_STATUS, LibraryGroup.BY_TRACK_STATUS -> it?.id?.toString() + else -> null + }, + ) + // SY <-- + context.toast(if (started) R.string.updating_library else R.string.update_already_running) + started }, onClickInvertSelection = { presenter.invertSelection(presenter.activeCategory) }, onClickSelectAll = { presenter.selectAll(presenter.activeCategory) }, diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1838e96ca..47ccc3778 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -729,6 +729,7 @@ Updating library + An update is already running Unable to open last read chapter