From 0a9840997f8a69f0516dac8f82a2719b8d688792 Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Wed, 21 Dec 2016 12:06:20 -0200
Subject: [PATCH] This adds a `handleDbException()` method to BaseActivity

and a corresponding method for fragments that calls through to the activity.
For now, the method just finishes the activity
and NavDrawerActivity overrides it to do nothing,
and all the error places marked with TODO that finish the activity call the method instead.

That gives us zero functional improvement over the status quo,
but it allows us to change the default behaviour easily,
and then we can start thinking about which cases should have non-default behaviour.
---
 .../briar/android/activity/BaseActivity.java    |  6 ++++++
 .../briar/android/blog/BlogFragment.java        | 15 +++++----------
 .../briar/android/blog/BlogPostFragment.java    |  3 +--
 .../briar/android/blog/FeedFragment.java        |  8 ++++----
 .../briar/android/blog/FeedPostFragment.java    |  2 +-
 .../briar/android/blog/ReblogFragment.java      |  6 ++----
 .../BaseContactSelectorFragment.java            |  3 +--
 .../briar/android/forum/ForumActivity.java      |  3 +--
 .../briar/android/fragment/BaseFragment.java    |  9 +++++++++
 .../android/navdrawer/NavDrawerActivity.java    |  6 ++++++
 .../conversation/GroupActivity.java             |  9 +++------
 .../creation/BaseGroupInviteActivity.java       |  3 +--
 .../creation/CreateGroupActivity.java           |  3 +--
 .../privategroup/list/GroupListFragment.java    |  7 +++----
 .../memberlist/GroupMemberListActivity.java     |  3 +--
 .../reveal/RevealContactsActivity.java          |  8 +++-----
 .../android/sharing/InvitationActivity.java     |  6 ++----
 .../android/sharing/ShareBlogActivity.java      |  2 +-
 .../android/sharing/ShareForumActivity.java     |  2 +-
 .../android/threaded/ThreadListActivity.java    | 17 ++++++-----------
 20 files changed, 58 insertions(+), 63 deletions(-)

diff --git a/briar-android/src/main/java/org/briarproject/briar/android/activity/BaseActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/activity/BaseActivity.java
index 699985ee6d..1953756c62 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/activity/BaseActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/activity/BaseActivity.java
@@ -6,6 +6,7 @@ import android.support.v7.app.AppCompatActivity;
 import android.view.View;
 import android.view.inputmethod.InputMethodManager;
 
+import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.briar.android.AndroidComponent;
 import org.briarproject.briar.android.BriarApplication;
 import org.briarproject.briar.android.DestroyableContext;
@@ -116,4 +117,9 @@ public abstract class BaseActivity extends AppCompatActivity
 		Object o = getSystemService(INPUT_METHOD_SERVICE);
 		((InputMethodManager) o).hideSoftInputFromWindow(token, 0);
 	}
+
+	public void handleDbException(DbException e) {
+		supportFinishAfterTransition();
+	}
+
 }
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java
index 2dcbd3766c..d3e8626d2d 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java
@@ -205,8 +205,7 @@ public class BlogFragment extends BaseFragment
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO: Decide how to handle errors in the UI
-						finish();
+						handleDbException(exception);
 					}
 				}
 		);
@@ -234,8 +233,7 @@ public class BlogFragment extends BaseFragment
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO: Decide how to handle errors in the UI
-						finish();
+						handleDbException(exception);
 					}
 				});
 	}
@@ -254,8 +252,7 @@ public class BlogFragment extends BaseFragment
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO: Decide how to handle errors in the UI
-						finish();
+						handleDbException(exception);
 					}
 				});
 	}
@@ -277,8 +274,7 @@ public class BlogFragment extends BaseFragment
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO: Decide how to handle errors in the UI
-						finish();
+						handleDbException(exception);
 					}
 				});
 	}
@@ -373,8 +369,7 @@ public class BlogFragment extends BaseFragment
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO: Decide how to handle errors in the UI
-						finish();
+						handleDbException(exception);
 					}
 				});
 	}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostFragment.java
index 2655c7ff33..5c631f1772 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostFragment.java
@@ -55,8 +55,7 @@ public class BlogPostFragment extends BasePostFragment {
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO: Decide how to handle errors in the UI
-						finish();
+						handleDbException(exception);
 					}
 				});
 	}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java
index 279e586685..7d2c89bd0d 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java
@@ -129,7 +129,7 @@ public class FeedFragment extends BaseFragment implements
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO: Decide how to handle errors in the UI
+						handleDbException(exception);
 					}
 				});
 	}
@@ -153,8 +153,8 @@ public class FeedFragment extends BaseFragment implements
 					}
 
 					@Override
