diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java
index fd2b5a98a..59786e96d 100644
--- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java
+++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java
@@ -16,6 +16,7 @@ import org.json.JSONException;
import org.json.JSONObject;
import android.content.ContentValues;
+import android.content.Context;
import android.graphics.Bitmap;
import android.os.Handler;
import android.os.Looper;
@@ -262,6 +263,7 @@ public final class ActFmSyncService {
}
}
+ System.err.println(values + " --- " + params);
if(params.size() == 0 || !checkForToken())
return;
@@ -359,7 +361,7 @@ public final class ActFmSyncService {
params.add("id"); params.add(remoteId);
}
- boolean success;
+ String error = null;
try {
params.add("token"); params.add(token);
JSONObject result = actFmInvoker.invoke("tag_save", params.toArray(new Object[params.size()]));
@@ -368,25 +370,44 @@ public final class ActFmSyncService {
Flags.set(Flags.ACTFM_SUPPRESS_SYNC);
tagDataDao.saveExisting(tagData);
}
- success = true;
+ } catch (ActFmServiceException e) {
+ handleException("tag-save", e);
+ error = e.getMessage();
+
+ try {
+ fetchTag(tagData);
+ } catch (IOException e1) {
+ handleException("refetch-error-tag", e);
+ } catch (JSONException e1) {
+ handleException("refetch-error-tag", e);
+ }
} catch (IOException e) {
handleException("tag-save", e);
- success = false;
+ error = e.getMessage();
}
if(!Flags.checkAndClear(Flags.TOAST_ON_SAVE))
return;
- final boolean finalSuccess = success;
+ toastSuccessOrFailure(error);
+ }
+
+ /**
+ * Show a toast on success (error = nil) or failure
+ * @param error
+ */
+ private void toastSuccessOrFailure(String error) {
+ final String finalError = error;
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
@Override
public void run() {
- if(finalSuccess)
- Toast.makeText(ContextManager.getContext(),
+ Context context = ContextManager.getContext();
+ if(finalError == null)
+ Toast.makeText(context,
R.string.actfm_toast_success, Toast.LENGTH_LONG).show();
else
- Toast.makeText(ContextManager.getContext(),
- R.string.actfm_toast_error, Toast.LENGTH_LONG).show();
+ Toast.makeText(context,
+ context.getString(R.string.actfm_toast_error, finalError), Toast.LENGTH_LONG).show();
}
});
}
diff --git a/astrid/res/values/strings-actfm.xml b/astrid/res/values/strings-actfm.xml
index dec3e025d..b8155a530 100644
--- a/astrid/res/values/strings-actfm.xml
+++ b/astrid/res/values/strings-actfm.xml
@@ -16,8 +16,8 @@
Saved on Server
-
- Save Unsuccessful
+
+ Save Failed: %s
Sorry, this operation is not yet supported for shared tags.