mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-13 11:19:04 +01:00
Implement UX for when a group has been dissolved
This commit is contained in:
@@ -80,6 +80,7 @@
|
||||
android:layout_below="@+id/messageCountView"
|
||||
android:layout_toEndOf="@+id/avatarView"
|
||||
android:layout_toRightOf="@+id/avatarView"
|
||||
android:layout_toLeftOf="@+id/removeButton"
|
||||
android:paddingTop="@dimen/margin_small"
|
||||
android:textColor="@color/briar_text_tertiary"
|
||||
tools:text="@string/groups_group_is_empty"/>
|
||||
@@ -91,7 +92,6 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignBottom="@+id/divider"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_toRightOf="@+id/statusView"
|
||||
android:text="@string/groups_remove"
|
||||
tools:visibility="gone"/>
|
||||
|
||||
|
||||
@@ -33,9 +33,8 @@ public class GroupActivity extends
|
||||
@Inject
|
||||
GroupController controller;
|
||||
|
||||
private boolean isCreator;
|
||||
private MenuItem leaveMenuItem;
|
||||
private MenuItem dissolveMenuItem;
|
||||
private boolean isCreator, isDissolved = false;
|
||||
private MenuItem writeMenuItem, leaveMenuItem, dissolveMenuItem;
|
||||
|
||||
@Override
|
||||
public void injectActivity(ActivityComponent component) {
|
||||
@@ -59,6 +58,24 @@ public class GroupActivity extends
|
||||
list.setEmptyText(R.string.groups_no_messages);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
controller.isDissolved(
|
||||
new UiResultExceptionHandler<Boolean, DbException>(this) {
|
||||
@Override
|
||||
public void onResultUi(Boolean isDissolved) {
|
||||
if (isDissolved) disableGroup();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExceptionUi(DbException exception) {
|
||||
// TODO proper error handling
|
||||
finish();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNamedGroupLoaded(PrivateGroup group) {
|
||||
setTitle(group.getName());
|
||||
@@ -102,6 +119,7 @@ public class GroupActivity extends
|
||||
MenuInflater inflater = getMenuInflater();
|
||||
inflater.inflate(R.menu.group_actions, menu);
|
||||
|
||||
writeMenuItem = menu.findItem(R.id.action_group_compose_message);
|
||||
leaveMenuItem = menu.findItem(R.id.action_group_leave);
|
||||
dissolveMenuItem = menu.findItem(R.id.action_group_dissolve);
|
||||
showMenuItems();
|
||||
@@ -143,6 +161,18 @@ public class GroupActivity extends
|
||||
return R.string.groups_message_received;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReplyClick(GroupMessageItem item) {
|
||||
if (!isDissolved) super.onReplyClick(item);
|
||||
}
|
||||
|
||||
private void disableGroup() {
|
||||
isDissolved = true;
|
||||
if (writeMenuItem != null) writeMenuItem.setVisible(false);
|
||||
textInput.setSendButtonEnabled(false);
|
||||
list.setAlpha(0.5f);
|
||||
}
|
||||
|
||||
private void showMenuItems() {
|
||||
if (leaveMenuItem == null || dissolveMenuItem == null) return;
|
||||
if (isCreator) {
|
||||
@@ -152,6 +182,7 @@ public class GroupActivity extends
|
||||
leaveMenuItem.setVisible(true);
|
||||
dissolveMenuItem.setVisible(false);
|
||||
}
|
||||
if (isDissolved) writeMenuItem.setVisible(false);
|
||||
}
|
||||
|
||||
private void showLeaveGroupDialog() {
|
||||
|
||||
@@ -13,4 +13,7 @@ public interface GroupController
|
||||
void isCreator(PrivateGroup group,
|
||||
ResultExceptionHandler<Boolean, DbException> handler);
|
||||
|
||||
void isDissolved(
|
||||
ResultExceptionHandler<Boolean, DbException> handler);
|
||||
|
||||
}
|
||||
|
||||
@@ -195,4 +195,23 @@ public class GroupControllerImpl extends
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void isDissolved(final
|
||||
ResultExceptionHandler<Boolean, DbException> handler) {
|
||||
runOnDbThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
boolean isDissolved =
|
||||
privateGroupManager.isDissolved(getGroupId());
|
||||
handler.onResult(isDissolved);
|
||||
} catch (DbException e) {
|
||||
if (LOG.isLoggable(WARNING))
|
||||
LOG.log(WARNING, e.toString(), e);
|
||||
handler.onException(e);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package org.briarproject.android.privategroup.list;
|
||||
|
||||
import android.support.annotation.CallSuper;
|
||||
|
||||
import org.briarproject.android.api.AndroidNotificationManager;
|
||||
import org.briarproject.android.controller.DbControllerImpl;
|
||||
import org.briarproject.android.controller.handler.ResultExceptionHandler;
|
||||
import org.briarproject.api.clients.MessageTracker.GroupCount;
|
||||
@@ -15,7 +14,6 @@ import org.briarproject.api.event.EventListener;
|
||||
import org.briarproject.api.event.GroupAddedEvent;
|
||||
import org.briarproject.api.event.GroupMessageAddedEvent;
|
||||
import org.briarproject.api.event.GroupRemovedEvent;
|
||||
import org.briarproject.api.identity.IdentityManager;
|
||||
import org.briarproject.api.lifecycle.LifecycleManager;
|
||||
import org.briarproject.api.privategroup.GroupMessageHeader;
|
||||
import org.briarproject.api.privategroup.PrivateGroup;
|
||||
@@ -44,23 +42,17 @@ public class GroupListControllerImpl extends DbControllerImpl
|
||||
private final PrivateGroupManager groupManager;
|
||||
private final GroupInvitationManager groupInvitationManager;
|
||||
private final EventBus eventBus;
|
||||
private final AndroidNotificationManager notificationManager;
|
||||
private final IdentityManager identityManager;
|
||||
|
||||
protected volatile GroupListListener listener;
|
||||
|
||||
@Inject
|
||||
GroupListControllerImpl(@DatabaseExecutor Executor dbExecutor,
|
||||
LifecycleManager lifecycleManager, PrivateGroupManager groupManager,
|
||||
GroupInvitationManager groupInvitationManager, EventBus eventBus,
|
||||
AndroidNotificationManager notificationManager,
|
||||
IdentityManager identityManager) {
|
||||
GroupInvitationManager groupInvitationManager, EventBus eventBus) {
|
||||
super(dbExecutor, lifecycleManager);
|
||||
this.groupManager = groupManager;
|
||||
this.groupInvitationManager = groupInvitationManager;
|
||||
this.eventBus = eventBus;
|
||||
this.notificationManager = notificationManager;
|
||||
this.identityManager = identityManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user