That fuck shit the fascists are using
1package org.tm.archive.messagedetails;
2
3import androidx.annotation.NonNull;
4import androidx.lifecycle.LiveData;
5import androidx.lifecycle.Transformations;
6import androidx.lifecycle.ViewModel;
7import androidx.lifecycle.ViewModelProvider;
8
9import org.tm.archive.database.model.MessageRecord;
10import org.tm.archive.recipients.Recipient;
11import org.tm.archive.recipients.RecipientId;
12
13import java.util.Objects;
14
15final class MessageDetailsViewModel extends ViewModel {
16
17 private final LiveData<Recipient> recipient;
18 private final LiveData<MessageDetails> messageDetails;
19
20 private MessageDetailsViewModel(RecipientId recipientId, Long messageId) {
21 recipient = Recipient.live(recipientId).getLiveData();
22
23 MessageDetailsRepository repository = new MessageDetailsRepository();
24 LiveData<MessageRecord> messageRecord = repository.getMessageRecord(messageId);
25
26 messageDetails = Transformations.switchMap(messageRecord, repository::getMessageDetails);
27 }
28
29 @NonNull LiveData<MessageDetails> getMessageDetails() {
30 return messageDetails;
31 }
32
33 @NonNull LiveData<Recipient> getRecipient() {
34 return recipient;
35 }
36
37 static final class Factory implements ViewModelProvider.Factory {
38
39 private final RecipientId recipientId;
40 private final Long messageId;
41
42 Factory(RecipientId recipientId, Long messageId) {
43 this.recipientId = recipientId;
44 this.messageId = messageId;
45 }
46
47 @Override
48 public @NonNull <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
49 return Objects.requireNonNull(modelClass.cast(new MessageDetailsViewModel(recipientId, messageId)));
50 }
51 }
52}