refactor: temporarily remove recentEmojis to avoid crashing.
It will be reimplemented later either by me or @FineFindus
This commit is contained in:
@@ -24,33 +24,22 @@ import android.widget.LinearLayout;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.recyclerview.widget.GridLayoutManager;
|
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
|
||||||
|
|
||||||
import com.squareup.otto.Subscribe;
|
import com.squareup.otto.Subscribe;
|
||||||
|
|
||||||
import org.joinmastodon.android.GlobalUserPreferences;
|
|
||||||
import org.joinmastodon.android.R;
|
import org.joinmastodon.android.R;
|
||||||
import org.joinmastodon.android.api.session.AccountSession;
|
|
||||||
import org.joinmastodon.android.api.session.AccountSessionManager;
|
import org.joinmastodon.android.api.session.AccountSessionManager;
|
||||||
import org.joinmastodon.android.events.EmojiUpdatedEvent;
|
import org.joinmastodon.android.events.EmojiUpdatedEvent;
|
||||||
import org.joinmastodon.android.fragments.HasAccountID;
|
|
||||||
import org.joinmastodon.android.model.Account;
|
|
||||||
import org.joinmastodon.android.model.Emoji;
|
import org.joinmastodon.android.model.Emoji;
|
||||||
import org.joinmastodon.android.model.EmojiCategory;
|
import org.joinmastodon.android.model.EmojiCategory;
|
||||||
import org.joinmastodon.android.ui.utils.UiUtils;
|
import org.joinmastodon.android.ui.utils.UiUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.function.Consumer;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.recyclerview.widget.GridLayoutManager;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
import me.grishka.appkit.imageloader.ImageLoaderRecyclerAdapter;
|
import me.grishka.appkit.imageloader.ImageLoaderRecyclerAdapter;
|
||||||
import me.grishka.appkit.imageloader.ImageLoaderViewHolder;
|
import me.grishka.appkit.imageloader.ImageLoaderViewHolder;
|
||||||
import me.grishka.appkit.imageloader.ListImageLoaderWrapper;
|
import me.grishka.appkit.imageloader.ListImageLoaderWrapper;
|
||||||
@@ -62,18 +51,13 @@ import me.grishka.appkit.utils.MergeRecyclerAdapter;
|
|||||||
import me.grishka.appkit.utils.V;
|
import me.grishka.appkit.utils.V;
|
||||||
import me.grishka.appkit.views.UsableRecyclerView;
|
import me.grishka.appkit.views.UsableRecyclerView;
|
||||||
|
|
||||||
public class CustomEmojiPopupKeyboard extends PopupKeyboard implements HasAccountID{
|
public class CustomEmojiPopupKeyboard extends PopupKeyboard{
|
||||||
//determines how many emoji need to be clicked, before it disappears from the recent emojis
|
|
||||||
private static final int NEW_RECENT_VALUE=15;
|
|
||||||
|
|
||||||
private List<EmojiCategory> emojis;
|
private List<EmojiCategory> emojis;
|
||||||
private UsableRecyclerView list;
|
private UsableRecyclerView list;
|
||||||
private ListImageLoaderWrapper imgLoader;
|
private ListImageLoaderWrapper imgLoader;
|
||||||
private MergeRecyclerAdapter adapter=new MergeRecyclerAdapter();
|
private MergeRecyclerAdapter adapter=new MergeRecyclerAdapter();
|
||||||
private String domain;
|
private String domain;
|
||||||
private String accountID;
|
private String accountID;
|
||||||
private Map<String, Integer> recentEmojis;
|
|
||||||
|
|
||||||
private int spanCount=6;
|
private int spanCount=6;
|
||||||
private Listener listener;
|
private Listener listener;
|
||||||
private boolean forReaction;
|
private boolean forReaction;
|
||||||
@@ -90,7 +74,6 @@ public class CustomEmojiPopupKeyboard extends PopupKeyboard implements HasAccoun
|
|||||||
this.domain=domain;
|
this.domain=domain;
|
||||||
this.accountID=accountID;
|
this.accountID=accountID;
|
||||||
this.forReaction=forReaction;
|
this.forReaction=forReaction;
|
||||||
recentEmojis = AccountSessionManager.get(accountID).getLocalPreferences().recentEmojis;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -118,17 +101,6 @@ public class CustomEmojiPopupKeyboard extends PopupKeyboard implements HasAccoun
|
|||||||
list.setPadding(V.dp(16), 0, V.dp(16), 0);
|
list.setPadding(V.dp(16), 0, V.dp(16), 0);
|
||||||
imgLoader=new ListImageLoaderWrapper(activity, list, new RecyclerViewDelegate(list), null);
|
imgLoader=new ListImageLoaderWrapper(activity, list, new RecyclerViewDelegate(list), null);
|
||||||
|
|
||||||
// inject category with last used emojis
|
|
||||||
if (!recentEmojis.isEmpty()) {
|
|
||||||
List<Emoji> allAvailableEmojis = emojis.stream().flatMap(category -> category.emojis.stream()).collect(Collectors.toList());
|
|
||||||
List<Emoji> recentEmojiList = new ArrayList<>();
|
|
||||||
for (String emojiCode : recentEmojis.keySet().stream().sorted(Comparator.comparingInt(getLocalPrefs().recentEmojis::get).reversed()).collect(Collectors.toList())) {
|
|
||||||
Optional<Emoji> element = allAvailableEmojis.stream().filter(e -> e.shortcode.equals(emojiCode)).findFirst();
|
|
||||||
element.ifPresent(recentEmojiList::add);
|
|
||||||
}
|
|
||||||
emojis.add(0, new EmojiCategory(activity.getString(R.string.mo_emoji_recent), recentEmojiList));
|
|
||||||
}
|
|
||||||
|
|
||||||
for(EmojiCategory category:emojis)
|
for(EmojiCategory category:emojis)
|
||||||
adapter.addAdapter(new SingleCategoryAdapter(category));
|
adapter.addAdapter(new SingleCategoryAdapter(category));
|
||||||
list.setAdapter(adapter);
|
list.setAdapter(adapter);
|
||||||
@@ -218,32 +190,13 @@ public class CustomEmojiPopupKeyboard extends PopupKeyboard implements HasAccoun
|
|||||||
bottomPanel.addView(backspace, new FrameLayout.LayoutParams(V.dp(48), V.dp(48), Gravity.END | Gravity.CENTER_VERTICAL));
|
bottomPanel.addView(backspace, new FrameLayout.LayoutParams(V.dp(48), V.dp(48), Gravity.END | Gravity.CENTER_VERTICAL));
|
||||||
}
|
}
|
||||||
|
|
||||||
//remove recently used afterwards, it would get duplicated otherwise
|
return ll;
|
||||||
if (!recentEmojis.isEmpty()) {
|
|
||||||
emojis.remove(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
return list;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setListener(Listener listener){
|
public void setListener(Listener listener){
|
||||||
this.listener=listener;
|
this.listener=listener;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void increaseEmojiCount(Emoji emoji) {
|
|
||||||
Integer usageCount = recentEmojis.get(emoji.shortcode);
|
|
||||||
if (usageCount != null) {
|
|
||||||
recentEmojis.put(emoji.shortcode, usageCount + 1);
|
|
||||||
} else {
|
|
||||||
recentEmojis.put(emoji.shortcode, NEW_RECENT_VALUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
recentEmojis.entrySet().removeIf(e -> e.getValue() <= 0);
|
|
||||||
recentEmojis.replaceAll((k, v) -> v - 1);
|
|
||||||
AccountSessionManager.get(accountID).getLocalPreferences().recentEmojis = recentEmojis;
|
|
||||||
AccountSessionManager.get(accountID).getLocalPreferences().save();
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressLint("NotifyDataSetChanged")
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onEmojiUpdated(EmojiUpdatedEvent ev){
|
public void onEmojiUpdated(EmojiUpdatedEvent ev){
|
||||||
@@ -253,11 +206,6 @@ public class CustomEmojiPopupKeyboard extends PopupKeyboard implements HasAccoun
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getAccountID(){
|
|
||||||
return accountID;
|
|
||||||
}
|
|
||||||
|
|
||||||
private class SingleCategoryAdapter extends UsableRecyclerView.Adapter<RecyclerView.ViewHolder> implements ImageLoaderRecyclerAdapter{
|
private class SingleCategoryAdapter extends UsableRecyclerView.Adapter<RecyclerView.ViewHolder> implements ImageLoaderRecyclerAdapter{
|
||||||
private final EmojiCategory category;
|
private final EmojiCategory category;
|
||||||
private final List<ImageLoaderRequest> requests;
|
private final List<ImageLoaderRequest> requests;
|
||||||
@@ -358,7 +306,6 @@ public class CustomEmojiPopupKeyboard extends PopupKeyboard implements HasAccoun
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(){
|
public void onClick(){
|
||||||
increaseEmojiCount(item);
|
|
||||||
listener.onEmojiSelected(item);
|
listener.onEmojiSelected(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user