kopia lustrzana https://github.com/ryukoposting/Signal-Android
Show reactions in quote bottom sheet.
rodzic
3e3ccd4b96
commit
a87fe78c33
|
@ -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);
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
Ładowanie…
Reference in New Issue