mirror of
https://github.com/oxen-io/session-android.git
synced 2025-06-26 20:48:29 +00:00
Fix incorrect UI for inactive groups.
This commit is contained in:
parent
a5dbb5d91f
commit
fb00652396
@ -815,10 +815,9 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||||||
} else {
|
} else {
|
||||||
menu.findItem(R.id.menu_distribution_conversation).setChecked(true);
|
menu.findItem(R.id.menu_distribution_conversation).setChecked(true);
|
||||||
}
|
}
|
||||||
inflater.inflate(R.menu.conversation_active_group_options, menu);
|
|
||||||
} else if (isActiveV2Group || isActiveGroup) {
|
|
||||||
inflater.inflate(R.menu.conversation_active_group_options, menu);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inflater.inflate(R.menu.conversation_active_group_options, menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
inflater.inflate(R.menu.conversation, menu);
|
inflater.inflate(R.menu.conversation, menu);
|
||||||
@ -865,7 +864,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||||||
if (isActiveV2Group) {
|
if (isActiveV2Group) {
|
||||||
hideMenuItem(menu, R.id.menu_mute_notifications);
|
hideMenuItem(menu, R.id.menu_mute_notifications);
|
||||||
hideMenuItem(menu, R.id.menu_conversation_settings);
|
hideMenuItem(menu, R.id.menu_conversation_settings);
|
||||||
} else if (isActiveGroup) {
|
} else if (isGroupConversation()) {
|
||||||
hideMenuItem(menu, R.id.menu_conversation_settings);
|
hideMenuItem(menu, R.id.menu_conversation_settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2227,6 +2226,10 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||||||
private Drafts getDraftsForCurrentState() {
|
private Drafts getDraftsForCurrentState() {
|
||||||
Drafts drafts = new Drafts();
|
Drafts drafts = new Drafts();
|
||||||
|
|
||||||
|
if (recipient.get().isGroup() && !recipient.get().isActiveGroup()) {
|
||||||
|
return drafts;
|
||||||
|
}
|
||||||
|
|
||||||
if (!Util.isEmpty(composeText)) {
|
if (!Util.isEmpty(composeText)) {
|
||||||
drafts.add(new Draft(Draft.TEXT, composeText.getTextTrimmed().toString()));
|
drafts.add(new Draft(Draft.TEXT, composeText.getTextTrimmed().toString()));
|
||||||
List<Mention> draftMentions = composeText.getMentions();
|
List<Mention> draftMentions = composeText.getMentions();
|
||||||
@ -3081,7 +3084,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||||||
{
|
{
|
||||||
reactionOverlay.setOnToolbarItemClickedListener(toolbarListener);
|
reactionOverlay.setOnToolbarItemClickedListener(toolbarListener);
|
||||||
reactionOverlay.setOnHideListener(onHideListener);
|
reactionOverlay.setOnHideListener(onHideListener);
|
||||||
reactionOverlay.show(this, maskTarget, messageRecord, inputAreaHeight());
|
reactionOverlay.show(this, maskTarget, recipient.get(), messageRecord, inputAreaHeight());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -226,7 +226,10 @@ public class ConversationFragment extends LoggingFragment {
|
|||||||
|
|
||||||
new ConversationItemSwipeCallback(
|
new ConversationItemSwipeCallback(
|
||||||
conversationMessage -> actionMode == null &&
|
conversationMessage -> actionMode == null &&
|
||||||
MenuState.canReplyToMessage(MenuState.isActionMessage(conversationMessage.getMessageRecord()), conversationMessage.getMessageRecord(), messageRequestViewModel.shouldShowMessageRequest()),
|
MenuState.canReplyToMessage(recipient.get(),
|
||||||
|
MenuState.isActionMessage(conversationMessage.getMessageRecord()),
|
||||||
|
conversationMessage.getMessageRecord(),
|
||||||
|
messageRequestViewModel.shouldShowMessageRequest()),
|
||||||
this::handleReplyMessage
|
this::handleReplyMessage
|
||||||
).attachToRecyclerView(list);
|
).attachToRecyclerView(list);
|
||||||
|
|
||||||
@ -573,7 +576,7 @@ public class ConversationFragment extends LoggingFragment {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
MenuState menuState = MenuState.getMenuState(Stream.of(messages).map(ConversationMessage::getMessageRecord).collect(Collectors.toSet()), messageRequestViewModel.shouldShowMessageRequest());
|
MenuState menuState = MenuState.getMenuState(recipient.get(), Stream.of(messages).map(ConversationMessage::getMessageRecord).collect(Collectors.toSet()), messageRequestViewModel.shouldShowMessageRequest());
|
||||||
|
|
||||||
menu.findItem(R.id.menu_context_forward).setVisible(menuState.shouldShowForwardAction());
|
menu.findItem(R.id.menu_context_forward).setVisible(menuState.shouldShowForwardAction());
|
||||||
menu.findItem(R.id.menu_context_reply).setVisible(menuState.shouldShowReplyAction());
|
menu.findItem(R.id.menu_context_reply).setVisible(menuState.shouldShowReplyAction());
|
||||||
@ -1223,11 +1226,12 @@ public class ConversationFragment extends LoggingFragment {
|
|||||||
|
|
||||||
MessageRecord messageRecord = conversationMessage.getMessageRecord();
|
MessageRecord messageRecord = conversationMessage.getMessageRecord();
|
||||||
|
|
||||||
if (messageRecord.isSecure() &&
|
if (messageRecord.isSecure() &&
|
||||||
!messageRecord.isRemoteDelete() &&
|
!messageRecord.isRemoteDelete() &&
|
||||||
!messageRecord.isUpdate() &&
|
!messageRecord.isUpdate() &&
|
||||||
!recipient.get().isBlocked() &&
|
!recipient.get().isBlocked() &&
|
||||||
!messageRequestViewModel.shouldShowMessageRequest() &&
|
!messageRequestViewModel.shouldShowMessageRequest() &&
|
||||||
|
(!recipient.get().isGroup() || recipient.get().isActiveGroup()) &&
|
||||||
((ConversationAdapter) list.getAdapter()).getSelectedItems().isEmpty())
|
((ConversationAdapter) list.getAdapter()).getSelectedItems().isEmpty())
|
||||||
{
|
{
|
||||||
isReacting = true;
|
isReacting = true;
|
||||||
|
@ -5,9 +5,7 @@ import android.animation.AnimatorSet;
|
|||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.PointF;
|
import android.graphics.PointF;
|
||||||
import android.graphics.PorterDuff;
|
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.graphics.drawable.Drawable;
|
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.HapticFeedbackConstants;
|
import android.view.HapticFeedbackConstants;
|
||||||
@ -24,7 +22,6 @@ import androidx.annotation.Nullable;
|
|||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||||
import androidx.constraintlayout.widget.ConstraintSet;
|
import androidx.constraintlayout.widget.ConstraintSet;
|
||||||
import androidx.core.content.ContextCompat;
|
|
||||||
import androidx.vectordrawable.graphics.drawable.AnimatorInflaterCompat;
|
import androidx.vectordrawable.graphics.drawable.AnimatorInflaterCompat;
|
||||||
|
|
||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
@ -60,6 +57,7 @@ public final class ConversationReactionOverlay extends RelativeLayout {
|
|||||||
private final PointF lastSeenDownPoint = new PointF();
|
private final PointF lastSeenDownPoint = new PointF();
|
||||||
|
|
||||||
private Activity activity;
|
private Activity activity;
|
||||||
|
private Recipient conversationRecipient;
|
||||||
private MessageRecord messageRecord;
|
private MessageRecord messageRecord;
|
||||||
private OverlayState overlayState = OverlayState.HIDDEN;
|
private OverlayState overlayState = OverlayState.HIDDEN;
|
||||||
|
|
||||||
@ -145,15 +143,21 @@ public final class ConversationReactionOverlay extends RelativeLayout {
|
|||||||
maskView.setTargetParentTranslationY(translationY);
|
maskView.setTargetParentTranslationY(translationY);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void show(@NonNull Activity activity, @NonNull View maskTarget, @NonNull MessageRecord messageRecord, int maskPaddingBottom) {
|
public void show(@NonNull Activity activity,
|
||||||
|
@NonNull View maskTarget,
|
||||||
|
@NonNull Recipient conversationRecipient,
|
||||||
|
@NonNull MessageRecord messageRecord,
|
||||||
|
int maskPaddingBottom)
|
||||||
|
{
|
||||||
|
|
||||||
if (overlayState != OverlayState.HIDDEN) {
|
if (overlayState != OverlayState.HIDDEN) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.messageRecord = messageRecord;
|
this.messageRecord = messageRecord;
|
||||||
overlayState = OverlayState.UNINITAILIZED;
|
this.conversationRecipient = conversationRecipient;
|
||||||
selected = -1;
|
overlayState = OverlayState.UNINITAILIZED;
|
||||||
|
selected = -1;
|
||||||
|
|
||||||
setupToolbarMenuItems();
|
setupToolbarMenuItems();
|
||||||
setupSelectedEmoji();
|
setupSelectedEmoji();
|
||||||
@ -498,7 +502,7 @@ public final class ConversationReactionOverlay extends RelativeLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setupToolbarMenuItems() {
|
private void setupToolbarMenuItems() {
|
||||||
MenuState menuState = MenuState.getMenuState(Collections.singleton(messageRecord), false);
|
MenuState menuState = MenuState.getMenuState(conversationRecipient, Collections.singleton(messageRecord), false);
|
||||||
|
|
||||||
toolbar.getMenu().findItem(R.id.action_copy).setVisible(menuState.shouldShowCopyAction());
|
toolbar.getMenu().findItem(R.id.action_copy).setVisible(menuState.shouldShowCopyAction());
|
||||||
toolbar.getMenu().findItem(R.id.action_download).setVisible(menuState.shouldShowSaveAttachmentAction());
|
toolbar.getMenu().findItem(R.id.action_download).setVisible(menuState.shouldShowSaveAttachmentAction());
|
||||||
|
@ -5,6 +5,7 @@ import androidx.annotation.NonNull;
|
|||||||
import org.thoughtcrime.securesms.database.model.MediaMmsMessageRecord;
|
import org.thoughtcrime.securesms.database.model.MediaMmsMessageRecord;
|
||||||
import org.thoughtcrime.securesms.database.model.MessageRecord;
|
import org.thoughtcrime.securesms.database.model.MessageRecord;
|
||||||
import org.thoughtcrime.securesms.database.model.MmsMessageRecord;
|
import org.thoughtcrime.securesms.database.model.MmsMessageRecord;
|
||||||
|
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||||
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@ -50,7 +51,8 @@ final class MenuState {
|
|||||||
return copy;
|
return copy;
|
||||||
}
|
}
|
||||||
|
|
||||||
static MenuState getMenuState(@NonNull Set<MessageRecord> messageRecords,
|
static MenuState getMenuState(@NonNull Recipient conversationRecipient,
|
||||||
|
@NonNull Set<MessageRecord> messageRecords,
|
||||||
boolean shouldShowMessageRequest)
|
boolean shouldShowMessageRequest)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -102,20 +104,21 @@ final class MenuState {
|
|||||||
((MediaMmsMessageRecord)messageRecord).getSlideDeck().getStickerSlide() == null)
|
((MediaMmsMessageRecord)messageRecord).getSlideDeck().getStickerSlide() == null)
|
||||||
.shouldShowForwardAction(!actionMessage && !sharedContact && !viewOnce && !remoteDelete)
|
.shouldShowForwardAction(!actionMessage && !sharedContact && !viewOnce && !remoteDelete)
|
||||||
.shouldShowDetailsAction(!actionMessage)
|
.shouldShowDetailsAction(!actionMessage)
|
||||||
.shouldShowReplyAction(canReplyToMessage(actionMessage, messageRecord, shouldShowMessageRequest));
|
.shouldShowReplyAction(canReplyToMessage(conversationRecipient, actionMessage, messageRecord, shouldShowMessageRequest));
|
||||||
}
|
}
|
||||||
|
|
||||||
return builder.shouldShowCopyAction(!actionMessage && !remoteDelete && hasText)
|
return builder.shouldShowCopyAction(!actionMessage && !remoteDelete && hasText)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
static boolean canReplyToMessage(boolean actionMessage, @NonNull MessageRecord messageRecord, boolean isDisplayingMessageRequest) {
|
static boolean canReplyToMessage(@NonNull Recipient conversationRecipient, boolean actionMessage, @NonNull MessageRecord messageRecord, boolean isDisplayingMessageRequest) {
|
||||||
return !actionMessage &&
|
return !actionMessage &&
|
||||||
!messageRecord.isRemoteDelete() &&
|
!messageRecord.isRemoteDelete() &&
|
||||||
!messageRecord.isPending() &&
|
!messageRecord.isPending() &&
|
||||||
!messageRecord.isFailed() &&
|
!messageRecord.isFailed() &&
|
||||||
!isDisplayingMessageRequest &&
|
!isDisplayingMessageRequest &&
|
||||||
messageRecord.isSecure() &&
|
messageRecord.isSecure() &&
|
||||||
|
(!conversationRecipient.isGroup() || conversationRecipient.isActiveGroup()) &&
|
||||||
!messageRecord.getRecipient().isBlocked();
|
!messageRecord.getRecipient().isBlocked();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user