Fix l10n when searching for "Note to Self".
This commit is contained in:
parent
33f4bb0000
commit
125ff83bac
8 changed files with 43 additions and 22 deletions
|
@ -10,7 +10,6 @@ import android.text.TextUtils;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.WorkerThread;
|
import androidx.annotation.WorkerThread;
|
||||||
|
|
||||||
import org.thoughtcrime.securesms.R;
|
|
||||||
import org.thoughtcrime.securesms.database.RecipientDatabase;
|
import org.thoughtcrime.securesms.database.RecipientDatabase;
|
||||||
import org.thoughtcrime.securesms.database.SignalDatabase;
|
import org.thoughtcrime.securesms.database.SignalDatabase;
|
||||||
import org.thoughtcrime.securesms.phonenumbers.PhoneNumberFormatter;
|
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.recipientDatabase = SignalDatabase.recipients();
|
||||||
this.noteToSelfTitle = context.getString(R.string.note_to_self);
|
this.noteToSelfTitle = noteToSelfTitle;
|
||||||
this.context = context.getApplicationContext();
|
this.context = context.getApplicationContext();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,7 +75,7 @@ public class ContactsCursorLoader extends AbstractContactsCursorLoader {
|
||||||
|
|
||||||
this.mode = mode;
|
this.mode = mode;
|
||||||
this.recents = recents;
|
this.recents = recents;
|
||||||
this.contactRepository = new ContactRepository(context);
|
this.contactRepository = new ContactRepository(context, context.getString(R.string.note_to_self));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected final List<Cursor> getUnfilteredResults() {
|
protected final List<Cursor> getUnfilteredResults() {
|
||||||
|
|
|
@ -2191,7 +2191,9 @@ public class ConversationParentFragment extends Fragment
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initializeSearchObserver() {
|
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 -> {
|
searchViewModel.getSearchResults().observe(getViewLifecycleOwner(), result -> {
|
||||||
if (result == null) return;
|
if (result == null) return;
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
package org.thoughtcrime.securesms.conversation;
|
package org.thoughtcrime.securesms.conversation;
|
||||||
|
|
||||||
import android.app.Application;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.lifecycle.AndroidViewModel;
|
|
||||||
import androidx.lifecycle.LiveData;
|
import androidx.lifecycle.LiveData;
|
||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
import androidx.lifecycle.ViewModel;
|
||||||
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
|
|
||||||
import org.signal.core.util.ThreadUtil;
|
import org.signal.core.util.ThreadUtil;
|
||||||
import org.thoughtcrime.securesms.search.MessageResult;
|
import org.thoughtcrime.securesms.search.MessageResult;
|
||||||
|
@ -15,7 +14,7 @@ import org.thoughtcrime.securesms.util.Debouncer;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ConversationSearchViewModel extends AndroidViewModel {
|
public class ConversationSearchViewModel extends ViewModel {
|
||||||
|
|
||||||
private final SearchRepository searchRepository;
|
private final SearchRepository searchRepository;
|
||||||
private final MutableLiveData<SearchResult> result;
|
private final MutableLiveData<SearchResult> result;
|
||||||
|
@ -26,11 +25,10 @@ public class ConversationSearchViewModel extends AndroidViewModel {
|
||||||
private String activeQuery;
|
private String activeQuery;
|
||||||
private long activeThreadId;
|
private long activeThreadId;
|
||||||
|
|
||||||
public ConversationSearchViewModel(@NonNull Application application) {
|
public ConversationSearchViewModel(@NonNull String noteToSelfTitle) {
|
||||||
super(application);
|
|
||||||
result = new MutableLiveData<>();
|
result = new MutableLiveData<>();
|
||||||
debouncer = new Debouncer(500);
|
debouncer = new Debouncer(500);
|
||||||
searchRepository = new SearchRepository();
|
searchRepository = new SearchRepository(noteToSelfTitle);
|
||||||
}
|
}
|
||||||
|
|
||||||
LiveData<SearchResult> getSearchResults() {
|
LiveData<SearchResult> getSearchResults() {
|
||||||
|
@ -128,4 +126,19 @@ public class ConversationSearchViewModel extends AndroidViewModel {
|
||||||
return position;
|
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 extends ViewModel> T create(@NonNull Class<T> modelClass) {
|
||||||
|
//noinspection ConstantConditions
|
||||||
|
return modelClass.cast(new ConversationSearchViewModel(noteToSelfTitle));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -673,7 +673,10 @@ public class ConversationListFragment extends MainFragment implements ActionMode
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initializeViewModel() {
|
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.getSearchResult().observe(getViewLifecycleOwner(), this::onSearchResultChanged);
|
||||||
viewModel.getMegaphone().observe(getViewLifecycleOwner(), this::onMegaphoneChanged);
|
viewModel.getMegaphone().observe(getViewLifecycleOwner(), this::onMegaphoneChanged);
|
||||||
|
|
|
@ -290,15 +290,17 @@ class ConversationListViewModel extends ViewModel {
|
||||||
public static class Factory extends ViewModelProvider.NewInstanceFactory {
|
public static class Factory extends ViewModelProvider.NewInstanceFactory {
|
||||||
|
|
||||||
private final boolean isArchived;
|
private final boolean isArchived;
|
||||||
|
private final String noteToSelfTitle;
|
||||||
|
|
||||||
public Factory(boolean isArchived) {
|
public Factory(boolean isArchived, @NonNull String noteToSelfTitle) {
|
||||||
this.isArchived = isArchived;
|
this.isArchived = isArchived;
|
||||||
|
this.noteToSelfTitle = noteToSelfTitle;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NonNull <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
|
public @NonNull <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
|
||||||
//noinspection ConstantConditions
|
//noinspection ConstantConditions
|
||||||
return modelClass.cast(new ConversationListViewModel(ApplicationDependencies.getApplication(), new SearchRepository(), isArchived));
|
return modelClass.cast(new ConversationListViewModel(ApplicationDependencies.getApplication(), new SearchRepository(noteToSelfTitle), isArchived));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ import androidx.annotation.WorkerThread;
|
||||||
|
|
||||||
import org.signal.core.util.concurrent.SignalExecutors;
|
import org.signal.core.util.concurrent.SignalExecutors;
|
||||||
import org.signal.core.util.logging.Log;
|
import org.signal.core.util.logging.Log;
|
||||||
|
import org.thoughtcrime.securesms.R;
|
||||||
import org.thoughtcrime.securesms.contacts.ContactRepository;
|
import org.thoughtcrime.securesms.contacts.ContactRepository;
|
||||||
import org.thoughtcrime.securesms.database.GroupDatabase;
|
import org.thoughtcrime.securesms.database.GroupDatabase;
|
||||||
import org.thoughtcrime.securesms.database.RecipientDatabase;
|
import org.thoughtcrime.securesms.database.RecipientDatabase;
|
||||||
|
@ -48,7 +49,7 @@ class CameraContactsRepository {
|
||||||
this.threadDatabase = SignalDatabase.threads();
|
this.threadDatabase = SignalDatabase.threads();
|
||||||
this.groupDatabase = SignalDatabase.groups();
|
this.groupDatabase = SignalDatabase.groups();
|
||||||
this.recipientDatabase = SignalDatabase.recipients();
|
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.serialExecutor = SignalExecutors.SERIAL;
|
||||||
this.parallelExecutor = SignalExecutors.BOUNDED;
|
this.parallelExecutor = SignalExecutors.BOUNDED;
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,9 +10,9 @@ import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
|
|
||||||
|
import org.signal.core.util.concurrent.LatestPrioritizedSerialExecutor;
|
||||||
import org.signal.core.util.concurrent.SignalExecutors;
|
import org.signal.core.util.concurrent.SignalExecutors;
|
||||||
import org.signal.core.util.logging.Log;
|
import org.signal.core.util.logging.Log;
|
||||||
import org.thoughtcrime.securesms.R;
|
|
||||||
import org.thoughtcrime.securesms.contacts.ContactRepository;
|
import org.thoughtcrime.securesms.contacts.ContactRepository;
|
||||||
import org.thoughtcrime.securesms.database.GroupDatabase;
|
import org.thoughtcrime.securesms.database.GroupDatabase;
|
||||||
import org.thoughtcrime.securesms.database.MentionDatabase;
|
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.CursorUtil;
|
||||||
import org.thoughtcrime.securesms.util.FtsUtil;
|
import org.thoughtcrime.securesms.util.FtsUtil;
|
||||||
import org.thoughtcrime.securesms.util.Util;
|
import org.thoughtcrime.securesms.util.Util;
|
||||||
import org.signal.core.util.concurrent.LatestPrioritizedSerialExecutor;
|
|
||||||
import org.thoughtcrime.securesms.util.concurrent.SerialExecutor;
|
import org.thoughtcrime.securesms.util.concurrent.SerialExecutor;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -56,6 +55,7 @@ public class SearchRepository {
|
||||||
private static final String TAG = Log.tag(SearchRepository.class);
|
private static final String TAG = Log.tag(SearchRepository.class);
|
||||||
|
|
||||||
private final Context context;
|
private final Context context;
|
||||||
|
private final String noteToSelfTitle;
|
||||||
private final SearchDatabase searchDatabase;
|
private final SearchDatabase searchDatabase;
|
||||||
private final ContactRepository contactRepository;
|
private final ContactRepository contactRepository;
|
||||||
private final ThreadDatabase threadDatabase;
|
private final ThreadDatabase threadDatabase;
|
||||||
|
@ -66,14 +66,15 @@ public class SearchRepository {
|
||||||
private final LatestPrioritizedSerialExecutor searchExecutor;
|
private final LatestPrioritizedSerialExecutor searchExecutor;
|
||||||
private final Executor serialExecutor;
|
private final Executor serialExecutor;
|
||||||
|
|
||||||
public SearchRepository() {
|
public SearchRepository(@NonNull String noteToSelfTitle) {
|
||||||
this.context = ApplicationDependencies.getApplication().getApplicationContext();
|
this.context = ApplicationDependencies.getApplication().getApplicationContext();
|
||||||
|
this.noteToSelfTitle = noteToSelfTitle;
|
||||||
this.searchDatabase = SignalDatabase.messageSearch();
|
this.searchDatabase = SignalDatabase.messageSearch();
|
||||||
this.threadDatabase = SignalDatabase.threads();
|
this.threadDatabase = SignalDatabase.threads();
|
||||||
this.recipientDatabase = SignalDatabase.recipients();
|
this.recipientDatabase = SignalDatabase.recipients();
|
||||||
this.mentionDatabase = SignalDatabase.mentions();
|
this.mentionDatabase = SignalDatabase.mentions();
|
||||||
this.mmsDatabase = SignalDatabase.mms();
|
this.mmsDatabase = SignalDatabase.mms();
|
||||||
this.contactRepository = new ContactRepository(context);
|
this.contactRepository = new ContactRepository(context, noteToSelfTitle);
|
||||||
this.searchExecutor = new LatestPrioritizedSerialExecutor(SignalExecutors.BOUNDED);
|
this.searchExecutor = new LatestPrioritizedSerialExecutor(SignalExecutors.BOUNDED);
|
||||||
this.serialExecutor = new SerialExecutor(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());
|
recipientIds.add(Recipient.self().getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue