From b2b93d6d5057f1853244bea97f7124fc1e4e400d Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Mon, 10 Jun 2024 11:04:32 +0700 Subject: [PATCH] refactor: Move `storageLocationText` to PreferenceCommon.kt --- .../component/preference/PreferenceCommon.kt | 28 +++++++++++++++++++ .../onboarding/steps/StorageStep.kt | 2 +- .../settings/SettingsDataScreen.kt | 22 +-------------- 3 files changed, 30 insertions(+), 22 deletions(-) create mode 100644 app/src/main/java/dev/yokai/presentation/component/preference/PreferenceCommon.kt diff --git a/app/src/main/java/dev/yokai/presentation/component/preference/PreferenceCommon.kt b/app/src/main/java/dev/yokai/presentation/component/preference/PreferenceCommon.kt new file mode 100644 index 0000000000..7a845deb05 --- /dev/null +++ b/app/src/main/java/dev/yokai/presentation/component/preference/PreferenceCommon.kt @@ -0,0 +1,28 @@ +package dev.yokai.presentation.component.preference + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource +import androidx.core.net.toUri +import com.hippo.unifile.UniFile +import eu.kanade.tachiyomi.R +import eu.kanade.tachiyomi.core.preference.collectAsState + +@Composable +fun storageLocationText( + storageDirPref: eu.kanade.tachiyomi.core.preference.Preference, +): String { + val context = LocalContext.current + val storageDir by storageDirPref.collectAsState() + + if (storageDir == storageDirPref.defaultValue()) { + return stringResource(R.string.no_location_set) + } + + return remember(storageDir) { + val file = UniFile.fromUri(context, storageDir.toUri()) + file?.filePath + } ?: stringResource(R.string.invalid_location, storageDir) +} diff --git a/app/src/main/java/dev/yokai/presentation/onboarding/steps/StorageStep.kt b/app/src/main/java/dev/yokai/presentation/onboarding/steps/StorageStep.kt index dcb0c5e379..aaf518603f 100644 --- a/app/src/main/java/dev/yokai/presentation/onboarding/steps/StorageStep.kt +++ b/app/src/main/java/dev/yokai/presentation/onboarding/steps/StorageStep.kt @@ -25,7 +25,7 @@ import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.res.stringResource import com.hippo.unifile.UniFile import dev.yokai.domain.storage.StoragePreferences -import dev.yokai.presentation.settings.storageLocationText +import dev.yokai.presentation.component.preference.storageLocationText import dev.yokai.presentation.theme.Size import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.core.preference.Preference diff --git a/app/src/main/java/dev/yokai/presentation/settings/SettingsDataScreen.kt b/app/src/main/java/dev/yokai/presentation/settings/SettingsDataScreen.kt index f3d946530a..213b4dd400 100644 --- a/app/src/main/java/dev/yokai/presentation/settings/SettingsDataScreen.kt +++ b/app/src/main/java/dev/yokai/presentation/settings/SettingsDataScreen.kt @@ -16,20 +16,17 @@ import androidx.compose.material3.SegmentedButton import androidx.compose.material3.SegmentedButtonDefaults import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource -import androidx.core.net.toUri import com.google.common.collect.ImmutableList import com.hippo.unifile.UniFile import dev.yokai.domain.storage.StoragePreferences import dev.yokai.presentation.component.preference.Preference +import dev.yokai.presentation.component.preference.storageLocationText import dev.yokai.presentation.component.preference.widget.BasePreferenceWidget import dev.yokai.presentation.component.preference.widget.PrefsHorizontalPadding import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.core.preference.collectAsState import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.util.system.toast import eu.kanade.tachiyomi.util.system.tryTakePersistableUriPermission @@ -127,20 +124,3 @@ object SettingsDataScreen : ComposableSettings { ) } } - -@Composable -fun storageLocationText( - storageDirPref: eu.kanade.tachiyomi.core.preference.Preference, -): String { - val context = LocalContext.current - val storageDir by storageDirPref.collectAsState() - - if (storageDir == storageDirPref.defaultValue()) { - return stringResource(R.string.no_location_set) - } - - return remember(storageDir) { - val file = UniFile.fromUri(context, storageDir.toUri()) - file?.filePath - } ?: stringResource(R.string.invalid_location, storageDir) -}