]> git.ktnx.net Git - mobile-ledger.git/commitdiff
handle exceptions when saving transaction
authorDamyan Ivanov <dam+mobileledger@ktnx.net>
Sat, 8 Dec 2018 19:17:04 +0000 (19:17 +0000)
committerDamyan Ivanov <dam+mobileledger@ktnx.net>
Sat, 8 Dec 2018 19:17:04 +0000 (19:17 +0000)
content errors are reported badly by hledger-web - via a message <div>
in the journal - 2MB download :(

app/src/main/java/net/ktnx/mobileledger/NewTransactionActivity.java
app/src/main/java/net/ktnx/mobileledger/SaveTransactionTask.java
app/src/main/java/net/ktnx/mobileledger/TaskCallback.java

index 3e4b73ccc2b7e2da4c132cd45fd3fae611f3cc2c..5b382873aa6b9a02a0f174dd72f63a6ae3e5da25 100644 (file)
@@ -8,6 +8,7 @@ import android.os.Build;
 import android.os.Bundle;
 import android.preference.PreferenceManager;
 import android.provider.FontsContract;
+import android.support.design.widget.BaseTransientBottomBar;
 import android.support.design.widget.Snackbar;
 import android.support.v4.app.DialogFragment;
 import android.support.v7.app.AppCompatActivity;
@@ -202,7 +203,7 @@ public class NewTransactionActivity extends AppCompatActivity implements TaskCal
                         "SELECT %s as a, case when %s_upper LIKE ?||'%%' then 1 " +
                                 "WHEN %s_upper LIKE '%%:'||?||'%%' then 2 " +
                                 "WHEN %s_upper LIKE '%% '||?||'%%' then 3 " + "else 9 end " +
-                                "FROM %s " + "WHERE %s_upper LIKE " + "'%%'||?||'%%' " +
+                                "FROM %s " + "WHERE %s_upper LIKE '%%'||?||'%%' " +
                                 "ORDER BY 2, 1;", field, field, field, field, table, field),
                         new String[]{str, str, str, str});
 
@@ -317,12 +318,17 @@ public class NewTransactionActivity extends AppCompatActivity implements TaskCal
     }
 
     @Override
-    public void done() {
+    public
+    void done(String error) {
         progress.setVisibility(View.INVISIBLE);
         Log.d("visuals", "hiding progress");
 
-        reset_form();
+        if (error == null) reset_form();
+        else Snackbar.make(findViewById(R.id.new_transaction_accounts_table), error,
+                BaseTransientBottomBar.LENGTH_LONG).show();
+
         toggle_all_editing(true);
+        check_transaction_submittable();
     }
 
     private void reset_form() {
index ae15b446d7853041942af78762daf7916a644fdc..3c2cb447975cb3d7406e5ddcd57600a12d49c196 100644 (file)
@@ -25,6 +25,7 @@ class SaveTransactionTask extends AsyncTask<LedgerTransaction, Void, Void> {
     private String session;
     private String backend_url;
     private LedgerTransaction ltr;
+    protected String error;
 
     private SharedPreferences pref;
     void setPref(SharedPreferences pref) {
@@ -120,23 +121,27 @@ class SaveTransactionTask extends AsyncTask<LedgerTransaction, Void, Void> {
 
     @Override
     protected Void doInBackground(LedgerTransaction... ledgerTransactions) {
-        backend_url = pref.getString("backend_url", "");
-        ltr = ledgerTransactions[0];
+        error = null;
         try {
+            backend_url = pref.getString("backend_url", "");
+            ltr = ledgerTransactions[0];
+
             int tried = 0;
-            while (! send_ok() ) {
+            while (!send_ok()) {
                 try {
                     tried++;
                     if (tried >= 2)
                         throw new IOException(String.format("aborting after %d tries", tried));
                     sleep(100);
-                } catch (InterruptedException e) {
+                }
+                catch (InterruptedException e) {
                     e.printStackTrace();
                 }
             }
         }
-        catch (IOException e) {
+        catch (Exception e) {
             e.printStackTrace();
+            error = e.getMessage();
         }
 
         return null;
@@ -145,6 +150,6 @@ class SaveTransactionTask extends AsyncTask<LedgerTransaction, Void, Void> {
     @Override
     protected void onPostExecute(Void aVoid) {
         super.onPostExecute(aVoid);
-        task_callback.done();
+        task_callback.done(error);
     }
 }
index cf0603ff954e9726a23160353858efafe50079f0..b4442133bb1d8f2c6b2c90e284283e11fbb5b7a7 100644 (file)
@@ -1,5 +1,5 @@
 package net.ktnx.mobileledger;
 
 interface TaskCallback {
-    abstract void done();
+    void done(String error);
 }