mirror of
https://github.com/M66B/FairEmail.git
synced 2025-03-02 17:55:42 +00:00
Backup: added fail safes
This commit is contained in:
parent
851f9d8d11
commit
b68348571f
1 changed files with 104 additions and 102 deletions
|
@ -56,7 +56,8 @@ public class FairEmailBackupAgent extends BackupAgent {
|
||||||
private static final String KEY_JSON = "eu.faircode.email.json";
|
private static final String KEY_JSON = "eu.faircode.email.json";
|
||||||
|
|
||||||
@Override
|
@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);
|
DB db = DB.getInstance(this);
|
||||||
|
|
||||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||||
|
@ -70,7 +71,6 @@ public class FairEmailBackupAgent extends BackupAgent {
|
||||||
if (!enabled || !(encrypted || BuildConfig.DEBUG))
|
if (!enabled || !(encrypted || BuildConfig.DEBUG))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
try {
|
|
||||||
JSONObject jroot = new JSONObject();
|
JSONObject jroot = new JSONObject();
|
||||||
|
|
||||||
JSONObject jsettings = new JSONObject();
|
JSONObject jsettings = new JSONObject();
|
||||||
|
@ -141,10 +141,10 @@ public class FairEmailBackupAgent extends BackupAgent {
|
||||||
out.writeUTF(dataHash);
|
out.writeUTF(dataHash);
|
||||||
} catch (Throwable ex) {
|
} catch (Throwable ex) {
|
||||||
Log.e(ex);
|
Log.e(ex);
|
||||||
}
|
} finally {
|
||||||
|
|
||||||
EntityLog.log(this, "Backup end");
|
EntityLog.log(this, "Backup end");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onQuotaExceeded(long backupDataBytes, long quotaBytes) {
|
public void onQuotaExceeded(long backupDataBytes, long quotaBytes) {
|
||||||
|
@ -152,18 +152,17 @@ public class FairEmailBackupAgent extends BackupAgent {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState) throws
|
public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState) {
|
||||||
IOException {
|
try {
|
||||||
EntityLog.log(this, "Restore start version=" + appVersionCode);
|
EntityLog.log(this, "Restore start version=" + appVersionCode);
|
||||||
|
|
||||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
|
||||||
|
|
||||||
while (data.readNextHeader()) {
|
while (data.readNextHeader()) {
|
||||||
String dataKey = data.getKey();
|
String dataKey = data.getKey();
|
||||||
int dataSize = data.getDataSize();
|
int dataSize = data.getDataSize();
|
||||||
EntityLog.log(this, "Restore key=" + dataKey + " size=" + dataSize);
|
EntityLog.log(this, "Restore key=" + dataKey + " size=" + dataSize);
|
||||||
|
|
||||||
if (KEY_JSON.equals(dataKey)) {
|
if (KEY_JSON.equals(dataKey))
|
||||||
|
try {
|
||||||
byte[] dataBuf = new byte[dataSize];
|
byte[] dataBuf = new byte[dataSize];
|
||||||
data.readEntityData(dataBuf, 0, dataSize);
|
data.readEntityData(dataBuf, 0, dataSize);
|
||||||
|
|
||||||
|
@ -174,12 +173,12 @@ public class FairEmailBackupAgent extends BackupAgent {
|
||||||
dataBuf = bos.toByteArray();
|
dataBuf = bos.toByteArray();
|
||||||
EntityLog.log(this, "Restore decompressed=" + dataBuf.length);
|
EntityLog.log(this, "Restore decompressed=" + dataBuf.length);
|
||||||
|
|
||||||
try {
|
|
||||||
JSONObject jroot = new JSONObject(new String(dataBuf, StandardCharsets.UTF_8));
|
JSONObject jroot = new JSONObject(new String(dataBuf, StandardCharsets.UTF_8));
|
||||||
jroot.put("version", 1);
|
jroot.put("version", 1);
|
||||||
|
|
||||||
JSONObject jsettings = jroot.getJSONObject("settings");
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||||
SharedPreferences.Editor editor = prefs.edit();
|
SharedPreferences.Editor editor = prefs.edit();
|
||||||
|
JSONObject jsettings = jroot.getJSONObject("settings");
|
||||||
editor.putBoolean("enabled", jsettings.optBoolean("enabled"));
|
editor.putBoolean("enabled", jsettings.optBoolean("enabled"));
|
||||||
editor.putInt("poll_interval", jsettings.optInt("poll_interval", 0));
|
editor.putInt("poll_interval", jsettings.optInt("poll_interval", 0));
|
||||||
String theme = jsettings.optString("theme", null);
|
String theme = jsettings.optString("theme", null);
|
||||||
|
@ -237,13 +236,16 @@ public class FairEmailBackupAgent extends BackupAgent {
|
||||||
} catch (Throwable ex) {
|
} catch (Throwable ex) {
|
||||||
Log.e(ex);
|
Log.e(ex);
|
||||||
}
|
}
|
||||||
} else {
|
else {
|
||||||
data.skipEntityData();
|
data.skipEntityData();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch (Throwable ex) {
|
||||||
|
Log.e(ex);
|
||||||
|
} finally {
|
||||||
EntityLog.log(this, "Restore end");
|
EntityLog.log(this, "Restore end");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRestoreFinished() {
|
public void onRestoreFinished() {
|
||||||
|
|
Loading…
Reference in a new issue