mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-22 09:49:30 +01:00
Display a loading message if group update message is taking a while to load.
This commit is contained in:
committed by
Greyson Parrelli
parent
5ae96905bb
commit
34ef8b52f6
@@ -91,7 +91,7 @@ public final class MessageDetailsActivity extends PassphraseRequiredActivity {
|
||||
|
||||
private void initializeList() {
|
||||
RecyclerView list = findViewById(R.id.message_details_list);
|
||||
adapter = new MessageDetailsAdapter(glideRequests);
|
||||
adapter = new MessageDetailsAdapter(this, glideRequests);
|
||||
|
||||
list.setAdapter(adapter);
|
||||
list.setItemAnimator(null);
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.recyclerview.widget.DiffUtil;
|
||||
import androidx.recyclerview.widget.ListAdapter;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
@@ -20,13 +21,15 @@ final class MessageDetailsAdapter extends ListAdapter<MessageDetailsAdapter.Mess
|
||||
|
||||
private static final Object EXPIRATION_TIMER_CHANGE_PAYLOAD = new Object();
|
||||
|
||||
private final LifecycleOwner lifecycleOwner;
|
||||
private final GlideRequests glideRequests;
|
||||
private boolean running;
|
||||
|
||||
MessageDetailsAdapter(GlideRequests glideRequests) {
|
||||
MessageDetailsAdapter(@NonNull LifecycleOwner lifecycleOwner, @NonNull GlideRequests glideRequests) {
|
||||
super(new MessageDetailsDiffer());
|
||||
this.glideRequests = glideRequests;
|
||||
running = true;
|
||||
this.lifecycleOwner = lifecycleOwner;
|
||||
this.glideRequests = glideRequests;
|
||||
this.running = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -46,7 +49,7 @@ final class MessageDetailsAdapter extends ListAdapter<MessageDetailsAdapter.Mess
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||
if (holder instanceof MessageHeaderViewHolder) {
|
||||
((MessageHeaderViewHolder) holder).bind((ConversationMessage) getItem(position).data, running);
|
||||
((MessageHeaderViewHolder) holder).bind(lifecycleOwner, (ConversationMessage) getItem(position).data, running);
|
||||
} else if (holder instanceof RecipientHeaderViewHolder) {
|
||||
((RecipientHeaderViewHolder) holder).bind((RecipientHeader) getItem(position).data);
|
||||
} else if (holder instanceof RecipientViewHolder) {
|
||||
|
||||
@@ -8,6 +8,8 @@ import android.view.ViewStub;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import org.thoughtcrime.securesms.R;
|
||||
@@ -64,9 +66,9 @@ final class MessageHeaderViewHolder extends RecyclerView.ViewHolder {
|
||||
receivedStub = itemView.findViewById(R.id.message_details_header_message_view_received_multimedia);
|
||||
}
|
||||
|
||||
void bind(ConversationMessage conversationMessage, boolean running) {
|
||||
void bind(@NonNull LifecycleOwner lifecycleOwner, @Nullable ConversationMessage conversationMessage, boolean running) {
|
||||
MessageRecord messageRecord = conversationMessage.getMessageRecord();
|
||||
bindMessageView(conversationMessage);
|
||||
bindMessageView(lifecycleOwner, conversationMessage);
|
||||
bindErrorState(messageRecord);
|
||||
bindSentReceivedDates(messageRecord);
|
||||
bindExpirationTime(messageRecord, running);
|
||||
@@ -77,7 +79,7 @@ final class MessageHeaderViewHolder extends RecyclerView.ViewHolder {
|
||||
bindExpirationTime(conversationMessage.getMessageRecord(), running);
|
||||
}
|
||||
|
||||
private void bindMessageView(ConversationMessage conversationMessage) {
|
||||
private void bindMessageView(@NonNull LifecycleOwner lifecycleOwner, @Nullable ConversationMessage conversationMessage) {
|
||||
if (conversationItem == null) {
|
||||
if (conversationMessage.getMessageRecord().isGroupAction()) {
|
||||
conversationItem = (ConversationItem) updateStub.inflate();
|
||||
@@ -87,7 +89,7 @@ final class MessageHeaderViewHolder extends RecyclerView.ViewHolder {
|
||||
conversationItem = (ConversationItem) receivedStub.inflate();
|
||||
}
|
||||
}
|
||||
conversationItem.bind(conversationMessage, Optional.absent(), Optional.absent(), glideRequests, Locale.getDefault(), new HashSet<>(), conversationMessage.getMessageRecord().getRecipient(), null, false);
|
||||
conversationItem.bind(lifecycleOwner, conversationMessage, Optional.absent(), Optional.absent(), glideRequests, Locale.getDefault(), new HashSet<>(), conversationMessage.getMessageRecord().getRecipient(), null, false);
|
||||
}
|
||||
|
||||
private void bindErrorState(MessageRecord messageRecord) {
|
||||
|
||||
Reference in New Issue
Block a user