Render GV1->GV2 migration event.

This commit is contained in:
Greyson Parrelli
2020-11-04 14:19:14 -05:00
committed by Alan Evans
parent 6bb9d27d4e
commit 5e536c3fa5
21 changed files with 447 additions and 26 deletions

View File

@@ -22,7 +22,6 @@ import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
@@ -90,6 +89,7 @@ import org.thoughtcrime.securesms.database.model.MessageRecord;
import org.thoughtcrime.securesms.database.model.MmsMessageRecord;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.groups.GroupId;
import org.thoughtcrime.securesms.groups.ui.migration.GroupsV1MigrationBottomSheetDialogFragment;
import org.thoughtcrime.securesms.jobs.DirectoryRefreshJob;
import org.thoughtcrime.securesms.jobs.MultiDeviceViewOnceOpenJob;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
@@ -1417,6 +1417,11 @@ public class ConversationFragment extends LoggingFragment {
public boolean onUrlClicked(@NonNull String url) {
return CommunicationActions.handlePotentialGroupLinkUrl(requireActivity(), url);
}
@Override
public void onGroupMigrationLearnMoreClicked(@NonNull List<RecipientId> pendingRecipients) {
GroupsV1MigrationBottomSheetDialogFragment.showForLearnMore(requireFragmentManager(), pendingRecipients);
}
}
@Override

View File

@@ -42,12 +42,14 @@ public final class ConversationUpdateItem extends LinearLayout
private Set<ConversationMessage> batchSelected;
private TextView body;
private LiveRecipient sender;
private ConversationMessage conversationMessage;
private MessageRecord messageRecord;
private Locale locale;
private LiveData<Spannable> displayBody;
private TextView body;
private TextView actionButton;
private LiveRecipient sender;
private ConversationMessage conversationMessage;
private Optional<MessageRecord> nextMessageRecord;
private MessageRecord messageRecord;
private LiveData<Spannable> displayBody;
private EventListener eventListener;
private final UpdateObserver updateObserver = new UpdateObserver();
private final SenderObserver senderObserver = new SenderObserver();
@@ -63,7 +65,8 @@ public final class ConversationUpdateItem extends LinearLayout
@Override
public void onFinishInflate() {
super.onFinishInflate();
this.body = findViewById(R.id.conversation_update_body);
this.body = findViewById(R.id.conversation_update_body);
this.actionButton = findViewById(R.id.conversation_update_action);
this.setOnClickListener(new InternalClickListener(null));
}
@@ -82,12 +85,12 @@ public final class ConversationUpdateItem extends LinearLayout
{
this.batchSelected = batchSelected;
bind(lifecycleOwner, conversationMessage, locale);
bind(lifecycleOwner, conversationMessage, nextMessageRecord);
}
@Override
public void setEventListener(@Nullable EventListener listener) {
// No events to report yet
this.eventListener = listener;
}
@Override
@@ -95,10 +98,13 @@ public final class ConversationUpdateItem extends LinearLayout
return conversationMessage;
}
private void bind(@NonNull LifecycleOwner lifecycleOwner, @NonNull ConversationMessage conversationMessage, @NonNull Locale locale) {
private void bind(@NonNull LifecycleOwner lifecycleOwner,
@NonNull ConversationMessage conversationMessage,
@NonNull Optional<MessageRecord> nextMessageRecord)
{
this.conversationMessage = conversationMessage;
this.messageRecord = conversationMessage.getMessageRecord();
this.locale = locale;
this.nextMessageRecord = nextMessageRecord;
observeSender(lifecycleOwner, messageRecord.getIndividualRecipient());
@@ -106,7 +112,7 @@ public final class ConversationUpdateItem extends LinearLayout
LiveData<Spannable> liveUpdateMessage = LiveUpdateMessage.fromMessageDescription(getContext(), updateDescription);
LiveData<Spannable> spannableMessage = loading(liveUpdateMessage);
present(conversationMessage);
present(conversationMessage, nextMessageRecord);
observeDisplayBody(lifecycleOwner, spannableMessage);
}
@@ -156,9 +162,24 @@ public final class ConversationUpdateItem extends LinearLayout
}
}
private void present(ConversationMessage conversationMessage) {
private void present(ConversationMessage conversationMessage, @NonNull Optional<MessageRecord> nextMessageRecord) {
if (batchSelected.contains(conversationMessage)) setSelected(true);
else setSelected(false);
if (conversationMessage.getMessageRecord().isGroupV1MigrationEvent() &&
(!nextMessageRecord.isPresent() || !nextMessageRecord.get().isGroupV1MigrationEvent()))
{
actionButton.setText(R.string.ConversationUpdateItem_learn_more);
actionButton.setVisibility(VISIBLE);
actionButton.setOnClickListener(v -> {
if (batchSelected.isEmpty() && eventListener != null) {
eventListener.onGroupMigrationLearnMoreClicked(conversationMessage.getMessageRecord().getGroupV1MigrationEventInvites());
}
});
} else {
actionButton.setVisibility(GONE);
actionButton.setOnClickListener(null);
}
}
@Override
@@ -170,7 +191,7 @@ public final class ConversationUpdateItem extends LinearLayout
@Override
public void onChanged(Recipient recipient) {
present(conversationMessage);
present(conversationMessage, nextMessageRecord);
}
}