That fuck shit the fascists are using
1package org.tm.archive.longmessage;
2
3import android.app.Application;
4
5import androidx.annotation.NonNull;
6import androidx.lifecycle.LiveData;
7import androidx.lifecycle.MutableLiveData;
8import androidx.lifecycle.ViewModel;
9import androidx.lifecycle.ViewModelProvider;
10
11import org.tm.archive.database.DatabaseObserver;
12import org.tm.archive.dependencies.ApplicationDependencies;
13
14import java.util.Optional;
15
16
17class LongMessageViewModel extends ViewModel {
18
19 private final MutableLiveData<Optional<LongMessage>> message;
20 private final DatabaseObserver.Observer threadObserver;
21
22 private LongMessageViewModel(@NonNull Application application, @NonNull LongMessageRepository repository, long messageId, boolean isMms) {
23 this.message = new MutableLiveData<>();
24 this.threadObserver = () -> repository.getMessage(application, messageId, message::postValue);
25
26 repository.getMessage(application, messageId, longMessage -> {
27 if (longMessage.isPresent()) {
28 ApplicationDependencies.getDatabaseObserver().registerConversationObserver(longMessage.get().getMessageRecord().getThreadId(), threadObserver);
29 }
30
31 message.postValue(longMessage);
32 });
33 }
34
35 LiveData<Optional<LongMessage>> getMessage() {
36 return message;
37 }
38
39 @Override
40 protected void onCleared() {
41 ApplicationDependencies.getDatabaseObserver().unregisterObserver(threadObserver);
42 }
43
44 static class Factory extends ViewModelProvider.NewInstanceFactory {
45
46 private final Application context;
47 private final LongMessageRepository repository;
48 private final long messageId;
49 private final boolean isMms;
50
51 public Factory(@NonNull Application application, @NonNull LongMessageRepository repository, long messageId, boolean isMms) {
52 this.context = application;
53 this.repository = repository;
54 this.messageId = messageId;
55 this.isMms = isMms;
56 }
57
58 @Override
59 public @NonNull<T extends ViewModel> T create(@NonNull Class<T> modelClass) {
60 //noinspection ConstantConditions
61 return modelClass.cast(new LongMessageViewModel(context, repository, messageId, isMms));
62 }
63 }
64}