diff --git a/.github/workflows/build_check.yml b/.github/workflows/build_check.yml
index 6916b1621..220d01899 100644
--- a/.github/workflows/build_check.yml
+++ b/.github/workflows/build_check.yml
@@ -36,7 +36,7 @@ jobs:
uses: gradle/actions/setup-gradle@v4
- name: Build app
- run: ./gradlew detekt assembleDevDebug
+ run: ./gradlew spotlessCheck assembleDevDebug
- name: Upload APK
uses: actions/upload-artifact@v4
diff --git a/.github/workflows/build_push.yml b/.github/workflows/build_push.yml
index d5798a112..2ad2e6df9 100644
--- a/.github/workflows/build_push.yml
+++ b/.github/workflows/build_push.yml
@@ -50,7 +50,7 @@ jobs:
# SY -->
- name: Build app and run unit tests
- run: ./gradlew detekt assembleStandardRelease testStandardReleaseUnitTest --stacktrace
+ run: ./gradlew spotlessCheck assembleStandardRelease testStandardReleaseUnitTest --stacktrace
- name: Sign APK
uses: r0adkll/sign-android-release@v1
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 3623f82e5..291e4d5ee 100755
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -24,10 +24,6 @@ Before you start, please note that the ability to use following technologies is
- [Android Studio](https://developer.android.com/studio)
- Emulator or phone with developer options enabled to test changes.
-## Linting
-
-Run the `detekt` gradle task. If the build fails, a report of issues can be found in `app/build/reports/detekt/`. The report is availble in several formats and details each issue that needs attention.
-
## Getting help
- Join [the Discord server](https://discord.gg/tachiyomi) for online help and to ask questions while developing.
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 04c406dc8..0371a3d32 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -21,7 +21,7 @@ if (gradle.startParameter.taskRequests.toString().contains("Standard")) {
// shortcutHelper.setFilePath("./shortcuts.xml")
-val SUPPORTED_ABIS = setOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
+val supportedAbis = setOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
android {
namespace = "eu.kanade.tachiyomi"
@@ -38,7 +38,7 @@ android {
buildConfigField("boolean", "INCLUDE_UPDATER", "false")
ndk {
- abiFilters += SUPPORTED_ABIS
+ abiFilters += supportedAbis
}
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
@@ -47,7 +47,7 @@ android {
abi {
isEnable = true
reset()
- include(*SUPPORTED_ABIS.toTypedArray())
+ include(*supportedAbis.toTypedArray())
isUniversalApk = true
}
}
@@ -162,7 +162,7 @@ dependencies {
implementation(compose.ui.tooling.preview)
implementation(compose.ui.util)
implementation(compose.accompanist.systemuicontroller)
-
+
implementation(androidx.interpolator)
implementation(androidx.paging.runtime)
@@ -243,7 +243,6 @@ dependencies {
implementation(libs.compose.webview)
implementation(libs.compose.grid)
-
// Logging
implementation(libs.logcat)
diff --git a/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml
index 385506ee8..1f23d2a10 100644
--- a/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml
+++ b/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -3,4 +3,4 @@
-
\ No newline at end of file
+
diff --git a/app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml
index 385506ee8..1f23d2a10 100644
--- a/app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ b/app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -3,4 +3,4 @@
-
\ No newline at end of file
+
diff --git a/app/src/main/java/eu/kanade/domain/source/interactor/GetEnabledSources.kt b/app/src/main/java/eu/kanade/domain/source/interactor/GetEnabledSources.kt
index 28b6173b5..5d02514c1 100644
--- a/app/src/main/java/eu/kanade/domain/source/interactor/GetEnabledSources.kt
+++ b/app/src/main/java/eu/kanade/domain/source/interactor/GetEnabledSources.kt
@@ -32,10 +32,11 @@ class GetEnabledSources(
) { a, b, c -> Triple(a, b, c) },
// SY <--
repository.getSources(),
- ) { pinnedSourceIds,
- (enabledLanguages, disabledSources, lastUsedSource),
- (excludedFromDataSaver, sourcesInCategories, sourceCategoriesFilter),
- sources,
+ ) {
+ pinnedSourceIds,
+ (enabledLanguages, disabledSources, lastUsedSource),
+ (excludedFromDataSaver, sourcesInCategories, sourceCategoriesFilter),
+ sources,
->
val sourcesAndCategories = sourcesInCategories.map {
diff --git a/app/src/main/java/eu/kanade/domain/sync/SyncPreferences.kt b/app/src/main/java/eu/kanade/domain/sync/SyncPreferences.kt
index 7795147d6..95d218150 100644
--- a/app/src/main/java/eu/kanade/domain/sync/SyncPreferences.kt
+++ b/app/src/main/java/eu/kanade/domain/sync/SyncPreferences.kt
@@ -13,7 +13,7 @@ class SyncPreferences(
fun clientAPIKey() = preferenceStore.getString("sync_client_api_key", "")
fun lastSyncTimestamp() = preferenceStore.getLong(Preference.appStateKey("last_sync_timestamp"), 0L)
- fun lastSyncEtag() = preferenceStore.getString("sync_etag", "")
+ fun lastSyncEtag() = preferenceStore.getString("sync_etag", "")
fun syncInterval() = preferenceStore.getInt("sync_interval", 0)
fun syncService() = preferenceStore.getInt("sync_service", 0)
diff --git a/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt b/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt
index 3c732f649..3fd115c7c 100644
--- a/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt
+++ b/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt
@@ -18,12 +18,20 @@ class UiPreferences(
fun themeMode() = preferenceStore.getEnum(
"pref_theme_mode_key",
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { ThemeMode.SYSTEM } else { ThemeMode.LIGHT },
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ ThemeMode.SYSTEM
+ } else {
+ ThemeMode.LIGHT
+ },
)
fun appTheme() = preferenceStore.getEnum(
"pref_app_theme",
- if (DeviceUtil.isDynamicColorAvailable) { AppTheme.MONET } else { AppTheme.DEFAULT },
+ if (DeviceUtil.isDynamicColorAvailable) {
+ AppTheme.MONET
+ } else {
+ AppTheme.DEFAULT
+ },
)
fun themeDarkAmoled() = preferenceStore.getBoolean("pref_theme_dark_amoled_key", false)
diff --git a/app/src/main/java/eu/kanade/presentation/browse/ExtensionDetailsScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/ExtensionDetailsScreen.kt
index a246146d9..c9b0377d9 100644
--- a/app/src/main/java/eu/kanade/presentation/browse/ExtensionDetailsScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/browse/ExtensionDetailsScreen.kt
@@ -240,7 +240,7 @@ private fun DetailsHeader(
Extension name: ${extension.name} (lang: ${extension.lang}; package: ${extension.pkgName})
Extension version: ${extension.versionName} (lib: ${extension.libVersion}; version code: ${extension.versionCode})
NSFW: ${extension.isNsfw}
- """.trimIndent()
+ """.trimIndent(),
)
if (extension is Extension.Installed) {
@@ -250,8 +250,8 @@ private fun DetailsHeader(
Update available: ${extension.hasUpdate}
Obsolete: ${extension.isObsolete}
Shared: ${extension.isShared}
- Repository: ${extension.repoUrl}
- """.trimIndent()
+ Repository: ${extension.repoUrl}
+ """.trimIndent(),
)
}
}
diff --git a/app/src/main/java/eu/kanade/presentation/browse/ExtensionsScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/ExtensionsScreen.kt
index f1619177e..e8b1e8edb 100644
--- a/app/src/main/java/eu/kanade/presentation/browse/ExtensionsScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/browse/ExtensionsScreen.kt
@@ -219,7 +219,9 @@ private fun ExtensionContent(
when (it) {
is Extension.Available -> onInstallExtension(it)
is Extension.Installed -> onOpenExtension(it)
- is Extension.Untrusted -> { trustState = it }
+ is Extension.Untrusted -> {
+ trustState = it
+ }
}
},
onLongClickItem = onLongClickItem,
@@ -241,7 +243,9 @@ private fun ExtensionContent(
onOpenExtension(it)
}
}
- is Extension.Untrusted -> { trustState = it }
+ is Extension.Untrusted -> {
+ trustState = it
+ }
}
},
)
diff --git a/app/src/main/java/eu/kanade/presentation/browse/SourcesScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/SourcesScreen.kt
index d4de0b9fe..fada38614 100644
--- a/app/src/main/java/eu/kanade/presentation/browse/SourcesScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/browse/SourcesScreen.kt
@@ -35,7 +35,7 @@ import tachiyomi.i18n.MR
import tachiyomi.i18n.sy.SYMR
import tachiyomi.presentation.core.components.LabeledCheckbox
import tachiyomi.presentation.core.components.ScrollbarLazyColumn
-import tachiyomi.presentation.core.components.material.SecondaryItemAlpha
+import tachiyomi.presentation.core.components.material.SECONDARY_ALPHA
import tachiyomi.presentation.core.components.material.padding
import tachiyomi.presentation.core.components.material.topSmallPaddingValues
import tachiyomi.presentation.core.i18n.stringResource
@@ -179,7 +179,7 @@ private fun SourcePinButton(
MaterialTheme.colorScheme.primary
} else {
MaterialTheme.colorScheme.onBackground.copy(
- alpha = SecondaryItemAlpha,
+ alpha = SECONDARY_ALPHA,
)
}
val description = if (isPinned) MR.strings.action_unpin else MR.strings.action_pin
diff --git a/app/src/main/java/eu/kanade/presentation/components/TabbedDialog.kt b/app/src/main/java/eu/kanade/presentation/components/TabbedDialog.kt
index b651060f7..69b58c616 100644
--- a/app/src/main/java/eu/kanade/presentation/components/TabbedDialog.kt
+++ b/app/src/main/java/eu/kanade/presentation/components/TabbedDialog.kt
@@ -79,7 +79,7 @@ fun TabbedDialog(
modifier = Modifier.animateContentSize(),
state = pagerState,
verticalAlignment = Alignment.Top,
- pageContent = { page -> content(page) }
+ pageContent = { page -> content(page) },
)
}
}
diff --git a/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt b/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt
index df755d550..600450c41 100644
--- a/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt
+++ b/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt
@@ -207,7 +207,6 @@ private fun ColumnScope.SortPage(
}.collectAsState(initial = screenModel.libraryPreferences.sortTagsForLibrary().get().isNotEmpty())
// SY <--
-
val trackerSortOption = if (trackers.isEmpty()) {
emptyList()
} else {
diff --git a/app/src/main/java/eu/kanade/presentation/library/components/CommonMangaItem.kt b/app/src/main/java/eu/kanade/presentation/library/components/CommonMangaItem.kt
index b4a4c2cc0..a78462a75 100644
--- a/app/src/main/java/eu/kanade/presentation/library/components/CommonMangaItem.kt
+++ b/app/src/main/java/eu/kanade/presentation/library/components/CommonMangaItem.kt
@@ -62,7 +62,7 @@ private val ContinueReadingButtonIconSizeLarge = 20.dp
private val ContinueReadingButtonGridPadding = 6.dp
private val ContinueReadingButtonListSpacing = 8.dp
-private const val GridSelectedCoverAlpha = 0.76f
+private const val GRID_SELECTED_COVER_ALPHA = 0.76f
/**
* Layout of grid list item with title overlaying the cover.
@@ -90,7 +90,7 @@ fun MangaCompactGridItem(
MangaCover.Book(
modifier = Modifier
.fillMaxWidth()
- .alpha(if (isSelected) GridSelectedCoverAlpha else coverAlpha),
+ .alpha(if (isSelected) GRID_SELECTED_COVER_ALPHA else coverAlpha),
data = coverData,
)
},
@@ -197,7 +197,7 @@ fun MangaComfortableGridItem(
MangaCover.Book(
modifier = Modifier
.fillMaxWidth()
- .alpha(if (isSelected) GridSelectedCoverAlpha else coverAlpha),
+ .alpha(if (isSelected) GRID_SELECTED_COVER_ALPHA else coverAlpha),
data = coverData,
)
},
@@ -371,7 +371,7 @@ fun MangaListItem(
size = ContinueReadingButtonSizeSmall,
iconSize = ContinueReadingButtonIconSizeSmall,
onClick = onClickContinueReading,
- modifier = Modifier.padding(start = ContinueReadingButtonListSpacing)
+ modifier = Modifier.padding(start = ContinueReadingButtonListSpacing),
)
}
}
@@ -392,7 +392,7 @@ private fun ContinueReadingButton(
containerColor = MaterialTheme.colorScheme.primaryContainer.copy(alpha = 0.9f),
contentColor = contentColorFor(MaterialTheme.colorScheme.primaryContainer),
),
- modifier = Modifier.size(size)
+ modifier = Modifier.size(size),
) {
Icon(
imageVector = Icons.Filled.PlayArrow,
diff --git a/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt b/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt
index 0f1cc335b..f295754f0 100644
--- a/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt
@@ -995,7 +995,9 @@ private fun LazyListScope.sharedChapterItems(
// SY <--
},
readProgress = item.chapter.lastPageRead
- .takeIf { /* SY --> */(!item.chapter.read || alwaysShowReadingProgress)/* SY <-- */ && it > 0L }
+ .takeIf {
+ /* SY --> */(!item.chapter.read || alwaysShowReadingProgress)/* SY <-- */ && it > 0L
+ }
?.let {
stringResource(
MR.strings.chapter_progress,
diff --git a/app/src/main/java/eu/kanade/presentation/manga/components/ChapterHeader.kt b/app/src/main/java/eu/kanade/presentation/manga/components/ChapterHeader.kt
index 99ad1b37a..6067d24bd 100644
--- a/app/src/main/java/eu/kanade/presentation/manga/components/ChapterHeader.kt
+++ b/app/src/main/java/eu/kanade/presentation/manga/components/ChapterHeader.kt
@@ -12,7 +12,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import tachiyomi.i18n.MR
-import tachiyomi.presentation.core.components.material.SecondaryItemAlpha
+import tachiyomi.presentation.core.components.material.SECONDARY_ALPHA
import tachiyomi.presentation.core.components.material.padding
import tachiyomi.presentation.core.i18n.pluralStringResource
import tachiyomi.presentation.core.i18n.stringResource
@@ -60,6 +60,6 @@ private fun MissingChaptersWarning(count: Int) {
maxLines = 1,
overflow = TextOverflow.Ellipsis,
style = MaterialTheme.typography.bodySmall,
- color = MaterialTheme.colorScheme.error.copy(alpha = SecondaryItemAlpha),
+ color = MaterialTheme.colorScheme.error.copy(alpha = SECONDARY_ALPHA),
)
}
diff --git a/app/src/main/java/eu/kanade/presentation/manga/components/MangaChapterListItem.kt b/app/src/main/java/eu/kanade/presentation/manga/components/MangaChapterListItem.kt
index 46bb4b873..55e61e529 100644
--- a/app/src/main/java/eu/kanade/presentation/manga/components/MangaChapterListItem.kt
+++ b/app/src/main/java/eu/kanade/presentation/manga/components/MangaChapterListItem.kt
@@ -40,8 +40,8 @@ import eu.kanade.tachiyomi.data.download.model.Download
import me.saket.swipe.SwipeableActionsBox
import tachiyomi.domain.library.service.LibraryPreferences
import tachiyomi.i18n.MR
-import tachiyomi.presentation.core.components.material.ReadItemAlpha
-import tachiyomi.presentation.core.components.material.SecondaryItemAlpha
+import tachiyomi.presentation.core.components.material.DISABLED_ALPHA
+import tachiyomi.presentation.core.components.material.SECONDARY_ALPHA
import tachiyomi.presentation.core.i18n.stringResource
import tachiyomi.presentation.core.util.selectedBackground
@@ -135,7 +135,7 @@ fun MangaChapterListItem(
maxLines = 1,
overflow = TextOverflow.Ellipsis,
onTextLayout = { textHeight = it.size.height },
- color = LocalContentColor.current.copy(alpha = if (read) ReadItemAlpha else 1f),
+ color = LocalContentColor.current.copy(alpha = if (read) DISABLED_ALPHA else 1f),
)
}
@@ -143,7 +143,7 @@ fun MangaChapterListItem(
val subtitleStyle = MaterialTheme.typography.bodySmall
.merge(
color = LocalContentColor.current
- .copy(alpha = if (read) ReadItemAlpha else SecondaryItemAlpha)
+ .copy(alpha = if (read) DISABLED_ALPHA else SECONDARY_ALPHA),
)
ProvideTextStyle(value = subtitleStyle) {
if (date != null) {
@@ -152,14 +152,19 @@ fun MangaChapterListItem(
maxLines = 1,
overflow = TextOverflow.Ellipsis,
)
- if (readProgress != null || scanlator != null/* SY --> */ || sourceName != null/* SY <-- */) DotSeparatorText()
+ if (readProgress != null ||
+ scanlator != null/* SY --> */ ||
+ sourceName != null/* SY <-- */
+ ) {
+ DotSeparatorText()
+ }
}
if (readProgress != null) {
Text(
text = readProgress,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
- color = LocalContentColor.current.copy(alpha = ReadItemAlpha),
+ color = LocalContentColor.current.copy(alpha = DISABLED_ALPHA),
)
if (scanlator != null/* SY --> */ || sourceName != null/* SY <-- */) DotSeparatorText()
}
diff --git a/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt b/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt
index 7a5b1c13d..fba1f9ca1 100644
--- a/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt
+++ b/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt
@@ -82,6 +82,7 @@ import eu.kanade.tachiyomi.util.system.copyToClipboard
import tachiyomi.domain.manga.model.Manga
import tachiyomi.i18n.MR
import tachiyomi.i18n.sy.SYMR
+import tachiyomi.presentation.core.components.material.DISABLED_ALPHA
import tachiyomi.presentation.core.components.material.TextButton
import tachiyomi.presentation.core.components.material.padding
import tachiyomi.presentation.core.i18n.pluralStringResource
@@ -181,7 +182,7 @@ fun MangaActionRow(
// SY <--
modifier: Modifier = Modifier,
) {
- val defaultActionButtonColor = MaterialTheme.colorScheme.onSurface.copy(alpha = .38f)
+ val defaultActionButtonColor = MaterialTheme.colorScheme.onSurface.copy(alpha = DISABLED_ALPHA)
// TODO: show something better when using custom interval
val nextUpdateDays = remember(nextUpdate) {
diff --git a/app/src/main/java/eu/kanade/presentation/manga/components/PagePreviews.kt b/app/src/main/java/eu/kanade/presentation/manga/components/PagePreviews.kt
index 41c6a8528..d715c5e3e 100644
--- a/app/src/main/java/eu/kanade/presentation/manga/components/PagePreviews.kt
+++ b/app/src/main/java/eu/kanade/presentation/manga/components/PagePreviews.kt
@@ -44,7 +44,7 @@ import tachiyomi.presentation.core.i18n.stringResource
@Composable
private fun PagePreviewLoading(
- setMaxWidth: (Dp) -> Unit
+ setMaxWidth: (Dp) -> Unit,
) {
val density = LocalDensity.current
Box(
@@ -63,7 +63,7 @@ private fun PagePreviewLoading(
@Composable
private fun PagePreviewRow(
onOpenPage: (Int) -> Unit,
- items: ImmutableList
+ items: ImmutableList,
) {
Row(
modifier = Modifier
@@ -88,7 +88,7 @@ private fun PagePreviewMore(
) {
Box(
modifier = Modifier.fillMaxWidth(),
- contentAlignment = Alignment.Center
+ contentAlignment = Alignment.Center,
) {
TextButton(onClick = onMorePreviewsClicked) {
Text(stringResource(SYMR.strings.more_previews))
@@ -116,7 +116,7 @@ fun PagePreviews(
pagePreviewState.pagePreviews.take(rowCount * itemPerRowCount).chunked(itemPerRowCount).forEach {
PagePreviewRow(
onOpenPage = onOpenPage,
- items = remember(it) { it.toImmutableList() }
+ items = remember(it) { it.toImmutableList() },
)
}
@@ -153,7 +153,7 @@ fun LazyListScope.PagePreviewItems(
) {
PagePreviewRow(
onOpenPage = onOpenPage,
- items = remember(it) { it.toImmutableList() }
+ items = remember(it) { it.toImmutableList() },
)
}
item(
diff --git a/app/src/main/java/eu/kanade/presentation/more/NewUpdateScreen.kt b/app/src/main/java/eu/kanade/presentation/more/NewUpdateScreen.kt
index 3d561b0c3..87dd1ee4d 100644
--- a/app/src/main/java/eu/kanade/presentation/more/NewUpdateScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/NewUpdateScreen.kt
@@ -75,7 +75,7 @@ private fun NewUpdateScreenPreview() {
changelogInfo = """
## Yay
Foobar
-
+
### More info
- Hello
- World
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt
index 8fb07006f..a934fd36b 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt
@@ -3,7 +3,6 @@ package eu.kanade.presentation.more.settings.screen
import android.annotation.SuppressLint
import android.content.ActivityNotFoundException
import android.content.Intent
-import android.os.Build
import android.provider.Settings
import android.webkit.WebStorage
import android.webkit.WebView
@@ -376,7 +375,7 @@ object SettingsAdvancedScreen : SearchableSettings {
chooseColorProfile.launch(arrayOf("*/*"))
},
),
- )
+ ),
)
}
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt
index 36e03eef5..c8366f106 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt
@@ -180,11 +180,15 @@ object SettingsAppearanceScreen : SearchableSettings {
Preference.PreferenceItem.SliderPreference(
value = previewsRowCount,
title = stringResource(SYMR.strings.pref_previews_row_count),
- subtitle = if (previewsRowCount > 0) pluralStringResource(
- SYMR.plurals.row_count,
- previewsRowCount,
- previewsRowCount,
- ) else stringResource(MR.strings.disabled),
+ subtitle = if (previewsRowCount > 0) {
+ pluralStringResource(
+ SYMR.plurals.row_count,
+ previewsRowCount,
+ previewsRowCount,
+ )
+ } else {
+ stringResource(MR.strings.disabled)
+ },
min = 0,
max = 10,
onValueChanged = {
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt
index a27810c1a..40d23eb20 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt
@@ -94,7 +94,7 @@ object SettingsBrowseScreen : SearchableSettings {
pref = uiPreferences.feedTabInFront(),
title = stringResource(SYMR.strings.pref_feed_position),
subtitle = stringResource(SYMR.strings.pref_feed_position_summery),
- enabled = hideFeedTab.not()
+ enabled = hideFeedTab.not(),
),
),
),
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/OpenSourceLicensesScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/OpenSourceLicensesScreen.kt
index 3c2309b32..6e92d0cfc 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/OpenSourceLicensesScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/OpenSourceLicensesScreen.kt
@@ -37,7 +37,7 @@ class OpenSourceLicensesScreen : Screen() {
name = it.name,
website = it.website,
license = it.licenses.firstOrNull()?.htmlReadyLicenseContent.orEmpty(),
- )
+ ),
)
},
)
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/CreateBackupScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/CreateBackupScreen.kt
index a9446017f..fdadafb43 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/CreateBackupScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/CreateBackupScreen.kt
@@ -26,7 +26,6 @@ import eu.kanade.tachiyomi.util.system.toast
import kotlinx.collections.immutable.ImmutableList
import kotlinx.coroutines.flow.update
import tachiyomi.i18n.MR
-import tachiyomi.i18n.sy.SYMR
import tachiyomi.presentation.core.components.LabeledCheckbox
import tachiyomi.presentation.core.components.LazyColumnWithAction
import tachiyomi.presentation.core.components.SectionCard
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/BackupSchemaScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/BackupSchemaScreen.kt
index d5652b16a..8fe1d18c1 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/BackupSchemaScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/BackupSchemaScreen.kt
@@ -28,7 +28,7 @@ import tachiyomi.presentation.core.i18n.stringResource
class BackupSchemaScreen : Screen() {
companion object {
- const val title = "Backup file schema"
+ const val TITLE = "Backup file schema"
}
@Composable
@@ -41,7 +41,7 @@ class BackupSchemaScreen : Screen() {
Scaffold(
topBar = {
AppBar(
- title = title,
+ title = TITLE,
navigateUp = navigator::pop,
actions = {
AppBarActions(
@@ -50,7 +50,7 @@ class BackupSchemaScreen : Screen() {
title = stringResource(MR.strings.action_copy_to_clipboard),
icon = Icons.Default.ContentCopy,
onClick = {
- context.copyToClipboard(title, schema)
+ context.copyToClipboard(TITLE, schema)
},
),
),
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/DebugInfoScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/DebugInfoScreen.kt
index 0db4bd3c7..d44ee1319 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/DebugInfoScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/DebugInfoScreen.kt
@@ -31,11 +31,11 @@ class DebugInfoScreen : Screen() {
itemsProvider = {
listOf(
Preference.PreferenceItem.TextPreference(
- title = WorkerInfoScreen.title,
+ title = WorkerInfoScreen.TITLE,
onClick = { navigator.push(WorkerInfoScreen()) },
),
Preference.PreferenceItem.TextPreference(
- title = BackupSchemaScreen.title,
+ title = BackupSchemaScreen.TITLE,
onClick = { navigator.push(BackupSchemaScreen()) },
),
getAppInfoGroup(),
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/WorkerInfoScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/WorkerInfoScreen.kt
index 4a57103d8..88f1e6da2 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/WorkerInfoScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/WorkerInfoScreen.kt
@@ -49,7 +49,7 @@ import java.time.ZoneId
class WorkerInfoScreen : Screen() {
companion object {
- const val title = "Worker info"
+ const val TITLE = "Worker info"
}
@Composable
@@ -65,7 +65,7 @@ class WorkerInfoScreen : Screen() {
Scaffold(
topBar = {
AppBar(
- title = title,
+ title = TITLE,
navigateUp = navigator::pop,
actions = {
AppBarActions(
@@ -74,7 +74,7 @@ class WorkerInfoScreen : Screen() {
title = stringResource(MR.strings.action_copy_to_clipboard),
icon = Icons.Default.ContentCopy,
onClick = {
- context.copyToClipboard(title, enqueued + finished + running)
+ context.copyToClipboard(TITLE, enqueued + finished + running)
},
),
),
@@ -159,7 +159,7 @@ class WorkerInfoScreen : Screen() {
Injekt.get().dateFormat().get(),
),
)
- appendLine("Next scheduled run: $timestamp",)
+ appendLine("Next scheduled run: $timestamp")
appendLine("Attempt #${workInfo.runAttemptCount + 1}")
}
appendLine()
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/widget/TriStateListDialog.kt b/app/src/main/java/eu/kanade/presentation/more/settings/widget/TriStateListDialog.kt
index f6e195e4d..1e0c1741d 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/widget/TriStateListDialog.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/widget/TriStateListDialog.kt
@@ -34,7 +34,9 @@ import tachiyomi.presentation.core.util.isScrolledToEnd
import tachiyomi.presentation.core.util.isScrolledToStart
private enum class State {
- CHECKED, INVERSED, UNCHECKED
+ CHECKED,
+ INVERSED,
+ UNCHECKED,
}
@Composable
diff --git a/app/src/main/java/eu/kanade/presentation/more/stats/components/StatsItem.kt b/app/src/main/java/eu/kanade/presentation/more/stats/components/StatsItem.kt
index 8002b3d04..d38643ee1 100644
--- a/app/src/main/java/eu/kanade/presentation/more/stats/components/StatsItem.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/stats/components/StatsItem.kt
@@ -15,7 +15,7 @@ import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
-import tachiyomi.presentation.core.components.material.SecondaryItemAlpha
+import tachiyomi.presentation.core.components.material.SECONDARY_ALPHA
import tachiyomi.presentation.core.components.material.padding
@Composable
@@ -73,7 +73,7 @@ private fun RowScope.BaseStatsItem(
style = subtitleStyle
.copy(
color = MaterialTheme.colorScheme.onSurface
- .copy(alpha = SecondaryItemAlpha),
+ .copy(alpha = SECONDARY_ALPHA),
),
textAlign = TextAlign.Center,
)
diff --git a/app/src/main/java/eu/kanade/presentation/reader/ChapterTransition.kt b/app/src/main/java/eu/kanade/presentation/reader/ChapterTransition.kt
index 5fb749828..f76628b1a 100644
--- a/app/src/main/java/eu/kanade/presentation/reader/ChapterTransition.kt
+++ b/app/src/main/java/eu/kanade/presentation/reader/ChapterTransition.kt
@@ -226,7 +226,7 @@ private fun ChapterText(
Text(
text = buildAnnotatedString {
if (downloaded) {
- appendInlineContent(DownloadedIconContentId)
+ appendInlineContent(DOWNLOADED_ICON_ID)
append(' ')
}
append(name)
@@ -236,7 +236,7 @@ private fun ChapterText(
overflow = TextOverflow.Ellipsis,
style = MaterialTheme.typography.titleLarge,
inlineContent = persistentMapOf(
- DownloadedIconContentId to InlineTextContent(
+ DOWNLOADED_ICON_ID to InlineTextContent(
Placeholder(
width = 22.sp,
height = 22.sp,
@@ -273,7 +273,7 @@ private val CardColor: CardColors
)
private val VerticalSpacerSize = 24.dp
-private const val DownloadedIconContentId = "downloaded"
+private const val DOWNLOADED_ICON_ID = "downloaded"
private fun previewChapter(name: String, scanlator: String, chapterNumber: Double) = Chapter.create().copy(
id = 0L,
diff --git a/app/src/main/java/eu/kanade/presentation/reader/appbars/ExhUtils.kt b/app/src/main/java/eu/kanade/presentation/reader/appbars/ExhUtils.kt
index ed99b28d9..8452ca7e3 100644
--- a/app/src/main/java/eu/kanade/presentation/reader/appbars/ExhUtils.kt
+++ b/app/src/main/java/eu/kanade/presentation/reader/appbars/ExhUtils.kt
@@ -63,7 +63,7 @@ fun ExhUtils(
modifier
.fillMaxWidth()
.background(backgroundColor),
- horizontalAlignment = Alignment.CenterHorizontally
+ horizontalAlignment = Alignment.CenterHorizontally,
) {
AnimatedVisibility(visible = isVisible) {
Column {
@@ -84,7 +84,7 @@ fun ExhUtils(
) {
Column(
Modifier.weight(3f),
- horizontalAlignment = Alignment.CenterHorizontally
+ horizontalAlignment = Alignment.CenterHorizontally,
) {
Text(
text = stringResource(SYMR.strings.eh_autoscroll),
@@ -93,17 +93,17 @@ fun ExhUtils(
fontFamily = FontFamily.SansSerif,
style = MaterialTheme.typography.labelLarge,
modifier = Modifier.fillMaxWidth(0.75f),
- textAlign = TextAlign.Center
+ textAlign = TextAlign.Center,
)
}
Column(
Modifier.weight(1f),
- horizontalAlignment = Alignment.CenterHorizontally
+ horizontalAlignment = Alignment.CenterHorizontally,
) {
Switch(
checked = isAutoScroll,
onCheckedChange = null,
- enabled = isAutoScrollEnabled
+ enabled = isAutoScrollEnabled,
)
}
}
@@ -114,7 +114,7 @@ fun ExhUtils(
) {
Column(
Modifier.weight(3f),
- horizontalAlignment = Alignment.CenterHorizontally
+ horizontalAlignment = Alignment.CenterHorizontally,
) {
var autoScrollFrequencyState by remember {
mutableStateOf(autoScrollFrequency)
diff --git a/app/src/main/java/eu/kanade/presentation/track/TrackInfoDialogHome.kt b/app/src/main/java/eu/kanade/presentation/track/TrackInfoDialogHome.kt
index 4e146c60e..3d766c4cf 100644
--- a/app/src/main/java/eu/kanade/presentation/track/TrackInfoDialogHome.kt
+++ b/app/src/main/java/eu/kanade/presentation/track/TrackInfoDialogHome.kt
@@ -38,7 +38,6 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
-import androidx.compose.ui.draw.alpha
import androidx.compose.ui.draw.clip
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.style.TextAlign
@@ -58,8 +57,6 @@ import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource
import java.time.format.DateTimeFormatter
-private const val UnsetStatusTextAlpha = 0.5F
-
@Composable
fun TrackInfoDialogHome(
trackItems: List,
@@ -211,10 +208,9 @@ private fun TrackInfoItem(
if (onScoreClick != null) {
VerticalDivider()
TrackDetailsItem(
- modifier = Modifier
- .weight(1f)
- .alpha(if (score == null) UnsetStatusTextAlpha else 1f),
- text = score ?: stringResource(MR.strings.score),
+ modifier = Modifier.weight(1f),
+ text = score,
+ placeholder = stringResource(MR.strings.score),
onClick = onScoreClick,
)
}
@@ -243,6 +239,8 @@ private fun TrackInfoItem(
}
}
+private const val UNSET_TEXT_ALPHA = 0.5F
+
@Composable
private fun TrackDetailsItem(
text: String?,
@@ -263,7 +261,7 @@ private fun TrackDetailsItem(
overflow = TextOverflow.Ellipsis,
style = MaterialTheme.typography.bodyMedium,
textAlign = TextAlign.Center,
- color = MaterialTheme.colorScheme.onSurface.copy(alpha = if (text == null) UnsetStatusTextAlpha else 1f),
+ color = MaterialTheme.colorScheme.onSurface.copy(alpha = if (text == null) UNSET_TEXT_ALPHA else 1f),
)
}
}
diff --git a/app/src/main/java/eu/kanade/presentation/updates/UpdatesUiItem.kt b/app/src/main/java/eu/kanade/presentation/updates/UpdatesUiItem.kt
index 3b4b3f554..2cd1aabdf 100644
--- a/app/src/main/java/eu/kanade/presentation/updates/UpdatesUiItem.kt
+++ b/app/src/main/java/eu/kanade/presentation/updates/UpdatesUiItem.kt
@@ -43,7 +43,7 @@ import eu.kanade.tachiyomi.ui.updates.UpdatesItem
import tachiyomi.domain.updates.model.UpdatesWithRelations
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.ListGroupHeader
-import tachiyomi.presentation.core.components.material.ReadItemAlpha
+import tachiyomi.presentation.core.components.material.DISABLED_ALPHA
import tachiyomi.presentation.core.components.material.padding
import tachiyomi.presentation.core.i18n.stringResource
import tachiyomi.presentation.core.util.selectedBackground
@@ -107,8 +107,10 @@ internal fun LazyListScope.updatesUiItems(
readProgress = updatesItem.update.lastPageRead
.takeIf {
/* SY --> */(
- !updatesItem.update.read || (preserveReadingPosition && updatesItem.isEhBasedUpdate())
- )/* SY <-- */ && it > 0L
+ !updatesItem.update.read ||
+ (preserveReadingPosition && updatesItem.isEhBasedUpdate())
+ )/* SY <-- */ &&
+ it > 0L
}
?.let {
stringResource(
@@ -152,7 +154,7 @@ private fun UpdatesUiItem(
modifier: Modifier = Modifier,
) {
val haptic = LocalHapticFeedback.current
- val textAlpha = if (update.read) ReadItemAlpha else 1f
+ val textAlpha = if (update.read) DISABLED_ALPHA else 1f
Row(
modifier = modifier
@@ -226,7 +228,7 @@ private fun UpdatesUiItem(
Text(
text = readProgress,
maxLines = 1,
- color = LocalContentColor.current.copy(alpha = ReadItemAlpha),
+ color = LocalContentColor.current.copy(alpha = DISABLED_ALPHA),
overflow = TextOverflow.Ellipsis,
)
}
diff --git a/app/src/main/java/eu/kanade/presentation/util/Navigator.kt b/app/src/main/java/eu/kanade/presentation/util/Navigator.kt
index c243807df..34664c774 100644
--- a/app/src/main/java/eu/kanade/presentation/util/Navigator.kt
+++ b/app/src/main/java/eu/kanade/presentation/util/Navigator.kt
@@ -1,6 +1,5 @@
package eu.kanade.presentation.util
-import android.annotation.SuppressLint
import androidx.compose.animation.AnimatedContent
import androidx.compose.animation.AnimatedContentTransitionScope
import androidx.compose.animation.ContentTransform
@@ -28,7 +27,6 @@ import soup.compose.material.motion.animation.rememberSlideDistance
/**
* For invoking back press to the parent activity
*/
-@SuppressLint("ComposeCompositionLocalUsage")
val LocalBackPress: ProvidableCompositionLocal<(() -> Unit)?> = staticCompositionLocalOf { null }
interface Tab : cafe.adriel.voyager.navigator.tab.Tab {
diff --git a/app/src/main/java/eu/kanade/tachiyomi/App.kt b/app/src/main/java/eu/kanade/tachiyomi/App.kt
index 78dedeb05..6c96f2cd1 100755
--- a/app/src/main/java/eu/kanade/tachiyomi/App.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/App.kt
@@ -174,8 +174,7 @@ class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factor
val syncPreferences: SyncPreferences = Injekt.get()
val syncTriggerOpt = syncPreferences.getSyncTriggerOptions()
- if (syncPreferences.isSyncEnabled() && syncTriggerOpt.syncOnAppStart
- ) {
+ if (syncPreferences.isSyncEnabled() && syncTriggerOpt.syncOnAppStart) {
SyncDataJob.startNow(this@App)
}
@@ -199,7 +198,6 @@ class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factor
)
}
- @Suppress("MagicNumber")
override fun newImageLoader(context: Context): ImageLoader {
return ImageLoader.Builder(this).apply {
val callFactoryLazy = lazy { Injekt.get().client }
@@ -239,8 +237,7 @@ class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factor
val syncPreferences: SyncPreferences = Injekt.get()
val syncTriggerOpt = syncPreferences.getSyncTriggerOptions()
- if (syncPreferences.isSyncEnabled() && syncTriggerOpt.syncOnAppResume
- ) {
+ if (syncPreferences.isSyncEnabled() && syncTriggerOpt.syncOnAppResume) {
SyncDataJob.startNow(this@App)
}
}
@@ -339,7 +336,7 @@ class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factor
"""
App version: ${BuildConfig.VERSION_NAME} (${BuildConfig.FLAVOR}, ${BuildConfig.COMMIT_SHA}, ${BuildConfig.VERSION_CODE})
Preview build: $syDebugVersion
- Android version: ${Build.VERSION.RELEASE} (SDK ${Build.VERSION.SDK_INT})
+ Android version: ${Build.VERSION.RELEASE} (SDK ${Build.VERSION.SDK_INT})
Android build ID: ${Build.DISPLAY}
Device brand: ${Build.BRAND}
Device manufacturer: ${Build.MANUFACTURER}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt
index 3677c806f..ca9eabe1b 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt
@@ -57,7 +57,7 @@ class BackupCreator(
// SY -->
private val savedSearchBackupCreator: SavedSearchBackupCreator = SavedSearchBackupCreator(),
private val getMergedManga: GetMergedManga = Injekt.get(),
- private val handler: DatabaseHandler = Injekt.get()
+ private val handler: DatabaseHandler = Injekt.get(),
// SY <--
) {
@@ -92,7 +92,7 @@ class BackupCreator(
} else {
emptyList()
} + getMergedManga.await(), // SY <--
- options
+ options,
)
val backup = Backup(
backupManga = backupManga,
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupOptions.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupOptions.kt
index 45a4c14b7..4915048e5 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupOptions.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupOptions.kt
@@ -39,7 +39,8 @@ data class BackupOptions(
// SY <--
)
- fun canCreate() = libraryEntries || categories || appSettings || extensionRepoSettings || sourceSettings || savedSearches
+ fun canCreate() =
+ libraryEntries || categories || appSettings || extensionRepoSettings || sourceSettings || savedSearches
companion object {
val libraryOptions = persistentListOf(
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/SavedSearchBackupCreator.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/SavedSearchBackupCreator.kt
index 293a864e0..1b4ef6de9 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/SavedSearchBackupCreator.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/SavedSearchBackupCreator.kt
@@ -7,7 +7,7 @@ import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
class SavedSearchBackupCreator(
- private val handler: DatabaseHandler = Injekt.get()
+ private val handler: DatabaseHandler = Injekt.get(),
) {
suspend operator fun invoke(): List {
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/Backup.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/Backup.kt
index 0de472370..9998cb015 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/Backup.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/Backup.kt
@@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.data.backup.models
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
-@Suppress("MagicNumber")
@Serializable
data class Backup(
@ProtoNumber(1) val backupManga: List,
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupChapter.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupChapter.kt
index d729efe16..b0d081a40 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupChapter.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupChapter.kt
@@ -4,7 +4,6 @@ import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
import tachiyomi.domain.chapter.model.Chapter
-@Suppress("MagicNumber")
@Serializable
data class BackupChapter(
// in 1.x some of these values have different names
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupExtensionRepos.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupExtensionRepos.kt
index fa9968667..256def7b5 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupExtensionRepos.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupExtensionRepos.kt
@@ -4,7 +4,6 @@ import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
import mihon.domain.extensionrepo.model.ExtensionRepo
-@Suppress("MagicNumber")
@Serializable
class BackupExtensionRepos(
@ProtoNumber(1) var baseUrl: String,
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt
index a62bc942e..d81b2fd33 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt
@@ -3,13 +3,9 @@ package eu.kanade.tachiyomi.data.backup.models
import eu.kanade.tachiyomi.source.model.UpdateStrategy
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
-import tachiyomi.domain.manga.model.CustomMangaInfo
import tachiyomi.domain.manga.model.Manga
-@Suppress(
- "DEPRECATION",
- "MagicNumber",
-)
+@Suppress("DEPRECATION")
@Serializable
data class BackupManga(
// in 1.x some of these values have different names
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupMergedMangaReference.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupMergedMangaReference.kt
index 4431570f2..e4b1fd0e2 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupMergedMangaReference.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupMergedMangaReference.kt
@@ -36,7 +36,8 @@ data class BackupMergedMangaReference(
}
val backupMergedMangaReferenceMapper =
- { _: Long,
+ {
+ _: Long,
isInfoManga: Boolean,
getChapterUpdates: Boolean,
chapterSortMode: Long,
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupTracking.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupTracking.kt
index 0a05c0edf..910a8adac 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupTracking.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupTracking.kt
@@ -53,7 +53,20 @@ data class BackupTracking(
}
val backupTrackMapper = {
- _: Long, _: Long, syncId: Long, mediaId: Long, libraryId: Long?, title: String, lastChapterRead: Double, totalChapters: Long, status: Long, score: Double, remoteUrl: String, startDate: Long, finishDate: Long ->
+ _: Long,
+ _: Long,
+ syncId: Long,
+ mediaId: Long,
+ libraryId: Long?,
+ title: String,
+ lastChapterRead: Double,
+ totalChapters: Long,
+ status: Long,
+ score: Double,
+ remoteUrl: String,
+ startDate: Long,
+ finishDate: Long,
+ ->
BackupTracking(
syncId = syncId.toInt(),
mediaId = mediaId,
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestorer.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestorer.kt
index 77e57f554..891c3b8ef 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestorer.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestorer.kt
@@ -200,7 +200,7 @@ class BackupRestorer(
}
private fun CoroutineScope.restoreExtensionRepos(
- backupExtensionRepo: List
+ backupExtensionRepo: List,
) = launch {
backupExtensionRepo
.forEach {
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/RestoreOptions.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/RestoreOptions.kt
index 533b939eb..5e8e97b1f 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/RestoreOptions.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/RestoreOptions.kt
@@ -27,7 +27,13 @@ data class RestoreOptions(
// SY <--
)
- fun canRestore() = libraryEntries || categories || appSettings || extensionRepoSettings || sourceSettings /* SY --> */ || savedSearches /* SY <-- */
+ fun canRestore() =
+ libraryEntries ||
+ categories ||
+ appSettings ||
+ extensionRepoSettings ||
+ sourceSettings /* SY --> */ ||
+ savedSearches /* SY <-- */
companion object {
val options = persistentListOf(
@@ -72,7 +78,7 @@ data class RestoreOptions(
extensionRepoSettings = array[3],
sourceSettings = array[4],
// SY -->
- savedSearches = array[5]
+ savedSearches = array[5],
// SY <--
)
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/ExtensionRepoRestorer.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/ExtensionRepoRestorer.kt
index 1dd0da491..006e48df1 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/ExtensionRepoRestorer.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/ExtensionRepoRestorer.kt
@@ -8,7 +8,7 @@ import uy.kohesive.injekt.api.get
class ExtensionRepoRestorer(
private val handler: DatabaseHandler = Injekt.get(),
- private val getExtensionRepos: GetExtensionRepo = Injekt.get()
+ private val getExtensionRepos: GetExtensionRepo = Injekt.get(),
) {
suspend operator fun invoke(
@@ -32,7 +32,7 @@ class ExtensionRepoRestorer(
backupRepo.name,
backupRepo.shortName,
backupRepo.website,
- backupRepo.signingKeyFingerprint
+ backupRepo.signingKeyFingerprint,
)
}
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt b/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt
index 8506170a9..ad6252472 100755
--- a/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt
@@ -36,8 +36,8 @@ class ChapterCache(
private val context: Context,
private val json: Json,
// SY -->
- readerPreferences: ReaderPreferences
- //S Y <--
+ readerPreferences: ReaderPreferences,
+ // SY <--
) {
// --> EH
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/coil/MangaCoverFetcher.kt b/app/src/main/java/eu/kanade/tachiyomi/data/coil/MangaCoverFetcher.kt
index 65a142099..8ccd6d4ba 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/coil/MangaCoverFetcher.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/coil/MangaCoverFetcher.kt
@@ -45,7 +45,6 @@ import java.io.IOException
* Available request parameter:
* - [USE_CUSTOM_COVER_KEY]: Use custom cover if set by user, default is true
*/
-@Suppress("LongParameterList")
class MangaCoverFetcher(
private val url: String?,
private val isLibraryManga: Boolean,
@@ -86,7 +85,7 @@ class MangaCoverFetcher(
source = ImageSource(
file = file.toOkioPath(),
fileSystem = FileSystem.SYSTEM,
- diskCacheKey = diskCacheKey
+ diskCacheKey = diskCacheKey,
),
mimeType = "image/*",
dataSource = DataSource.DISK,
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/coil/PagePreviewFetcher.kt b/app/src/main/java/eu/kanade/tachiyomi/data/coil/PagePreviewFetcher.kt
index 849198504..aa17b84a9 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/coil/PagePreviewFetcher.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/coil/PagePreviewFetcher.kt
@@ -58,7 +58,7 @@ class PagePreviewFetcher(
source = ImageSource(
file = file.toOkioPath(),
fileSystem = FileSystem.SYSTEM,
- diskCacheKey = diskCacheKey
+ diskCacheKey = diskCacheKey,
),
mimeType = "image/*",
dataSource = DataSource.DISK,
@@ -230,7 +230,7 @@ class PagePreviewFetcher(
file = data,
fileSystem = FileSystem.SYSTEM,
diskCacheKey = diskCacheKey,
- closeable = this
+ closeable = this,
)
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Chapter.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Chapter.kt
index f91368084..799998f20 100755
--- a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Chapter.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Chapter.kt
@@ -1,3 +1,5 @@
+@file:Suppress("PropertyName", "ktlint:standard:property-naming")
+
package eu.kanade.tachiyomi.data.database.models
import eu.kanade.tachiyomi.source.model.SChapter
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/ChapterImpl.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/ChapterImpl.kt
index a92dd56df..7db913c99 100755
--- a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/ChapterImpl.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/ChapterImpl.kt
@@ -1,3 +1,5 @@
+@file:Suppress("PropertyName", "ktlint:standard:property-naming")
+
package eu.kanade.tachiyomi.data.database.models
class ChapterImpl : Chapter {
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Track.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Track.kt
index aac7ec4c3..15c12c4a0 100755
--- a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Track.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Track.kt
@@ -1,3 +1,5 @@
+@file:Suppress("PropertyName", "ktlint:standard:property-naming")
+
package eu.kanade.tachiyomi.data.database.models
import java.io.Serializable
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/TrackImpl.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/TrackImpl.kt
index 85868219f..da5aa2856 100755
--- a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/TrackImpl.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/TrackImpl.kt
@@ -1,3 +1,5 @@
+@file:Suppress("PropertyName", "ktlint:standard:property-naming")
+
package eu.kanade.tachiyomi.data.database.models
class TrackImpl : Track {
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt
index cdd0559ae..d2179ef49 100755
--- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt
@@ -121,7 +121,8 @@ class DownloadProvider(
getValidChapterDirNames(chp.name, chp.scanlator).any { dir ->
mangaDir.findFile(dir) != null
}
- } == null || it.name?.endsWith(Downloader.TMP_DIR_SUFFIX) == true
+ } == null ||
+ it.name?.endsWith(Downloader.TMP_DIR_SUFFIX) == true
}
}
// SY <--
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt
index 08e0baa15..4359d2905 100755
--- a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt
@@ -190,7 +190,7 @@ class Downloader(
fun clearQueue() {
cancelDownloaderJob()
- _clearQueue()
+ internalClearQueue()
notifier.dismissProgress()
}
@@ -204,9 +204,12 @@ class Downloader(
val activeDownloadsFlow = queueState.transformLatest { queue ->
while (true) {
val activeDownloads = queue.asSequence()
- .filter { it.status.value <= Download.State.DOWNLOADING.value } // Ignore completed downloads, leave them in the queue
+ // Ignore completed downloads, leave them in the queue
+ .filter { it.status.value <= Download.State.DOWNLOADING.value }
.groupBy { it.source }
- .toList().take(5) // Concurrently download from 5 different sources
+ .toList()
+ // Concurrently download from 5 different sources
+ .take(5)
.map { (_, downloads) -> downloads.first() }
emit(activeDownloads)
@@ -650,7 +653,7 @@ class Downloader(
chapter,
urls,
categories,
- source.name
+ source.name,
)
// Remove the old file
@@ -710,7 +713,7 @@ class Downloader(
removeFromQueueIf { it.manga.id == manga.id }
}
- private fun _clearQueue() {
+ private fun internalClearQueue() {
_queueState.update {
it.forEach { download ->
if (download.status == Download.State.DOWNLOADING || download.status == Download.State.QUEUE) {
@@ -732,7 +735,7 @@ class Downloader(
}
pause()
- _clearQueue()
+ internalClearQueue()
addAllToQueue(downloads)
if (wasRunning) {
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt
index 2940a0c97..7c179733d 100755
--- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt
@@ -363,14 +363,17 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
async {
semaphore.withPermit {
if (
- mdlistLogged && mangaInSource.firstOrNull()
+ mdlistLogged &&
+ mangaInSource.firstOrNull()
?.let { it.manga.source in mangaDexSourceIds } == true
) {
launch {
mangaInSource.forEach { (manga) ->
try {
val tracks = getTracks.await(manga.id)
- if (tracks.isEmpty() || tracks.none { it.trackerId == TrackerManager.MDLIST }) {
+ if (tracks.isEmpty() ||
+ tracks.none { it.trackerId == TrackerManager.MDLIST }
+ ) {
val track = mdList.createInitialTracker(manga)
insertTrack.await(mdList.refresh(track).toDomainTrack(false)!!)
}
@@ -400,10 +403,14 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
// SY -->
.sortedByDescending { it.sourceOrder }.run {
if (libraryPreferences.libraryReadDuplicateChapters().get()) {
- val readChapters = getChaptersByMangaId.await(manga.id).filter { it.read }
+ val readChapters = getChaptersByMangaId.await(manga.id).filter {
+ it.read
+ }
val newReadChapters = this.filter { chapter ->
chapter.chapterNumber > 0 &&
- readChapters.any { it.chapterNumber == chapter.chapterNumber }
+ readChapters.any {
+ it.chapterNumber == chapter.chapterNumber
+ }
}
if (newReadChapters.isNotEmpty()) {
@@ -415,7 +422,7 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
this
}
}
- //SY <--
+ // SY <--
if (newChapters.isNotEmpty()) {
val categoryIds = getCategories.await(manga.id).map { it.id }
@@ -766,7 +773,9 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
val constraints = Constraints(
requiredNetworkType = if (DEVICE_NETWORK_NOT_METERED in restrictions) {
NetworkType.UNMETERED
- } else { NetworkType.CONNECTED },
+ } else {
+ NetworkType.CONNECTED
+ },
requiresCharging = DEVICE_CHARGING in restrictions,
requiresBatteryNotLow = true,
)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/sync/SyncManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/sync/SyncManager.kt
index 337b5ae74..2d7c2e3c9 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/sync/SyncManager.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/sync/SyncManager.kt
@@ -147,7 +147,7 @@ class SyncManager(
return
}
- if (remoteBackup === syncData.backup){
+ if (remoteBackup === syncData.backup) {
// nothing changed
logcat(LogPriority.DEBUG) { "Skip restore due to remote was overwrite from local" }
syncPreferences.lastSyncTimestamp().set(Date().time)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/GoogleDriveSyncService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/GoogleDriveSyncService.kt
index c4b1971e0..8357e1a4b 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/GoogleDriveSyncService.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/GoogleDriveSyncService.kt
@@ -72,7 +72,7 @@ class GoogleDriveSyncService(context: Context, json: Json, syncPreferences: Sync
try {
val remoteSData = pullSyncData()
- if (remoteSData != null ){
+ if (remoteSData != null) {
// Get local unique device ID
val localDeviceId = syncPreferences.uniqueDeviceID()
val lastSyncDeviceId = remoteSData.deviceId
@@ -86,7 +86,7 @@ class GoogleDriveSyncService(context: Context, json: Json, syncPreferences: Sync
return if (lastSyncDeviceId == localDeviceId) {
pushSyncData(syncData)
syncData.backup
- }else{
+ } else {
// Merge the local and remote sync data
val mergedSyncData = mergeSyncData(syncData, remoteSData)
pushSyncData(mergedSyncData)
@@ -165,7 +165,9 @@ class GoogleDriveSyncService(context: Context, json: Json, syncPreferences: Sync
appProperties = mapOf("deviceId" to syncData.deviceId)
}
drive.files().update(fileId, fileMetadata, mediaContent).execute()
- logcat(LogPriority.DEBUG) { "Updated existing sync data file in Google Drive with file ID: $fileId" }
+ logcat(LogPriority.DEBUG) {
+ "Updated existing sync data file in Google Drive with file ID: $fileId"
+ }
} else {
val fileMetadata = File().apply {
name = remoteFileName
@@ -176,7 +178,9 @@ class GoogleDriveSyncService(context: Context, json: Json, syncPreferences: Sync
val uploadedFile = drive.files().create(fileMetadata, mediaContent)
.setFields("id")
.execute()
- logcat(LogPriority.DEBUG) { "Created new sync data file in Google Drive with file ID: ${uploadedFile.id}" }
+ logcat(LogPriority.DEBUG) {
+ "Created new sync data file in Google Drive with file ID: ${uploadedFile.id}"
+ }
}
}
}
@@ -203,7 +207,6 @@ class GoogleDriveSyncService(context: Context, json: Json, syncPreferences: Sync
}
}
-
suspend fun deleteSyncDataFromGoogleDrive(): DeleteSyncDataStatus {
val drive = googleDriveService.driveService
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/SyncService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/SyncService.kt
index 64a6146dd..2524fbab1 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/SyncService.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/SyncService.kt
@@ -26,7 +26,7 @@ abstract class SyncService(
val json: Json,
val syncPreferences: SyncPreferences,
) {
- abstract suspend fun doSync(syncData: SyncData): Backup?;
+ abstract suspend fun doSync(syncData: SyncData): Backup?
/**
* Merges the local and remote sync data into a single JSON string.
@@ -44,7 +44,8 @@ abstract class SyncService(
remoteSyncData.backup?.backupManga,
localSyncData.backup?.backupCategories ?: emptyList(),
remoteSyncData.backup?.backupCategories ?: emptyList(),
- mergedCategoriesList)
+ mergedCategoriesList,
+ )
val mergedSourcesList =
mergeSourcesLists(localSyncData.backup?.backupSources, remoteSyncData.backup?.backupSources)
@@ -120,11 +121,13 @@ abstract class SyncService(
val mergedCategoriesMapByName = mergedCategories.associateBy { it.name }
fun updateCategories(theManga: BackupManga, theMap: Map): BackupManga {
- return theManga.copy(categories = theManga.categories.mapNotNull {
- theMap[it]?.let { category ->
- mergedCategoriesMapByName[category.name]?.order
- }
- })
+ return theManga.copy(
+ categories = theManga.categories.mapNotNull {
+ theMap[it]?.let { category ->
+ mergedCategoriesMapByName[category.name]?.order
+ }
+ },
+ )
}
logcat(LogPriority.DEBUG, logTag) {
@@ -147,7 +150,7 @@ abstract class SyncService(
}
updateCategories(
local.copy(chapters = mergeChapters(local.chapters, remote.chapters)),
- localCategoriesMapByOrder
+ localCategoriesMapByOrder,
)
} else {
logcat(LogPriority.DEBUG, logTag) {
@@ -155,7 +158,7 @@ abstract class SyncService(
}
updateCategories(
remote.copy(chapters = mergeChapters(local.chapters, remote.chapters)),
- remoteCategoriesMapByOrder
+ remoteCategoriesMapByOrder,
)
}
}
@@ -301,7 +304,7 @@ abstract class SyncService(
private fun mergeSourcesLists(
localSources: List?,
- remoteSources: List?
+ remoteSources: List?,
): List {
val logTag = "MergeSources"
@@ -346,7 +349,7 @@ abstract class SyncService(
private fun mergePreferencesLists(
localPreferences: List?,
- remotePreferences: List?
+ remotePreferences: List?,
): List {
val logTag = "MergePreferences"
@@ -394,7 +397,7 @@ abstract class SyncService(
private fun mergeSourcePreferencesLists(
localPreferences: List?,
- remotePreferences: List?
+ remotePreferences: List?,
): List {
val logTag = "MergeSourcePreferences"
@@ -408,38 +411,39 @@ abstract class SyncService(
}
// Merge both source preferences maps
- val mergedSourcePreferences = (localPreferencesMap.keys + remotePreferencesMap.keys).distinct().mapNotNull { sourceKey ->
- val localSourcePreference = localPreferencesMap[sourceKey]
- val remoteSourcePreference = remotePreferencesMap[sourceKey]
+ val mergedSourcePreferences = (localPreferencesMap.keys + remotePreferencesMap.keys).distinct()
+ .mapNotNull { sourceKey ->
+ val localSourcePreference = localPreferencesMap[sourceKey]
+ val remoteSourcePreference = remotePreferencesMap[sourceKey]
- logcat(LogPriority.DEBUG, logTag) {
- "Processing source preference key: $sourceKey. " +
- "Local source preference: ${localSourcePreference != null}, " +
- "Remote source preference: ${remoteSourcePreference != null}"
- }
+ logcat(LogPriority.DEBUG, logTag) {
+ "Processing source preference key: $sourceKey. " +
+ "Local source preference: ${localSourcePreference != null}, " +
+ "Remote source preference: ${remoteSourcePreference != null}"
+ }
- when {
- localSourcePreference != null && remoteSourcePreference == null -> {
- logcat(LogPriority.DEBUG, logTag) {
- "Using local source preference: ${localSourcePreference.sourceKey}."
+ when {
+ localSourcePreference != null && remoteSourcePreference == null -> {
+ logcat(LogPriority.DEBUG, logTag) {
+ "Using local source preference: ${localSourcePreference.sourceKey}."
+ }
+ localSourcePreference
}
- localSourcePreference
- }
- remoteSourcePreference != null && localSourcePreference == null -> {
- logcat(LogPriority.DEBUG, logTag) {
- "Using remote source preference: ${remoteSourcePreference.sourceKey}."
+ remoteSourcePreference != null && localSourcePreference == null -> {
+ logcat(LogPriority.DEBUG, logTag) {
+ "Using remote source preference: ${remoteSourcePreference.sourceKey}."
+ }
+ remoteSourcePreference
}
- remoteSourcePreference
+ localSourcePreference != null && remoteSourcePreference != null -> {
+ // Merge the individual preferences within the source preferences
+ val mergedPrefs =
+ mergeIndividualPreferences(localSourcePreference.prefs, remoteSourcePreference.prefs)
+ BackupSourcePreferences(sourceKey, mergedPrefs)
+ }
+ else -> null
}
- localSourcePreference != null && remoteSourcePreference != null -> {
- // Merge the individual preferences within the source preferences
- val mergedPrefs =
- mergeIndividualPreferences(localSourcePreference.prefs, remoteSourcePreference.prefs)
- BackupSourcePreferences(sourceKey, mergedPrefs)
- }
- else -> null
}
- }
logcat(LogPriority.DEBUG, logTag) {
"Source preferences merge completed. Total merged source preferences: ${mergedSourcePreferences.size}"
@@ -450,7 +454,7 @@ abstract class SyncService(
private fun mergeIndividualPreferences(
localPrefs: List,
- remotePrefs: List
+ remotePrefs: List,
): List {
val mergedPrefsMap = (localPrefs + remotePrefs).associateBy { it.key }
return mergedPrefsMap.values.toList()
@@ -459,7 +463,7 @@ abstract class SyncService(
// SY -->
private fun mergeSavedSearchesLists(
localSearches: List?,
- remoteSearches: List?
+ remoteSearches: List?,
): List {
val logTag = "MergeSavedSearches"
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/SyncYomiSyncService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/SyncYomiSyncService.kt
index f35381b66..ea04f72ac 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/SyncYomiSyncService.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/SyncYomiSyncService.kt
@@ -38,7 +38,7 @@ class SyncYomiSyncService(
try {
val (remoteData, etag) = pullSyncData()
- val finalSyncData = if (remoteData != null){
+ val finalSyncData = if (remoteData != null) {
assert(etag.isNotEmpty()) { "ETag should never be empty if remote data is not null" }
logcat(LogPriority.DEBUG, "SyncService") {
"Try update remote data with ETag($etag)"
@@ -54,7 +54,6 @@ class SyncYomiSyncService(
pushSyncData(finalSyncData, etag)
return finalSyncData.backup
-
} catch (e: Exception) {
logcat(LogPriority.ERROR) { "Error syncing: ${e.message}" }
notifier.showSyncError(e.message)
@@ -113,7 +112,6 @@ class SyncYomiSyncService(
// return default value so we can overwrite it
Pair(null, "")
}
-
} else {
val responseBody = response.body.string()
notifier.showSyncError("Failed to download sync data: $responseBody")
@@ -165,11 +163,9 @@ class SyncYomiSyncService(
.takeIf { it?.isNotEmpty() == true } ?: throw SyncYomiException("Missing ETag")
syncPreferences.lastSyncEtag().set(newETag)
logcat(LogPriority.DEBUG) { "SyncYomi sync completed" }
-
} else if (response.code == HttpStatus.SC_PRECONDITION_FAILED) {
// other clients updated remote data, will try next time
logcat(LogPriority.DEBUG) { "SyncYomi sync failed with 412" }
-
} else {
val responseBody = response.body.string()
notifier.showSyncError("Failed to upload sync data: $responseBody")
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt
index c808d0f31..e31454e74 100755
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt
@@ -47,10 +47,10 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
return withIOContext {
val query = """
|mutation AddManga(${'$'}mangaId: Int, ${'$'}progress: Int, ${'$'}status: MediaListStatus) {
- |SaveMediaListEntry (mediaId: ${'$'}mangaId, progress: ${'$'}progress, status: ${'$'}status) {
- | id
- | status
- |}
+ |SaveMediaListEntry (mediaId: ${'$'}mangaId, progress: ${'$'}progress, status: ${'$'}status) {
+ | id
+ | status
+ |}
|}
|
""".trimMargin()
@@ -65,7 +65,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
with(json) {
authClient.newCall(
POST(
- apiUrl,
+ API_URL,
body = payload.toString().toRequestBody(jsonMime),
),
)
@@ -109,7 +109,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
put("completedAt", createDate(track.finished_reading_date))
}
}
- authClient.newCall(POST(apiUrl, body = payload.toString().toRequestBody(jsonMime)))
+ authClient.newCall(POST(API_URL, body = payload.toString().toRequestBody(jsonMime)))
.awaitSuccess()
track
}
@@ -119,9 +119,9 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
withIOContext {
val query = """
|mutation DeleteManga(${'$'}listId: Int) {
- |DeleteMediaListEntry(id: ${'$'}listId) {
+ |DeleteMediaListEntry(id: ${'$'}listId) {
|deleted
- |}
+ |}
|}
|
""".trimMargin()
@@ -131,7 +131,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
put("listId", track.libraryId)
}
}
- authClient.newCall(POST(apiUrl, body = payload.toString().toRequestBody(jsonMime)))
+ authClient.newCall(POST(API_URL, body = payload.toString().toRequestBody(jsonMime)))
.awaitSuccess()
}
}
@@ -172,7 +172,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
with(json) {
authClient.newCall(
POST(
- apiUrl,
+ API_URL,
body = payload.toString().toRequestBody(jsonMime),
),
)
@@ -242,7 +242,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
with(json) {
authClient.newCall(
POST(
- apiUrl,
+ API_URL,
body = payload.toString().toRequestBody(jsonMime),
),
)
@@ -286,7 +286,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
with(json) {
authClient.newCall(
POST(
- apiUrl,
+ API_URL,
body = payload.toString().toRequestBody(jsonMime),
),
)
@@ -364,17 +364,17 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
}
companion object {
- private const val clientId = "16329"
- private const val apiUrl = "https://graphql.anilist.co/"
- private const val baseUrl = "https://anilist.co/api/v2/"
- private const val baseMangaUrl = "https://anilist.co/manga/"
+ private const val CLIENT_ID = "16329"
+ private const val API_URL = "https://graphql.anilist.co/"
+ private const val BASE_URL = "https://anilist.co/api/v2/"
+ private const val BASE_MANGA_URL = "https://anilist.co/manga/"
fun mangaUrl(mediaId: Long): String {
- return baseMangaUrl + mediaId
+ return BASE_MANGA_URL + mediaId
}
- fun authUrl(): Uri = "${baseUrl}oauth/authorize".toUri().buildUpon()
- .appendQueryParameter("client_id", clientId)
+ fun authUrl(): Uri = "${BASE_URL}oauth/authorize".toUri().buildUpon()
+ .appendQueryParameter("client_id", CLIENT_ID)
.appendQueryParameter("response_type", "token")
.build()
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt
index 65d2dc805..c48fa2490 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt
@@ -42,7 +42,7 @@ class BangumiApi(
.add("rating", track.score.toInt().toString())
.add("status", track.toBangumiStatus())
.build()
- authClient.newCall(POST("$apiUrl/collection/${track.remote_id}/update", body = body))
+ authClient.newCall(POST("$API_URL/collection/${track.remote_id}/update", body = body))
.awaitSuccess()
track
}
@@ -55,7 +55,7 @@ class BangumiApi(
.add("rating", track.score.toInt().toString())
.add("status", track.toBangumiStatus())
.build()
- authClient.newCall(POST("$apiUrl/collection/${track.remote_id}/update", body = sbody))
+ authClient.newCall(POST("$API_URL/collection/${track.remote_id}/update", body = sbody))
.awaitSuccess()
// chapter update
@@ -64,7 +64,7 @@ class BangumiApi(
.build()
authClient.newCall(
POST(
- "$apiUrl/subject/${track.remote_id}/update/watched_eps",
+ "$API_URL/subject/${track.remote_id}/update/watched_eps",
body = body,
),
).awaitSuccess()
@@ -75,7 +75,7 @@ class BangumiApi(
suspend fun search(search: String): List {
return withIOContext {
- val url = "$apiUrl/search/subject/${URLEncoder.encode(search, StandardCharsets.UTF_8.name())}"
+ val url = "$API_URL/search/subject/${URLEncoder.encode(search, StandardCharsets.UTF_8.name())}"
.toUri()
.buildUpon()
.appendQueryParameter("max_results", "20")
@@ -124,7 +124,7 @@ class BangumiApi(
suspend fun findLibManga(track: Track): Track? {
return withIOContext {
with(json) {
- authClient.newCall(GET("$apiUrl/subject/${track.remote_id}"))
+ authClient.newCall(GET("$API_URL/subject/${track.remote_id}"))
.awaitSuccess()
.parseAs()
.let { jsonToSearch(it) }
@@ -134,7 +134,7 @@ class BangumiApi(
suspend fun statusLibManga(track: Track): Track? {
return withIOContext {
- val urlUserRead = "$apiUrl/collection/${track.remote_id}"
+ val urlUserRead = "$API_URL/collection/${track.remote_id}"
val requestUserRead = Request.Builder()
.url(urlUserRead)
.cacheControl(CacheControl.FORCE_NETWORK)
@@ -171,41 +171,41 @@ class BangumiApi(
}
private fun accessTokenRequest(code: String) = POST(
- oauthUrl,
+ OAUTH_URL,
body = FormBody.Builder()
.add("grant_type", "authorization_code")
- .add("client_id", clientId)
- .add("client_secret", clientSecret)
+ .add("client_id", CLIENT_ID)
+ .add("client_secret", CLIENT_SECRET)
.add("code", code)
- .add("redirect_uri", redirectUrl)
+ .add("redirect_uri", REDIRECT_URL)
.build(),
)
companion object {
- private const val clientId = "bgm291665acbd06a4c28"
- private const val clientSecret = "43e5ce36b207de16e5d3cfd3e79118db"
+ private const val CLIENT_ID = "bgm291665acbd06a4c28"
+ private const val CLIENT_SECRET = "43e5ce36b207de16e5d3cfd3e79118db"
- private const val apiUrl = "https://api.bgm.tv"
- private const val oauthUrl = "https://bgm.tv/oauth/access_token"
- private const val loginUrl = "https://bgm.tv/oauth/authorize"
+ private const val API_URL = "https://api.bgm.tv"
+ private const val OAUTH_URL = "https://bgm.tv/oauth/access_token"
+ private const val LOGIN_URL = "https://bgm.tv/oauth/authorize"
- private const val redirectUrl = "mihon://bangumi-auth"
+ private const val REDIRECT_URL = "mihon://bangumi-auth"
fun authUrl(): Uri =
- loginUrl.toUri().buildUpon()
- .appendQueryParameter("client_id", clientId)
+ LOGIN_URL.toUri().buildUpon()
+ .appendQueryParameter("client_id", CLIENT_ID)
.appendQueryParameter("response_type", "code")
- .appendQueryParameter("redirect_uri", redirectUrl)
+ .appendQueryParameter("redirect_uri", REDIRECT_URL)
.build()
fun refreshTokenRequest(token: String) = POST(
- oauthUrl,
+ OAUTH_URL,
body = FormBody.Builder()
.add("grant_type", "refresh_token")
- .add("client_id", clientId)
- .add("client_secret", clientSecret)
+ .add("client_id", CLIENT_ID)
+ .add("client_secret", CLIENT_SECRET)
.add("refresh_token", token)
- .add("redirect_uri", redirectUrl)
+ .add("redirect_uri", REDIRECT_URL)
.build(),
)
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuApi.kt
index cabdf87be..c124ddd13 100755
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuApi.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuApi.kt
@@ -66,7 +66,7 @@ class KitsuApi(private val client: OkHttpClient, interceptor: KitsuInterceptor)
with(json) {
authClient.newCall(
POST(
- "${baseUrl}library-entries",
+ "${BASE_URL}library-entries",
headers = headersOf(
"Content-Type",
"application/vnd.api+json",
@@ -104,7 +104,7 @@ class KitsuApi(private val client: OkHttpClient, interceptor: KitsuInterceptor)
with(json) {
authClient.newCall(
Request.Builder()
- .url("${baseUrl}library-entries/${track.remote_id}")
+ .url("${BASE_URL}library-entries/${track.remote_id}")
.headers(
headersOf(
"Content-Type",
@@ -130,7 +130,7 @@ class KitsuApi(private val client: OkHttpClient, interceptor: KitsuInterceptor)
authClient
.newCall(
DELETE(
- "${baseUrl}library-entries/${track.remoteId}",
+ "${BASE_URL}library-entries/${track.remoteId}",
headers = headersOf(
"Content-Type",
"application/vnd.api+json",
@@ -143,7 +143,7 @@ class KitsuApi(private val client: OkHttpClient, interceptor: KitsuInterceptor)
suspend fun search(query: String): List {
return withIOContext {
with(json) {
- authClient.newCall(GET(algoliaKeyUrl))
+ authClient.newCall(GET(ALGOLIA_KEY_URL))
.awaitSuccess()
.parseAs()
.let {
@@ -157,16 +157,16 @@ class KitsuApi(private val client: OkHttpClient, interceptor: KitsuInterceptor)
private suspend fun algoliaSearch(key: String, query: String): List {
return withIOContext {
val jsonObject = buildJsonObject {
- put("params", "query=${URLEncoder.encode(query, StandardCharsets.UTF_8.name())}$algoliaFilter")
+ put("params", "query=${URLEncoder.encode(query, StandardCharsets.UTF_8.name())}$ALGOLIA_FILTER")
}
with(json) {
client.newCall(
POST(
- algoliaUrl,
+ ALGOLIA_URL,
headers = headersOf(
"X-Algolia-Application-Id",
- algoliaAppId,
+ ALGOLIA_APP_ID,
"X-Algolia-API-Key",
key,
),
@@ -187,7 +187,7 @@ class KitsuApi(private val client: OkHttpClient, interceptor: KitsuInterceptor)
suspend fun findLibManga(track: Track, userId: String): Track? {
return withIOContext {
- val url = "${baseUrl}library-entries".toUri().buildUpon()
+ val url = "${BASE_URL}library-entries".toUri().buildUpon()
.encodedQuery("filter[manga_id]=${track.remote_id}&filter[user_id]=$userId")
.appendQueryParameter("include", "manga")
.build()
@@ -210,7 +210,7 @@ class KitsuApi(private val client: OkHttpClient, interceptor: KitsuInterceptor)
suspend fun getLibManga(track: Track): Track {
return withIOContext {
- val url = "${baseUrl}library-entries".toUri().buildUpon()
+ val url = "${BASE_URL}library-entries".toUri().buildUpon()
.encodedQuery("filter[id]=${track.remote_id}")
.appendQueryParameter("include", "manga")
.build()
@@ -237,11 +237,11 @@ class KitsuApi(private val client: OkHttpClient, interceptor: KitsuInterceptor)
.add("username", username)
.add("password", password)
.add("grant_type", "password")
- .add("client_id", clientId)
- .add("client_secret", clientSecret)
+ .add("client_id", CLIENT_ID)
+ .add("client_secret", CLIENT_SECRET)
.build()
with(json) {
- client.newCall(POST(loginUrl, body = formBody))
+ client.newCall(POST(LOGIN_URL, body = formBody))
.awaitSuccess()
.parseAs()
}
@@ -250,7 +250,7 @@ class KitsuApi(private val client: OkHttpClient, interceptor: KitsuInterceptor)
suspend fun getCurrentUser(): String {
return withIOContext {
- val url = "${baseUrl}users".toUri().buildUpon()
+ val url = "${BASE_URL}users".toUri().buildUpon()
.encodedQuery("filter[self]=true")
.build()
with(json) {
@@ -265,35 +265,31 @@ class KitsuApi(private val client: OkHttpClient, interceptor: KitsuInterceptor)
}
companion object {
- private const val clientId =
- "dd031b32d2f56c990b1425efe6c42ad847e7fe3ab46bf1299f05ecd856bdb7dd"
- private const val clientSecret =
- "54d7307928f63414defd96399fc31ba847961ceaecef3a5fd93144e960c0e151"
+ private const val CLIENT_ID = "dd031b32d2f56c990b1425efe6c42ad847e7fe3ab46bf1299f05ecd856bdb7dd"
+ private const val CLIENT_SECRET = "54d7307928f63414defd96399fc31ba847961ceaecef3a5fd93144e960c0e151"
- private const val baseUrl = "https://kitsu.app/api/edge/"
- private const val loginUrl = "https://kitsu.app/api/oauth/token"
- private const val baseMangaUrl = "https://kitsu.app/manga/"
- private const val algoliaKeyUrl = "https://kitsu.app/api/edge/algolia-keys/media/"
+ private const val BASE_URL = "https://kitsu.app/api/edge/"
+ private const val LOGIN_URL = "https://kitsu.app/api/oauth/token"
+ private const val BASE_MANGA_URL = "https://kitsu.app/manga/"
+ private const val ALGOLIA_KEY_URL = "https://kitsu.app/api/edge/algolia-keys/media/"
- private const val algoliaUrl =
- "https://AWQO5J657S-dsn.algolia.net/1/indexes/production_media/query/"
- private const val algoliaAppId = "AWQO5J657S"
- private const val algoliaFilter =
- "&facetFilters=%5B%22kind%3Amanga%22%5D&attributesToRetrieve=" +
- "%5B%22synopsis%22%2C%22averageRating%22%2C%22canonicalTitle%22%2C%22chapterCount%22%2C%22" +
- "posterImage%22%2C%22startDate%22%2C%22subtype%22%2C%22endDate%22%2C%20%22id%22%5D"
+ private const val ALGOLIA_APP_ID = "AWQO5J657S"
+ private const val ALGOLIA_URL = "https://$ALGOLIA_APP_ID-dsn.algolia.net/1/indexes/production_media/query/"
+ private const val ALGOLIA_FILTER = "&facetFilters=%5B%22kind%3Amanga%22%5D&attributesToRetrieve=" +
+ "%5B%22synopsis%22%2C%22averageRating%22%2C%22canonicalTitle%22%2C%22chapterCount%22%2C%22" +
+ "posterImage%22%2C%22startDate%22%2C%22subtype%22%2C%22endDate%22%2C%20%22id%22%5D"
fun mangaUrl(remoteId: Long): String {
- return baseMangaUrl + remoteId
+ return BASE_MANGA_URL + remoteId
}
fun refreshTokenRequest(token: String) = POST(
- loginUrl,
+ LOGIN_URL,
body = FormBody.Builder()
.add("grant_type", "refresh_token")
.add("refresh_token", token)
- .add("client_id", clientId)
- .add("client_secret", clientSecret)
+ .add("client_id", CLIENT_ID)
+ .add("client_secret", CLIENT_SECRET)
.build(),
)
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuDateHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuDateHelper.kt
index 6828e1e1a..e4521438b 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuDateHelper.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuDateHelper.kt
@@ -6,8 +6,8 @@ import java.util.Locale
object KitsuDateHelper {
- private const val pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
- private val formatter = SimpleDateFormat(pattern, Locale.ENGLISH)
+ private const val PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
+ private val formatter = SimpleDateFormat(PATTERN, Locale.ENGLISH)
fun convert(dateValue: Long): String? {
if (dateValue == 0L) return null
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/model/TrackSearch.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/model/TrackSearch.kt
index c1af76ebf..94160d6ab 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/model/TrackSearch.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/model/TrackSearch.kt
@@ -1,3 +1,5 @@
+@file:Suppress("PropertyName", "ktlint:standard:property-naming")
+
package eu.kanade.tachiyomi.data.track.model
import eu.kanade.tachiyomi.data.database.models.Track
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/ShikimoriApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/ShikimoriApi.kt
index 680e512a3..fbb05ce34 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/ShikimoriApi.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/ShikimoriApi.kt
@@ -54,7 +54,7 @@ class ShikimoriApi(
}
authClient.newCall(
POST(
- "$apiUrl/v2/user_rates",
+ "$API_URL/v2/user_rates",
body = payload.toString().toRequestBody(jsonMime),
),
).awaitSuccess()
@@ -72,14 +72,14 @@ class ShikimoriApi(
suspend fun deleteLibManga(track: DomainTrack) {
withIOContext {
authClient
- .newCall(DELETE("$apiUrl/v2/user_rates/${track.libraryId}"))
+ .newCall(DELETE("$API_URL/v2/user_rates/${track.libraryId}"))
.awaitSuccess()
}
}
suspend fun search(search: String): List {
return withIOContext {
- val url = "$apiUrl/mangas".toUri().buildUpon()
+ val url = "$API_URL/mangas".toUri().buildUpon()
.appendQueryParameter("order", "popularity")
.appendQueryParameter("search", search)
.appendQueryParameter("limit", "20")
@@ -102,10 +102,10 @@ class ShikimoriApi(
remote_id = obj["id"]!!.jsonPrimitive.long
title = obj["name"]!!.jsonPrimitive.content
total_chapters = obj["chapters"]!!.jsonPrimitive.long
- cover_url = baseUrl + obj["image"]!!.jsonObject["preview"]!!.jsonPrimitive.content
+ cover_url = BASE_URL + obj["image"]!!.jsonObject["preview"]!!.jsonPrimitive.content
summary = ""
score = obj["score"]!!.jsonPrimitive.double
- tracking_url = baseUrl + obj["url"]!!.jsonPrimitive.content
+ tracking_url = BASE_URL + obj["url"]!!.jsonPrimitive.content
publishing_status = obj["status"]!!.jsonPrimitive.content
publishing_type = obj["kind"]!!.jsonPrimitive.content
start_date = obj["aired_on"]!!.jsonPrimitive.contentOrNull ?: ""
@@ -121,13 +121,13 @@ class ShikimoriApi(
last_chapter_read = obj["chapters"]!!.jsonPrimitive.double
score = obj["score"]!!.jsonPrimitive.int.toDouble()
status = toTrackStatus(obj["status"]!!.jsonPrimitive.content)
- tracking_url = baseUrl + mangas["url"]!!.jsonPrimitive.content
+ tracking_url = BASE_URL + mangas["url"]!!.jsonPrimitive.content
}
}
suspend fun findLibManga(track: Track, userId: String): Track? {
return withIOContext {
- val urlMangas = "$apiUrl/mangas".toUri().buildUpon()
+ val urlMangas = "$API_URL/mangas".toUri().buildUpon()
.appendPath(track.remote_id.toString())
.build()
val mangas = with(json) {
@@ -136,7 +136,7 @@ class ShikimoriApi(
.parseAs()
}
- val url = "$apiUrl/v2/user_rates".toUri().buildUpon()
+ val url = "$API_URL/v2/user_rates".toUri().buildUpon()
.appendQueryParameter("user_id", userId)
.appendQueryParameter("target_id", track.remote_id.toString())
.appendQueryParameter("target_type", "Manga")
@@ -160,7 +160,7 @@ class ShikimoriApi(
suspend fun getCurrentUser(): Int {
return with(json) {
- authClient.newCall(GET("$apiUrl/users/whoami"))
+ authClient.newCall(GET("$API_URL/users/whoami"))
.awaitSuccess()
.parseAs()
.let {
@@ -180,39 +180,39 @@ class ShikimoriApi(
}
private fun accessTokenRequest(code: String) = POST(
- oauthUrl,
+ OAUTH_URL,
body = FormBody.Builder()
.add("grant_type", "authorization_code")
- .add("client_id", clientId)
- .add("client_secret", clientSecret)
+ .add("client_id", CLIENT_ID)
+ .add("client_secret", CLIENT_SECRET)
.add("code", code)
- .add("redirect_uri", redirectUrl)
+ .add("redirect_uri", REDIRECT_URL)
.build(),
)
companion object {
- private const val clientId = "PB9dq8DzI405s7wdtwTdirYqHiyVMh--djnP7lBUqSA"
- private const val clientSecret = "NajpZcOBKB9sJtgNcejf8OB9jBN1OYYoo-k4h2WWZus"
+ private const val CLIENT_ID = "PB9dq8DzI405s7wdtwTdirYqHiyVMh--djnP7lBUqSA"
+ private const val CLIENT_SECRET = "NajpZcOBKB9sJtgNcejf8OB9jBN1OYYoo-k4h2WWZus"
- private const val baseUrl = "https://shikimori.one"
- private const val apiUrl = "$baseUrl/api"
- private const val oauthUrl = "$baseUrl/oauth/token"
- private const val loginUrl = "$baseUrl/oauth/authorize"
+ private const val BASE_URL = "https://shikimori.one"
+ private const val API_URL = "$BASE_URL/api"
+ private const val OAUTH_URL = "$BASE_URL/oauth/token"
+ private const val LOGIN_URL = "$BASE_URL/oauth/authorize"
- private const val redirectUrl = "mihon://shikimori-auth"
+ private const val REDIRECT_URL = "mihon://shikimori-auth"
- fun authUrl(): Uri = loginUrl.toUri().buildUpon()
- .appendQueryParameter("client_id", clientId)
- .appendQueryParameter("redirect_uri", redirectUrl)
+ fun authUrl(): Uri = LOGIN_URL.toUri().buildUpon()
+ .appendQueryParameter("client_id", CLIENT_ID)
+ .appendQueryParameter("redirect_uri", REDIRECT_URL)
.appendQueryParameter("response_type", "code")
.build()
fun refreshTokenRequest(token: String) = POST(
- oauthUrl,
+ OAUTH_URL,
body = FormBody.Builder()
.add("grant_type", "refresh_token")
- .add("client_id", clientId)
- .add("client_secret", clientSecret)
+ .add("client_id", CLIENT_ID)
+ .add("client_secret", CLIENT_SECRET)
.add("refresh_token", token)
.build(),
)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt
index f118b1bd5..daef404dc 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt
@@ -69,17 +69,18 @@ class ExtensionManager(
private val iconMap = mutableMapOf()
- private val _installedExtensionsMapFlow = MutableStateFlow(emptyMap())
- val installedExtensionsFlow = _installedExtensionsMapFlow.mapExtensions(scope)
+ private val installedExtensionMapFlow = MutableStateFlow(emptyMap())
+ val installedExtensionsFlow = installedExtensionMapFlow.mapExtensions(scope)
+
+ private val availableExtensionMapFlow = MutableStateFlow(emptyMap())
- private val _availableExtensionsMapFlow = MutableStateFlow(emptyMap())
// SY -->
- val availableExtensionsFlow = _availableExtensionsMapFlow.map { it.filterNotBlacklisted().values.toList() }
- .stateIn(scope, SharingStarted.Lazily, _availableExtensionsMapFlow.value.values.toList())
+ val availableExtensionsFlow = availableExtensionMapFlow.map { it.filterNotBlacklisted().values.toList() }
+ .stateIn(scope, SharingStarted.Lazily, availableExtensionMapFlow.value.values.toList())
// SY <--
- private val _untrustedExtensionsMapFlow = MutableStateFlow(emptyMap())
- val untrustedExtensionsFlow = _untrustedExtensionsMapFlow.mapExtensions(scope)
+ private val untrustedExtensionMapFlow = MutableStateFlow(emptyMap())
+ val untrustedExtensionsFlow = untrustedExtensionMapFlow.mapExtensions(scope)
init {
initExtensions()
@@ -89,7 +90,7 @@ class ExtensionManager(
private var subLanguagesEnabledOnFirstRun = preferences.enabledLanguages().isSet()
fun getAppIconForSource(sourceId: Long): Drawable? {
- val pkgName = _installedExtensionsMapFlow.value.values
+ val pkgName = installedExtensionMapFlow.value.values
.find { ext ->
ext.sources.any { it.id == sourceId }
}
@@ -128,11 +129,11 @@ class ExtensionManager(
private fun initExtensions() {
val extensions = ExtensionLoader.loadExtensions(context)
- _installedExtensionsMapFlow.value = extensions
+ installedExtensionMapFlow.value = extensions
.filterIsInstance()
.associate { it.extension.pkgName to it.extension }
- _untrustedExtensionsMapFlow.value = extensions
+ untrustedExtensionMapFlow.value = extensions
.filterIsInstance()
.associate { it.extension.pkgName to it.extension }
// SY -->
@@ -159,7 +160,7 @@ class ExtensionManager(
// EXH <--
/**
- * Finds the available extensions in the [api] and updates [_availableExtensionsMapFlow].
+ * Finds the available extensions in the [api] and updates [availableExtensionMapFlow].
*/
suspend fun findAvailableExtensions() {
val extensions: List = try {
@@ -172,7 +173,7 @@ class ExtensionManager(
enableAdditionalSubLanguages(extensions)
- _availableExtensionsMapFlow.value = extensions.associateBy { it.pkgName }
+ availableExtensionMapFlow.value = extensions.associateBy { it.pkgName }
updatedInstalledExtensionsStatuses(extensions)
setupAvailableExtensionsSourcesDataMap(extensions)
}
@@ -218,7 +219,7 @@ class ExtensionManager(
return
}
- val installedExtensionsMap = _installedExtensionsMapFlow.value.toMutableMap()
+ val installedExtensionsMap = installedExtensionMapFlow.value.toMutableMap()
var changed = false
for ((pkgName, extension) in installedExtensionsMap) {
val availableExt = availableExtensions.find { it.pkgName == pkgName }
@@ -247,7 +248,7 @@ class ExtensionManager(
}
}
if (changed) {
- _installedExtensionsMapFlow.value = installedExtensionsMap
+ installedExtensionMapFlow.value = installedExtensionsMap
}
updatePendingUpdatesCount()
}
@@ -271,7 +272,7 @@ class ExtensionManager(
* @param extension The extension to be updated.
*/
fun updateExtension(extension: Extension.Installed): Flow {
- val availableExt = _availableExtensionsMapFlow.value[extension.pkgName] ?: return emptyFlow()
+ val availableExt = availableExtensionMapFlow.value[extension.pkgName] ?: return emptyFlow()
return installExtension(availableExt)
}
@@ -308,11 +309,11 @@ class ExtensionManager(
* @param extension the extension to trust
*/
suspend fun trust(extension: Extension.Untrusted) {
- _untrustedExtensionsMapFlow.value[extension.pkgName] ?: return
+ untrustedExtensionMapFlow.value[extension.pkgName] ?: return
trustExtension.trust(extension.pkgName, extension.versionCode, extension.signatureHash)
- _untrustedExtensionsMapFlow.value -= extension.pkgName
+ untrustedExtensionMapFlow.value -= extension.pkgName
ExtensionLoader.loadExtensionFromPkgName(context, extension.pkgName)
.let { it as? LoadResult.Success }
@@ -332,7 +333,7 @@ class ExtensionManager(
}
// SY <--
- _installedExtensionsMapFlow.value += extension
+ installedExtensionMapFlow.value += extension
}
/**
@@ -349,7 +350,7 @@ class ExtensionManager(
}
// SY <--
- _installedExtensionsMapFlow.value += extension
+ installedExtensionMapFlow.value += extension
}
/**
@@ -359,8 +360,8 @@ class ExtensionManager(
* @param pkgName The package name of the uninstalled application.
*/
private fun unregisterExtension(pkgName: String) {
- _installedExtensionsMapFlow.value -= pkgName
- _untrustedExtensionsMapFlow.value -= pkgName
+ installedExtensionMapFlow.value -= pkgName
+ untrustedExtensionMapFlow.value -= pkgName
}
/**
@@ -379,8 +380,8 @@ class ExtensionManager(
}
override fun onExtensionUntrusted(extension: Extension.Untrusted) {
- _installedExtensionsMapFlow.value -= extension.pkgName
- _untrustedExtensionsMapFlow.value += extension
+ installedExtensionMapFlow.value -= extension.pkgName
+ untrustedExtensionMapFlow.value += extension
updatePendingUpdatesCount()
}
@@ -404,14 +405,14 @@ class ExtensionManager(
private fun Extension.Installed.updateExists(availableExtension: Extension.Available? = null): Boolean {
val availableExt = availableExtension
- ?: _availableExtensionsMapFlow.value[pkgName]
+ ?: availableExtensionMapFlow.value[pkgName]
?: return false
return (availableExt.versionCode > versionCode || availableExt.libVersion > libVersion)
}
private fun updatePendingUpdatesCount() {
- val pendingUpdateCount = _installedExtensionsMapFlow.value.values.count { it.hasUpdate }
+ val pendingUpdateCount = installedExtensionMapFlow.value.values.count { it.hasUpdate }
preferences.extensionUpdatesCount().set(pendingUpdateCount)
if (pendingUpdateCount == 0) {
ExtensionUpdateNotifier(context).dismiss()
diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionApi.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionApi.kt
index 8b2027699..7df837964 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionApi.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionApi.kt
@@ -34,8 +34,10 @@ internal class ExtensionApi {
private val getExtensionRepo: GetExtensionRepo by injectLazy()
private val updateExtensionRepo: UpdateExtensionRepo by injectLazy()
private val extensionManager: ExtensionManager by injectLazy()
+
// SY -->
private val sourcePreferences: SourcePreferences by injectLazy()
+
// SY <--
private val json: Json by injectLazy()
diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/model/InstallStep.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/model/InstallStep.kt
index d1049689e..cd9b40fad 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/extension/model/InstallStep.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/extension/model/InstallStep.kt
@@ -1,7 +1,13 @@
package eu.kanade.tachiyomi.extension.model
enum class InstallStep {
- Idle, Pending, Downloading, Installing, Installed, Error;
+ Idle,
+ Pending,
+ Downloading,
+ Installing,
+ Installed,
+ Error,
+ ;
fun isCompleted(): Boolean {
return this == Installed || this == Error || this == Idle
diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt
index 50ab94279..08027dc10 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt
@@ -223,7 +223,6 @@ internal object ExtensionLoader {
* @param context The application context.
* @param extensionInfo The extension to load.
*/
- @Suppress("LongMethod", "CyclomaticComplexMethod", "ReturnCount")
private suspend fun loadExtension(context: Context, extensionInfo: ExtensionInfo): LoadResult {
val pkgManager = context.packageManager
val pkgInfo = extensionInfo.packageInfo
diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt
index ba2b1c84e..f35ccae4e 100755
--- a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt
@@ -383,7 +383,7 @@ class EHentai(
doc.select("#gdd .gdt1").find { el ->
el.text().lowercase() == "posted:"
}!!.nextElementSibling()!!.text(),
- MetadataUtil.EX_DATE_FORMAT.withZone(ZoneOffset.UTC)
+ MetadataUtil.EX_DATE_FORMAT.withZone(ZoneOffset.UTC),
)!!.toInstant().toEpochMilli(),
scanlator = EHentaiSearchMetadata.galleryId(location),
)
@@ -401,7 +401,7 @@ class EHentai(
chapter_number = index + 2f,
date_upload = ZonedDateTime.parse(
posted,
- MetadataUtil.EX_DATE_FORMAT.withZone(ZoneOffset.UTC)
+ MetadataUtil.EX_DATE_FORMAT.withZone(ZoneOffset.UTC),
).toInstant().toEpochMilli(),
scanlator = EHentaiSearchMetadata.galleryId(link),
)
@@ -542,9 +542,10 @@ class EHentai(
if (
MATCH_SEEK_REGEX.matches(jumpSeekValue) ||
(
- MATCH_YEAR_REGEX.matches(jumpSeekValue) && jumpSeekValue.toIntOrNull()?.let {
- it in 2007..2099
- } == true
+ MATCH_YEAR_REGEX.matches(jumpSeekValue) &&
+ jumpSeekValue.toIntOrNull()?.let {
+ it in 2007..2099
+ } == true
)
) {
uri.appendQueryParameter("seek", jumpSeekValue)
@@ -715,7 +716,7 @@ class EHentai(
when (left.removeSuffix(":").lowercase()) {
"posted" -> datePosted = ZonedDateTime.parse(
right,
- MetadataUtil.EX_DATE_FORMAT.withZone(ZoneOffset.UTC)
+ MetadataUtil.EX_DATE_FORMAT.withZone(ZoneOffset.UTC),
).toInstant().toEpochMilli()
// Example gallery with parent: https://e-hentai.org/g/1390451/7f181c2426/
// Example JP gallery: https://exhentai.org/g/1375385/03519d541b/
diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MergedSource.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MergedSource.kt
index 7587dc8fa..52b839cd3 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MergedSource.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MergedSource.kt
@@ -119,12 +119,13 @@ class MergedSource : HttpSource() {
"Manga references are empty, chapters unavailable, merge is likely corrupted"
}
- val ifDownloadNewChapters = downloadChapters && manga.shouldDownloadNewChapters(
- getCategories.await(manga.id).map {
- it.id
- },
- downloadPreferences,
- )
+ val ifDownloadNewChapters = downloadChapters &&
+ manga.shouldDownloadNewChapters(
+ getCategories.await(manga.id).map {
+ it.id
+ },
+ downloadPreferences,
+ )
val semaphore = Semaphore(5)
var exception: Exception? = null
return supervisorScope {
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/delegate/SecureActivityDelegate.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/delegate/SecureActivityDelegate.kt
index cf5a9a76e..e80acfd08 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/base/delegate/SecureActivityDelegate.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/delegate/SecureActivityDelegate.kt
@@ -73,16 +73,17 @@ interface SecureActivityDelegate {
}
val lockedDays = preferences.authenticatorDays().get()
- val canLockToday = lockedDays == LOCK_ALL_DAYS || when (today.get(Calendar.DAY_OF_WEEK)) {
- Calendar.SUNDAY -> (lockedDays and LOCK_SUNDAY) == LOCK_SUNDAY
- Calendar.MONDAY -> (lockedDays and LOCK_MONDAY) == LOCK_MONDAY
- Calendar.TUESDAY -> (lockedDays and LOCK_TUESDAY) == LOCK_TUESDAY
- Calendar.WEDNESDAY -> (lockedDays and LOCK_WEDNESDAY) == LOCK_WEDNESDAY
- Calendar.THURSDAY -> (lockedDays and LOCK_THURSDAY) == LOCK_THURSDAY
- Calendar.FRIDAY -> (lockedDays and LOCK_FRIDAY) == LOCK_FRIDAY
- Calendar.SATURDAY -> (lockedDays and LOCK_SATURDAY) == LOCK_SATURDAY
- else -> false
- }
+ val canLockToday = lockedDays == LOCK_ALL_DAYS ||
+ when (today.get(Calendar.DAY_OF_WEEK)) {
+ Calendar.SUNDAY -> (lockedDays and LOCK_SUNDAY) == LOCK_SUNDAY
+ Calendar.MONDAY -> (lockedDays and LOCK_MONDAY) == LOCK_MONDAY
+ Calendar.TUESDAY -> (lockedDays and LOCK_TUESDAY) == LOCK_TUESDAY
+ Calendar.WEDNESDAY -> (lockedDays and LOCK_WEDNESDAY) == LOCK_WEDNESDAY
+ Calendar.THURSDAY -> (lockedDays and LOCK_THURSDAY) == LOCK_THURSDAY
+ Calendar.FRIDAY -> (lockedDays and LOCK_FRIDAY) == LOCK_FRIDAY
+ Calendar.SATURDAY -> (lockedDays and LOCK_SATURDAY) == LOCK_SATURDAY
+ else -> false
+ }
return canLockNow && canLockToday
}
@@ -99,11 +100,13 @@ interface SecureActivityDelegate {
// `requireUnlock` can be true on process start or if app was closed in locked state
if (!AuthenticatorUtil.isAuthenticating && !requireUnlock) {
- requireUnlock = /* SY --> */ canLockNow(preferences) && /* SY <-- */ when (val lockDelay = preferences.lockAppAfter().get()) {
- -1 -> false // Never
- 0 -> true // Always
- else -> lastClosedPref.get() + lockDelay * 60_000 <= System.currentTimeMillis()
- }
+ requireUnlock =
+ /* SY --> */ canLockNow(preferences) &&
+ /* SY <-- */ when (val lockDelay = preferences.lockAppAfter().get()) {
+ -1 -> false // Never
+ 0 -> true // Always
+ else -> lastClosedPref.get() + lockDelay * 60_000 <= System.currentTimeMillis()
+ }
}
lastClosedPref.delete()
@@ -140,7 +143,7 @@ class SecureActivityDelegateImpl : SecureActivityDelegate, DefaultLifecycleObser
val incognitoModeFlow = preferences.incognitoMode().changes()
combine(secureScreenFlow, incognitoModeFlow) { secureScreen, incognitoMode ->
secureScreen == SecurityPreferences.SecureScreenMode.ALWAYS ||
- secureScreen == SecurityPreferences.SecureScreenMode.INCOGNITO && incognitoMode
+ (secureScreen == SecurityPreferences.SecureScreenMode.INCOGNITO && incognitoMode)
}
.onEach(activity.window::setSecureScreen)
.launchIn(activity.lifecycleScope)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsScreenModel.kt
index 2efca7bcc..861c28ff6 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsScreenModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsScreenModel.kt
@@ -41,7 +41,7 @@ class ExtensionsScreenModel(
private val getExtensions: GetExtensionsByType = Injekt.get(),
) : StateScreenModel(State()) {
- private var _currentDownloads = MutableStateFlow
نقل مَدْخَل موجود
ملف تعريف عرض خاص
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/be/plurals.xml b/i18n/src/commonMain/moko-resources/be/plurals.xml
index 019de2838..f326e86dc 100644
--- a/i18n/src/commonMain/moko-resources/be/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/be/plurals.xml
@@ -24,4 +24,4 @@
- Наступныя %d непрачытаных глав
- Наступныя %d непрачытаных глав
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/be/strings.xml b/i18n/src/commonMain/moko-resources/be/strings.xml
index a299e695e..c1bbcffc4 100644
--- a/i18n/src/commonMain/moko-resources/be/strings.xml
+++ b/i18n/src/commonMain/moko-resources/be/strings.xml
@@ -352,4 +352,4 @@
Наступнае
Перакладчык
Загружана
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/bg/plurals.xml b/i18n/src/commonMain/moko-resources/bg/plurals.xml
index 052b404fa..8f0b9c6eb 100644
--- a/i18n/src/commonMain/moko-resources/bg/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/bg/plurals.xml
@@ -68,4 +68,4 @@
- %d хранилище
- %d хранилища
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/bg/strings.xml b/i18n/src/commonMain/moko-resources/bg/strings.xml
index 6aa4a2d7d..092f7738c 100755
--- a/i18n/src/commonMain/moko-resources/bg/strings.xml
+++ b/i18n/src/commonMain/moko-resources/bg/strings.xml
@@ -642,4 +642,4 @@
Приключено издаване
Достъпна е нова версия от официалните източници. Научете как да мигрирате от неофициалните версии на F-Droid.
Страница %d не беше намерена при разделяне
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/bn/plurals.xml b/i18n/src/commonMain/moko-resources/bn/plurals.xml
index f4c94162d..1339411fc 100644
--- a/i18n/src/commonMain/moko-resources/bn/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/bn/plurals.xml
@@ -64,4 +64,4 @@
- %d দিন
- %d দিন
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/bn/strings.xml b/i18n/src/commonMain/moko-resources/bn/strings.xml
index d14fd3ff4..e129d3c90 100644
--- a/i18n/src/commonMain/moko-resources/bn/strings.xml
+++ b/i18n/src/commonMain/moko-resources/bn/strings.xml
@@ -637,4 +637,4 @@
আপনি কি বর্ণানুক্রমিকভাবে ফিল্টার করতে চান
ঠিক আছে
পরবর্তী আপডেটের সম্ভাব্য সময়
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/ca/plurals.xml b/i18n/src/commonMain/moko-resources/ca/plurals.xml
index b37ec5f92..db6f57a18 100644
--- a/i18n/src/commonMain/moko-resources/ca/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/ca/plurals.xml
@@ -95,4 +95,4 @@
- %1$s pàgines
- %1$s pàgines
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/ca/strings.xml b/i18n/src/commonMain/moko-resources/ca/strings.xml
index e127d3b6c..aeb6886b5 100644
--- a/i18n/src/commonMain/moko-resources/ca/strings.xml
+++ b/i18n/src/commonMain/moko-resources/ca/strings.xml
@@ -820,4 +820,4 @@
Còpia de seguretat en JSON no suportada
El fitxer de còpia de seguretat és corrupte
Repositoris d’extensions
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/ceb/plurals.xml b/i18n/src/commonMain/moko-resources/ceb/plurals.xml
index 431598699..111de37f1 100644
--- a/i18n/src/commonMain/moko-resources/ceb/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/ceb/plurals.xml
@@ -20,4 +20,4 @@
- %1$s ang nahibilin
- %1$s ang nahibilin
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/ceb/strings.xml b/i18n/src/commonMain/moko-resources/ceb/strings.xml
index 33c600377..512ac5bb6 100644
--- a/i18n/src/commonMain/moko-resources/ceb/strings.xml
+++ b/i18n/src/commonMain/moko-resources/ceb/strings.xml
@@ -443,4 +443,4 @@
Dili karon
Gikinahanlan ang WebView alang sa Tachiyomi
*gikinahanlan
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/cs/plurals.xml b/i18n/src/commonMain/moko-resources/cs/plurals.xml
index 3977db060..0c62f50cd 100644
--- a/i18n/src/commonMain/moko-resources/cs/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/cs/plurals.xml
@@ -95,4 +95,4 @@
- %1$s stránky
- %1$s stránek
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/cs/strings.xml b/i18n/src/commonMain/moko-resources/cs/strings.xml
index 117de4c38..321e55604 100644
--- a/i18n/src/commonMain/moko-resources/cs/strings.xml
+++ b/i18n/src/commonMain/moko-resources/cs/strings.xml
@@ -814,4 +814,4 @@
Vlastní profil zobrazení
Zobrazit nadcházející aktualizace
Nepodařilo se získat trvalý přístup ke složce. Aplikace se může chovat zvláštně.
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/cv/plurals.xml b/i18n/src/commonMain/moko-resources/cv/plurals.xml
index 21a249060..750f3f3ee 100644
--- a/i18n/src/commonMain/moko-resources/cv/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/cv/plurals.xml
@@ -68,4 +68,4 @@
- %d усрав
- %d усрав
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/cv/strings.xml b/i18n/src/commonMain/moko-resources/cv/strings.xml
index 463d5fa89..42c886a3f 100644
--- a/i18n/src/commonMain/moko-resources/cv/strings.xml
+++ b/i18n/src/commonMain/moko-resources/cv/strings.xml
@@ -599,4 +599,4 @@
Кивӗ верссирен ҫӗнӗлетӗн те мӗн суламаллине пӗлместӗн? Нумайрах пӗлме усрав пӗлкӗчне кӗрсе пӑх.
%s ҫӗнӗрен лартатӑн?
«%1$s» вырӑнне «%2$s»
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/da/plurals.xml b/i18n/src/commonMain/moko-resources/da/plurals.xml
index 7f24d8b75..58e604479 100644
--- a/i18n/src/commonMain/moko-resources/da/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/da/plurals.xml
@@ -16,4 +16,4 @@
- Næste ulæste kapitel
- Næste %d ulæste kapitler
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/da/strings.xml b/i18n/src/commonMain/moko-resources/da/strings.xml
index 508593d97..a5e5dfe58 100644
--- a/i18n/src/commonMain/moko-resources/da/strings.xml
+++ b/i18n/src/commonMain/moko-resources/da/strings.xml
@@ -316,4 +316,4 @@
Opretter sikkerhedskopi
Kunne ikke nå %s
Kapitelopdateringer
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/de/plurals.xml b/i18n/src/commonMain/moko-resources/de/plurals.xml
index 60cd2d491..e969d82bb 100644
--- a/i18n/src/commonMain/moko-resources/de/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/de/plurals.xml
@@ -76,4 +76,4 @@
- 1 Seite
- %1$s Seiten
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/de/strings.xml b/i18n/src/commonMain/moko-resources/de/strings.xml
index b8dc1dde6..884b0ffec 100644
--- a/i18n/src/commonMain/moko-resources/de/strings.xml
+++ b/i18n/src/commonMain/moko-resources/de/strings.xml
@@ -817,4 +817,4 @@
Weiß und Schwarz
Dauer des Leuchtens
%1$s ms
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/el/plurals.xml b/i18n/src/commonMain/moko-resources/el/plurals.xml
index 82ca8aa47..47790d52d 100644
--- a/i18n/src/commonMain/moko-resources/el/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/el/plurals.xml
@@ -68,4 +68,4 @@
- %d αποθετήριο
- %d αποθετήρια
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/el/strings.xml b/i18n/src/commonMain/moko-resources/el/strings.xml
index 05680a1ae..71f3958a7 100644
--- a/i18n/src/commonMain/moko-resources/el/strings.xml
+++ b/i18n/src/commonMain/moko-resources/el/strings.xml
@@ -809,4 +809,4 @@
Επόμενο μήνα
Προηγούμενο Μήνα
Αποτυχία απόκτησης μόνιμης πρόσβασης φακέλου. Η εφαρμογή μπορεί να συμπεριφέρεται απροσδόκητα.
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/eo/plurals.xml b/i18n/src/commonMain/moko-resources/eo/plurals.xml
index 90b28e925..f2d86f1f7 100644
--- a/i18n/src/commonMain/moko-resources/eo/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/eo/plurals.xml
@@ -68,4 +68,4 @@
- Disponebla ĝisdatigo de etendaĵo
- Disponeblaj ĝisdatigoj de %d etendaĵoj
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/eo/strings.xml b/i18n/src/commonMain/moko-resources/eo/strings.xml
index 5b0d29da5..d5089be29 100644
--- a/i18n/src/commonMain/moko-resources/eo/strings.xml
+++ b/i18n/src/commonMain/moko-resources/eo/strings.xml
@@ -516,4 +516,4 @@
%1$s eraro: %2$s
Neniu fonto trovita
Ups!
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/es/plurals.xml b/i18n/src/commonMain/moko-resources/es/plurals.xml
index f24e81118..81b1c7ca8 100644
--- a/i18n/src/commonMain/moko-resources/es/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/es/plurals.xml
@@ -95,4 +95,4 @@
- %1$s páginas
- %1$s páginas
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/es/strings.xml b/i18n/src/commonMain/moko-resources/es/strings.xml
index 65489b12b..2e6862d31 100755
--- a/i18n/src/commonMain/moko-resources/es/strings.xml
+++ b/i18n/src/commonMain/moko-resources/es/strings.xml
@@ -820,4 +820,4 @@
Copia de seguridad JSON no compatible
El archivo de la copia de seguridad está dañado
Repositorios de extensiones
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/eu/plurals.xml b/i18n/src/commonMain/moko-resources/eu/plurals.xml
index d51017884..55139ec50 100644
--- a/i18n/src/commonMain/moko-resources/eu/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/eu/plurals.xml
@@ -48,4 +48,4 @@
- %1$s kapituluak eta bat gehiago
- %1$s kapituluak eta %2$d gehiago
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/eu/strings.xml b/i18n/src/commonMain/moko-resources/eu/strings.xml
index 5fad2d181..f69a3800b 100644
--- a/i18n/src/commonMain/moko-resources/eu/strings.xml
+++ b/i18n/src/commonMain/moko-resources/eu/strings.xml
@@ -605,4 +605,4 @@
Ezarri denbora-bitartea
Datu eta memoria
Azkenengo egunearatze egiaztapena
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/fa/plurals.xml b/i18n/src/commonMain/moko-resources/fa/plurals.xml
index d6516ab44..07bfa6db9 100644
--- a/i18n/src/commonMain/moko-resources/fa/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/fa/plurals.xml
@@ -64,4 +64,4 @@
- 1 روز
- %d روز
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/fa/strings.xml b/i18n/src/commonMain/moko-resources/fa/strings.xml
index ff9634e88..e5d4b2be0 100644
--- a/i18n/src/commonMain/moko-resources/fa/strings.xml
+++ b/i18n/src/commonMain/moko-resources/fa/strings.xml
@@ -671,4 +671,4 @@
آخرین پشتیبان گیری خودکار: %s
DNS بیش از HTTPS (DoH)
همگام سازی کتاب خانه کامل شد
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/fi/plurals.xml b/i18n/src/commonMain/moko-resources/fi/plurals.xml
index 3c6adea0b..7fa9a44ae 100644
--- a/i18n/src/commonMain/moko-resources/fi/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/fi/plurals.xml
@@ -52,4 +52,4 @@
- Seuraava lukematon luku
- Seuraavat %d lukematonta lukua
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/fi/strings.xml b/i18n/src/commonMain/moko-resources/fi/strings.xml
index 50fec74ac..69b9755b3 100644
--- a/i18n/src/commonMain/moko-resources/fi/strings.xml
+++ b/i18n/src/commonMain/moko-resources/fi/strings.xml
@@ -676,4 +676,4 @@
Automaattinen lataus, ennakkolataus
Yksisuuntainen synkronointi, paranneltu synkronointi
Kategoriat, globaalit päivitykset, luvun pyyhkäisy
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/fil/plurals.xml b/i18n/src/commonMain/moko-resources/fil/plurals.xml
index 70cab3bc8..83f5db36b 100644
--- a/i18n/src/commonMain/moko-resources/fil/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/fil/plurals.xml
@@ -76,4 +76,4 @@
- 1 pahina
- %1$s na mga pahina
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/fil/strings.xml b/i18n/src/commonMain/moko-resources/fil/strings.xml
index db69c2e1a..74d2475e8 100644
--- a/i18n/src/commonMain/moko-resources/fil/strings.xml
+++ b/i18n/src/commonMain/moko-resources/fil/strings.xml
@@ -820,4 +820,4 @@
Hindi suportado ang JSON backup
Nasira ang backup file
Mga Repo ng Extension
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/fr/plurals.xml b/i18n/src/commonMain/moko-resources/fr/plurals.xml
index 8d007cf27..3ca8889b1 100644
--- a/i18n/src/commonMain/moko-resources/fr/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/fr/plurals.xml
@@ -90,4 +90,4 @@
- Dans %1$d jours
- Dans %1$d jours
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/fr/strings.xml b/i18n/src/commonMain/moko-resources/fr/strings.xml
index 0fe3712b7..8a371b5c5 100755
--- a/i18n/src/commonMain/moko-resources/fr/strings.xml
+++ b/i18n/src/commonMain/moko-resources/fr/strings.xml
@@ -805,4 +805,4 @@
Guide à venir
Le mois prochain
Le mois précédent
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/gl/plurals.xml b/i18n/src/commonMain/moko-resources/gl/plurals.xml
index d6407f42c..2620bfca7 100644
--- a/i18n/src/commonMain/moko-resources/gl/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/gl/plurals.xml
@@ -72,4 +72,4 @@
- Un día
- %d días
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/gl/strings.xml b/i18n/src/commonMain/moko-resources/gl/strings.xml
index 2a53a3545..44c0ad4de 100644
--- a/i18n/src/commonMain/moko-resources/gl/strings.xml
+++ b/i18n/src/commonMain/moko-resources/gl/strings.xml
@@ -808,4 +808,4 @@
Mes seguinte
Mes anterior
Preme aquí para obter axuda con Cloudflare
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/he/plurals.xml b/i18n/src/commonMain/moko-resources/he/plurals.xml
index 548c4564c..5fa3b16da 100644
--- a/i18n/src/commonMain/moko-resources/he/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/he/plurals.xml
@@ -96,4 +96,4 @@
- חסרים %1$s פרקים
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/he/strings.xml b/i18n/src/commonMain/moko-resources/he/strings.xml
index 5d67ddc12..2f39f2101 100644
--- a/i18n/src/commonMain/moko-resources/he/strings.xml
+++ b/i18n/src/commonMain/moko-resources/he/strings.xml
@@ -725,4 +725,4 @@
ציון ממוצע
בשימוש
%d דקות
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/hi/plurals.xml b/i18n/src/commonMain/moko-resources/hi/plurals.xml
index d399e52c5..d85e156f2 100644
--- a/i18n/src/commonMain/moko-resources/hi/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/hi/plurals.xml
@@ -60,4 +60,4 @@
- अगला अध्याय
- अगले %d अध्याय
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/hi/strings.xml b/i18n/src/commonMain/moko-resources/hi/strings.xml
index c3dd4279d..3ef9f17d2 100644
--- a/i18n/src/commonMain/moko-resources/hi/strings.xml
+++ b/i18n/src/commonMain/moko-resources/hi/strings.xml
@@ -665,4 +665,4 @@
डाउनलोड अनुक्रमणिका अमान्य करें
क्लिपबोर्ड पर कॉपी हो गया है
%s से भी हटा दें
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/hr/plurals.xml b/i18n/src/commonMain/moko-resources/hr/plurals.xml
index 1bddc175f..c5d7a1a14 100644
--- a/i18n/src/commonMain/moko-resources/hr/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/hr/plurals.xml
@@ -90,4 +90,4 @@
- Za %1$d dana
- Za %1$d dana
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/hr/strings.xml b/i18n/src/commonMain/moko-resources/hr/strings.xml
index 0b8e14bee..54ff5ac93 100644
--- a/i18n/src/commonMain/moko-resources/hr/strings.xml
+++ b/i18n/src/commonMain/moko-resources/hr/strings.xml
@@ -809,4 +809,4 @@
Repozitorij %1$s ima isti digitalni otisak ključa za potpisivanje kao %2$s.
\nAko se to očekuje, %2$s će se zamijeniti, u suprotnom se obrati svom održavatelju repozitorija.
Neuspjelo dobivanje trajnog pristupa mapi. Aplikacija se može ponašati neočekivano.
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/hu/plurals.xml b/i18n/src/commonMain/moko-resources/hu/plurals.xml
index ee1f7b9a8..9979d1243 100644
--- a/i18n/src/commonMain/moko-resources/hu/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/hu/plurals.xml
@@ -72,4 +72,4 @@
- %d repo
- %d repok
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/hu/strings.xml b/i18n/src/commonMain/moko-resources/hu/strings.xml
index d248d1b74..c8eb4b1ba 100644
--- a/i18n/src/commonMain/moko-resources/hu/strings.xml
+++ b/i18n/src/commonMain/moko-resources/hu/strings.xml
@@ -808,4 +808,4 @@
Közelgő frissítések megtekintése
Közelgő útmutató
Előző hónap
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/in/plurals.xml b/i18n/src/commonMain/moko-resources/in/plurals.xml
index b3cff445b..420c224d8 100644
--- a/i18n/src/commonMain/moko-resources/in/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/in/plurals.xml
@@ -57,4 +57,4 @@
- %1$s halaman
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/in/strings.xml b/i18n/src/commonMain/moko-resources/in/strings.xml
index d756da9d2..1f8253558 100644
--- a/i18n/src/commonMain/moko-resources/in/strings.xml
+++ b/i18n/src/commonMain/moko-resources/in/strings.xml
@@ -817,4 +817,4 @@
Hitam
Putih
Hitam Putih
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/it/plurals.xml b/i18n/src/commonMain/moko-resources/it/plurals.xml
index 971d6dc75..7c5bd4ce9 100644
--- a/i18n/src/commonMain/moko-resources/it/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/it/plurals.xml
@@ -90,4 +90,4 @@
- %d repository
- %d repository
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/it/strings.xml b/i18n/src/commonMain/moko-resources/it/strings.xml
index dca33c42e..98d221f81 100755
--- a/i18n/src/commonMain/moko-resources/it/strings.xml
+++ b/i18n/src/commonMain/moko-resources/it/strings.xml
@@ -818,4 +818,4 @@
Non si è potuto ottenere l\'accesso permanente alle cartella. L\'applicazione potrebbe comportarsi inaspettatamente.
Flash ogni
Bianco e Nero
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/ja/plurals.xml b/i18n/src/commonMain/moko-resources/ja/plurals.xml
index 71826beef..7b1575470 100644
--- a/i18n/src/commonMain/moko-resources/ja/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/ja/plurals.xml
@@ -57,4 +57,4 @@
- %1$s ページ
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/ja/strings.xml b/i18n/src/commonMain/moko-resources/ja/strings.xml
index bfcb307a5..c650d65c9 100644
--- a/i18n/src/commonMain/moko-resources/ja/strings.xml
+++ b/i18n/src/commonMain/moko-resources/ja/strings.xml
@@ -817,4 +817,4 @@
白と黒
このマンガは完結しているか、あるいは発売予定日が決まっていない。
永続フォルダアクセスの取得に失敗しました。 アプリが予期しない動作をする可能性があります。
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/jv/plurals.xml b/i18n/src/commonMain/moko-resources/jv/plurals.xml
index 5f3256f9f..36b8ae529 100644
--- a/i18n/src/commonMain/moko-resources/jv/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/jv/plurals.xml
@@ -21,4 +21,4 @@
- Kurang %1$s
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/jv/strings.xml b/i18n/src/commonMain/moko-resources/jv/strings.xml
index af985c111..af384d8e8 100644
--- a/i18n/src/commonMain/moko-resources/jv/strings.xml
+++ b/i18n/src/commonMain/moko-resources/jv/strings.xml
@@ -310,4 +310,4 @@
Pilihan liane
Data lan penyimpanan
Bakal muncul
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/ka-rGE/plurals.xml b/i18n/src/commonMain/moko-resources/ka-rGE/plurals.xml
index 4eec3c155..1f31d8924 100644
--- a/i18n/src/commonMain/moko-resources/ka-rGE/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/ka-rGE/plurals.xml
@@ -36,4 +36,4 @@
- 1 წუთის შემდეგ
- %1$s წუთის შემდეგ
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/ka-rGE/strings.xml b/i18n/src/commonMain/moko-resources/ka-rGE/strings.xml
index d6d49201f..a217cc2b8 100644
--- a/i18n/src/commonMain/moko-resources/ka-rGE/strings.xml
+++ b/i18n/src/commonMain/moko-resources/ka-rGE/strings.xml
@@ -422,4 +422,4 @@
ნაგულისხმევი
დააჭირე დეტალების სანახავად
წაუკითხავი
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/kk/plurals.xml b/i18n/src/commonMain/moko-resources/kk/plurals.xml
index e5edb4f2d..acdd6018a 100644
--- a/i18n/src/commonMain/moko-resources/kk/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/kk/plurals.xml
@@ -60,4 +60,4 @@
- Жоқ %1$s тараулары
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/kk/strings.xml b/i18n/src/commonMain/moko-resources/kk/strings.xml
index b12e0555c..054b768a1 100644
--- a/i18n/src/commonMain/moko-resources/kk/strings.xml
+++ b/i18n/src/commonMain/moko-resources/kk/strings.xml
@@ -696,4 +696,4 @@
Кең беттерді сыйғызу үшін бұрыңыз
Бұрылған кең беттерді аудару бағдары
Дебаг туралы ақпарат
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/km/plurals.xml b/i18n/src/commonMain/moko-resources/km/plurals.xml
index d11a96e54..c105490bf 100644
--- a/i18n/src/commonMain/moko-resources/km/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/km/plurals.xml
@@ -6,4 +6,4 @@
- %d ភាគបន្ទាប់ដែលមិនទាន់អាន
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/km/strings.xml b/i18n/src/commonMain/moko-resources/km/strings.xml
index 435981fdb..26fb5db12 100644
--- a/i18n/src/commonMain/moko-resources/km/strings.xml
+++ b/i18n/src/commonMain/moko-resources/km/strings.xml
@@ -209,4 +209,4 @@
ពិនិត្យបច្ចុប្បន្នភាពចុងក្រោយ
លុបថ្នាក់ក្រម
ភាគថ្មីរំពឹងទុកនៅ
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/kn/plurals.xml b/i18n/src/commonMain/moko-resources/kn/plurals.xml
index 4dc974533..27a090a95 100644
--- a/i18n/src/commonMain/moko-resources/kn/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/kn/plurals.xml
@@ -44,4 +44,4 @@
- 1 ಅಧ್ಯಾಯ ಕಾಣೆಯಾಗಿದೆ
- %d ಅಧ್ಯಾಯ ಕಾಣೆಯಾಗಿವೆ
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/kn/strings.xml b/i18n/src/commonMain/moko-resources/kn/strings.xml
index 0c8c7c56f..b2926cca9 100644
--- a/i18n/src/commonMain/moko-resources/kn/strings.xml
+++ b/i18n/src/commonMain/moko-resources/kn/strings.xml
@@ -502,4 +502,4 @@
ಪ್ರತಿ ವರ್ಗದ ವಿಂಗಡಣೆ ಮತ್ತು ಪ್ರದರ್ಶನಕ್ಕಾಗಿ ಸೆಟ್ಟಿಂಗ್ಗಳು
ನಿರ್ಬಂಧಗಳು: %s
ಈಗಲೇ ಡೌನ್ಲೋಡ್ ಪ್ರಾರಂಭಿಸಿ
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/ko/plurals.xml b/i18n/src/commonMain/moko-resources/ko/plurals.xml
index 8ab39cfc2..3b07ce43c 100644
--- a/i18n/src/commonMain/moko-resources/ko/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/ko/plurals.xml
@@ -51,4 +51,4 @@
- %d 저장소
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/ko/strings.xml b/i18n/src/commonMain/moko-resources/ko/strings.xml
index 385280007..2dcb36e7d 100644
--- a/i18n/src/commonMain/moko-resources/ko/strings.xml
+++ b/i18n/src/commonMain/moko-resources/ko/strings.xml
@@ -795,4 +795,4 @@
없음
사용가능: %1$s / 전체: %2$s
Nord
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/lt/plurals.xml b/i18n/src/commonMain/moko-resources/lt/plurals.xml
index 5fa7faf23..e9a265899 100644
--- a/i18n/src/commonMain/moko-resources/lt/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/lt/plurals.xml
@@ -65,4 +65,4 @@
- Kiti %d neskaityti skyriai
- Kiti %d neskaitytų skyrių
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/lt/strings.xml b/i18n/src/commonMain/moko-resources/lt/strings.xml
index 49db5774e..b8cf9fbc6 100644
--- a/i18n/src/commonMain/moko-resources/lt/strings.xml
+++ b/i18n/src/commonMain/moko-resources/lt/strings.xml
@@ -686,4 +686,4 @@
Bibliotekoje jau turite įrašą tokiu pačiu pavadinimu.
\n
\nAr vis tiek norite tęsti?
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/lv/plurals.xml b/i18n/src/commonMain/moko-resources/lv/plurals.xml
index 9ee680f4a..4c6299c01 100644
--- a/i18n/src/commonMain/moko-resources/lv/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/lv/plurals.xml
@@ -80,4 +80,4 @@
- %d diena
- %d dienas
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/lv/strings.xml b/i18n/src/commonMain/moko-resources/lv/strings.xml
index 0831e80a6..8ae81c89a 100644
--- a/i18n/src/commonMain/moko-resources/lv/strings.xml
+++ b/i18n/src/commonMain/moko-resources/lv/strings.xml
@@ -754,4 +754,4 @@
Relatīviās laika stampas
\"%1$s\", nevis \"%2$s\"
Izslēgt skanlatorus
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/ml/plurals.xml b/i18n/src/commonMain/moko-resources/ml/plurals.xml
index 6101ae600..0004902fc 100644
--- a/i18n/src/commonMain/moko-resources/ml/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/ml/plurals.xml
@@ -76,4 +76,4 @@
- %d എൻട്രിക്ക്
- %d എൻട്രികൾക്കായി
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/ml/strings.xml b/i18n/src/commonMain/moko-resources/ml/strings.xml
index 4fd22be53..56131a35e 100644
--- a/i18n/src/commonMain/moko-resources/ml/strings.xml
+++ b/i18n/src/commonMain/moko-resources/ml/strings.xml
@@ -168,4 +168,4 @@
അൺഇൻസ്റ്റാൾ
അവിശ്വസനീയം
ഇൻസ്റ്റാൾ ചെയ്യുന്നു
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/mr/plurals.xml b/i18n/src/commonMain/moko-resources/mr/plurals.xml
index 92dab4cd2..096999498 100644
--- a/i18n/src/commonMain/moko-resources/mr/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/mr/plurals.xml
@@ -8,4 +8,4 @@
- 1 मिनीटानंतर
- %1$s मिनीटांनंतर
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/mr/strings.xml b/i18n/src/commonMain/moko-resources/mr/strings.xml
index db1bf8a3a..3c940119b 100644
--- a/i18n/src/commonMain/moko-resources/mr/strings.xml
+++ b/i18n/src/commonMain/moko-resources/mr/strings.xml
@@ -213,4 +213,4 @@
मध्यांतर
ट्रॅक केले
कस्टमाईज्ड फेच इंटरवल
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/ms/plurals.xml b/i18n/src/commonMain/moko-resources/ms/plurals.xml
index f1a0c2baf..53ad0429b 100644
--- a/i18n/src/commonMain/moko-resources/ms/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/ms/plurals.xml
@@ -51,4 +51,4 @@
- %d repositori
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/ms/strings.xml b/i18n/src/commonMain/moko-resources/ms/strings.xml
index 7a18a3ed3..c48428fd7 100644
--- a/i18n/src/commonMain/moko-resources/ms/strings.xml
+++ b/i18n/src/commonMain/moko-resources/ms/strings.xml
@@ -796,4 +796,4 @@
Sandaran automatik terakhir:%s
Mengemaskini pustaka… (%s)
Ganti
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/nb-rNO/plurals.xml b/i18n/src/commonMain/moko-resources/nb-rNO/plurals.xml
index 323002f46..1a8511c31 100644
--- a/i18n/src/commonMain/moko-resources/nb-rNO/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/nb-rNO/plurals.xml
@@ -72,4 +72,4 @@
- %d pakkebr├╕nn
- %d pakkebr├╕nner
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/nb-rNO/strings.xml b/i18n/src/commonMain/moko-resources/nb-rNO/strings.xml
index 2d327fd06..1c636aabf 100644
--- a/i18n/src/commonMain/moko-resources/nb-rNO/strings.xml
+++ b/i18n/src/commonMain/moko-resources/nb-rNO/strings.xml
@@ -799,4 +799,4 @@
Legg til likevel
Flytt eksisterende oppføring
Erstatt
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/ne/plurals.xml b/i18n/src/commonMain/moko-resources/ne/plurals.xml
index 3f499cb5c..6096f8237 100644
--- a/i18n/src/commonMain/moko-resources/ne/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/ne/plurals.xml
@@ -72,4 +72,4 @@
- भोलि
- %1$d दिनमा
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/ne/strings.xml b/i18n/src/commonMain/moko-resources/ne/strings.xml
index 5eeb083fa..60d54ca88 100644
--- a/i18n/src/commonMain/moko-resources/ne/strings.xml
+++ b/i18n/src/commonMain/moko-resources/ne/strings.xml
@@ -824,4 +824,4 @@
एक्सटेन्शन रिपो
JSON ब्याकअप समर्थित छैन
ब्याकअप फाइल बिग्रिएको छ
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/nl/plurals.xml b/i18n/src/commonMain/moko-resources/nl/plurals.xml
index a6aedc6dd..417d11778 100644
--- a/i18n/src/commonMain/moko-resources/nl/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/nl/plurals.xml
@@ -68,4 +68,4 @@
- Morgen
- Over %1$d dagen
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/nl/strings.xml b/i18n/src/commonMain/moko-resources/nl/strings.xml
index 52498a97c..a24e4b423 100644
--- a/i18n/src/commonMain/moko-resources/nl/strings.xml
+++ b/i18n/src/commonMain/moko-resources/nl/strings.xml
@@ -750,4 +750,4 @@
Naar standaard terugkeren
Onboarding gids
Welkom!
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/nn/plurals.xml b/i18n/src/commonMain/moko-resources/nn/plurals.xml
index 8dc9ba50d..205d6d8a3 100644
--- a/i18n/src/commonMain/moko-resources/nn/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/nn/plurals.xml
@@ -16,4 +16,4 @@
- Gjort på %1$s med %2$s feil
- Gjort på %1$s med %2$s feil
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/nn/strings.xml b/i18n/src/commonMain/moko-resources/nn/strings.xml
index 7c8c2a3eb..2bc5fb703 100644
--- a/i18n/src/commonMain/moko-resources/nn/strings.xml
+++ b/i18n/src/commonMain/moko-resources/nn/strings.xml
@@ -266,4 +266,4 @@
Etter kjelde
Omslag
Last ned
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/pl/plurals.xml b/i18n/src/commonMain/moko-resources/pl/plurals.xml
index da0820219..56e110360 100644
--- a/i18n/src/commonMain/moko-resources/pl/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/pl/plurals.xml
@@ -108,4 +108,4 @@
- Za %1$d dni
- Za %1$d dni
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/pl/strings.xml b/i18n/src/commonMain/moko-resources/pl/strings.xml
index 4b4a83733..692c661d5 100644
--- a/i18n/src/commonMain/moko-resources/pl/strings.xml
+++ b/i18n/src/commonMain/moko-resources/pl/strings.xml
@@ -817,4 +817,4 @@
Ta manga jest zakończona lub nie ma przewidywanej daty wydania.
Migaj co
Niestandardowy profil
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/pt-rBR/plurals.xml b/i18n/src/commonMain/moko-resources/pt-rBR/plurals.xml
index edc3cbfba..ac7b6c64e 100644
--- a/i18n/src/commonMain/moko-resources/pt-rBR/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/pt-rBR/plurals.xml
@@ -90,4 +90,4 @@
- Em %1$d dias
- Em breve
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/pt-rBR/strings.xml b/i18n/src/commonMain/moko-resources/pt-rBR/strings.xml
index c239fddc8..9166de23b 100644
--- a/i18n/src/commonMain/moko-resources/pt-rBR/strings.xml
+++ b/i18n/src/commonMain/moko-resources/pt-rBR/strings.xml
@@ -808,4 +808,4 @@
Guia de próximos lançamentos
Próximo mês
Mês anterior
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/pt/plurals.xml b/i18n/src/commonMain/moko-resources/pt/plurals.xml
index 0a58e5a65..46eb967b9 100644
--- a/i18n/src/commonMain/moko-resources/pt/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/pt/plurals.xml
@@ -85,4 +85,4 @@
- %d repositórios
- %d repositórios
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/pt/strings.xml b/i18n/src/commonMain/moko-resources/pt/strings.xml
index 6bee33995..e73b9a1a3 100755
--- a/i18n/src/commonMain/moko-resources/pt/strings.xml
+++ b/i18n/src/commonMain/moko-resources/pt/strings.xml
@@ -811,4 +811,4 @@
Desativar redução de zoom
Exibir as próximas atualizações
A seguir
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/ro/plurals.xml b/i18n/src/commonMain/moko-resources/ro/plurals.xml
index 2ba7c8dbe..9b96517ec 100644
--- a/i18n/src/commonMain/moko-resources/ro/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/ro/plurals.xml
@@ -90,4 +90,4 @@
- În %1$d zile
- În %1$d de zile
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/ro/strings.xml b/i18n/src/commonMain/moko-resources/ro/strings.xml
index b81c31ab4..328fb0e65 100644
--- a/i18n/src/commonMain/moko-resources/ro/strings.xml
+++ b/i18n/src/commonMain/moko-resources/ro/strings.xml
@@ -806,4 +806,4 @@
Ghidul viitor
Luna următoare
Luna anterioară
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/ru/plurals.xml b/i18n/src/commonMain/moko-resources/ru/plurals.xml
index 523bf01a4..b90ac86f5 100644
--- a/i18n/src/commonMain/moko-resources/ru/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/ru/plurals.xml
@@ -114,4 +114,4 @@
- %1$s страниц
- %1$s страниц
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/ru/strings.xml b/i18n/src/commonMain/moko-resources/ru/strings.xml
index 31ccb5286..d636270d9 100755
--- a/i18n/src/commonMain/moko-resources/ru/strings.xml
+++ b/i18n/src/commonMain/moko-resources/ru/strings.xml
@@ -820,4 +820,4 @@
Файл резервной копии поврежден
Резервное копирование в формате JSON не поддерживается
Репозитории расширений
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/sa/plurals.xml b/i18n/src/commonMain/moko-resources/sa/plurals.xml
index de9efef9d..8816b9454 100644
--- a/i18n/src/commonMain/moko-resources/sa/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/sa/plurals.xml
@@ -48,4 +48,4 @@
- १ अध्यायं लङ्घयति यतः मूले सः अनुपस्थितः अस्ति उत सः बहिः सम्मृष्टः कृतः
- २ अध्यायौ लङ्घयति यतः मूले तौ अनुपस्थितौ स्तः उत तौ बहिः सम्मृष्टौ कृतौ
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/sa/strings.xml b/i18n/src/commonMain/moko-resources/sa/strings.xml
index 9f57be355..f3a73fb81 100644
--- a/i18n/src/commonMain/moko-resources/sa/strings.xml
+++ b/i18n/src/commonMain/moko-resources/sa/strings.xml
@@ -569,4 +569,4 @@
अवधिं स्थापयतु
अवारोपितं नाशयतु
अवारोपितम्
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/sah/plurals.xml b/i18n/src/commonMain/moko-resources/sah/plurals.xml
index 3f3fe03ad..f1d99c166 100644
--- a/i18n/src/commonMain/moko-resources/sah/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/sah/plurals.xml
@@ -21,4 +21,4 @@
- Манна %d түһүмэх суох
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/sah/strings.xml b/i18n/src/commonMain/moko-resources/sah/strings.xml
index c5bc7a746..2af509d9d 100644
--- a/i18n/src/commonMain/moko-resources/sah/strings.xml
+++ b/i18n/src/commonMain/moko-resources/sah/strings.xml
@@ -412,4 +412,4 @@
Мал төһө элбэҕин көрдөр
Кэлэр күнэ
Суолун көрө сылдьабыт
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/sc/plurals.xml b/i18n/src/commonMain/moko-resources/sc/plurals.xml
index 515332821..c98447dbb 100644
--- a/i18n/src/commonMain/moko-resources/sc/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/sc/plurals.xml
@@ -64,4 +64,4 @@
- 1 die
- %d dies
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/sc/strings.xml b/i18n/src/commonMain/moko-resources/sc/strings.xml
index 1f70e3721..dff786393 100644
--- a/i18n/src/commonMain/moko-resources/sc/strings.xml
+++ b/i18n/src/commonMain/moko-resources/sc/strings.xml
@@ -821,4 +821,4 @@
Profilu de visualizatzione predefinidu
Abbista·ti sos agiornamentos imbenientes
Imbeniente
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/sdh/plurals.xml b/i18n/src/commonMain/moko-resources/sdh/plurals.xml
index b60744cc2..63eb6dd66 100644
--- a/i18n/src/commonMain/moko-resources/sdh/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/sdh/plurals.xml
@@ -8,4 +8,4 @@
- دوێنێ
- %1$d ڕۆژ پێش ئێستا
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/sdh/strings.xml b/i18n/src/commonMain/moko-resources/sdh/strings.xml
index 04a9853f4..d8b598025 100644
--- a/i18n/src/commonMain/moko-resources/sdh/strings.xml
+++ b/i18n/src/commonMain/moko-resources/sdh/strings.xml
@@ -235,4 +235,4 @@
لادانی هەمووشتێك
گەڕان…
\?ڕەشبکەیتەوە \"%s\"ئایا ئەتەوێ کە بەشی
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/sk/plurals.xml b/i18n/src/commonMain/moko-resources/sk/plurals.xml
index b58084ecf..32aef55a8 100644
--- a/i18n/src/commonMain/moko-resources/sk/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/sk/plurals.xml
@@ -65,4 +65,4 @@
- %d kategórie
- %d kegórií
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/sk/strings.xml b/i18n/src/commonMain/moko-resources/sk/strings.xml
index b4cdb6ad1..5c9bca916 100644
--- a/i18n/src/commonMain/moko-resources/sk/strings.xml
+++ b/i18n/src/commonMain/moko-resources/sk/strings.xml
@@ -633,4 +633,4 @@
Začaté
Hľadať…
Otvoriť náhodný záznam
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/sq/plurals.xml b/i18n/src/commonMain/moko-resources/sq/plurals.xml
index afe747db7..40c683dd6 100644
--- a/i18n/src/commonMain/moko-resources/sq/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/sq/plurals.xml
@@ -56,4 +56,4 @@
- Kapitulli i rradhës
- %d kapituj të rradhës
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/sq/strings.xml b/i18n/src/commonMain/moko-resources/sq/strings.xml
index a347087eb..0c2d55ca8 100644
--- a/i18n/src/commonMain/moko-resources/sq/strings.xml
+++ b/i18n/src/commonMain/moko-resources/sq/strings.xml
@@ -700,4 +700,4 @@
Gjurmuesi i identifikimit
Koha relative
\"%1$s\" në vend të \"%2$s\"
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/sr/plurals.xml b/i18n/src/commonMain/moko-resources/sr/plurals.xml
index a997e61a4..28d8576b8 100644
--- a/i18n/src/commonMain/moko-resources/sr/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/sr/plurals.xml
@@ -90,4 +90,4 @@
- За %1$d дана
- За %1$d дана
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/sr/strings.xml b/i18n/src/commonMain/moko-resources/sr/strings.xml
index e5753ef7d..e41a9ccb0 100644
--- a/i18n/src/commonMain/moko-resources/sr/strings.xml
+++ b/i18n/src/commonMain/moko-resources/sr/strings.xml
@@ -805,4 +805,4 @@
Migrirajte postojeći unos
Zameniti
Otisak prsta za otključavanje već postoji
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/sv/plurals.xml b/i18n/src/commonMain/moko-resources/sv/plurals.xml
index 105d279a3..c67259d4e 100644
--- a/i18n/src/commonMain/moko-resources/sv/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/sv/plurals.xml
@@ -76,4 +76,4 @@
- 1 sida
- %1$s sidor
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/sv/strings.xml b/i18n/src/commonMain/moko-resources/sv/strings.xml
index 36229e4f9..6c34d5ec0 100644
--- a/i18n/src/commonMain/moko-resources/sv/strings.xml
+++ b/i18n/src/commonMain/moko-resources/sv/strings.xml
@@ -820,4 +820,4 @@
Säkerhetskopierings fil är korrupt
JSON säkerhetskopering stöds inte
Tilläggsförråd
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/te/plurals.xml b/i18n/src/commonMain/moko-resources/te/plurals.xml
index c09f50b58..f28e4b82a 100644
--- a/i18n/src/commonMain/moko-resources/te/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/te/plurals.xml
@@ -4,4 +4,4 @@
- ఒక నిమిషము తరువాత
- %1$s నిమిషముల తరువాత
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/te/strings.xml b/i18n/src/commonMain/moko-resources/te/strings.xml
index 4c0e0cc67..c5b358fe5 100644
--- a/i18n/src/commonMain/moko-resources/te/strings.xml
+++ b/i18n/src/commonMain/moko-resources/te/strings.xml
@@ -192,4 +192,4 @@
చిత్తరువు
ప్రకృతి దృశ్యం
నిలిపివేయబడింది
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/th/plurals.xml b/i18n/src/commonMain/moko-resources/th/plurals.xml
index d6f26cdb7..33c829305 100644
--- a/i18n/src/commonMain/moko-resources/th/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/th/plurals.xml
@@ -54,4 +54,4 @@
- %d รีโพ
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/th/strings.xml b/i18n/src/commonMain/moko-resources/th/strings.xml
index cb4437ca0..045ad8009 100644
--- a/i18n/src/commonMain/moko-resources/th/strings.xml
+++ b/i18n/src/commonMain/moko-resources/th/strings.xml
@@ -795,4 +795,4 @@
URL รีโพ
ต้องการจะลบรีโพ \"%s\" หรือไม่?
เปิดที่มาของรีโพ
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/tr/plurals.xml b/i18n/src/commonMain/moko-resources/tr/plurals.xml
index 3d090ebc2..24a7fdd9c 100644
--- a/i18n/src/commonMain/moko-resources/tr/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/tr/plurals.xml
@@ -72,4 +72,4 @@
- Yarın
- %1$d gün içinde
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/tr/strings.xml b/i18n/src/commonMain/moko-resources/tr/strings.xml
index 19fc6c457..693a33f9b 100644
--- a/i18n/src/commonMain/moko-resources/tr/strings.xml
+++ b/i18n/src/commonMain/moko-resources/tr/strings.xml
@@ -795,4 +795,4 @@
Güvenilen bilinmeyen uzantıları iptal et
Yakında
Açık kaynaklı depo
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/uk/plurals.xml b/i18n/src/commonMain/moko-resources/uk/plurals.xml
index 362a57bd1..ca9daa75a 100644
--- a/i18n/src/commonMain/moko-resources/uk/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/uk/plurals.xml
@@ -101,4 +101,4 @@
- %d репозиторіїв
- %d репозиторіїв
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/uk/strings.xml b/i18n/src/commonMain/moko-resources/uk/strings.xml
index 4e52af764..eb656a39d 100644
--- a/i18n/src/commonMain/moko-resources/uk/strings.xml
+++ b/i18n/src/commonMain/moko-resources/uk/strings.xml
@@ -807,4 +807,4 @@
Вимкнути зменшення масштабу
Незабаром
Наступний місяць
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/uz/plurals.xml b/i18n/src/commonMain/moko-resources/uz/plurals.xml
index 35f4fc44e..3b372d1d3 100644
--- a/i18n/src/commonMain/moko-resources/uz/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/uz/plurals.xml
@@ -12,4 +12,4 @@
- %1$s daqiqadan so\'ng
- %1$s daqiqadan so\'ng
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/uz/strings.xml b/i18n/src/commonMain/moko-resources/uz/strings.xml
index b5dfd6040..f27a02a88 100644
--- a/i18n/src/commonMain/moko-resources/uz/strings.xml
+++ b/i18n/src/commonMain/moko-resources/uz/strings.xml
@@ -356,4 +356,4 @@
Yon bo\'shliq
Xatchopli boblarni o\'chirish
O\'qilgan bobdan uchinchisi
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/vi/plurals.xml b/i18n/src/commonMain/moko-resources/vi/plurals.xml
index 013eada7a..3f3cee563 100644
--- a/i18n/src/commonMain/moko-resources/vi/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/vi/plurals.xml
@@ -54,4 +54,4 @@
- Trong %1$d ngày
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/vi/strings.xml b/i18n/src/commonMain/moko-resources/vi/strings.xml
index 67ce395d4..edc320c34 100755
--- a/i18n/src/commonMain/moko-resources/vi/strings.xml
+++ b/i18n/src/commonMain/moko-resources/vi/strings.xml
@@ -810,4 +810,4 @@
Tháng trước
Thay thế
Dấu vân tay cho khóa ký đã được tạo trước đó.
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/zh-rCN/plurals.xml b/i18n/src/commonMain/moko-resources/zh-rCN/plurals.xml
index 64caf1d6b..766ef6b87 100644
--- a/i18n/src/commonMain/moko-resources/zh-rCN/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/zh-rCN/plurals.xml
@@ -54,4 +54,4 @@
- %1$d 天后
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/zh-rCN/strings.xml b/i18n/src/commonMain/moko-resources/zh-rCN/strings.xml
index 52670b3a1..3725358b8 100644
--- a/i18n/src/commonMain/moko-resources/zh-rCN/strings.xml
+++ b/i18n/src/commonMain/moko-resources/zh-rCN/strings.xml
@@ -819,4 +819,4 @@
闪烁时间间隔
不支持 JSON 备份
备份文件已损坏
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/zh-rTW/plurals.xml b/i18n/src/commonMain/moko-resources/zh-rTW/plurals.xml
index 5a2dc58fc..f16ce8b6e 100644
--- a/i18n/src/commonMain/moko-resources/zh-rTW/plurals.xml
+++ b/i18n/src/commonMain/moko-resources/zh-rTW/plurals.xml
@@ -57,4 +57,4 @@
- %1$s pages
-
\ No newline at end of file
+
diff --git a/i18n/src/commonMain/moko-resources/zh-rTW/strings.xml b/i18n/src/commonMain/moko-resources/zh-rTW/strings.xml
index 03f96e8f7..0576fe9f2 100644
--- a/i18n/src/commonMain/moko-resources/zh-rTW/strings.xml
+++ b/i18n/src/commonMain/moko-resources/zh-rTW/strings.xml
@@ -820,4 +820,4 @@
備份檔案已損壞
不支援 JSON 備份
擴充套件儲存庫
-
\ No newline at end of file
+
diff --git a/presentation-core/src/main/AndroidManifest.xml b/presentation-core/src/main/AndroidManifest.xml
index 568741e54..8072ee00d 100644
--- a/presentation-core/src/main/AndroidManifest.xml
+++ b/presentation-core/src/main/AndroidManifest.xml
@@ -1,2 +1,2 @@
-
\ No newline at end of file
+
diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/components/SettingsItems.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/components/SettingsItems.kt
index 3f671ff8f..6cc5cd8e6 100644
--- a/presentation-core/src/main/java/tachiyomi/presentation/core/components/SettingsItems.kt
+++ b/presentation-core/src/main/java/tachiyomi/presentation/core/components/SettingsItems.kt
@@ -46,6 +46,7 @@ import dev.icerock.moko.resources.StringResource
import tachiyomi.core.common.preference.Preference
import tachiyomi.core.common.preference.TriState
import tachiyomi.core.common.preference.toggle
+import tachiyomi.presentation.core.components.material.DISABLED_ALPHA
import tachiyomi.presentation.core.components.material.padding
import tachiyomi.presentation.core.i18n.stringResource
import tachiyomi.presentation.core.theme.header
@@ -56,8 +57,6 @@ object SettingsItemsPaddings {
val Vertical = 10.dp
}
-private const val DisabledContentAlpha = 0.38f
-
@Composable
fun HeadingItem(labelRes: StringResource) {
HeadingItem(stringResource(labelRes))
@@ -283,7 +282,7 @@ fun TriStateItem(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.padding.large),
) {
- val stateAlpha = if (enabled && onClick != null) 1f else DisabledContentAlpha
+ val stateAlpha = if (enabled && onClick != null) 1f else DISABLED_ALPHA
Icon(
imageVector = when (state) {
@@ -296,7 +295,7 @@ fun TriStateItem(
MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = stateAlpha)
} else {
when (onClick) {
- null -> MaterialTheme.colorScheme.onSurface.copy(alpha = DisabledContentAlpha)
+ null -> MaterialTheme.colorScheme.onSurface.copy(alpha = DISABLED_ALPHA)
else -> MaterialTheme.colorScheme.primary
}
},
diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/components/VerticalFastScroller.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/components/VerticalFastScroller.kt
index 83c847820..39e7c1b81 100644
--- a/presentation-core/src/main/java/tachiyomi/presentation/core/components/VerticalFastScroller.kt
+++ b/presentation-core/src/main/java/tachiyomi/presentation/core/components/VerticalFastScroller.kt
@@ -200,8 +200,7 @@ private fun rememberColumnWidthSums(
horizontalArrangement,
contentPadding,
) {
- {
- constraints ->
+ { constraints ->
require(constraints.maxWidth != Constraints.Infinity) {
"LazyVerticalGrid's width should be bound by parent"
}
diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/components/WheelPicker.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/components/WheelPicker.kt
index 9cbb156c6..bb0287881 100644
--- a/presentation-core/src/main/java/tachiyomi/presentation/core/components/WheelPicker.kt
+++ b/presentation-core/src/main/java/tachiyomi/presentation/core/components/WheelPicker.kt
@@ -189,13 +189,13 @@ private fun WheelPicker(
}
},
state = lazyListState,
- contentPadding = PaddingValues(vertical = size.height / RowCount * ((RowCount - 1) / 2)),
+ contentPadding = PaddingValues(vertical = size.height / ROW_COUNT * ((ROW_COUNT - 1) / 2)),
flingBehavior = rememberSnapFlingBehavior(lazyListState = lazyListState),
) {
itemsIndexed(items) { index, item ->
Box(
modifier = Modifier
- .height(size.height / RowCount)
+ .height(size.height / ROW_COUNT)
.width(size.width)
.alpha(
calculateAnimatedAlpha(
@@ -233,7 +233,7 @@ private fun calculateAnimatedAlpha(
): Float {
val distanceToIndexSnap = lazyListState.distanceToSnapForIndex(index).absoluteValue
val viewPortHeight = lazyListState.layoutInfo.viewportSize.height.toFloat()
- val singleViewPortHeight = viewPortHeight / RowCount
+ val singleViewPortHeight = viewPortHeight / ROW_COUNT
return if (distanceToIndexSnap in 0..singleViewPortHeight.toInt()) {
1.2f - (distanceToIndexSnap / singleViewPortHeight)
} else {
@@ -252,7 +252,7 @@ object WheelPickerDefaults {
fun Background(size: DpSize) {
androidx.compose.material3.Surface(
modifier = Modifier
- .size(size.width, size.height / RowCount),
+ .size(size.width, size.height / ROW_COUNT),
shape = RoundedCornerShape(MaterialTheme.padding.medium),
color = MaterialTheme.colorScheme.primary.copy(alpha = 0.2f),
border = BorderStroke(1.dp, MaterialTheme.colorScheme.primary),
@@ -270,4 +270,4 @@ object WheelPickerDefaults {
}
}
-private const val RowCount = 3
+private const val ROW_COUNT = 3
diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/components/material/Button.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/components/material/Button.kt
index 5e65c89a2..435c6f2e8 100644
--- a/presentation-core/src/main/java/tachiyomi/presentation/core/components/material/Button.kt
+++ b/presentation-core/src/main/java/tachiyomi/presentation/core/components/material/Button.kt
@@ -60,7 +60,7 @@ fun TextButton(
containerColor = Color.Transparent,
contentColor = MaterialTheme.colorScheme.primary,
disabledContainerColor = Color.Transparent,
- disabledContentColor = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.38f),
+ disabledContentColor = MaterialTheme.colorScheme.onSurface.copy(alpha = DISABLED_ALPHA),
),
contentPadding: PaddingValues = M3ButtonDefaults.TextButtonContentPadding,
content: @Composable RowScope.() -> Unit,
@@ -145,7 +145,7 @@ object ButtonDefaults {
containerColor: Color = MaterialTheme.colorScheme.primary,
contentColor: Color = MaterialTheme.colorScheme.onPrimary,
disabledContainerColor: Color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.12f),
- disabledContentColor: Color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.38f),
+ disabledContentColor: Color = MaterialTheme.colorScheme.onSurface.copy(alpha = DISABLED_ALPHA),
): ButtonColors = ButtonColors(
containerColor = containerColor,
contentColor = contentColor,
diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/components/material/Constants.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/components/material/Constants.kt
index d86bece61..3f3a84319 100644
--- a/presentation-core/src/main/java/tachiyomi/presentation/core/components/material/Constants.kt
+++ b/presentation-core/src/main/java/tachiyomi/presentation/core/components/material/Constants.kt
@@ -6,8 +6,8 @@ import androidx.compose.ui.unit.dp
val topSmallPaddingValues = PaddingValues(top = MaterialTheme.padding.small)
-const val ReadItemAlpha = .38f
-const val SecondaryItemAlpha = .78f
+const val DISABLED_ALPHA = .38f
+const val SECONDARY_ALPHA = .78f
class Padding {
diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/components/material/Scaffold.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/components/material/Scaffold.kt
index 6420084a7..335ce6c96 100644
--- a/presentation-core/src/main/java/tachiyomi/presentation/core/components/material/Scaffold.kt
+++ b/presentation-core/src/main/java/tachiyomi/presentation/core/components/material/Scaffold.kt
@@ -152,7 +152,6 @@ fun Scaffold(
* @param bottomBar the content to place at the bottom of the [Scaffold], on top of the
* [content], typically a [NavigationBar].
*/
-@Suppress("CyclomaticComplexMethod")
@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun ScaffoldLayout(
@@ -263,14 +262,13 @@ private fun ScaffoldLayout(
val fabOffsetDp = fabOffsetFromBottom?.toDp() ?: 0.dp
val bottomBarHeightPx = bottomBarHeight ?: 0
val innerPadding = PaddingValues(
- top =
- if (topBarPlaceables.isEmpty()) {
+ top = if (topBarPlaceables.isEmpty()) {
insets.calculateTopPadding()
} else {
topBarHeight.toDp()
},
- bottom = // Tachiyomi: Also take account of fab height when providing inner padding
- if (bottomBarPlaceables.isEmpty() || bottomBarHeightPx == 0) {
+ // Tachiyomi: Also take account of fab height when providing inner padding
+ bottom = if (bottomBarPlaceables.isEmpty() || bottomBarHeightPx == 0) {
max(insets.calculateBottomPadding(), fabOffsetDp)
} else {
max(bottomBarHeightPx.toDp(), fabOffsetDp)
diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/icons/Discord.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/icons/Discord.kt
index f9c80ff8e..49d2842f6 100644
--- a/presentation-core/src/main/java/tachiyomi/presentation/core/icons/Discord.kt
+++ b/presentation-core/src/main/java/tachiyomi/presentation/core/icons/Discord.kt
@@ -10,18 +10,26 @@ import androidx.compose.ui.graphics.vector.ImageVector.Builder
import androidx.compose.ui.graphics.vector.path
import androidx.compose.ui.unit.dp
+@Suppress("UnusedReceiverParameter", "BooleanLiteralArgument")
val CustomIcons.Discord: ImageVector
get() {
if (_discord != null) {
return _discord!!
}
_discord = Builder(
- name = "Discord", defaultWidth = 24.0.dp, defaultHeight = 24.0.dp,
- viewportWidth = 24.0f, viewportHeight = 24.0f,
+ name = "Discord",
+ defaultWidth = 24.0.dp,
+ defaultHeight = 24.0.dp,
+ viewportWidth = 24.0f,
+ viewportHeight = 24.0f,
).apply {
path(
- fill = SolidColor(Color(0xFF000000)), stroke = null, strokeLineWidth = 0.0f,
- strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ fill = SolidColor(Color(0xFF000000)),
+ stroke = null,
+ strokeLineWidth = 0.0f,
+ strokeLineCap = Butt,
+ strokeLineJoin = Miter,
+ strokeLineMiter = 4.0f,
pathFillType = NonZero,
) {
moveTo(20.317f, 4.3698f)
@@ -74,4 +82,5 @@ val CustomIcons.Discord: ImageVector
return _discord!!
}
+@Suppress("ObjectPropertyName", "ktlint:standard:backing-property-naming")
private var _discord: ImageVector? = null
diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/icons/Facebook.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/icons/Facebook.kt
index 1bb4bda34..52d42fd52 100644
--- a/presentation-core/src/main/java/tachiyomi/presentation/core/icons/Facebook.kt
+++ b/presentation-core/src/main/java/tachiyomi/presentation/core/icons/Facebook.kt
@@ -10,18 +10,26 @@ import androidx.compose.ui.graphics.vector.ImageVector.Builder
import androidx.compose.ui.graphics.vector.path
import androidx.compose.ui.unit.dp
+@Suppress("UnusedReceiverParameter")
val CustomIcons.Facebook: ImageVector
get() {
if (_facebook != null) {
return _facebook!!
}
_facebook = Builder(
- name = "Facebook", defaultWidth = 24.0.dp, defaultHeight = 24.0.dp,
- viewportWidth = 24.0f, viewportHeight = 24.0f,
+ name = "Facebook",
+ defaultWidth = 24.0.dp,
+ defaultHeight = 24.0.dp,
+ viewportWidth = 24.0f,
+ viewportHeight = 24.0f,
).apply {
path(
- fill = SolidColor(Color(0xFF000000)), stroke = null, strokeLineWidth = 0.0f,
- strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ fill = SolidColor(Color(0xFF000000)),
+ stroke = null,
+ strokeLineWidth = 0.0f,
+ strokeLineCap = Butt,
+ strokeLineJoin = Miter,
+ strokeLineMiter = 4.0f,
pathFillType = NonZero,
) {
moveTo(24.0f, 12.073f)
@@ -51,4 +59,5 @@ val CustomIcons.Facebook: ImageVector
return _facebook!!
}
+@Suppress("ObjectPropertyName", "ktlint:standard:backing-property-naming")
private var _facebook: ImageVector? = null
diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/icons/Github.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/icons/Github.kt
index 25d16b5b9..519f2402c 100644
--- a/presentation-core/src/main/java/tachiyomi/presentation/core/icons/Github.kt
+++ b/presentation-core/src/main/java/tachiyomi/presentation/core/icons/Github.kt
@@ -10,18 +10,26 @@ import androidx.compose.ui.graphics.vector.ImageVector.Builder
import androidx.compose.ui.graphics.vector.path
import androidx.compose.ui.unit.dp
+@Suppress("UnusedReceiverParameter")
val CustomIcons.Github: ImageVector
get() {
if (_github != null) {
return _github!!
}
_github = Builder(
- name = "Github", defaultWidth = 24.0.dp, defaultHeight = 24.0.dp,
- viewportWidth = 24.0f, viewportHeight = 24.0f,
+ name = "Github",
+ defaultWidth = 24.0.dp,
+ defaultHeight = 24.0.dp,
+ viewportWidth = 24.0f,
+ viewportHeight = 24.0f,
).apply {
path(
- fill = SolidColor(Color(0xFF000000)), stroke = null, strokeLineWidth = 0.0f,
- strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ fill = SolidColor(Color(0xFF000000)),
+ stroke = null,
+ strokeLineWidth = 0.0f,
+ strokeLineCap = Butt,
+ strokeLineJoin = Miter,
+ strokeLineMiter = 4.0f,
pathFillType = NonZero,
) {
moveTo(12.0f, 0.297f)
@@ -56,4 +64,5 @@ val CustomIcons.Github: ImageVector
return _github!!
}
+@Suppress("ObjectPropertyName", "ktlint:standard:backing-property-naming")
private var _github: ImageVector? = null
diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/icons/Reddit.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/icons/Reddit.kt
index efed17f01..7b462c801 100644
--- a/presentation-core/src/main/java/tachiyomi/presentation/core/icons/Reddit.kt
+++ b/presentation-core/src/main/java/tachiyomi/presentation/core/icons/Reddit.kt
@@ -10,18 +10,26 @@ import androidx.compose.ui.graphics.vector.ImageVector.Builder
import androidx.compose.ui.graphics.vector.path
import androidx.compose.ui.unit.dp
+@Suppress("UnusedReceiverParameter", "BooleanLiteralArgument")
val CustomIcons.Reddit: ImageVector
get() {
if (_reddit != null) {
return _reddit!!
}
_reddit = Builder(
- name = "Reddit", defaultWidth = 24.0.dp, defaultHeight = 24.0.dp,
- viewportWidth = 24.0f, viewportHeight = 24.0f,
+ name = "Reddit",
+ defaultWidth = 24.0.dp,
+ defaultHeight = 24.0.dp,
+ viewportWidth = 24.0f,
+ viewportHeight = 24.0f,
).apply {
path(
- fill = SolidColor(Color(0xFF000000)), stroke = null, strokeLineWidth = 0.0f,
- strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ fill = SolidColor(Color(0xFF000000)),
+ stroke = null,
+ strokeLineWidth = 0.0f,
+ strokeLineCap = Butt,
+ strokeLineJoin = Miter,
+ strokeLineMiter = 4.0f,
pathFillType = NonZero,
) {
moveTo(12.0f, 0.0f)
@@ -82,4 +90,5 @@ val CustomIcons.Reddit: ImageVector
return _reddit!!
}
+@Suppress("ObjectPropertyName", "ktlint:standard:backing-property-naming")
private var _reddit: ImageVector? = null
diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/icons/X.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/icons/X.kt
index 054030d03..6ce31f4f0 100644
--- a/presentation-core/src/main/java/tachiyomi/presentation/core/icons/X.kt
+++ b/presentation-core/src/main/java/tachiyomi/presentation/core/icons/X.kt
@@ -10,20 +10,27 @@ import androidx.compose.ui.graphics.vector.ImageVector.Builder
import androidx.compose.ui.graphics.vector.path
import androidx.compose.ui.unit.dp
+@Suppress("UnusedReceiverParameter")
val CustomIcons.X: ImageVector
get() {
if (_x != null) {
return _x!!
}
_x = Builder(
- name = "X", defaultWidth = 24.0.dp, defaultHeight = 24.0.dp,
+ name = "X",
+ defaultWidth = 24.0.dp,
+ defaultHeight = 24.0.dp,
viewportWidth =
24.0f,
viewportHeight = 24.0f,
).apply {
path(
- fill = SolidColor(Color(0xFF000000)), stroke = null, strokeLineWidth = 0.0f,
- strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ fill = SolidColor(Color(0xFF000000)),
+ stroke = null,
+ strokeLineWidth = 0.0f,
+ strokeLineCap = Butt,
+ strokeLineJoin = Miter,
+ strokeLineMiter = 4.0f,
pathFillType = NonZero,
) {
moveTo(18.901f, 1.153f)
@@ -50,4 +57,5 @@ val CustomIcons.X: ImageVector
return _x!!
}
+@Suppress("ObjectPropertyName", "ktlint:standard:backing-property-naming")
private var _x: ImageVector? = null
diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/util/Modifier.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/util/Modifier.kt
index 875cd4583..5009b1f22 100644
--- a/presentation-core/src/main/java/tachiyomi/presentation/core/util/Modifier.kt
+++ b/presentation-core/src/main/java/tachiyomi/presentation/core/util/Modifier.kt
@@ -22,7 +22,7 @@ import androidx.compose.ui.input.key.Key
import androidx.compose.ui.input.key.key
import androidx.compose.ui.input.key.onPreviewKeyEvent
import androidx.compose.ui.platform.LocalFocusManager
-import tachiyomi.presentation.core.components.material.SecondaryItemAlpha
+import tachiyomi.presentation.core.components.material.SECONDARY_ALPHA
fun Modifier.selectedBackground(isSelected: Boolean): Modifier = if (isSelected) {
composed {
@@ -36,7 +36,7 @@ fun Modifier.selectedBackground(isSelected: Boolean): Modifier = if (isSelected)
this
}
-fun Modifier.secondaryItemAlpha(): Modifier = this.alpha(SecondaryItemAlpha)
+fun Modifier.secondaryItemAlpha(): Modifier = this.alpha(SECONDARY_ALPHA)
fun Modifier.clickableNoIndication(
onLongClick: (() -> Unit)? = null,
diff --git a/presentation-core/src/main/res/values-night/colors_midnightdusk.xml b/presentation-core/src/main/res/values-night/colors_midnightdusk.xml
index b245b1e7a..43fdddf96 100644
--- a/presentation-core/src/main/res/values-night/colors_midnightdusk.xml
+++ b/presentation-core/src/main/res/values-night/colors_midnightdusk.xml
@@ -39,4 +39,4 @@
#281624
#2D1C2A
#2F1F2C
-
\ No newline at end of file
+
diff --git a/presentation-core/src/main/res/values-night/colors_tidalwave.xml b/presentation-core/src/main/res/values-night/colors_tidalwave.xml
index c2eb63436..47732e90b 100644
--- a/presentation-core/src/main/res/values-night/colors_tidalwave.xml
+++ b/presentation-core/src/main/res/values-night/colors_tidalwave.xml
@@ -38,4 +38,4 @@
#082b4b
#093257
#0A3861
-
\ No newline at end of file
+
diff --git a/presentation-core/src/main/res/values/colors_tidalwave.xml b/presentation-core/src/main/res/values/colors_tidalwave.xml
index e66f7aed5..f23001f7d 100644
--- a/presentation-core/src/main/res/values/colors_tidalwave.xml
+++ b/presentation-core/src/main/res/values/colors_tidalwave.xml
@@ -39,4 +39,4 @@
#e8eff5
#edf4fA
#f5faff
-
\ No newline at end of file
+
diff --git a/presentation-widget/src/main/AndroidManifest.xml b/presentation-widget/src/main/AndroidManifest.xml
index 38943f13e..4066f59a6 100644
--- a/presentation-widget/src/main/AndroidManifest.xml
+++ b/presentation-widget/src/main/AndroidManifest.xml
@@ -36,4 +36,4 @@
-
\ No newline at end of file
+
diff --git a/presentation-widget/src/main/res/values/colors_appwidget.xml b/presentation-widget/src/main/res/values/colors_appwidget.xml
index a5526c94c..92f70a972 100644
--- a/presentation-widget/src/main/res/values/colors_appwidget.xml
+++ b/presentation-widget/src/main/res/values/colors_appwidget.xml
@@ -7,4 +7,4 @@
@color/tachiyomi_onSurfaceVariant
@color/tachiyomi_secondaryContainer
@color/tachiyomi_onSecondaryContainer
-
\ No newline at end of file
+
diff --git a/source-api/src/androidMain/AndroidManifest.xml b/source-api/src/androidMain/AndroidManifest.xml
index 568741e54..8072ee00d 100644
--- a/source-api/src/androidMain/AndroidManifest.xml
+++ b/source-api/src/androidMain/AndroidManifest.xml
@@ -1,2 +1,2 @@
-
\ No newline at end of file
+
diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SChapter.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SChapter.kt
index f6fafe53b..b05fbd829 100755
--- a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SChapter.kt
+++ b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SChapter.kt
@@ -1,3 +1,5 @@
+@file:Suppress("PropertyName", "ktlint:standard:property-naming")
+
package eu.kanade.tachiyomi.source.model
import java.io.Serializable
diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SChapterImpl.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SChapterImpl.kt
index 4d5e43f1e..c4c137539 100755
--- a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SChapterImpl.kt
+++ b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SChapterImpl.kt
@@ -1,3 +1,5 @@
+@file:Suppress("PropertyName", "ktlint:standard:property-naming")
+
package eu.kanade.tachiyomi.source.model
class SChapterImpl : SChapter {
diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SManga.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SManga.kt
index 6ba21656b..af04a366f 100755
--- a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SManga.kt
+++ b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SManga.kt
@@ -1,3 +1,5 @@
+@file:Suppress("PropertyName", "ktlint:standard:property-naming")
+
package eu.kanade.tachiyomi.source.model
import java.io.Serializable
diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SMangaImpl.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SMangaImpl.kt
index 608c2c1ac..090a89e6d 100755
--- a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SMangaImpl.kt
+++ b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SMangaImpl.kt
@@ -1,3 +1,5 @@
+@file:Suppress("PropertyName", "ktlint:standard:property-naming")
+
package eu.kanade.tachiyomi.source.model
class SMangaImpl : SManga {
diff --git a/source-api/src/commonMain/kotlin/exh/metadata/metadata/EHentaiSearchMetadata.kt b/source-api/src/commonMain/kotlin/exh/metadata/metadata/EHentaiSearchMetadata.kt
index 38b772265..44a78c921 100644
--- a/source-api/src/commonMain/kotlin/exh/metadata/metadata/EHentaiSearchMetadata.kt
+++ b/source-api/src/commonMain/kotlin/exh/metadata/metadata/EHentaiSearchMetadata.kt
@@ -20,7 +20,9 @@ import java.time.ZonedDateTime
class EHentaiSearchMetadata : RaisedSearchMetadata() {
var gId: String?
get() = indexedExtra
- set(value) { indexedExtra = value }
+ set(value) {
+ indexedExtra = value
+ }
var gToken: String? = null
var exh: Boolean? = null
diff --git a/source-local/src/androidMain/AndroidManifest.xml b/source-local/src/androidMain/AndroidManifest.xml
index 568741e54..8072ee00d 100644
--- a/source-local/src/androidMain/AndroidManifest.xml
+++ b/source-local/src/androidMain/AndroidManifest.xml
@@ -1,2 +1,2 @@
-
\ No newline at end of file
+
diff --git a/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt b/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt
index b0decf05e..aba2bd429 100755
--- a/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt
+++ b/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt
@@ -60,8 +60,11 @@ actual class LocalSource(
private val json: Json by injectLazy()
private val xml: XML by injectLazy()
- private val POPULAR_FILTERS = FilterList(OrderBy.Popular(context))
- private val LATEST_FILTERS = FilterList(OrderBy.Latest(context))
+ @Suppress("PrivatePropertyName", "ktlint:standard:property-naming")
+ private val PopularFilters = FilterList(OrderBy.Popular(context))
+
+ @Suppress("PrivatePropertyName", "ktlint:standard:property-naming")
+ private val LatestFilters = FilterList(OrderBy.Latest(context))
override val name: String = context.stringResource(MR.strings.local_source)
@@ -74,12 +77,12 @@ actual class LocalSource(
override val supportsLatest: Boolean = true
// Browse related
- override suspend fun getPopularManga(page: Int) = getSearchManga(page, "", POPULAR_FILTERS)
+ override suspend fun getPopularManga(page: Int) = getSearchManga(page, "", PopularFilters)
- override suspend fun getLatestUpdates(page: Int) = getSearchManga(page, "", LATEST_FILTERS)
+ override suspend fun getLatestUpdates(page: Int) = getSearchManga(page, "", LatestFilters)
override suspend fun getSearchManga(page: Int, query: String, filters: FilterList): MangasPage = withIOContext {
- val lastModifiedLimit = if (filters === LATEST_FILTERS) {
+ val lastModifiedLimit = if (filters === LatestFilters) {
System.currentTimeMillis() - LATEST_THRESHOLD
} else {
0L
@@ -183,8 +186,8 @@ actual class LocalSource(
copyComicInfoFile(
xml.encodeToString(ComicInfo.serializer(), newComicInfo).byteInputStream(),
it,
- comicInfoArchiveReader?.encrypted ?: false
- )
+ comicInfoArchiveReader?.encrypted ?: false,
+ )
}
}
// SY <--
diff --git a/source-local/src/androidMain/kotlin/tachiyomi/source/local/image/LocalCoverManager.kt b/source-local/src/androidMain/kotlin/tachiyomi/source/local/image/LocalCoverManager.kt
index 645433625..116075f96 100644
--- a/source-local/src/androidMain/kotlin/tachiyomi/source/local/image/LocalCoverManager.kt
+++ b/source-local/src/androidMain/kotlin/tachiyomi/source/local/image/LocalCoverManager.kt
@@ -57,7 +57,7 @@ actual class LocalCoverManager(
inputStream.use { input ->
// SY -->
if (encrypted) {
- ZipWriter(context, targetFile, encrypt = true ).use { writer ->
+ ZipWriter(context, targetFile, encrypt = true).use { writer ->
writer.write(inputStream.readBytes(), DEFAULT_COVER_NAME)
}
DiskUtil.createNoMediaFile(directory, context)