mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
refactor: Reduce duplicate code
This commit is contained in:
parent
bde3f25fe9
commit
568f0e8c37
3 changed files with 33 additions and 39 deletions
|
@ -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<String>,
|
||||
): ManagedActivityResultLauncher<Uri?, Uri?> {
|
||||
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()) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<String>,
|
||||
): ManagedActivityResultLauncher<Uri?, Uri?> {
|
||||
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
|
||||
|
|
|
@ -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<String>,
|
||||
): ManagedActivityResultLauncher<Uri?, Uri?> {
|
||||
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())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue