mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-17 07:23:21 +01:00
Use user-friendly display path for local backup folder.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
This commit is contained in:
committed by
Greyson Parrelli
parent
f439e1f8e3
commit
db4c11cd53
@@ -30,6 +30,7 @@ import androidx.navigationevent.compose.LocalNavigationEventDispatcherOwner
|
||||
import kotlinx.coroutines.launch
|
||||
import org.signal.core.ui.compose.ComposeFragment
|
||||
import org.signal.core.ui.compose.Launchers
|
||||
import org.signal.core.ui.util.StorageUtil
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.backup.v2.ui.subscription.MessageBackupsKeyEducationScreen
|
||||
@@ -167,7 +168,7 @@ private fun rememberChooseBackupLocationLauncher(backStack: NavBackStack<NavKey>
|
||||
SignalStore.backup.newLocalBackupsDirectory = uri.toString()
|
||||
backStack.add(LocalBackupsNavKey.YOUR_RECOVERY_KEY)
|
||||
|
||||
Toast.makeText(context, context.getString(R.string.OnDeviceBackupsFragment__directory_selected, uri), Toast.LENGTH_SHORT).show()
|
||||
Toast.makeText(context, context.getString(R.string.OnDeviceBackupsFragment__directory_selected, StorageUtil.getDisplayPath(context, uri)), Toast.LENGTH_SHORT).show()
|
||||
} else {
|
||||
Log.w(TAG, "Unified backup location selection cancelled or failed")
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
package org.thoughtcrime.securesms.components.settings.app.backups.local
|
||||
|
||||
import android.content.Context
|
||||
import android.net.Uri
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@@ -16,6 +17,7 @@ import kotlinx.coroutines.withContext
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
import org.signal.core.ui.util.StorageUtil
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.backup.BackupPassphrase
|
||||
@@ -50,7 +52,7 @@ class LocalBackupsViewModel : ViewModel(), BackupKeyCredentialManagerHandler {
|
||||
private val internalSettingsState = MutableStateFlow(
|
||||
LocalBackupsSettingsState(
|
||||
backupsEnabled = SignalStore.backup.newLocalBackupsEnabled,
|
||||
folderDisplayName = SignalStore.backup.newLocalBackupsDirectory
|
||||
folderDisplayName = getDisplayName(AppDependencies.application, SignalStore.backup.newLocalBackupsDirectory)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -70,7 +72,7 @@ class LocalBackupsViewModel : ViewModel(), BackupKeyCredentialManagerHandler {
|
||||
|
||||
viewModelScope.launch {
|
||||
SignalStore.backup.newLocalBackupsDirectoryFlow.collect { directory ->
|
||||
internalSettingsState.update { it.copy(folderDisplayName = directory) }
|
||||
internalSettingsState.update { it.copy(folderDisplayName = getDisplayName(applicationContext, directory)) }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -167,6 +169,13 @@ class LocalBackupsViewModel : ViewModel(), BackupKeyCredentialManagerHandler {
|
||||
}
|
||||
}
|
||||
|
||||
private fun getDisplayName(context: Context, directoryUri: String?): String? {
|
||||
if (directoryUri == null) {
|
||||
return null
|
||||
}
|
||||
return StorageUtil.getDisplayPath(context, Uri.parse(directoryUri))
|
||||
}
|
||||
|
||||
private fun calculateLastBackupTimeString(context: Context, lastBackupTimestamp: Long): String {
|
||||
return if (lastBackupTimestamp > 0) {
|
||||
val relativeTime = DateUtils.getDatelessRelativeTimeSpanFormattedDate(
|
||||
|
||||
@@ -11,7 +11,6 @@ import android.provider.MediaStore;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import org.signal.core.ui.CoreUiDependencies;
|
||||
@@ -91,12 +90,15 @@ public class StorageUtil {
|
||||
return backups;
|
||||
}
|
||||
|
||||
@RequiresApi(24)
|
||||
public static @NonNull String getDisplayPath(@NonNull Context context, @NonNull Uri uri) {
|
||||
String lastPathSegment = Objects.requireNonNull(uri.getLastPathSegment());
|
||||
String backupVolume = lastPathSegment.replaceFirst(":.*", "");
|
||||
String backupName = lastPathSegment.replaceFirst(".*:", "");
|
||||
|
||||
if (Build.VERSION.SDK_INT < 24) {
|
||||
return backupName;
|
||||
}
|
||||
|
||||
StorageManager storageManager = ContextCompat.getSystemService(context, StorageManager.class);
|
||||
List<StorageVolume> storageVolumes = storageManager.getStorageVolumes();
|
||||
StorageVolume storageVolume = null;
|
||||
|
||||
Reference in New Issue
Block a user