mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-21 23:29:52 +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_below="@+id/messageCountView"
|
||||||
android:layout_toEndOf="@+id/avatarView"
|
android:layout_toEndOf="@+id/avatarView"
|
||||||
android:layout_toRightOf="@+id/avatarView"
|
android:layout_toRightOf="@+id/avatarView"
|
||||||
|
android:layout_toLeftOf="@+id/removeButton"
|
||||||
android:paddingTop="@dimen/margin_small"
|
android:paddingTop="@dimen/margin_small"
|
||||||
android:textColor="@color/briar_text_tertiary"
|
android:textColor="@color/briar_text_tertiary"
|
||||||
tools:text="@string/groups_group_is_empty"/>
|
tools:text="@string/groups_group_is_empty"/>
|
||||||
@@ -91,7 +92,6 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignBottom="@+id/divider"
|
android:layout_alignBottom="@+id/divider"
|
||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentRight="true"
|
||||||
android:layout_toRightOf="@+id/statusView"
|
|
||||||
android:text="@string/groups_remove"
|
android:text="@string/groups_remove"
|
||||||
tools:visibility="gone"/>
|
tools:visibility="gone"/>
|
||||||
|
|
||||||
|
|||||||
@@ -33,9 +33,8 @@ public class GroupActivity extends
|
|||||||
@Inject
|
@Inject
|
||||||
GroupController controller;
|
GroupController controller;
|
||||||
|
|
||||||
private boolean isCreator;
|
private boolean isCreator, isDissolved = false;
|
||||||
private MenuItem leaveMenuItem;
|
private MenuItem writeMenuItem, leaveMenuItem, dissolveMenuItem;
|
||||||
private MenuItem dissolveMenuItem;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void injectActivity(ActivityComponent component) {
|
public void injectActivity(ActivityComponent component) {
|
||||||
@@ -59,6 +58,24 @@ public class GroupActivity extends
|
|||||||
list.setEmptyText(R.string.groups_no_messages);
|
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
|
@Override
|
||||||
protected void onNamedGroupLoaded(PrivateGroup group) {
|
protected void onNamedGroupLoaded(PrivateGroup group) {
|
||||||
setTitle(group.getName());
|
setTitle(group.getName());
|
||||||
@@ -102,6 +119,7 @@ public class GroupActivity extends
|
|||||||
MenuInflater inflater = getMenuInflater();
|
MenuInflater inflater = getMenuInflater();
|
||||||
inflater.inflate(R.menu.group_actions, menu);
|
inflater.inflate(R.menu.group_actions, menu);
|
||||||
|
|
||||||
|
writeMenuItem = menu.findItem(R.id.action_group_compose_message);
|
||||||
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);
|
||||||
showMenuItems();
|
showMenuItems();
|
||||||
@@ -143,6 +161,18 @@ public class GroupActivity extends
|
|||||||
return R.string.groups_message_received;
|
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() {
|
private void showMenuItems() {
|
||||||
if (leaveMenuItem == null || dissolveMenuItem == null) return;
|
if (leaveMenuItem == null || dissolveMenuItem == null) return;
|
||||||
if (isCreator) {
|
if (isCreator) {
|
||||||
@@ -152,6 +182,7 @@ public class GroupActivity extends
|
|||||||
leaveMenuItem.setVisible(true);
|
leaveMenuItem.setVisible(true);
|
||||||
dissolveMenuItem.setVisible(false);
|
dissolveMenuItem.setVisible(false);
|
||||||
}
|
}
|
||||||
|
if (isDissolved) writeMenuItem.setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showLeaveGroupDialog() {
|
private void showLeaveGroupDialog() {
|
||||||
|
|||||||
@@ -13,4 +13,7 @@ public interface GroupController
|
|||||||
void isCreator(PrivateGroup group,
|
void isCreator(PrivateGroup group,
|
||||||
ResultExceptionHandler<Boolean, DbException> handler);
|
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 android.support.annotation.CallSuper;
|
||||||
|
|
||||||
import org.briarproject.android.api.AndroidNotificationManager;
|
|
||||||
import org.briarproject.android.controller.DbControllerImpl;
|
import org.briarproject.android.controller.DbControllerImpl;
|
||||||
import org.briarproject.android.controller.handler.ResultExceptionHandler;
|
import org.briarproject.android.controller.handler.ResultExceptionHandler;
|
||||||
import org.briarproject.api.clients.MessageTracker.GroupCount;
|
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.GroupAddedEvent;
|
||||||
import org.briarproject.api.event.GroupMessageAddedEvent;
|
import org.briarproject.api.event.GroupMessageAddedEvent;
|
||||||
import org.briarproject.api.event.GroupRemovedEvent;
|
import org.briarproject.api.event.GroupRemovedEvent;
|
||||||
import org.briarproject.api.identity.IdentityManager;
|
|
||||||
import org.briarproject.api.lifecycle.LifecycleManager;
|
import org.briarproject.api.lifecycle.LifecycleManager;
|
||||||
import org.briarproject.api.privategroup.GroupMessageHeader;
|
import org.briarproject.api.privategroup.GroupMessageHeader;
|
||||||
import org.briarproject.api.privategroup.PrivateGroup;
|
import org.briarproject.api.privategroup.PrivateGroup;
|
||||||
@@ -44,23 +42,17 @@ public class GroupListControllerImpl extends DbControllerImpl
|
|||||||
private final PrivateGroupManager groupManager;
|
private final PrivateGroupManager groupManager;
|
||||||
private final GroupInvitationManager groupInvitationManager;
|
private final GroupInvitationManager groupInvitationManager;
|
||||||
private final EventBus eventBus;
|
private final EventBus eventBus;
|
||||||
private final AndroidNotificationManager notificationManager;
|
|
||||||
private final IdentityManager identityManager;
|
|
||||||
|
|
||||||
protected volatile GroupListListener listener;
|
protected volatile GroupListListener listener;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
GroupListControllerImpl(@DatabaseExecutor Executor dbExecutor,
|
GroupListControllerImpl(@DatabaseExecutor Executor dbExecutor,
|
||||||
LifecycleManager lifecycleManager, PrivateGroupManager groupManager,
|
LifecycleManager lifecycleManager, PrivateGroupManager groupManager,
|
||||||
GroupInvitationManager groupInvitationManager, EventBus eventBus,
|
GroupInvitationManager groupInvitationManager, EventBus eventBus) {
|
||||||
AndroidNotificationManager notificationManager,
|
|
||||||
IdentityManager identityManager) {
|
|
||||||
super(dbExecutor, lifecycleManager);
|
super(dbExecutor, lifecycleManager);
|
||||||
this.groupManager = groupManager;
|
this.groupManager = groupManager;
|
||||||
this.groupInvitationManager = groupInvitationManager;
|
this.groupInvitationManager = groupInvitationManager;
|
||||||
this.eventBus = eventBus;
|
this.eventBus = eventBus;
|
||||||
this.notificationManager = notificationManager;
|
|
||||||
this.identityManager = identityManager;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user