From cf6aa019054d952584587f2db2b241a394d53b68 Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Thu, 28 Jul 2016 15:18:56 -0300
Subject: [PATCH] Remove forum invitations from list instead of reloading

Closes #543
---
 .../android/forum/ForumInvitationAdapter.java             | 7 ++++++-
 .../android/forum/ForumInvitationsActivity.java           | 8 ++++++--
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/briar-android/src/org/briarproject/android/forum/ForumInvitationAdapter.java b/briar-android/src/org/briarproject/android/forum/ForumInvitationAdapter.java
index 23e24b7e14..28ef9e2f1c 100644
--- a/briar-android/src/org/briarproject/android/forum/ForumInvitationAdapter.java
+++ b/briar-android/src/org/briarproject/android/forum/ForumInvitationAdapter.java
@@ -12,6 +12,7 @@ import android.widget.TextView;
 import org.briarproject.R;
 import org.briarproject.android.util.TextAvatarView;
 import org.briarproject.api.contact.Contact;
+import org.briarproject.api.forum.ForumSharingMessage;
 import org.briarproject.util.StringUtils;
 
 import java.util.ArrayList;
@@ -94,6 +95,10 @@ class ForumInvitationAdapter extends
 		forums.addAll(list);
 	}
 
+	public void remove(ForumInvitationItem item) {
+		forums.remove(item);
+	}
+
 	public void clear() {
 		forums.clear();
 	}
@@ -154,7 +159,7 @@ class ForumInvitationAdapter extends
 		@Override
 		public boolean areContentsTheSame(ForumInvitationItem oldItem,
 				ForumInvitationItem newItem) {
-			return oldItem.getForum().equals(newItem.getForum()) &&
+			return oldItem.isSubscribed() == newItem.isSubscribed() &&
 					oldItem.getContacts().equals(newItem.getContacts());
 		}
 
diff --git a/briar-android/src/org/briarproject/android/forum/ForumInvitationsActivity.java b/briar-android/src/org/briarproject/android/forum/ForumInvitationsActivity.java
index 24436eb81e..ed36990d87 100644
--- a/briar-android/src/org/briarproject/android/forum/ForumInvitationsActivity.java
+++ b/briar-android/src/org/briarproject/android/forum/ForumInvitationsActivity.java
@@ -114,7 +114,6 @@ public class ForumInvitationsActivity extends BriarActivity
 					LOG.info("No forums available, finishing");
 					finish();
 				} else {
-					adapter.clear();
 					adapter.addAll(forums);
 				}
 			}
@@ -158,6 +157,12 @@ public class ForumInvitationsActivity extends BriarActivity
 		int res = R.string.forum_declined_toast;
 		if (accept) res = R.string.forum_joined_toast;
 		Toast.makeText(this, res, LENGTH_SHORT).show();
+
+		// remove item and finish if it was the last
+		adapter.remove(item);
+		if (adapter.getItemCount() == 0) {
+			supportFinishAfterTransition();
+		}
 	}
 
 	private void respondToInvitation(final ForumInvitationItem item,
@@ -174,7 +179,6 @@ public class ForumInvitationsActivity extends BriarActivity
 					if (LOG.isLoggable(WARNING))
 						LOG.log(WARNING, e.toString(), e);
 				}
-				loadForums();
 			}
 		});
 	}
-- 
GitLab