mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-15 20:29:52 +01:00
Merge branch '1483-group-invite-not-allowed' into 'master'
Make sure group actions can only be made by the correct role See merge request briar/briar!1190
This commit is contained in:
@@ -47,7 +47,9 @@ public class GroupActivity extends
|
|||||||
@Inject
|
@Inject
|
||||||
GroupController controller;
|
GroupController controller;
|
||||||
|
|
||||||
private boolean isCreator, isDissolved = false;
|
@Nullable
|
||||||
|
private Boolean isCreator = null;
|
||||||
|
private boolean isDissolved = false;
|
||||||
private MenuItem revealMenuItem, inviteMenuItem, leaveMenuItem,
|
private MenuItem revealMenuItem, inviteMenuItem, leaveMenuItem,
|
||||||
dissolveMenuItem;
|
dissolveMenuItem;
|
||||||
|
|
||||||
@@ -137,6 +139,14 @@ public class GroupActivity extends
|
|||||||
inviteMenuItem = menu.findItem(R.id.action_group_invite);
|
inviteMenuItem = menu.findItem(R.id.action_group_invite);
|
||||||
leaveMenuItem = menu.findItem(R.id.action_group_leave);
|
leaveMenuItem = menu.findItem(R.id.action_group_leave);
|
||||||
dissolveMenuItem = menu.findItem(R.id.action_group_dissolve);
|
dissolveMenuItem = menu.findItem(R.id.action_group_dissolve);
|
||||||
|
|
||||||
|
// all role-dependent items are invisible until we know our role
|
||||||
|
revealMenuItem.setVisible(false);
|
||||||
|
inviteMenuItem.setVisible(false);
|
||||||
|
leaveMenuItem.setVisible(false);
|
||||||
|
dissolveMenuItem.setVisible(false);
|
||||||
|
|
||||||
|
// show items based on role
|
||||||
showMenuItems();
|
showMenuItems();
|
||||||
|
|
||||||
return super.onCreateOptionsMenu(menu);
|
return super.onCreateOptionsMenu(menu);
|
||||||
@@ -151,19 +161,27 @@ public class GroupActivity extends
|
|||||||
startActivity(i1);
|
startActivity(i1);
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_group_reveal:
|
case R.id.action_group_reveal:
|
||||||
|
if (isCreator == null || isCreator)
|
||||||
|
throw new IllegalStateException();
|
||||||
Intent i2 = new Intent(this, RevealContactsActivity.class);
|
Intent i2 = new Intent(this, RevealContactsActivity.class);
|
||||||
i2.putExtra(GROUP_ID, groupId.getBytes());
|
i2.putExtra(GROUP_ID, groupId.getBytes());
|
||||||
startActivity(i2);
|
startActivity(i2);
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_group_invite:
|
case R.id.action_group_invite:
|
||||||
|
if (isCreator == null || !isCreator)
|
||||||
|
throw new IllegalStateException();
|
||||||
Intent i3 = new Intent(this, GroupInviteActivity.class);
|
Intent i3 = new Intent(this, GroupInviteActivity.class);
|
||||||
i3.putExtra(GROUP_ID, groupId.getBytes());
|
i3.putExtra(GROUP_ID, groupId.getBytes());
|
||||||
startActivityForResult(i3, REQUEST_GROUP_INVITE);
|
startActivityForResult(i3, REQUEST_GROUP_INVITE);
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_group_leave:
|
case R.id.action_group_leave:
|
||||||
|
if (isCreator == null || isCreator)
|
||||||
|
throw new IllegalStateException();
|
||||||
showLeaveGroupDialog();
|
showLeaveGroupDialog();
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_group_dissolve:
|
case R.id.action_group_dissolve:
|
||||||
|
if (isCreator == null || !isCreator)
|
||||||
|
throw new IllegalStateException();
|
||||||
showDissolveGroupDialog();
|
showDissolveGroupDialog();
|
||||||
default:
|
default:
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
@@ -209,18 +227,12 @@ public class GroupActivity extends
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showMenuItems() {
|
private void showMenuItems() {
|
||||||
if (leaveMenuItem == null || dissolveMenuItem == null) return;
|
// we need to have the menu items and know if we are the creator
|
||||||
if (isCreator) {
|
if (leaveMenuItem == null || isCreator == null) return;
|
||||||
revealMenuItem.setVisible(false);
|
revealMenuItem.setVisible(!isCreator);
|
||||||
inviteMenuItem.setVisible(true);
|
inviteMenuItem.setVisible(isCreator);
|
||||||
leaveMenuItem.setVisible(false);
|
leaveMenuItem.setVisible(!isCreator);
|
||||||
dissolveMenuItem.setVisible(true);
|
dissolveMenuItem.setVisible(isCreator);
|
||||||
} else {
|
|
||||||
revealMenuItem.setVisible(true);
|
|
||||||
inviteMenuItem.setVisible(false);
|
|
||||||
leaveMenuItem.setVisible(true);
|
|
||||||
dissolveMenuItem.setVisible(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showLeaveGroupDialog() {
|
private void showLeaveGroupDialog() {
|
||||||
|
|||||||
Reference in New Issue
Block a user