From: Damyan Ivanov Date: Sat, 8 Dec 2018 19:17:04 +0000 (+0000) Subject: handle exceptions when saving transaction X-Git-Tag: v0.3~281 X-Git-Url: https://git.ktnx.net/?a=commitdiff_plain;h=cc080f415ad546183c7d92d8f58dddefb60560fe;p=mobile-ledger.git handle exceptions when saving transaction content errors are reported badly by hledger-web - via a message
in the journal - 2MB download :( --- diff --git a/app/src/main/java/net/ktnx/mobileledger/NewTransactionActivity.java b/app/src/main/java/net/ktnx/mobileledger/NewTransactionActivity.java index 3e4b73cc..5b382873 100644 --- a/app/src/main/java/net/ktnx/mobileledger/NewTransactionActivity.java +++ b/app/src/main/java/net/ktnx/mobileledger/NewTransactionActivity.java @@ -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() { diff --git a/app/src/main/java/net/ktnx/mobileledger/SaveTransactionTask.java b/app/src/main/java/net/ktnx/mobileledger/SaveTransactionTask.java index ae15b446..3c2cb447 100644 --- a/app/src/main/java/net/ktnx/mobileledger/SaveTransactionTask.java +++ b/app/src/main/java/net/ktnx/mobileledger/SaveTransactionTask.java @@ -25,6 +25,7 @@ class SaveTransactionTask extends AsyncTask { 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 { @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 { @Override protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); - task_callback.done(); + task_callback.done(error); } } diff --git a/app/src/main/java/net/ktnx/mobileledger/TaskCallback.java b/app/src/main/java/net/ktnx/mobileledger/TaskCallback.java index cf0603ff..b4442133 100644 --- a/app/src/main/java/net/ktnx/mobileledger/TaskCallback.java +++ b/app/src/main/java/net/ktnx/mobileledger/TaskCallback.java @@ -1,5 +1,5 @@ package net.ktnx.mobileledger; interface TaskCallback { - abstract void done(); + void done(String error); }