diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactRepository.java b/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactRepository.java index 9d663c7c1b..546514b43e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactRepository.java @@ -10,7 +10,6 @@ import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.annotation.WorkerThread; -import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.database.RecipientDatabase; import org.thoughtcrime.securesms.database.SignalDatabase; import org.thoughtcrime.securesms.phonenumbers.PhoneNumberFormatter; @@ -101,9 +100,9 @@ public class ContactRepository { })); }}; - public ContactRepository(@NonNull Context context) { + public ContactRepository(@NonNull Context context, @NonNull String noteToSelfTitle) { this.recipientDatabase = SignalDatabase.recipients(); - this.noteToSelfTitle = context.getString(R.string.note_to_self); + this.noteToSelfTitle = noteToSelfTitle; this.context = context.getApplicationContext(); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactsCursorLoader.java b/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactsCursorLoader.java index d3d3d5061e..87da663e1d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactsCursorLoader.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactsCursorLoader.java @@ -75,7 +75,7 @@ public class ContactsCursorLoader extends AbstractContactsCursorLoader { this.mode = mode; this.recents = recents; - this.contactRepository = new ContactRepository(context); + this.contactRepository = new ContactRepository(context, context.getString(R.string.note_to_self)); } protected final List getUnfilteredResults() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java index 735ac0019a..2acd2508c7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java @@ -2191,7 +2191,9 @@ public class ConversationParentFragment extends Fragment } private void initializeSearchObserver() { - searchViewModel = new ViewModelProvider(this).get(ConversationSearchViewModel.class); + ConversationSearchViewModel.Factory viewModelFactory = new ConversationSearchViewModel.Factory(getString(R.string.note_to_self)); + + searchViewModel = new ViewModelProvider(this, viewModelFactory).get(ConversationSearchViewModel.class); searchViewModel.getSearchResults().observe(getViewLifecycleOwner(), result -> { if (result == null) return; diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationSearchViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationSearchViewModel.java index bf609f5c3b..6f1060fee2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationSearchViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationSearchViewModel.java @@ -1,11 +1,10 @@ package org.thoughtcrime.securesms.conversation; -import android.app.Application; - import androidx.annotation.NonNull; -import androidx.lifecycle.AndroidViewModel; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; +import androidx.lifecycle.ViewModelProvider; import org.signal.core.util.ThreadUtil; import org.thoughtcrime.securesms.search.MessageResult; @@ -15,7 +14,7 @@ import org.thoughtcrime.securesms.util.Debouncer; import java.util.Collections; import java.util.List; -public class ConversationSearchViewModel extends AndroidViewModel { +public class ConversationSearchViewModel extends ViewModel { private final SearchRepository searchRepository; private final MutableLiveData result; @@ -26,11 +25,10 @@ public class ConversationSearchViewModel extends AndroidViewModel { private String activeQuery; private long activeThreadId; - public ConversationSearchViewModel(@NonNull Application application) { - super(application); + public ConversationSearchViewModel(@NonNull String noteToSelfTitle) { result = new MutableLiveData<>(); debouncer = new Debouncer(500); - searchRepository = new SearchRepository(); + searchRepository = new SearchRepository(noteToSelfTitle); } LiveData getSearchResults() { @@ -128,4 +126,19 @@ public class ConversationSearchViewModel extends AndroidViewModel { return position; } } + + public static class Factory extends ViewModelProvider.NewInstanceFactory { + + private final String noteToSelfTitle; + + public Factory(@NonNull String noteToSelfTitle) { + this.noteToSelfTitle = noteToSelfTitle; + } + + @Override + public @NonNull T create(@NonNull Class modelClass) { + //noinspection ConstantConditions + return modelClass.cast(new ConversationSearchViewModel(noteToSelfTitle)); + } + } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java index 57a7d462f1..bc60422ee7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java @@ -673,7 +673,10 @@ public class ConversationListFragment extends MainFragment implements ActionMode } private void initializeViewModel() { - viewModel = new ViewModelProvider(this, new ConversationListViewModel.Factory(isArchived())).get(ConversationListViewModel.class); + ConversationListViewModel.Factory viewModelFactory = new ConversationListViewModel.Factory(isArchived(), + getString(R.string.note_to_self)); + + viewModel = new ViewModelProvider(this, viewModelFactory).get(ConversationListViewModel.class); viewModel.getSearchResult().observe(getViewLifecycleOwner(), this::onSearchResultChanged); viewModel.getMegaphone().observe(getViewLifecycleOwner(), this::onMegaphoneChanged); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.java index f50a9ee438..8724e5c148 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.java @@ -290,15 +290,17 @@ class ConversationListViewModel extends ViewModel { public static class Factory extends ViewModelProvider.NewInstanceFactory { private final boolean isArchived; + private final String noteToSelfTitle; - public Factory(boolean isArchived) { - this.isArchived = isArchived; + public Factory(boolean isArchived, @NonNull String noteToSelfTitle) { + this.isArchived = isArchived; + this.noteToSelfTitle = noteToSelfTitle; } @Override public @NonNull T create(@NonNull Class modelClass) { //noinspection ConstantConditions - return modelClass.cast(new ConversationListViewModel(ApplicationDependencies.getApplication(), new SearchRepository(), isArchived)); + return modelClass.cast(new ConversationListViewModel(ApplicationDependencies.getApplication(), new SearchRepository(noteToSelfTitle), isArchived)); } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraContactsRepository.java b/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraContactsRepository.java index f774f2174f..ecb47831d7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraContactsRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraContactsRepository.java @@ -9,6 +9,7 @@ import androidx.annotation.WorkerThread; import org.signal.core.util.concurrent.SignalExecutors; import org.signal.core.util.logging.Log; +import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.contacts.ContactRepository; import org.thoughtcrime.securesms.database.GroupDatabase; import org.thoughtcrime.securesms.database.RecipientDatabase; @@ -48,7 +49,7 @@ class CameraContactsRepository { this.threadDatabase = SignalDatabase.threads(); this.groupDatabase = SignalDatabase.groups(); this.recipientDatabase = SignalDatabase.recipients(); - this.contactRepository = new ContactRepository(context); + this.contactRepository = new ContactRepository(context, context.getString(R.string.note_to_self)); this.serialExecutor = SignalExecutors.SERIAL; this.parallelExecutor = SignalExecutors.BOUNDED; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/search/SearchRepository.java b/app/src/main/java/org/thoughtcrime/securesms/search/SearchRepository.java index 22ea35bf77..2d17fcdc68 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/search/SearchRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/search/SearchRepository.java @@ -10,9 +10,9 @@ import androidx.annotation.Nullable; import com.annimon.stream.Stream; +import org.signal.core.util.concurrent.LatestPrioritizedSerialExecutor; import org.signal.core.util.concurrent.SignalExecutors; import org.signal.core.util.logging.Log; -import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.contacts.ContactRepository; import org.thoughtcrime.securesms.database.GroupDatabase; import org.thoughtcrime.securesms.database.MentionDatabase; @@ -32,7 +32,6 @@ import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.util.CursorUtil; import org.thoughtcrime.securesms.util.FtsUtil; import org.thoughtcrime.securesms.util.Util; -import org.signal.core.util.concurrent.LatestPrioritizedSerialExecutor; import org.thoughtcrime.securesms.util.concurrent.SerialExecutor; import java.util.ArrayList; @@ -56,6 +55,7 @@ public class SearchRepository { private static final String TAG = Log.tag(SearchRepository.class); private final Context context; + private final String noteToSelfTitle; private final SearchDatabase searchDatabase; private final ContactRepository contactRepository; private final ThreadDatabase threadDatabase; @@ -66,14 +66,15 @@ public class SearchRepository { private final LatestPrioritizedSerialExecutor searchExecutor; private final Executor serialExecutor; - public SearchRepository() { + public SearchRepository(@NonNull String noteToSelfTitle) { this.context = ApplicationDependencies.getApplication().getApplicationContext(); + this.noteToSelfTitle = noteToSelfTitle; this.searchDatabase = SignalDatabase.messageSearch(); this.threadDatabase = SignalDatabase.threads(); this.recipientDatabase = SignalDatabase.recipients(); this.mentionDatabase = SignalDatabase.mentions(); this.mmsDatabase = SignalDatabase.mms(); - this.contactRepository = new ContactRepository(context); + this.contactRepository = new ContactRepository(context, noteToSelfTitle); this.searchExecutor = new LatestPrioritizedSerialExecutor(SignalExecutors.BOUNDED); this.serialExecutor = new SerialExecutor(SignalExecutors.BOUNDED); } @@ -173,7 +174,7 @@ public class SearchRepository { } } - if (context.getString(R.string.note_to_self).toLowerCase().contains(query.toLowerCase())) { + if (noteToSelfTitle.toLowerCase().contains(query.toLowerCase())) { recipientIds.add(Recipient.self().getId()); }