Cloud sync: initial local state

pull/212/head
M66B 2 years ago
parent 2fa0bc9764
commit 6087ae32f5

@ -35,7 +35,6 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.URL; import java.net.URL;
@ -120,11 +119,12 @@ public class CloudSync {
: lrevision); : lrevision);
} else if (jitems.length() == 1) { } else if (jitems.length() == 1) {
EntityLog.log(context, EntityLog.Type.Cloud, "Cloud sync check"); EntityLog.log(context, EntityLog.Type.Cloud, "Cloud sync check");
jsyncstatus = jitems.getJSONObject(0); jsyncstatus = jitems.getJSONObject(0);
long rrevision = jsyncstatus.getLong("rev"); long rrevision = jsyncstatus.getLong("rev");
JSONObject jstatus = new JSONObject(jsyncstatus.getString("val")); int sync_version = jsyncstatus.optInt("ver", 0);
int sync_version = jstatus.optInt("sync.version", 0); int app_version = jsyncstatus.optInt("app", 0);
int app_version = jstatus.optInt("app.version", 0);
EntityLog.log(context, EntityLog.Type.Cloud, EntityLog.log(context, EntityLog.Type.Cloud,
"Cloud version sync=" + sync_version + " app=" + app_version + "Cloud version sync=" + sync_version + " app=" + app_version +
" local=" + lrevision + " last=" + lastUpdate + " remote=" + rrevision); " local=" + lrevision + " last=" + lastUpdate + " remote=" + rrevision);
@ -134,6 +134,7 @@ public class CloudSync {
// remote > local = fetch remote // remote > local = fetch remote
// last > remote = send local // last > remote = send local
JSONObject jstatus = new JSONObject(jsyncstatus.getString("val"));
if (lastUpdate != null && lastUpdate > rrevision) // local newer than remote if (lastUpdate != null && lastUpdate > rrevision) // local newer than remote
sendLocalData(context, user, password, lastUpdate); sendLocalData(context, user, password, lastUpdate);
else if (rrevision > lrevision) // remote changes else if (rrevision > lrevision) // remote changes
@ -290,14 +291,14 @@ public class CloudSync {
jaccountuuids.put("uuids", jaccountuuidlist); jaccountuuids.put("uuids", jaccountuuidlist);
JSONObject jstatus = new JSONObject(); JSONObject jstatus = new JSONObject();
jstatus.put("sync.version", 1);
jstatus.put("app.version", BuildConfig.VERSION_CODE);
jstatus.put("accounts", jaccountuuids); jstatus.put("accounts", jaccountuuids);
JSONObject jstatuskv = new JSONObject(); JSONObject jstatuskv = new JSONObject();
jstatuskv.put("key", "sync.status"); jstatuskv.put("key", "sync.status");
jstatuskv.put("val", jstatus.toString()); jstatuskv.put("val", jstatus.toString());
jstatuskv.put("rev", lrevision); jstatuskv.put("rev", lrevision);
jstatuskv.put("ver", 1);
jstatuskv.put("app", BuildConfig.VERSION_CODE);
jupload.put(jstatuskv); jupload.put(jstatuskv);
JSONObject jrequest = new JSONObject(); JSONObject jrequest = new JSONObject();
@ -310,6 +311,7 @@ public class CloudSync {
private static void receiveRemoteData(Context context, String user, String password, long lrevision, long rrevision, JSONObject jstatus) private static void receiveRemoteData(Context context, String user, String password, long lrevision, long rrevision, JSONObject jstatus)
throws JSONException, GeneralSecurityException, IOException { throws JSONException, GeneralSecurityException, IOException {
DB db = DB.getInstance(context); DB db = DB.getInstance(context);
File dir = Helper.ensureExists(new File(context.getFilesDir(), "syncdata"));
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean cloud_receive = prefs.getBoolean("cloud_receive", true); boolean cloud_receive = prefs.getBoolean("cloud_receive", true);
@ -409,6 +411,7 @@ public class CloudSync {
left.setProperties(); left.setProperties();
left.setSpecials(raccount); left.setSpecials(raccount);
left.id = db.folder().insertFolder(left); left.id = db.folder().insertFolder(left);
raccount.swipe_left = left.id;
} }
if (right != null) { if (right != null) {
@ -416,11 +419,10 @@ public class CloudSync {
right.setProperties(); right.setProperties();
right.setSpecials(raccount); right.setSpecials(raccount);
right.id = db.folder().insertFolder(right); right.id = db.folder().insertFolder(right);
raccount.swipe_right = right.id;
} }
db.account().setAccountSwipes(raccount.id, db.account().setAccountSwipes(raccount.id, raccount.swipe_left, raccount.swipe_right);
left == null ? null : left.id,
right == null ? null : right.id);
} }
} else { } else {
raccount.id = laccount.id; raccount.id = laccount.id;
@ -441,6 +443,10 @@ public class CloudSync {
db.setTransactionSuccessful(); db.setTransactionSuccessful();
File afile = new File(dir, "account." + raccount.uuid + ".json");
Helper.writeText(afile, raccount.toJSON().toString());
afile.setLastModified(rrevision);
updates = true; updates = true;
} finally { } finally {
db.endTransaction(); db.endTransaction();
@ -510,6 +516,10 @@ public class CloudSync {
} finally { } finally {
db.endTransaction(); db.endTransaction();
} }
File ifile = new File(dir, "identity." + ridentity.uuid + ".json");
Helper.writeText(ifile, ridentity.toJSON().toString());
ifile.setLastModified(rrevision);
} }
} }
} }

Loading…
Cancel
Save