Backup: added fail safes

master
M66B 1 month ago
parent 851f9d8d11
commit b68348571f

@ -56,7 +56,8 @@ public class FairEmailBackupAgent extends BackupAgent {
private static final String KEY_JSON = "eu.faircode.email.json";
@Override
public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) throws IOException {
public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) {
try {
DB db = DB.getInstance(this);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
@ -70,7 +71,6 @@ public class FairEmailBackupAgent extends BackupAgent {
if (!enabled || !(encrypted || BuildConfig.DEBUG))
return;
try {
JSONObject jroot = new JSONObject();
JSONObject jsettings = new JSONObject();
@ -141,10 +141,10 @@ public class FairEmailBackupAgent extends BackupAgent {
out.writeUTF(dataHash);
} catch (Throwable ex) {
Log.e(ex);
}
} finally {
EntityLog.log(this, "Backup end");
}
}
@Override
public void onQuotaExceeded(long backupDataBytes, long quotaBytes) {
@ -152,18 +152,17 @@ public class FairEmailBackupAgent extends BackupAgent {
}
@Override
public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState) throws
IOException {
public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState) {
try {
EntityLog.log(this, "Restore start version=" + appVersionCode);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
while (data.readNextHeader()) {
String dataKey = data.getKey();
int dataSize = data.getDataSize();
EntityLog.log(this, "Restore key=" + dataKey + " size=" + dataSize);
if (KEY_JSON.equals(dataKey)) {
if (KEY_JSON.equals(dataKey))
try {
byte[] dataBuf = new byte[dataSize];
data.readEntityData(dataBuf, 0, dataSize);
@ -174,12 +173,12 @@ public class FairEmailBackupAgent extends BackupAgent {
dataBuf = bos.toByteArray();
EntityLog.log(this, "Restore decompressed=" + dataBuf.length);
try {
JSONObject jroot = new JSONObject(new String(dataBuf, StandardCharsets.UTF_8));
jroot.put("version", 1);
JSONObject jsettings = jroot.getJSONObject("settings");
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
JSONObject jsettings = jroot.getJSONObject("settings");
editor.putBoolean("enabled", jsettings.optBoolean("enabled"));
editor.putInt("poll_interval", jsettings.optInt("poll_interval", 0));
String theme = jsettings.optString("theme", null);
@ -237,13 +236,16 @@ public class FairEmailBackupAgent extends BackupAgent {
} catch (Throwable ex) {
Log.e(ex);
}
} else {
else {
data.skipEntityData();
}
}
} catch (Throwable ex) {
Log.e(ex);
} finally {
EntityLog.log(this, "Restore end");
}
}
@Override
public void onRestoreFinished() {

Loading…
Cancel
Save