mirror of
https://github.com/oxen-io/session-android.git
synced 2025-07-02 02:58:29 +00:00
Store recent reactions separately from keyboard emoji.
This commit is contained in:
parent
d70c33d20f
commit
70c88b68e2
@ -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) {
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user