From b0040bd83c72ace15f4371941458ae4fea082936 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Sat, 14 May 2016 23:19:14 -0400 Subject: [PATCH] Fetch commands since last sync --- app/build.gradle | 6 ++- .../java/org/isoron/uhabits/SyncManager.java | 47 +++++++++++++++---- .../uhabits/fragments/SettingsFragment.java | 10 ++++ app/src/main/res/xml/preferences.xml | 11 +++++ 4 files changed, 65 insertions(+), 9 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c7dc17682..47131224d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -39,7 +39,11 @@ dependencies { compile 'com.github.paolorotolo:appintro:3.4.0' compile 'org.apmem.tools:layouts:1.10@aar' compile 'com.opencsv:opencsv:3.7' - compile 'com.github.nkzawa:socket.io-client:0.3.0' + + compile ('io.socket:socket.io-client:0.7.0') { + exclude group: 'org.json', module: 'json' + } + compile project(':libs:drag-sort-listview:library') compile files('libs/ActiveAndroid.jar') diff --git a/app/src/main/java/org/isoron/uhabits/SyncManager.java b/app/src/main/java/org/isoron/uhabits/SyncManager.java index 055e2b4e1..bbfbf73b6 100644 --- a/app/src/main/java/org/isoron/uhabits/SyncManager.java +++ b/app/src/main/java/org/isoron/uhabits/SyncManager.java @@ -19,13 +19,11 @@ package org.isoron.uhabits; +import android.content.SharedPreferences; import android.support.annotation.NonNull; +import android.support.v7.preference.PreferenceManager; import android.util.Log; -import com.github.nkzawa.emitter.Emitter; -import com.github.nkzawa.socketio.client.IO; -import com.github.nkzawa.socketio.client.Socket; - import org.isoron.uhabits.commands.Command; import org.isoron.uhabits.commands.CommandParser; import org.isoron.uhabits.helpers.DatabaseHelper; @@ -35,14 +33,19 @@ import org.json.JSONObject; import java.net.URISyntaxException; import java.util.LinkedList; +import io.socket.client.IO; +import io.socket.client.Socket; +import io.socket.emitter.Emitter; + public class SyncManager { public static final String EXECUTE_COMMAND = "executeCommand"; public static final String POST_COMMAND = "postCommand"; - public static final String SYNC_SERVER_URL = "http://10.0.2.2:4000"; + public static final String SYNC_SERVER_URL = "http://sync.loophabits.org:4000"; - private static String GROUP_KEY = "sEBY3poXHFH7EyB43V2JoQUNEtBjMgdD"; + private static String GROUP_KEY; private static String CLIENT_ID; + private final SharedPreferences prefs; @NonNull private Socket socket; @@ -53,6 +56,9 @@ public class SyncManager { this.activity = activity; outbox = new LinkedList<>(); + + prefs = PreferenceManager.getDefaultSharedPreferences(activity); + GROUP_KEY = prefs.getString("syncKey", DatabaseHelper.getRandomId()); CLIENT_ID = DatabaseHelper.getRandomId(); try @@ -91,6 +97,24 @@ public class SyncManager { JSONObject authMsg = buildAuthMessage(); socket.emit("auth", authMsg.toString()); + + Long lastSync = prefs.getLong("lastSync", 0); + JSONObject fetchMsg = buildFetchMessage(lastSync); + socket.emit("fetchCommands", fetchMsg.toString()); + } + + private JSONObject buildFetchMessage(Long lastSync) + { + try + { + JSONObject json = new JSONObject(); + json.put("since", lastSync); + return json; + } + catch (JSONException e) + { + throw new RuntimeException(e.getMessage()); + } } private JSONObject buildAuthMessage() @@ -98,8 +122,8 @@ public class SyncManager try { JSONObject json = new JSONObject(); - json.put("group_key", GROUP_KEY); - json.put("client_id", CLIENT_ID); + json.put("groupKey", GROUP_KEY); + json.put("clientId", CLIENT_ID); json.put("version", BuildConfig.VERSION_NAME); return json; } @@ -117,6 +141,8 @@ public class SyncManager { try { + JSONObject root = new JSONObject(args[0].toString()); + updateLastSync(root.getLong("timestamp")); executeCommand(args[0]); } catch (JSONException e) @@ -147,4 +173,9 @@ public class SyncManager activity.executeCommand(received, null, false); Log.d("SyncManager", "Received command executed"); } + + private void updateLastSync(Long timestamp) + { + prefs.edit().putLong("lastSync", timestamp).apply(); + } } diff --git a/app/src/main/java/org/isoron/uhabits/fragments/SettingsFragment.java b/app/src/main/java/org/isoron/uhabits/fragments/SettingsFragment.java index 838527589..cbc56333b 100644 --- a/app/src/main/java/org/isoron/uhabits/fragments/SettingsFragment.java +++ b/app/src/main/java/org/isoron/uhabits/fragments/SettingsFragment.java @@ -49,6 +49,7 @@ public class SettingsFragment extends PreferenceFragmentCompat setResultOnPreferenceClick("bugReport", MainActivity.RESULT_BUG_REPORT); updateRingtoneDescription(); + updateSyncDescription(); if(UIHelper.isLocaleFullyTranslated()) removePreference("translate", "linksCategory"); @@ -101,9 +102,18 @@ public class SettingsFragment extends PreferenceFragmentCompat @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + if(key.equals("syncKey")) + updateSyncDescription(); + BackupManager.dataChanged("org.isoron.uhabits"); } + private void updateSyncDescription() + { + SharedPreferences preferences = getPreferenceManager().getSharedPreferences(); + findPreference("syncKey").setSummary(preferences.getString("syncKey", "")); + } + @Override public boolean onPreferenceTreeClick(Preference preference) { diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 1339b2d05..5a474d829 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -88,6 +88,17 @@ + + + + + +