-					public void onExceptionUi(DbException e) {
-						// TODO: Decide how to handle errors in the UI
+					public void onExceptionUi(DbException exception) {
+						handleDbException(exception);
 					}
 				});
 		list.startPeriodicUpdate();
@@ -211,7 +211,7 @@ public class FeedFragment extends BaseFragment implements
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO: Decide how to handle errors in the UI
+						handleDbException(exception);
 					}
 				}
 		);
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedPostFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedPostFragment.java
index 233c5b99ca..54d4c52210 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedPostFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedPostFragment.java
@@ -79,7 +79,7 @@ public class FeedPostFragment extends BasePostFragment {
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO: Decide how to handle errors in the UI
+						handleDbException(exception);
 					}
 				});
 	}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/ReblogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/ReblogFragment.java
index 43064752fc..eda320d2f6 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/ReblogFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/ReblogFragment.java
@@ -99,8 +99,7 @@ public class ReblogFragment extends BaseFragment implements TextInputListener {
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO
-						finish();
+						handleDbException(exception);
 					}
 				});
 	}
@@ -130,8 +129,7 @@ public class ReblogFragment extends BaseFragment implements TextInputListener {
 				new UiExceptionHandler<DbException>(this) {
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO proper error handling
-						// do nothing, this fragment is gone already
+						handleDbException(exception);
 					}
 				});
 		finish();
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseContactSelectorFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseContactSelectorFragment.java
index ec318ebe36..c7c10849d7 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseContactSelectorFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseContactSelectorFragment.java
@@ -130,8 +130,7 @@ public abstract class BaseContactSelectorFragment<I extends SelectableContactIte
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO error handling
-						finish();
+						handleDbException(exception);
 					}
 				});
 	}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumActivity.java
index 5729e4c8b7..a5152fb9cc 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumActivity.java
@@ -192,8 +192,7 @@ public class ForumActivity extends
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO proper error handling
-						finish();
+						handleDbException(exception);
 					}
 				});
 	}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/fragment/BaseFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/fragment/BaseFragment.java
index 46c7c01a91..7273a7f54f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/fragment/BaseFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/fragment/BaseFragment.java
@@ -8,6 +8,7 @@ import android.support.annotation.UiThread;
 import android.support.v4.app.Fragment;
 import android.view.MenuItem;
 
+import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.briar.android.DestroyableContext;
 import org.briarproject.briar.android.activity.ActivityComponent;
 
@@ -71,6 +72,9 @@ public abstract class BaseFragment extends Fragment
 
 		@UiThread
 		void showNextFragment(BaseFragment f);
+
+		@UiThread
+		void handleDbException(DbException e);
 	}
 
 	@CallSuper
@@ -95,4 +99,9 @@ public abstract class BaseFragment extends Fragment
 		listener.showNextFragment(f);
 	}
 
+	@UiThread
+	protected void handleDbException(DbException e) {
+		listener.handleDbException(e);
+	}
+
 }
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java
index 1a5398630e..f0ff34aedc 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java
@@ -19,6 +19,7 @@ import android.widget.GridView;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.plugin.BluetoothConstants;
 import org.briarproject.bramble.api.plugin.LanTcpConstants;
 import org.briarproject.bramble.api.plugin.TorConstants;
@@ -246,6 +247,11 @@ public class NavDrawerActivity extends BriarActivity implements
 				POP_BACK_STACK_INCLUSIVE);
 	}
 
+	@Override
+	public void handleDbException(DbException e) {
+		// Do nothing for now
+	}
+
 	private void initializeTransports(final LayoutInflater inflater) {
 		transports = new ArrayList<>(3);
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupActivity.java
index 1f6dab8909..2542db31f7 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupActivity.java
@@ -117,8 +117,7 @@ public class GroupActivity extends
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO proper error handling
-						finish();
+						handleDbException(exception);
 					}
 				});
 	}
@@ -137,8 +136,7 @@ public class GroupActivity extends
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO proper error handling
-						finish();
+						handleDbException(exception);
 					}
 				});
 	}
@@ -276,8 +274,7 @@ public class GroupActivity extends
 					// GroupRemovedEvent being fired
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO proper error handling
-						finish();
+						handleDbException(exception);
 					}
 				});
 	}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/BaseGroupInviteActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/BaseGroupInviteActivity.java
index 30d64e95a1..315aed855b 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/BaseGroupInviteActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/BaseGroupInviteActivity.java
@@ -43,9 +43,8 @@ public abstract class BaseGroupInviteActivity
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO proper error handling
 						setResult(RESULT_CANCELED);
-						finish();
+						handleDbException(exception);
 					}
 				});
 		return true;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupActivity.java
index 0f13bab833..5e7a64f564 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupActivity.java
@@ -58,8 +58,7 @@ public class CreateGroupActivity extends BaseGroupInviteActivity implements
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO proper error handling
-						finish();
+						handleDbException(exception);
 					}
 				});
 	}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java
