Fix: Folder recognition and UI update for sync folder selection
This commit is contained in:
@@ -388,10 +388,22 @@ fun AppShell(
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
val scope = rememberCoroutineScope()
|
||||
val syncFolderUri = remember {
|
||||
sharedPrefs.getString("sync_folder_uri", null)?.toUri()
|
||||
var syncFolderUriString by rememberSaveable { mutableStateOf(sharedPrefs.getString("sync_folder_uri", null)) }
|
||||
|
||||
DisposableEffect(sharedPrefs) {
|
||||
val listener = android.content.SharedPreferences.OnSharedPreferenceChangeListener { prefs, key ->
|
||||
if (key == "sync_folder_uri") {
|
||||
syncFolderUriString = prefs.getString(key, null)
|
||||
}
|
||||
}
|
||||
sharedPrefs.registerOnSharedPreferenceChangeListener(listener)
|
||||
onDispose {
|
||||
sharedPrefs.unregisterOnSharedPreferenceChangeListener(listener)
|
||||
}
|
||||
}
|
||||
|
||||
val syncFolderUri = syncFolderUriString?.toUri()
|
||||
|
||||
val keyManager = remember { KeyManager(context, canUseBiometrics) }
|
||||
val fileEncryptor = remember { FileEncryptor() }
|
||||
|
||||
@@ -984,8 +996,10 @@ fun AppShell(
|
||||
sharedPrefs.edit {
|
||||
putString("sync_folder_uri", it.toString())
|
||||
}
|
||||
val parentFolder = DocumentFile.fromTreeUri(context, it)
|
||||
parentFolder?.findFile("Noteshop") ?: parentFolder?.createDirectory("Noteshop")
|
||||
val selectedFolder = DocumentFile.fromTreeUri(context, it)
|
||||
if (selectedFolder?.name != "Noteshop") {
|
||||
selectedFolder?.findFile("Noteshop") ?: selectedFolder?.createDirectory("Noteshop")
|
||||
}
|
||||
android.widget.Toast.makeText(context, R.string.sync_folder_selected, android.widget.Toast.LENGTH_SHORT).show()
|
||||
} catch (e: Exception) {
|
||||
Log.e("MainActivity", "Error setting up sync folder", e)
|
||||
@@ -1118,7 +1132,6 @@ fun AppShell(
|
||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||
Column(modifier = Modifier.weight(1f)) {
|
||||
Text(stringResource(id = R.string.select_sync_folder))
|
||||
val syncFolderUriString = sharedPrefs.getString("sync_folder_uri", null)
|
||||
val displayPath = if (syncFolderUriString.isNullOrBlank()) {
|
||||
stringResource(id = R.string.no_folder_selected)
|
||||
} else {
|
||||
@@ -1126,12 +1139,20 @@ fun AppShell(
|
||||
try {
|
||||
val uri = android.net.Uri.parse(syncFolderUriString)
|
||||
val docFile = DocumentFile.fromTreeUri(context, uri)
|
||||
val noteshopDir = docFile?.findFile("Noteshop")
|
||||
val parentName = docFile?.name
|
||||
if (parentName != null && noteshopDir != null) {
|
||||
"$parentName / ${noteshopDir.name}"
|
||||
if (docFile?.name == "Noteshop") {
|
||||
val parent = docFile.parentFile
|
||||
if (parent != null) {
|
||||
"${parent.name} / ${docFile.name}"
|
||||
} else {
|
||||
docFile.name
|
||||
}
|
||||
} else {
|
||||
parentName
|
||||
val parentName = docFile?.name
|
||||
if (parentName != null) {
|
||||
"$parentName / Noteshop"
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
null
|
||||
@@ -1151,7 +1172,6 @@ fun AppShell(
|
||||
overflow = androidx.compose.ui.text.style.TextOverflow.Ellipsis
|
||||
)
|
||||
}
|
||||
val syncFolderUriString = sharedPrefs.getString("sync_folder_uri", null)
|
||||
if (!syncFolderUriString.isNullOrBlank()) {
|
||||
IconButton(onClick = { showDeleteConfirmationDialog = true }) {
|
||||
Icon(Icons.Default.Delete, contentDescription = stringResource(R.string.delete_folder))
|
||||
|
||||
Reference in New Issue
Block a user