Don't open unsubscribed shareables

This commit is contained in:
Torsten Grote
2016-12-16 17:58:23 -02:00
parent 2ef9b8f4b6
commit c04580e321
17 changed files with 75 additions and 56 deletions

View File

@@ -855,8 +855,9 @@ public class ConversationActivity extends BriarActivity
@UiThread
@Override
public void open(ConversationRequestItem item) {
if (item.getRequestedGroupId() == null) return;
public void openRequestedShareable(ConversationRequestItem item) {
if (item.getRequestedGroupId() == null)
throw new IllegalArgumentException();
Intent i;
switch (item.getRequestType()) {
case FORUM:

View File

@@ -140,7 +140,7 @@ class ConversationAdapter
void respondToRequest(ConversationRequestItem item, boolean accept);
void open(ConversationRequestItem item);
void openRequestedShareable(ConversationRequestItem item);
}

View File

@@ -112,7 +112,7 @@ abstract class ConversationItem {
return new ConversationRequestItem(ir.getMessageId(),
ir.getGroupId(), INTRODUCTION, ir.getSessionId(), text,
ir.getMessage(), ir.getTimestamp(), ir.isRead(), null,
ir.wasAnswered());
ir.wasAnswered(), false);
}
}
@@ -203,7 +203,8 @@ abstract class ConversationItem {
return new ConversationRequestItem(ir.getId(),
ir.getGroupId(), type, ir.getSessionId(), text,
ir.getMessage(), ir.getTimestamp(), ir.isRead(),
ir.getInvitedGroupId(), !ir.isAvailable());
ir.getInvitedGroupId(), !ir.isAvailable(),
ir.canBeOpened());
}
}

View File

@@ -21,17 +21,19 @@ class ConversationRequestItem extends ConversationNoticeInItem {
private final GroupId requestedGroupId;
private final RequestType requestType;
private final SessionId sessionId;
private boolean answered;
private final boolean answered, canBeOpened;
ConversationRequestItem(MessageId id, GroupId groupId,
RequestType requestType, SessionId sessionId, String text,
@Nullable String msgText, long time, boolean read,
@Nullable GroupId requestedGroupId, boolean answered) {
@Nullable GroupId requestedGroupId, boolean answered,
boolean canBeOpened) {
super(id, groupId, text, msgText, time, read);
this.requestType = requestType;
this.sessionId = sessionId;
this.requestedGroupId = requestedGroupId;
this.answered = answered;
this.canBeOpened = canBeOpened;
}
RequestType getRequestType() {
@@ -51,8 +53,8 @@ class ConversationRequestItem extends ConversationNoticeInItem {
return answered;
}
void setAnswered(boolean answered) {
this.answered = answered;
public boolean canBeOpened() {
return canBeOpened;
}
@LayoutRes

View File

@@ -11,7 +11,6 @@ import org.briarproject.briar.android.contact.ConversationAdapter.ConversationLi
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import static org.briarproject.briar.android.contact.ConversationRequestItem.RequestType.INTRODUCTION;
@UiThread
@NotNullByDefault
@@ -33,27 +32,25 @@ class ConversationRequestViewHolder extends ConversationNoticeInViewHolder {
final ConversationRequestItem item =
(ConversationRequestItem) conversationItem;
if (item.getRequestType() == INTRODUCTION && item.wasAnswered()) {
acceptButton.setVisibility(GONE);
declineButton.setVisibility(GONE);
} else if (item.wasAnswered()) {
if (item.wasAnswered() && item.canBeOpened()) {
acceptButton.setVisibility(VISIBLE);
acceptButton.setText(R.string.open);
acceptButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
item.setAnswered(true);
listener.open(item);
listener.openRequestedShareable(item);
}
});
declineButton.setVisibility(GONE);
} else if (item.wasAnswered()) {
acceptButton.setVisibility(GONE);
declineButton.setVisibility(GONE);
} else {
acceptButton.setVisibility(VISIBLE);
acceptButton.setText(R.string.accept);
acceptButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
item.setAnswered(true);
listener.respondToRequest(item, true);
}
});
@@ -61,7 +58,6 @@ class ConversationRequestViewHolder extends ConversationNoticeInViewHolder {
declineButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
item.setAnswered(true);
listener.respondToRequest(item, false);
}
});