diff --git a/app/src/main/java/eu/kanade/presentation/category/components/CategoryDialogs.kt b/app/src/main/java/eu/kanade/presentation/category/components/CategoryDialogs.kt index fd6396b95..829856478 100644 --- a/app/src/main/java/eu/kanade/presentation/category/components/CategoryDialogs.kt +++ b/app/src/main/java/eu/kanade/presentation/category/components/CategoryDialogs.kt @@ -25,6 +25,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester +import dev.icerock.moko.resources.StringResource import eu.kanade.core.preference.asToggleableState import eu.kanade.presentation.category.visualName import kotlinx.collections.immutable.ImmutableList @@ -42,6 +43,11 @@ fun CategoryCreateDialog( onDismissRequest: () -> Unit, onCreate: (String) -> Unit, categories: ImmutableList, + // SY --> + title: String = stringResource(MR.strings.action_add_category), + extraMessage: String? = null, + alreadyExistsError: StringResource = MR.strings.error_category_exists, + // SY <-- ) { var name by remember { mutableStateOf("") } @@ -67,28 +73,40 @@ fun CategoryCreateDialog( } }, title = { - Text(text = stringResource(MR.strings.action_add_category)) + // SY --> + Text(text = title) + // SY <-- }, text = { - OutlinedTextField( - modifier = Modifier - .focusRequester(focusRequester), - value = name, - onValueChange = { name = it }, - label = { - Text(text = stringResource(MR.strings.name)) - }, - supportingText = { - val msgRes = if (name.isNotEmpty() && nameAlreadyExists) { - MR.strings.error_category_exists - } else { - MR.strings.information_required_plain - } - Text(text = stringResource(msgRes)) - }, - isError = name.isNotEmpty() && nameAlreadyExists, - singleLine = true, - ) + // SY --> + Column { + extraMessage?.let { Text(it) } + // SY <-- + + OutlinedTextField( + modifier = Modifier + .focusRequester(focusRequester), + value = name, + onValueChange = { name = it }, + label = { + Text(text = stringResource(MR.strings.name)) + }, + supportingText = { + val msgRes = if (name.isNotEmpty() && nameAlreadyExists) { + // SY --> + alreadyExistsError + // SY <-- + } else { + MR.strings.information_required_plain + } + Text(text = stringResource(msgRes)) + }, + isError = name.isNotEmpty() && nameAlreadyExists, + singleLine = true, + ) + // SY --> + } + // SY <-- }, ) @@ -167,7 +185,11 @@ fun CategoryRenameDialog( fun CategoryDeleteDialog( onDismissRequest: () -> Unit, onDelete: () -> Unit, - category: String, + // SY --> + category: String = "", + title: String = stringResource(MR.strings.delete_category), + text: String = stringResource(MR.strings.delete_category_confirmation, category), + // SY <-- ) { AlertDialog( onDismissRequest = onDismissRequest, @@ -185,10 +207,14 @@ fun CategoryDeleteDialog( } }, title = { - Text(text = stringResource(MR.strings.delete_category)) + // SY --> + Text(text = title) + // SY <-- }, text = { - Text(text = stringResource(MR.strings.delete_category_confirmation, category)) + // SY --> + Text(text = text) + // SY <-- }, ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/feed/FeedScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/feed/FeedScreenModel.kt index 465503c4b..cb61c2b67 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/feed/FeedScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/feed/FeedScreenModel.kt @@ -214,7 +214,7 @@ open class FeedScreenModel( if (savedSearch != null) { source?.name ?: feed.source.toString() } else { - LocaleHelper.getDisplayName(source?.lang) + LocaleHelper.getLocalizedDisplayName(source?.lang) }, results, ) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/home/HomeScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/home/HomeScreen.kt index f25a2aefe..c6e3ba3aa 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/home/HomeScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/home/HomeScreen.kt @@ -24,6 +24,7 @@ import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.produceState +import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import androidx.compose.ui.semantics.contentDescription diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt index d0a1e8471..7718bd5a1 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt @@ -40,7 +40,7 @@ internal class RarPageLoader(file: File) : PageLoader() { val pageOutputStream = File(tmpDir, header.fileName.substringAfterLast("/")) .also { it.createNewFile() } .outputStream() - getStream(rar, header).use { + getStream(header).use { it.copyTo(pageOutputStream) } }