diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9da9e2c..d6cfa6c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -38,6 +38,10 @@
fr.unix_experience.owncloud_sms
Login logo
+
+ ownCloudSMSPrefs
+ last_message_date
+
SMS - Fast
diff --git a/src/fr/unix_experience/owncloud_sms/engine/OCSMSOwnCloudClient.java b/src/fr/unix_experience/owncloud_sms/engine/OCSMSOwnCloudClient.java
index 9705fdf..dbf3221 100644
--- a/src/fr/unix_experience/owncloud_sms/engine/OCSMSOwnCloudClient.java
+++ b/src/fr/unix_experience/owncloud_sms/engine/OCSMSOwnCloudClient.java
@@ -32,6 +32,7 @@ import org.json.JSONException;
import org.json.JSONObject;
import android.content.Context;
+import android.content.SharedPreferences;
import android.net.Uri;
import android.util.Log;
@@ -89,7 +90,10 @@ public class OCSMSOwnCloudClient {
}
}
- public void doPushRequestV1(JSONArray smsList) throws OCSyncException {
+ public void doPushRequestV1(JSONArray smsList) throws OCSyncException {
+ // We need to save this date as a step for connectivity change
+ Long lastMsgDate = (long) 0;
+
if (smsList == null) {
GetMethod get = createGetSmsIdListRequest();
JSONObject smsGetObj = doHttpRequest(get);
@@ -134,6 +138,9 @@ public class OCSMSOwnCloudClient {
fetcher.setExistingDraftsMessages(draftsSmsList);
smsList = fetcher.fetchAllMessages();
+
+ // Get maximum message date present in smsList to keep a step when connectivity changes
+ lastMsgDate = fetcher.getLastMessageDate();
}
if (smsList.length() == 0) {
@@ -164,6 +171,12 @@ public class OCSMSOwnCloudClient {
throw new OCSyncException(R.string.err_sync_push_request_resp, OCSyncErrorType.PARSE);
}
+ // Push was OK, we can save the lastMessageDate which was saved to server
+ SharedPreferences sharedPref = _context.getSharedPreferences(_context.getString(R.string.shared_preference_file), Context.MODE_PRIVATE);
+ SharedPreferences.Editor editor = sharedPref.edit();
+ editor.putLong(_context.getString(R.string.pref_lastmsgdate), lastMsgDate);
+ editor.commit();
+
Log.d(TAG, "SMS Push request said: status " + pushStatus + " - " + pushMessage);
}
diff --git a/src/fr/unix_experience/owncloud_sms/engine/SmsFetcher.java b/src/fr/unix_experience/owncloud_sms/engine/SmsFetcher.java
index 7a72067..9d8f466 100644
--- a/src/fr/unix_experience/owncloud_sms/engine/SmsFetcher.java
+++ b/src/fr/unix_experience/owncloud_sms/engine/SmsFetcher.java
@@ -26,11 +26,11 @@ import fr.unix_experience.owncloud_sms.enums.MailboxID;
import fr.unix_experience.owncloud_sms.providers.SmsDataProvider;
import android.content.Context;
import android.database.Cursor;
-import android.net.Uri;
import android.util.Log;
public class SmsFetcher {
public SmsFetcher(Context ct) {
+ _lastMsgDate = (long) 0;
_context = ct;
_existingInboxMessages = null;
@@ -111,6 +111,13 @@ public class SmsFetcher {
entry.put(colName, c.getInt(idx) > 0 ? "true" : "false");
}
else {
+ // Special case for date, we need to record last without searching
+ if (colName.equals(new String("date"))) {
+ final Long tmpDate = c.getLong(idx);
+ if (tmpDate > _lastMsgDate) {
+ _lastMsgDate = tmpDate;
+ }
+ }
entry.put(colName, c.getString(idx));
}
}
@@ -234,13 +241,17 @@ public class SmsFetcher {
_existingDraftsMessages = draftMessages;
}
+ public Long getLastMessageDate() {
+ return _lastMsgDate;
+ }
+
private Context _context;
private JSONArray _jsonDataDump;
private JSONArray _existingInboxMessages;
private JSONArray _existingSentMessages;
private JSONArray _existingDraftsMessages;
- private static final String TAG = SmsFetcher.class.getSimpleName();
-
+ private Long _lastMsgDate;
+ private static final String TAG = SmsFetcher.class.getSimpleName();
}