addEmojiToRecentlyUsed method
Add an emoji to recently used list or increase its counter
Implementation
Future<List<RecentEmoji>> addEmojiToRecentlyUsed(
{required Emoji emoji, Config config = const Config()}) async {
// Remove emoji's skin tone in Recent-Category
if (emoji.hasSkinTone) {
emoji = removeSkinTone(emoji);
}
var recentEmoji = await getRecentEmojis();
var recentEmojiIndex =
recentEmoji.indexWhere((element) => element.emoji.emoji == emoji.emoji);
if (recentEmojiIndex != -1) {
// Already exist in recent list
// Just update counter
recentEmoji[recentEmojiIndex].counter++;
} else if (recentEmoji.length == config.recentsLimit &&
config.replaceEmojiOnLimitExceed) {
// Replace latest emoji with the fresh one
recentEmoji[recentEmoji.length - 1] = RecentEmoji(emoji, 1);
} else {
recentEmoji.add(RecentEmoji(emoji, 1));
}
// Sort by counter desc
recentEmoji.sort((a, b) => b.counter - a.counter);
// Limit entries to recentsLimit
recentEmoji =
recentEmoji.sublist(0, min(config.recentsLimit, recentEmoji.length));
// save locally
// final prefs = await SharedPreferences.getInstance();
// prefs.setString('recent', jsonEncode(recentEmoji));
SpUtil.putString('recent', jsonEncode(recentEmoji));
return recentEmoji;
}