mirror of
https://github.com/M66B/FairEmail.git
synced 2025-03-01 17:26:12 +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";
|
||||
|
||||
@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…
Reference in a new issue