Store recent reactions separately from keyboard emoji.

This commit is contained in:
Greyson Parrelli 2020-05-29 17:39:12 -04:00
parent d70c33d20f
commit 70c88b68e2
4 changed files with 15 additions and 13 deletions

View File

@ -29,6 +29,8 @@ public class EmojiKeyboardProvider implements MediaKeyboardProvider,
{ {
private static final KeyEvent DELETE_KEY_EVENT = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL); private static final KeyEvent DELETE_KEY_EVENT = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL);
private static final String RECENT_STORAGE_KEY = "pref_recent_emoji2";
private final Context context; private final Context context;
private final List<EmojiPageModel> models; private final List<EmojiPageModel> models;
private final RecentEmojiPageModel recentModel; private final RecentEmojiPageModel recentModel;
@ -41,7 +43,7 @@ public class EmojiKeyboardProvider implements MediaKeyboardProvider,
this.context = context; this.context = context;
this.emojiEventListener = emojiEventListener; this.emojiEventListener = emojiEventListener;
this.models = new LinkedList<>(); this.models = new LinkedList<>();
this.recentModel = new RecentEmojiPageModel(context); this.recentModel = new RecentEmojiPageModel(context, RECENT_STORAGE_KEY);
this.emojiPagerAdapter = new EmojiPagerAdapter(context, models, new EmojiEventListener() { this.emojiPagerAdapter = new EmojiPagerAdapter(context, models, new EmojiEventListener() {
@Override @Override
public void onEmojiSelected(String emoji) { public void onEmojiSelected(String emoji) {

View File

@ -22,20 +22,21 @@ import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
public class RecentEmojiPageModel implements EmojiPageModel { public class RecentEmojiPageModel implements EmojiPageModel {
private static final String TAG = RecentEmojiPageModel.class.getSimpleName(); private static final String TAG = RecentEmojiPageModel.class.getSimpleName();
private static final String EMOJI_LRU_PREFERENCE = "pref_recent_emoji2"; private static final int EMOJI_LRU_SIZE = 50;
private static final int EMOJI_LRU_SIZE = 50;
private final SharedPreferences prefs; private final SharedPreferences prefs;
private final String preferenceName;
private final LinkedHashSet<String> recentlyUsed; private final LinkedHashSet<String> recentlyUsed;
public RecentEmojiPageModel(Context context) { public RecentEmojiPageModel(Context context, @NonNull String preferenceName) {
this.prefs = PreferenceManager.getDefaultSharedPreferences(context); this.prefs = PreferenceManager.getDefaultSharedPreferences(context);
this.recentlyUsed = getPersistedCache(); this.preferenceName = preferenceName;
this.recentlyUsed = getPersistedCache();
} }
private LinkedHashSet<String> getPersistedCache() { private LinkedHashSet<String> getPersistedCache() {
String serialized = prefs.getString(EMOJI_LRU_PREFERENCE, "[]"); String serialized = prefs.getString(preferenceName, "[]");
try { try {
CollectionType collectionType = TypeFactory.defaultInstance() CollectionType collectionType = TypeFactory.defaultInstance()
.constructCollectionType(LinkedHashSet.class, String.class); .constructCollectionType(LinkedHashSet.class, String.class);
@ -90,7 +91,7 @@ public class RecentEmojiPageModel implements EmojiPageModel {
try { try {
String serialized = JsonUtils.toJson(latestRecentlyUsed); String serialized = JsonUtils.toJson(latestRecentlyUsed);
prefs.edit() prefs.edit()
.putString(EMOJI_LRU_PREFERENCE, serialized) .putString(preferenceName, serialized)
.apply(); .apply();
} catch (IOException e) { } catch (IOException e) {
Log.w(TAG, e); Log.w(TAG, e);

View File

@ -1,12 +1,9 @@
package org.thoughtcrime.securesms.reactions.any; package org.thoughtcrime.securesms.reactions.any;
import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.core.util.Consumer;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.widget.ViewPager2;
import org.thoughtcrime.securesms.components.emoji.EmojiKeyboardProvider; import org.thoughtcrime.securesms.components.emoji.EmojiKeyboardProvider;
import org.thoughtcrime.securesms.components.emoji.EmojiPageModel; import org.thoughtcrime.securesms.components.emoji.EmojiPageModel;

View File

@ -17,13 +17,15 @@ import java.util.List;
final class ReactWithAnyEmojiRepository { final class ReactWithAnyEmojiRepository {
private static final String RECENT_STORAGE_KEY = "reactions_recent_emoji";
private final Context context; private final Context context;
private final RecentEmojiPageModel recentEmojiPageModel; private final RecentEmojiPageModel recentEmojiPageModel;
private final List<EmojiPageModel> emojiPageModels; private final List<EmojiPageModel> emojiPageModels;
ReactWithAnyEmojiRepository(@NonNull Context context) { ReactWithAnyEmojiRepository(@NonNull Context context) {
this.context = context; this.context = context;
this.recentEmojiPageModel = new RecentEmojiPageModel(context); this.recentEmojiPageModel = new RecentEmojiPageModel(context, RECENT_STORAGE_KEY);
this.emojiPageModels = new LinkedList<>(); this.emojiPageModels = new LinkedList<>();
emojiPageModels.add(recentEmojiPageModel); emojiPageModels.add(recentEmojiPageModel);