index bea0ff2359..9fbed643c5 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java
@@ -132,7 +132,7 @@ public class GroupListFragment extends BaseFragment implements
 					// result handled by GroupRemovedEvent and onGroupRemoved()
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO handle error
+						handleDbException(exception);
 					}
 				});
 	}
@@ -202,7 +202,7 @@ public class GroupListFragment extends BaseFragment implements
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO handle this error
+						handleDbException(exception);
 					}
 				});
 	}
@@ -224,8 +224,7 @@ public class GroupListFragment extends BaseFragment implements
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO handle this error
-						finish();
+						handleDbException(exception);
 					}
 				});
 	}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/GroupMemberListActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/GroupMemberListActivity.java
index 182a336d00..feadb3d516 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/GroupMemberListActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/GroupMemberListActivity.java
@@ -67,8 +67,7 @@ public class GroupMemberListActivity extends BriarActivity {
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO proper error handling
-						finish();
+						handleDbException(exception);
 					}
 				});
 		list.startPeriodicUpdate();
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsActivity.java
index 450b6e4ff1..778802f726 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsActivity.java
@@ -80,8 +80,7 @@ public class RevealContactsActivity extends ContactSelectorActivity
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO proper error handling
-						finish();
+						handleDbException(exception);
 					}
 				});
 	}
@@ -132,7 +131,7 @@ public class RevealContactsActivity extends ContactSelectorActivity
 				new UiExceptionHandler<DbException>(this) {
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO proper error handling
+						handleDbException(exception);
 					}
 				});
 	}
@@ -149,8 +148,7 @@ public class RevealContactsActivity extends ContactSelectorActivity
 				new UiExceptionHandler<DbException>(this) {
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO proper error handling
-						finish();
+						handleDbException(exception);
 					}
 				});
 		supportFinishAfterTransition();
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/InvitationActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/InvitationActivity.java
index 1f755fe366..6f57eed9fe 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/InvitationActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/InvitationActivity.java
@@ -97,8 +97,7 @@ public abstract class InvitationActivity<I extends InvitationItem>
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO proper error handling
-						finish();
+						handleDbException(exception);
 					}
 				});
 	}
@@ -111,8 +110,7 @@ public abstract class InvitationActivity<I extends InvitationItem>
 				new UiExceptionHandler<DbException>(this) {
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO proper error handling
-						finish();
+						handleDbException(exception);
 					}
 				});
 	}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogActivity.java
index 1d6581e6b1..b9fbcbde54 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogActivity.java
@@ -56,10 +56,10 @@ public class ShareBlogActivity extends ShareActivity {
 				new UiExceptionHandler<DbException>(this) {
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO proper error handling
 						Toast.makeText(ShareBlogActivity.this,
 								R.string.blogs_sharing_error, LENGTH_SHORT)
 								.show();
+						handleDbException(exception);
 					}
 				});
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumActivity.java
index dc16a239fb..b274991a1a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumActivity.java
@@ -56,10 +56,10 @@ public class ShareForumActivity extends ShareActivity {
 				new UiExceptionHandler<DbException>(this) {
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO proper error handling
 						Toast.makeText(ShareForumActivity.this,
 								R.string.forum_share_error, LENGTH_SHORT)
 								.show();
+						handleDbException(exception);
 					}
 				});
 	}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListActivity.java
index b1d937dda5..0f83203db9 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListActivity.java
@@ -114,8 +114,7 @@ public abstract class ThreadListActivity<G extends NamedGroup, A extends ThreadI
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO Proper error handling
-						finish();
+						handleDbException(exception);
 					}
 				});
 	}
@@ -147,8 +146,7 @@ public abstract class ThreadListActivity<G extends NamedGroup, A extends ThreadI
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO Proper error handling
-						finish();
+						handleDbException(exception);
 					}
 				});
 	}
@@ -165,9 +163,8 @@ public abstract class ThreadListActivity<G extends NamedGroup, A extends ThreadI
 					}
 
 					@Override
-					public void onExceptionUi(DbException e) {
-						// TODO Proper error handling
-						finish();
+					public void onExceptionUi(DbException exception) {
+						handleDbException(exception);
 					}
 				});
 	}
@@ -299,8 +296,7 @@ public abstract class ThreadListActivity<G extends NamedGroup, A extends ThreadI
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO add proper exception handling
-						finish();
+						handleDbException(exception);
 					}
 				};
 		getController().createAndStoreMessage(text, replyItem, handler);
@@ -323,8 +319,7 @@ public abstract class ThreadListActivity<G extends NamedGroup, A extends ThreadI
 
 					@Override
 					public void onExceptionUi(DbException exception) {
-						// TODO add proper exception handling
-						finish();
+						handleDbException(exception);
 					}
 				});
 	}
-- 
GitLab