Allow clearing Google backup

pull/217/head
M66B 11 months ago
parent ac4c3b7036
commit b173082b5b

@ -65,49 +65,48 @@ public class FairEmailBackupAgent extends BackupAgent {
EntityLog.log(this, "Backup start enabled=" + enabled); EntityLog.log(this, "Backup start enabled=" + enabled);
if (!enabled)
return;
JSONObject jroot = new JSONObject(); JSONObject jroot = new JSONObject();
jroot.put("version", 1); jroot.put("version", 1);
JSONObject jsettings = new JSONObject(); if (enabled) {
jsettings.put("enabled", prefs.getBoolean("enabled", true)); JSONObject jsettings = new JSONObject();
jsettings.put("poll_interval", prefs.getInt("poll_interval", 0)); jsettings.put("enabled", prefs.getBoolean("enabled", true));
jsettings.put("startup", prefs.getString("startup", "unified")); jsettings.put("poll_interval", prefs.getInt("poll_interval", 0));
String theme = prefs.getString("theme", null); jsettings.put("startup", prefs.getString("startup", "unified"));
if (!TextUtils.isEmpty(theme)) String theme = prefs.getString("theme", null);
jsettings.put("theme", theme); if (!TextUtils.isEmpty(theme))
jsettings.put("beige", prefs.getBoolean("beige", true)); jsettings.put("theme", theme);
jsettings.put("cards", prefs.getBoolean("cards", true)); jsettings.put("beige", prefs.getBoolean("beige", true));
jsettings.put("threading", prefs.getBoolean("threading", true)); jsettings.put("cards", prefs.getBoolean("cards", true));
jroot.put("settings", jsettings); jsettings.put("threading", prefs.getBoolean("threading", true));
jroot.put("settings", jsettings);
JSONArray jaccounts = new JSONArray();
List<EntityAccount> accounts = db.account().getAccounts(); JSONArray jaccounts = new JSONArray();
EntityLog.log(this, "Backup accounts=" + accounts.size()); List<EntityAccount> accounts = db.account().getAccounts();
for (EntityAccount account : accounts) EntityLog.log(this, "Backup accounts=" + accounts.size());
try { for (EntityAccount account : accounts)
JSONObject jaccount = account.toJSON(); try {
JSONObject jaccount = account.toJSON();
JSONArray jfolders = new JSONArray();
List<EntityFolder> folders = db.folder().getFolders(account.id, false, true); JSONArray jfolders = new JSONArray();
for (EntityFolder folder : folders) List<EntityFolder> folders = db.folder().getFolders(account.id, false, true);
if (!EntityFolder.USER.equals(folder.type)) for (EntityFolder folder : folders)
jfolders.put(folder.toJSON()); if (!EntityFolder.USER.equals(folder.type))
jaccount.put("folders", jfolders); jfolders.put(folder.toJSON());
jaccount.put("folders", jfolders);
JSONArray jidentities = new JSONArray();
List<EntityIdentity> identities = db.identity().getIdentities(account.id); JSONArray jidentities = new JSONArray();
for (EntityIdentity identity : identities) List<EntityIdentity> identities = db.identity().getIdentities(account.id);
jidentities.put(identity.toJSON()); for (EntityIdentity identity : identities)
jaccount.put("identities", jidentities); jidentities.put(identity.toJSON());
jaccount.put("identities", jidentities);
jaccounts.put(jaccount);
} catch (JSONException ex) { jaccounts.put(jaccount);
Log.e(ex); } catch (JSONException ex) {
} Log.e(ex);
jroot.put("accounts", jaccounts); }
jroot.put("accounts", jaccounts);
}
byte[] dataBuf = jroot.toString().getBytes(StandardCharsets.UTF_8); byte[] dataBuf = jroot.toString().getBytes(StandardCharsets.UTF_8);
String dataHash = Helper.sha256(dataBuf); String dataHash = Helper.sha256(dataBuf);
@ -153,14 +152,11 @@ public class FairEmailBackupAgent extends BackupAgent {
@Override @Override
public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState) { public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState) {
try { try {
EntityLog.log(this, "Restore start version=" + appVersionCode);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean enabled = prefs.getBoolean("google_backup", BuildConfig.PLAY_STORE_RELEASE); boolean enabled = prefs.getBoolean("google_backup", BuildConfig.PLAY_STORE_RELEASE);
EntityLog.log(this, "Restore start enabled=" + enabled + " version=" + appVersionCode);
if (!enabled)
return;
while (data.readNextHeader()) { while (data.readNextHeader()) {
String dataKey = data.getKey(); String dataKey = data.getKey();
int dataSize = data.getDataSize(); int dataSize = data.getDataSize();
@ -181,6 +177,11 @@ public class FairEmailBackupAgent extends BackupAgent {
JSONObject jroot = new JSONObject(new String(dataBuf, StandardCharsets.UTF_8)); JSONObject jroot = new JSONObject(new String(dataBuf, StandardCharsets.UTF_8));
EntityLog.log(this, "Restore version=" + jroot.optInt("version", 0)); EntityLog.log(this, "Restore version=" + jroot.optInt("version", 0));
if (!enabled || !jroot.has("accounts")) {
EntityLog.log(this, "Restore empty or disabled");
continue;
}
SharedPreferences.Editor editor = prefs.edit(); SharedPreferences.Editor editor = prefs.edit();
JSONObject jsettings = jroot.getJSONObject("settings"); JSONObject jsettings = jroot.getJSONObject("settings");
editor.putBoolean("enabled", jsettings.optBoolean("enabled")); editor.putBoolean("enabled", jsettings.optBoolean("enabled"));

Loading…
Cancel
Save