From 499d2fe677c4525c383f9756d08db0ca94fa3609 Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Thu, 6 Apr 2017 14:35:57 -0300
Subject: [PATCH] Prevent conversation actions from being executed twice

---
 .../briar/android/contact/ConversationActivity.java        | 1 +
 .../briar/android/contact/ConversationRequestItem.java     | 7 ++++++-
 .../android/contact/ConversationRequestViewHolder.java     | 4 ++++
 3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java
index c585b6600b..d9cc117b40 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java
@@ -946,6 +946,7 @@ public class ConversationActivity extends BriarActivity
 	@Override
 	public void respondToRequest(final ConversationRequestItem item,
 			final boolean accept) {
+		item.setAnswered(true);
 		int position = adapter.findItemPosition(item);
 		if (position != INVALID_POSITION) {
 			adapter.notifyItemChanged(position, item);
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationRequestItem.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationRequestItem.java
index c0575eeb39..b11a00c602 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationRequestItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationRequestItem.java
@@ -21,7 +21,8 @@ class ConversationRequestItem extends ConversationNoticeInItem {
 	private final GroupId requestedGroupId;
 	private final RequestType requestType;
 	private final SessionId sessionId;
-	private final boolean answered, canBeOpened;
+	private final boolean canBeOpened;
+	private boolean answered;
 
 	ConversationRequestItem(MessageId id, GroupId groupId,
 			RequestType requestType, SessionId sessionId, String text,
@@ -53,6 +54,10 @@ class ConversationRequestItem extends ConversationNoticeInItem {
 		return answered;
 	}
 
+	void setAnswered(boolean answered) {
+		this.answered = answered;
+	}
+
 	public boolean canBeOpened() {
 		return canBeOpened;
 	}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationRequestViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationRequestViewHolder.java
index 117995b4d6..492324a847 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationRequestViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationRequestViewHolder.java
@@ -51,6 +51,8 @@ class ConversationRequestViewHolder extends ConversationNoticeInViewHolder {
 			acceptButton.setOnClickListener(new OnClickListener() {
 				@Override
 				public void onClick(View v) {
+					acceptButton.setEnabled(false);
+					declineButton.setEnabled(false);
 					listener.respondToRequest(item, true);
 				}
 			});
@@ -58,6 +60,8 @@ class ConversationRequestViewHolder extends ConversationNoticeInViewHolder {
 			declineButton.setOnClickListener(new OnClickListener() {
 				@Override
 				public void onClick(View v) {
+					acceptButton.setEnabled(false);
+					declineButton.setEnabled(false);
 					listener.respondToRequest(item, false);
 				}
 			});
-- 
GitLab