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 aaf518603f..418137c76a 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 @@ -26,6 +26,7 @@ import androidx.compose.ui.res.stringResource import com.hippo.unifile.UniFile import dev.yokai.domain.storage.StoragePreferences import dev.yokai.presentation.component.preference.storageLocationText +import dev.yokai.presentation.settings.screen.data.storageLocationPicker import dev.yokai.presentation.theme.Size import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.core.preference.Preference @@ -100,23 +101,3 @@ internal class StorageStep : OnboardingStep { } } } - -@Composable -fun storageLocationPicker( - storageDirPref: Preference, -): ManagedActivityResultLauncher { - val context = LocalContext.current - - return rememberLauncherForActivityResult( - contract = ActivityResultContracts.OpenDocumentTree(), - ) { uri -> - if (uri != null) { - val flags = - Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION - - context.tryTakePersistableUriPermission(uri, flags) - - UniFile.fromUri(context, uri)?.let { storageDirPref.set(it.uri.toString()) } - } - } -} diff --git a/app/src/main/java/dev/yokai/presentation/settings/screen/SettingsDataScreen.kt b/app/src/main/java/dev/yokai/presentation/settings/screen/SettingsDataScreen.kt index 8dbc9f9200..adc0455ad5 100644 --- a/app/src/main/java/dev/yokai/presentation/settings/screen/SettingsDataScreen.kt +++ b/app/src/main/java/dev/yokai/presentation/settings/screen/SettingsDataScreen.kt @@ -38,6 +38,7 @@ import dev.yokai.presentation.settings.ComposableSettings import dev.yokai.presentation.settings.screen.data.CreateBackup import dev.yokai.presentation.settings.screen.data.RestoreBackup import dev.yokai.presentation.settings.screen.data.StorageInfo +import dev.yokai.presentation.settings.screen.data.storageLocationPicker import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.backup.BackupFileValidator import eu.kanade.tachiyomi.data.backup.create.BackupCreatorJob @@ -77,25 +78,6 @@ object SettingsDataScreen : ComposableSettings { ) } - @Composable - private fun storageLocationPicker( - baseStorageDirectory: eu.kanade.tachiyomi.core.preference.Preference, - ): ManagedActivityResultLauncher { - val context = LocalContext.current - - return rememberLauncherForActivityResult(contract = ActivityResultContracts.OpenDocumentTree()) { uri -> - if (uri != null) { - val flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or - Intent.FLAG_GRANT_WRITE_URI_PERMISSION - - context.tryTakePersistableUriPermission(uri, flags) - UniFile.fromUri(context, uri)?.let { - baseStorageDirectory.set(it.uri.toString()) - } - } - } - } - @Composable private fun getStorageLocationPreference(storagePreferences: StoragePreferences): Preference.PreferenceItem.TextPreference { val context = LocalContext.current diff --git a/app/src/main/java/dev/yokai/presentation/settings/screen/data/Storage.kt b/app/src/main/java/dev/yokai/presentation/settings/screen/data/Storage.kt new file mode 100644 index 0000000000..3e72c350ca --- /dev/null +++ b/app/src/main/java/dev/yokai/presentation/settings/screen/data/Storage.kt @@ -0,0 +1,31 @@ +package dev.yokai.presentation.settings.screen.data + +import android.content.Intent +import android.net.Uri +import androidx.activity.compose.ManagedActivityResultLauncher +import androidx.activity.compose.rememberLauncherForActivityResult +import androidx.activity.result.contract.ActivityResultContracts +import androidx.compose.runtime.Composable +import androidx.compose.ui.platform.LocalContext +import com.hippo.unifile.UniFile +import eu.kanade.tachiyomi.core.preference.Preference +import eu.kanade.tachiyomi.util.system.tryTakePersistableUriPermission + +@Composable +fun storageLocationPicker( + baseStorageDirectory: Preference, +): ManagedActivityResultLauncher { + val context = LocalContext.current + + return rememberLauncherForActivityResult(contract = ActivityResultContracts.OpenDocumentTree()) { uri -> + if (uri != null) { + val flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or + Intent.FLAG_GRANT_WRITE_URI_PERMISSION + + context.tryTakePersistableUriPermission(uri, flags) + UniFile.fromUri(context, uri)?.let { + baseStorageDirectory.set(it.uri.toString()) + } + } + } +}