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 com.hippo.unifile.UniFile
|
||||||
import dev.yokai.domain.storage.StoragePreferences
|
import dev.yokai.domain.storage.StoragePreferences
|
||||||
import dev.yokai.presentation.component.preference.storageLocationText
|
import dev.yokai.presentation.component.preference.storageLocationText
|
||||||
|
import dev.yokai.presentation.settings.screen.data.storageLocationPicker
|
||||||
import dev.yokai.presentation.theme.Size
|
import dev.yokai.presentation.theme.Size
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.core.preference.Preference
|
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.CreateBackup
|
||||||
import dev.yokai.presentation.settings.screen.data.RestoreBackup
|
import dev.yokai.presentation.settings.screen.data.RestoreBackup
|
||||||
import dev.yokai.presentation.settings.screen.data.StorageInfo
|
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.R
|
||||||
import eu.kanade.tachiyomi.data.backup.BackupFileValidator
|
import eu.kanade.tachiyomi.data.backup.BackupFileValidator
|
||||||
import eu.kanade.tachiyomi.data.backup.create.BackupCreatorJob
|
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
|
@Composable
|
||||||
private fun getStorageLocationPreference(storagePreferences: StoragePreferences): Preference.PreferenceItem.TextPreference {
|
private fun getStorageLocationPreference(storagePreferences: StoragePreferences): Preference.PreferenceItem.TextPreference {
|
||||||
val context = LocalContext.current
|
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