Minor cleanup

This commit is contained in:
Jobobby04
2023-12-24 14:28:39 -05:00
parent 7f89587889
commit c36d2794bb
25 changed files with 166 additions and 63 deletions
@@ -45,11 +45,9 @@ import eu.kanade.presentation.browse.components.ExtensionIcon
import eu.kanade.presentation.manga.components.DotSeparatorNoSpaceText
import eu.kanade.tachiyomi.extension.model.Extension
import eu.kanade.tachiyomi.extension.model.InstallStep
import eu.kanade.tachiyomi.source.ConfigurableSource
import eu.kanade.tachiyomi.ui.browse.extension.ExtensionUiModel
import eu.kanade.tachiyomi.ui.browse.extension.ExtensionsScreenModel
import eu.kanade.tachiyomi.util.system.LocaleHelper
import exh.source.anyIs
import tachiyomi.i18n.MR
import tachiyomi.i18n.sy.SYMR
import tachiyomi.presentation.core.components.FastScrollLazyColumn
@@ -210,7 +210,7 @@ object SettingsDataScreen : SearchableSettings {
// SY -->
val pagePreviewCache = remember { Injekt.get<PagePreviewCache>() }
var pagePreviewReadableSizeSema by remember { mutableStateOf(0) }
var pagePreviewReadableSizeSema by remember { mutableIntStateOf(0) }
val pagePreviewReadableSize = remember(pagePreviewReadableSizeSema) { pagePreviewCache.readableSize }
// SY <--
@@ -248,10 +248,14 @@ object SettingsLibraryScreen : SearchableSettings {
pref = libraryPreferences.swipeToStartAction(),
title = stringResource(MR.strings.pref_chapter_swipe_start),
entries = mapOf(
LibraryPreferences.ChapterSwipeAction.Disabled to stringResource(MR.strings.disabled),
LibraryPreferences.ChapterSwipeAction.ToggleBookmark to stringResource(MR.strings.action_bookmark),
LibraryPreferences.ChapterSwipeAction.ToggleRead to stringResource(MR.strings.action_mark_as_read),
LibraryPreferences.ChapterSwipeAction.Download to stringResource(MR.strings.action_download),
LibraryPreferences.ChapterSwipeAction.Disabled to
stringResource(MR.strings.disabled),
LibraryPreferences.ChapterSwipeAction.ToggleBookmark to
stringResource(MR.strings.action_bookmark),
LibraryPreferences.ChapterSwipeAction.ToggleRead to
stringResource(MR.strings.action_mark_as_read),
LibraryPreferences.ChapterSwipeAction.Download to
stringResource(MR.strings.action_download),
),
),
Preference.PreferenceItem.ListPreference(
@@ -259,8 +263,10 @@ object SettingsLibraryScreen : SearchableSettings {
title = stringResource(MR.strings.pref_chapter_swipe_end),
entries = mapOf(
LibraryPreferences.ChapterSwipeAction.Disabled to stringResource(MR.strings.disabled),
LibraryPreferences.ChapterSwipeAction.ToggleBookmark to stringResource(MR.strings.action_bookmark),
LibraryPreferences.ChapterSwipeAction.ToggleRead to stringResource(MR.strings.action_mark_as_read),
LibraryPreferences.ChapterSwipeAction.ToggleBookmark to
stringResource(MR.strings.action_bookmark),
LibraryPreferences.ChapterSwipeAction.ToggleRead to
stringResource(MR.strings.action_mark_as_read),
LibraryPreferences.ChapterSwipeAction.Download to stringResource(MR.strings.action_download),
),
),
@@ -208,8 +208,10 @@ object SettingsReaderScreen : SearchableSettings {
title = stringResource(MR.strings.pref_read_with_tapping_inverted),
entries = mapOf(
ReaderPreferences.TappingInvertMode.NONE to stringResource(MR.strings.none),
ReaderPreferences.TappingInvertMode.HORIZONTAL to stringResource(MR.strings.tapping_inverted_horizontal),
ReaderPreferences.TappingInvertMode.VERTICAL to stringResource(MR.strings.tapping_inverted_vertical),
ReaderPreferences.TappingInvertMode.HORIZONTAL to
stringResource(MR.strings.tapping_inverted_horizontal),
ReaderPreferences.TappingInvertMode.VERTICAL to
stringResource(MR.strings.tapping_inverted_vertical),
ReaderPreferences.TappingInvertMode.BOTH to stringResource(MR.strings.tapping_inverted_both),
),
enabled = navMode != 5,
@@ -308,8 +310,10 @@ object SettingsReaderScreen : SearchableSettings {
title = stringResource(MR.strings.pref_read_with_tapping_inverted),
entries = mapOf(
ReaderPreferences.TappingInvertMode.NONE to stringResource(MR.strings.none),
ReaderPreferences.TappingInvertMode.HORIZONTAL to stringResource(MR.strings.tapping_inverted_horizontal),
ReaderPreferences.TappingInvertMode.VERTICAL to stringResource(MR.strings.tapping_inverted_vertical),
ReaderPreferences.TappingInvertMode.HORIZONTAL to
stringResource(MR.strings.tapping_inverted_horizontal),
ReaderPreferences.TappingInvertMode.VERTICAL to
stringResource(MR.strings.tapping_inverted_vertical),
ReaderPreferences.TappingInvertMode.BOTH to stringResource(MR.strings.tapping_inverted_both),
),
enabled = navMode != 5,
@@ -88,7 +88,9 @@ class SettingsSearchScreen : Screen() {
focusRequester.requestFocus()
}
var textFieldValue by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) }
var textFieldValue by rememberSaveable(stateSaver = TextFieldValue.Saver) {
mutableStateOf(TextFieldValue())
}
Scaffold(
topBar = {
Column {
@@ -202,7 +204,11 @@ private fun SearchResult(
SearchResultItem(
route = settingsData.route,
title = p.title,
breadcrumbs = getLocalizedBreadcrumb(path = settingsData.title, node = categoryTitle, isLtr = isLtr),
breadcrumbs = getLocalizedBreadcrumb(
path = settingsData.title,
node = categoryTitle,
isLtr = isLtr,
),
highlightKey = p.title,
)
}
@@ -112,7 +112,9 @@ fun BottomReaderBar(
if (cropBorders.isIn(enabledButtons)) {
IconButton(onClick = onClickCropBorder) {
Icon(
painter = painterResource(if (cropEnabled) R.drawable.ic_crop_24dp else R.drawable.ic_crop_off_24dp),
painter = painterResource(
if (cropEnabled) R.drawable.ic_crop_24dp else R.drawable.ic_crop_off_24dp,
),
contentDescription = stringResource(MR.strings.pref_crop_borders),
)
}
@@ -39,18 +39,32 @@ data class BackupChapter(
}
}
val backupChapterMapper = { _: Long, _: Long, url: String, name: String, scanlator: String?, read: Boolean, bookmark: Boolean, lastPageRead: Long, chapterNumber: Double, source_order: Long, dateFetch: Long, dateUpload: Long, lastModifiedAt: Long ->
BackupChapter(
url = url,
name = name,
chapterNumber = chapterNumber.toFloat(),
scanlator = scanlator,
read = read,
bookmark = bookmark,
lastPageRead = lastPageRead,
dateFetch = dateFetch,
dateUpload = dateUpload,
sourceOrder = source_order,
lastModifiedAt = lastModifiedAt,
)
}
val backupChapterMapper =
{ _: Long,
_: Long,
url: String,
name: String,
scanlator: String?,
read: Boolean,
bookmark: Boolean,
lastPageRead: Long,
chapterNumber: Double,
source_order: Long,
dateFetch: Long,
dateUpload: Long,
lastModifiedAt: Long,
->
BackupChapter(
url = url,
name = name,
chapterNumber = chapterNumber.toFloat(),
scanlator = scanlator,
read = read,
bookmark = bookmark,
lastPageRead = lastPageRead,
dateFetch = dateFetch,
dateUpload = dateUpload,
sourceOrder = source_order,
lastModifiedAt = lastModifiedAt,
)
}
@@ -36,7 +36,18 @@ data class BackupMergedMangaReference(
}
val backupMergedMangaReferenceMapper =
{ _: Long, isInfoManga: Boolean, getChapterUpdates: Boolean, chapterSortMode: Long, chapterPriority: Long, downloadChapters: Boolean, _: Long, mergeUrl: String, _: Long?, mangaUrl: String, mangaSourceId: Long ->
{ _: Long,
isInfoManga: Boolean,
getChapterUpdates: Boolean,
chapterSortMode: Long,
chapterPriority: Long,
downloadChapters: Boolean,
_: Long,
mergeUrl: String,
_: Long?,
mangaUrl: String,
mangaSourceId: Long,
->
BackupMergedMangaReference(
isInfoManga = isInfoManga,
getChapterUpdates = getChapterUpdates,
@@ -32,7 +32,7 @@ class BackupRestorer(
private val preferenceRestorer: PreferenceRestorer = PreferenceRestorer(context),
private val mangaRestorer: MangaRestorer = MangaRestorer(),
// SY -->
private val savedSearchRestorer: SavedSearchRestorer = SavedSearchRestorer()
private val savedSearchRestorer: SavedSearchRestorer = SavedSearchRestorer(),
// SY <--
) {
@@ -208,7 +208,7 @@ data class RestoreOptions(
val sourceSettings: Boolean = true,
val library: Boolean = true,
// SY -->
val savedSearches: Boolean = true
val savedSearches: Boolean = true,
// SY <--
) {
fun toBooleanArray() = booleanArrayOf(
@@ -92,7 +92,7 @@ class MangaRestorer(
// SY -->
mergedMangaReferences = backupManga.mergedMangaReferences,
flatMetadata = backupManga.flatMetadata,
customManga = backupManga.getCustomMangaInfo()
customManga = backupManga.getCustomMangaInfo(),
// SY <--
)
}
@@ -120,7 +120,9 @@ class PagePreviewFetcher(
}
private suspend fun executeNetworkRequest(): Response {
val response = sourceLazy.value?.fetchPreviewImage(page.getPagePreviewInfo(), getCacheControl()) ?: callFactoryLazy.value.newCall(newRequest()).await()
val response = sourceLazy.value?.fetchPreviewImage(
page.getPagePreviewInfo(), getCacheControl(),
) ?: callFactoryLazy.value.newCall(newRequest()).await()
if (!response.isSuccessful && response.code != HTTP_NOT_MODIFIED) {
response.close()
throw HttpException(response)
@@ -178,7 +178,9 @@ class DownloadCache(
val sourceDir = rootDownloadsDir.sourceDirs[manga.source]
if (sourceDir != null) {
val mangaDir = sourceDir.mangaDirs[provider.getMangaDirName(/* SY --> */ manga.ogTitle /* SY <-- */)]
val mangaDir = sourceDir.mangaDirs[
provider.getMangaDirName(/* SY --> */ manga.ogTitle /* SY <-- */),
]
if (mangaDir != null) {
return mangaDir.chapterDirs.size
}
@@ -228,7 +230,11 @@ class DownloadCache(
suspend fun removeChapter(chapter: Chapter, manga: Manga) {
rootDownloadsDirLock.withLock {
val sourceDir = rootDownloadsDir.sourceDirs[manga.source] ?: return
val mangaDir = sourceDir.mangaDirs[provider.getMangaDirName(/* SY --> */ manga.ogTitle /* SY <-- */)] ?: return
val mangaDir = sourceDir.mangaDirs[
provider.getMangaDirName(
/* SY --> */ manga.ogTitle, /* SY <-- */
),
] ?: return
provider.getValidChapterDirNames(chapter.name, chapter.scanlator).forEach {
if (it in mangaDir.chapterDirs) {
mangaDir.chapterDirs -= it
@@ -263,7 +269,11 @@ class DownloadCache(
suspend fun removeChapters(chapters: List<Chapter>, manga: Manga) {
rootDownloadsDirLock.withLock {
val sourceDir = rootDownloadsDir.sourceDirs[manga.source] ?: return
val mangaDir = sourceDir.mangaDirs[provider.getMangaDirName(/* SY --> */ manga.ogTitle /* SY <-- */)] ?: return
val mangaDir = sourceDir.mangaDirs[
provider.getMangaDirName(
/* SY --> */ manga.ogTitle, /* SY <-- */
),
] ?: return
chapters.forEach { chapter ->
provider.getValidChapterDirNames(chapter.name, chapter.scanlator).forEach {
if (it in mangaDir.chapterDirs) {
@@ -278,7 +278,10 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
.filter {
when {
it.manga.updateStrategy != UpdateStrategy.ALWAYS_UPDATE -> {
skippedUpdates.add(it.manga to context.stringResource(MR.strings.skipped_reason_not_always_update))
skippedUpdates.add(
it.manga to
context.stringResource(MR.strings.skipped_reason_not_always_update),
)
false
}
@@ -298,7 +301,10 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
}
MANGA_OUTSIDE_RELEASE_PERIOD in restrictions && it.manga.nextUpdate > fetchWindow.second -> {
skippedUpdates.add(it.manga to context.stringResource(MR.strings.skipped_reason_not_in_release_period))
skippedUpdates.add(
it.manga to
context.stringResource(MR.strings.skipped_reason_not_in_release_period),
)
false
}
else -> true
@@ -320,7 +326,9 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
logcat {
skippedUpdates
.groupBy { it.second }
.map { (reason, entries) -> "$reason: [${entries.map { it.first.title }.sorted().joinToString()}]" }
.map { (reason, entries) ->
"$reason: [${entries.map { it.first.title }.sorted().joinToString()}]"
}
.joinToString()
}
notifier.showUpdateSkippedNotification(skippedUpdates.size)
@@ -357,7 +365,10 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
.map { mangaInSource ->
async {
semaphore.withPermit {
if (mdlistLogged && mangaInSource.firstOrNull()?.let { it.manga.source in mangaDexSourceIds } == true) {
if (
mdlistLogged && mangaInSource.firstOrNull()
?.let { it.manga.source in mangaDexSourceIds } == true
) {
launch {
mangaInSource.forEach { (manga) ->
try {
@@ -405,8 +416,10 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
}
} catch (e: Throwable) {
val errorMessage = when (e) {
is NoChaptersException -> context.stringResource(MR.strings.no_chapters_error)
// failedUpdates will already have the source, don't need to copy it into the message
is NoChaptersException ->
context.stringResource(MR.strings.no_chapters_error)
// failedUpdates will already have the source,
// don't need to copy it into the message
is SourceNotInstalledException -> context.stringResource(
MR.strings.loader_not_implemented_error,
)
@@ -513,7 +526,11 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
val source = sourceManager.get(manga.source) ?: return@withUpdateNotification
try {
val networkManga = source.getMangaDetails(manga.toSManga())
val updatedManga = manga.prepUpdateCover(coverCache, networkManga, true)
val updatedManga = manga.prepUpdateCover(
coverCache,
networkManga,
true,
)
.copyFrom(networkManga)
try {
updateManga.await(updatedManga.toMangaUpdate())
@@ -542,7 +559,8 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
private suspend fun syncFollows() = coroutineScope {
val preferences = Injekt.get<UnsortedPreferences>()
var count = 0
val mangaDex = MdUtil.getEnabledMangaDex(preferences, sourceManager = sourceManager) ?: return@coroutineScope
val mangaDex = MdUtil.getEnabledMangaDex(preferences, sourceManager = sourceManager)
?: return@coroutineScope
val syncFollowStatusInts = preferences.mangadexSyncToLibraryIndexes().get().map { it.toInt() }
val size: Int
@@ -555,7 +573,9 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
ensureActive()
count++
notifier.showProgressNotification(listOf(Manga.create().copy(ogTitle = networkManga.title)), count, size)
notifier.showProgressNotification(
listOf(Manga.create().copy(ogTitle = networkManga.title)), count, size,
)
var dbManga = getManga.await(networkManga.url, mangaDex.id)
@@ -107,7 +107,9 @@ class LibraryUpdateNotifier(private val context: Context) {
Notifications.CHANNEL_LIBRARY_PROGRESS,
) {
setContentTitle(context.stringResource(MR.strings.label_warning))
setStyle(NotificationCompat.BigTextStyle().bigText(context.stringResource(MR.strings.notification_size_warning)))
setStyle(
NotificationCompat.BigTextStyle().bigText(context.stringResource(MR.strings.notification_size_warning)),
)
setSmallIcon(R.drawable.ic_warning_white_24dp)
setTimeoutAfter(Downloader.WARNING_NOTIF_TIMEOUT_MS)
setContentIntent(NotificationHandler.openUrl(context, HELP_WARNING_URL))
@@ -338,7 +340,9 @@ class LibraryUpdateNotifier(private val context: Context) {
if (shouldTruncate) {
// "Chapters 1, 2.5, 3, 4, 5 and 10 more"
val remaining = displayableChapterNumbers.size - NOTIF_MAX_CHAPTERS
val joinedChapterNumbers = displayableChapterNumbers.take(NOTIF_MAX_CHAPTERS).joinToString(", ")
val joinedChapterNumbers = displayableChapterNumbers
.take(NOTIF_MAX_CHAPTERS)
.joinToString(", ")
context.pluralStringResource(
MR.plurals.notification_chapters_multiple_and_more,
remaining,
@@ -138,7 +138,7 @@ class AppModule(val app: Application) : InjektModule {
addSingletonFactory { ChapterCache(app) }
addSingletonFactory { CoverCache(app) }
addSingletonFactory { NetworkHelper(app, get()) }
addSingletonFactory { NetworkHelper(app, get(), BuildConfig.DEBUG) }
addSingletonFactory { JavaScriptEngine(app) }
addSingletonFactory<SourceManager> { AndroidSourceManager(app, get(), get()) }
@@ -17,7 +17,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.RememberObserver
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.mutableDoubleStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
@@ -132,7 +132,7 @@ private fun Boolean.asEnabledString() = if (this) "enabled" else "disabled"
private class FpsState(private val interval: Int) :
Choreographer.FrameCallback,
RememberObserver,
MutableState<Double> by mutableStateOf(0.0) {
MutableState<Double> by mutableDoubleStateOf(0.0) {
private val choreographer = Choreographer.getInstance()
private var startFrameTimeMillis: Long = 0
private var numFramesRendered = 0
@@ -237,6 +237,7 @@ class EnhancedFilePrinter internal constructor(
*/
var lastFileName: String? = null
private set
/**
* Get the current log file.
*