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