Store recent reactions separately from keyboard emoji.

master
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 String RECENT_STORAGE_KEY = "pref_recent_emoji2";
private final Context context;
private final List<EmojiPageModel> models;
private final RecentEmojiPageModel recentModel;
@ -41,7 +43,7 @@ public class EmojiKeyboardProvider implements MediaKeyboardProvider,
this.context = context;
this.emojiEventListener = emojiEventListener;
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() {
@Override
public void onEmojiSelected(String emoji) {

View File

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

View File

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

View File

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