Show reactions in quote bottom sheet.

fork-5.53.8
Greyson Parrelli 2022-06-30 11:28:43 -04:00 zatwierdzone przez Cody Henthorne
rodzic 3e3ccd4b96
commit a87fe78c33
3 zmienionych plików z 22 dodań i 11 usunięć

Wyświetl plik

@ -44,7 +44,7 @@ import java.util.stream.Collectors;
/**
* Core data source for loading an individual conversation.
*/
class ConversationDataSource implements PagedDataSource<MessageId, ConversationMessage> {
public class ConversationDataSource implements PagedDataSource<MessageId, ConversationMessage> {
private static final String TAG = Log.tag(ConversationDataSource.class);
@ -126,10 +126,10 @@ class ConversationDataSource implements PagedDataSource<MessageId, ConversationM
mentionHelper.fetchMentions(context);
stopwatch.split("mentions");
reactionHelper.fetchReactions(context);
reactionHelper.fetchReactions();
stopwatch.split("reactions");
records = reactionHelper.buildUpdatedModels(context, records);
records = reactionHelper.buildUpdatedModels(records);
stopwatch.split("reaction-models");
attachmentHelper.fetchAttachments(context);
@ -252,7 +252,7 @@ class ConversationDataSource implements PagedDataSource<MessageId, ConversationM
}
}
private static class ReactionHelper {
public static class ReactionHelper {
private Collection<MessageId> messageIds = new LinkedList<>();
private Map<MessageId, List<ReactionRecord>> messageIdToReactions = new HashMap<>();
@ -261,11 +261,17 @@ class ConversationDataSource implements PagedDataSource<MessageId, ConversationM
messageIds.add(new MessageId(record.getId(), record.isMms()));
}
void fetchReactions(Context context) {
public void addAll(List<MessageRecord> records) {
for (MessageRecord record : records) {
add(record);
}
}
public void fetchReactions() {
messageIdToReactions = SignalDatabase.reactions().getReactionsForMessages(messageIds);
}
@NonNull List<MessageRecord> buildUpdatedModels(@NonNull Context context, @NonNull List<MessageRecord> records) {
public @NonNull List<MessageRecord> buildUpdatedModels(@NonNull List<MessageRecord> records) {
return records.stream()
.map(record -> {
MessageId messageId = new MessageId(record.getId(), record.isMms());
@ -276,7 +282,7 @@ class ConversationDataSource implements PagedDataSource<MessageId, ConversationM
.collect(Collectors.toList());
}
static MessageRecord recordWithReactions(@NonNull MessageRecord record, List<ReactionRecord> reactions) {
private static MessageRecord recordWithReactions(@NonNull MessageRecord record, List<ReactionRecord> reactions) {
if (Util.hasItems(reactions)) {
if (record instanceof MediaMmsMessageRecord) {
return ((MediaMmsMessageRecord) record).withReactions(reactions);

Wyświetl plik

@ -128,7 +128,7 @@ class MessageQuotesBottomSheet : FixedRoundedCornerBottomSheetDialogFragment() {
override fun onReactionClicked(multiselectPart: MultiselectPart, messageId: Long, isMms: Boolean) {
dismiss()
getAdapterListener().onReactionClicked(multiselectPart, messageId, isMms)
getCallback().jumpToMessage(multiselectPart.conversationMessage.messageRecord)
}
override fun onGroupMemberClicked(recipientId: RecipientId, groupId: GroupId) {

Wyświetl plik

@ -7,6 +7,7 @@ import androidx.lifecycle.ViewModelProvider
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.schedulers.Schedulers
import org.thoughtcrime.securesms.conversation.ConversationDataSource
import org.thoughtcrime.securesms.conversation.ConversationMessage
import org.thoughtcrime.securesms.conversation.colors.GroupAuthorNameColorHelper
import org.thoughtcrime.securesms.conversation.colors.NameColor
@ -26,9 +27,13 @@ class MessageQuotesViewModel(
fun getMessages(): Observable<List<ConversationMessage>> {
return Observable.create<List<ConversationMessage>> { emitter ->
val quotes: List<ConversationMessage> = SignalDatabase
.mmsSms
.getAllMessagesThatQuote(messageId)
val records: List<MessageRecord> = SignalDatabase.mmsSms.getAllMessagesThatQuote(messageId)
val helper = ConversationDataSource.ReactionHelper()
helper.addAll(records)
helper.fetchReactions()
val quotes = helper.buildUpdatedModels(records)
.map { ConversationMessage.ConversationMessageFactory.createWithUnresolvedData(getApplication(), it) }
val originalRecord: MessageRecord? = if (messageId.mms) {