Skip to content

Commit ba70561

Browse files
Merge pull request #44 from appdevforall/fix/backup-transparency-snackbar
fix(backup): make no-checksum / no-manifest transparency actually visible
2 parents 54bc3d7 + 56fbdae commit ba70561

1 file changed

Lines changed: 19 additions & 12 deletions

File tree

‎controller/app/src/main/java/org/iiab/controller/backup/presentation/BackupController.java‎

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,19 @@ private void refreshRestoreButtonLogic() {
465465
btnAdvancedRestore.startProgress();
466466
if (restoreLogPanel != null) {
467467
restoreLogPanel.setVisibility(View.VISIBLE);
468-
if (restoreLogText != null) restoreLogText.setText("");
468+
if (restoreLogText != null) {
469+
// Transparency at restore (the meaningful moment): note when the
470+
// backup carries no integrity checksum / no manifest.
471+
org.iiab.controller.deploy.data.RootfsManifest.Identity rid =
472+
org.iiab.controller.deploy.data.RootfsManifest.read(backupFile.getAbsolutePath());
473+
if (!rid.present) {
474+
restoreLogText.setText(fragment.getString(R.string.install_warn_manifest_missing) + "\n\n");
475+
} else if ("device-backup".equals(rid.origin)) {
476+
restoreLogText.setText(fragment.getString(R.string.install_warn_no_checksum) + "\n\n");
477+
} else {
478+
restoreLogText.setText("");
479+
}
480+
}
469481
if (restoreLogResult != null) restoreLogResult.setText("");
470482
}
471483
File iiabRootDir = new File(fragment.requireContext().getFilesDir(), "rootfs");
@@ -629,16 +641,6 @@ private void importBackupSafely(Uri sourceUri) {
629641
}
630642
// Soft phase: no identity manifest -> import is allowed, but warn the
631643
// user (a future version will validate silently). See docs/ROOTFS_MANIFEST.md.
632-
if (okNoManifest && fragment.getActivity() != null) {
633-
fragment.getActivity().runOnUiThread(() ->
634-
showImportSnackbar(fragment.getString(R.string.install_warn_manifest_missing)));
635-
}
636-
// Transparency: an app-made (device) backup carries no integrity checksum.
637-
if (okNoChecksum && fragment.getActivity() != null) {
638-
fragment.getActivity().runOnUiThread(() ->
639-
showImportSnackbar(fragment.getString(R.string.install_warn_no_checksum)));
640-
}
641-
642644
if (fragment.getActivity() != null) {
643645
fragment.getActivity().runOnUiThread(() -> {
644646
host.setImporting(false);
@@ -647,7 +649,12 @@ private void importBackupSafely(Uri sourceUri) {
647649
btnImportBackup.setText(fragment.getString(R.string.install_btn_import_backup));
648650
selectedBackupFile = fileName;
649651
host.updateDynamicButtons();
650-
showImportSnackbar(fragment.getString(R.string.install_msg_import_success));
652+
// One snackbar only (Snackbar replaces, never queues): fold the
653+
// no-checksum / no-manifest transparency into the final message.
654+
showImportSnackbar(fragment.getString(
655+
okNoChecksum ? R.string.install_warn_no_checksum
656+
: okNoManifest ? R.string.install_warn_manifest_missing
657+
: R.string.install_msg_import_success));
651658
});
652659
}
653660
} catch (Exception e) {

0 commit comments

Comments
 (0)