mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 17:29:32 +01:00
Local backups upgrade UI.
This commit is contained in:
committed by
Greyson Parrelli
parent
2e70ed14dd
commit
6c30f3d573
@@ -18,6 +18,7 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.compose.ui.platform.ComposeView;
|
||||
import androidx.core.text.HtmlCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.navigation.Navigation;
|
||||
@@ -38,9 +39,11 @@ import org.thoughtcrime.securesms.dependencies.AppDependencies;
|
||||
import org.thoughtcrime.securesms.jobs.LocalBackupJob;
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
||||
import org.thoughtcrime.securesms.permissions.Permissions;
|
||||
import org.thoughtcrime.securesms.preferences.widgets.UpgradeLocalBackupCard;
|
||||
import org.thoughtcrime.securesms.service.LocalBackupListener;
|
||||
import org.thoughtcrime.securesms.util.BackupUtil;
|
||||
import org.thoughtcrime.securesms.util.JavaTimeExtensionsKt;
|
||||
import org.thoughtcrime.securesms.util.RemoteConfig;
|
||||
import org.thoughtcrime.securesms.util.StorageUtil;
|
||||
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||
|
||||
@@ -50,6 +53,7 @@ import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
|
||||
import kotlin.Pair;
|
||||
import kotlin.Unit;
|
||||
|
||||
public class BackupsPreferenceFragment extends Fragment {
|
||||
|
||||
@@ -68,6 +72,7 @@ public class BackupsPreferenceFragment extends Fragment {
|
||||
private TextView folderName;
|
||||
private ProgressBar progress;
|
||||
private TextView progressSummary;
|
||||
private ComposeView upgradeCard;
|
||||
|
||||
private final NumberFormat formatter = NumberFormat.getInstance();
|
||||
|
||||
@@ -92,6 +97,7 @@ public class BackupsPreferenceFragment extends Fragment {
|
||||
folderName = view.findViewById(R.id.fragment_backup_folder_name);
|
||||
progress = view.findViewById(R.id.fragment_backup_progress);
|
||||
progressSummary = view.findViewById(R.id.fragment_backup_progress_summary);
|
||||
upgradeCard = view.findViewById(R.id.upgrade_to_improved_backups_card);
|
||||
|
||||
toggle.setOnClickListener(unused -> onToggleClicked());
|
||||
create.setOnClickListener(unused -> onCreateClicked());
|
||||
@@ -113,6 +119,7 @@ public class BackupsPreferenceFragment extends Fragment {
|
||||
setBackupStatus();
|
||||
setBackupSummary();
|
||||
setInfo();
|
||||
setUpdateState();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -223,6 +230,24 @@ public class BackupsPreferenceFragment extends Fragment {
|
||||
info.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
}
|
||||
|
||||
private void setUpdateState() {
|
||||
if (SignalStore.settings().isBackupEnabled() && RemoteConfig.unifiedLocalBackups()) {
|
||||
UpgradeLocalBackupCard.bind(upgradeCard, () -> {
|
||||
Navigation.findNavController(requireView())
|
||||
.navigate(BackupsPreferenceFragmentDirections.actionBackupsPreferenceFragmentToLocalBackupsFragment()
|
||||
.setTriggerUpdateFlow(true));
|
||||
return Unit.INSTANCE;
|
||||
});
|
||||
upgradeCard.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
upgradeCard.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
if (SignalStore.backup().getNewLocalBackupsEnabled()) {
|
||||
Navigation.findNavController(requireView()).popBackStack();
|
||||
}
|
||||
}
|
||||
|
||||
private void onToggleClicked() {
|
||||
if (BackupUtil.isUserSelectionRequired(requireContext())) {
|
||||
onToggleClickedApi29();
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
/*
|
||||
* Copyright 2026 Signal Messenger, LLC
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
package org.thoughtcrime.securesms.preferences.widgets
|
||||
|
||||
import androidx.compose.foundation.border
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.vector.ImageVector
|
||||
import androidx.compose.ui.platform.ComposeView
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.res.vectorResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import org.signal.core.ui.compose.Buttons
|
||||
import org.signal.core.ui.compose.DayNightPreviews
|
||||
import org.signal.core.ui.compose.Previews
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.compose.SignalTheme
|
||||
|
||||
object UpgradeLocalBackupCard {
|
||||
|
||||
@JvmStatic
|
||||
fun ComposeView.bind(
|
||||
onClick: () -> Unit
|
||||
) {
|
||||
setContent {
|
||||
SignalTheme {
|
||||
UpgradeLocalBackupCardComponent(onClick = onClick)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun UpgradeLocalBackupCardComponent(onClick: () -> Unit) {
|
||||
Row(
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(horizontal = 12.dp)
|
||||
.padding(top = 8.dp, bottom = 16.dp)
|
||||
.border(width = 1.dp, color = MaterialTheme.colorScheme.outline.copy(alpha = 0.38f), shape = RoundedCornerShape(12.dp))
|
||||
.padding(16.dp)
|
||||
) {
|
||||
Icon(
|
||||
imageVector = ImageVector.vectorResource(R.drawable.symbol_key_24),
|
||||
contentDescription = null,
|
||||
tint = MaterialTheme.colorScheme.primary,
|
||||
modifier = Modifier.padding(end = 16.dp)
|
||||
)
|
||||
|
||||
Text(
|
||||
text = stringResource(R.string.OnDeviceBackupsSettingsScreen__update_to_a_new_recovery_key),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
modifier = Modifier.padding(end = 8.dp).weight(1f)
|
||||
)
|
||||
|
||||
Buttons.Small(
|
||||
onClick = onClick
|
||||
) {
|
||||
Text(
|
||||
text = stringResource(R.string.OnDeviceBackupsSettingsScreen__update)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@DayNightPreviews
|
||||
@Composable
|
||||
private fun UpgradeLocalBackupCardComponentPreview() {
|
||||
Previews.Preview {
|
||||
UpgradeLocalBackupCardComponent(onClick = {})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user