package com.discord.stores; import a0.a.a.b; import android.content.Context; import c.d.b.a.a; import com.discord.models.domain.Model; import com.discord.models.domain.emoji.Emoji; import com.discord.models.domain.emoji.EmojiCategory; import com.discord.models.domain.emoji.EmojiSet; import com.discord.models.domain.emoji.ModelEmojiCustom; import com.discord.models.domain.emoji.ModelEmojiUnicode; import com.discord.stores.StoreMediaFavorites; import com.discord.utilities.collections.ShallowPartitionMap; import com.discord.utilities.frecency.FrecencyTracker; import com.discord.utilities.media.MediaFrecencyTracker; import com.discord.utilities.persister.Persister; import com.discord.utilities.textprocessing.Rules; import d0.f0.q; import d0.t.n; import d0.t.u; import d0.z.d.m; import j0.l.e.j; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.regex.Pattern; import kotlin.jvm.internal.DefaultConstructorMarker; import rx.Observable; /* compiled from: StoreEmoji.kt */ public final class StoreEmoji implements Rules.EmojiDataProvider { public static final Companion Companion = new Companion(null); private static final String[] DEFAULT_FREQUENT_EMOJIS = {"bread", "fork_and_knife", "yum", "weary", "tired_face", "poop", "thumbsup", "100"}; private static final int MAX_FREQUENTLY_USED_EMOJIS = 40; private final StoreEmojiCustom customEmojiStore; private final MediaFrecencyTracker frecency; private final Persister frecencyCache; private final StoreMediaFavorites mediaFavoritesStore; private final StorePermissions permissionsStore; private final StoreGuildsSorted sortedGuildsStore; private Map unicodeEmojiSurrogateMap; private Map> unicodeEmojis; private Map unicodeEmojisNamesMap; private Pattern unicodeEmojisPattern; private final StoreUser userStore; /* compiled from: StoreEmoji.kt */ public static final class Companion { private Companion() { } public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) { this(); } public final String[] getDEFAULT_FREQUENT_EMOJIS() { return StoreEmoji.access$getDEFAULT_FREQUENT_EMOJIS$cp(); } } /* compiled from: StoreEmoji.kt */ public static abstract class EmojiContext { /* compiled from: StoreEmoji.kt */ public static final class Chat extends EmojiContext { private final long channelId; private final long guildId; public Chat(long j, long j2) { super(null); this.guildId = j; this.channelId = j2; } public static /* synthetic */ Chat copy$default(Chat chat, long j, long j2, int i, Object obj) { if ((i & 1) != 0) { j = chat.guildId; } if ((i & 2) != 0) { j2 = chat.channelId; } return chat.copy(j, j2); } public final long component1() { return this.guildId; } public final long component2() { return this.channelId; } public final Chat copy(long j, long j2) { return new Chat(j, j2); } public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof Chat)) { return false; } Chat chat = (Chat) obj; return this.guildId == chat.guildId && this.channelId == chat.channelId; } public final long getChannelId() { return this.channelId; } public final long getGuildId() { return this.guildId; } public int hashCode() { return b.a(this.channelId) + (b.a(this.guildId) * 31); } public String toString() { StringBuilder K = a.K("Chat(guildId="); K.append(this.guildId); K.append(", channelId="); return a.y(K, this.channelId, ")"); } } /* compiled from: StoreEmoji.kt */ public static final class Global extends EmojiContext { public static final Global INSTANCE = new Global(); private Global() { super(null); } } /* compiled from: StoreEmoji.kt */ public static final class GuildProfile extends EmojiContext { private final long guildId; public GuildProfile(long j) { super(null); this.guildId = j; } public static /* synthetic */ GuildProfile copy$default(GuildProfile guildProfile, long j, int i, Object obj) { if ((i & 1) != 0) { j = guildProfile.guildId; } return guildProfile.copy(j); } public final long component1() { return this.guildId; } public final GuildProfile copy(long j) { return new GuildProfile(j); } public boolean equals(Object obj) { if (this != obj) { return (obj instanceof GuildProfile) && this.guildId == ((GuildProfile) obj).guildId; } return true; } public final long getGuildId() { return this.guildId; } public int hashCode() { return b.a(this.guildId); } public String toString() { return a.y(a.K("GuildProfile(guildId="), this.guildId, ")"); } } private EmojiContext() { } public /* synthetic */ EmojiContext(DefaultConstructorMarker defaultConstructorMarker) { this(); } } public StoreEmoji(StoreEmojiCustom storeEmojiCustom, StoreUser storeUser, StorePermissions storePermissions, StoreGuildsSorted storeGuildsSorted, StoreMediaFavorites storeMediaFavorites) { m.checkNotNullParameter(storeEmojiCustom, "customEmojiStore"); m.checkNotNullParameter(storeUser, "userStore"); m.checkNotNullParameter(storePermissions, "permissionsStore"); m.checkNotNullParameter(storeGuildsSorted, "sortedGuildsStore"); m.checkNotNullParameter(storeMediaFavorites, "mediaFavoritesStore"); this.customEmojiStore = storeEmojiCustom; this.userStore = storeUser; this.permissionsStore = storePermissions; this.sortedGuildsStore = storeGuildsSorted; this.mediaFavoritesStore = storeMediaFavorites; Persister persister = new Persister<>("EMOJI_HISTORY_V4", new MediaFrecencyTracker(0, 0, 3, null)); this.frecencyCache = persister; this.frecency = persister.get(); } public static final /* synthetic */ EmojiSet access$buildUsableEmojiSet(StoreEmoji storeEmoji, Map map, EmojiContext emojiContext, List list, boolean z2, boolean z3, boolean z4, boolean z5, Set set) { return storeEmoji.buildUsableEmojiSet(map, emojiContext, list, z2, z3, z4, z5, set); } public static final /* synthetic */ StoreEmojiCustom access$getCustomEmojiStore$p(StoreEmoji storeEmoji) { return storeEmoji.customEmojiStore; } public static final /* synthetic */ String[] access$getDEFAULT_FREQUENT_EMOJIS$cp() { return DEFAULT_FREQUENT_EMOJIS; } private final EmojiSet buildUsableEmojiSet(Map> map, EmojiContext emojiContext, List list, boolean z2, boolean z3, boolean z4, boolean z5, Set set) { StoreEmoji$buildUsableEmojiSet$1 storeEmoji$buildUsableEmojiSet$1 = new StoreEmoji$buildUsableEmojiSet$1(emojiContext); StoreEmoji$buildUsableEmojiSet$2 storeEmoji$buildUsableEmojiSet$2 = new StoreEmoji$buildUsableEmojiSet$2(z5, emojiContext); Set keySet = map.keySet(); ArrayList arrayList = new ArrayList(); for (Object obj : keySet) { if (!list.contains(Long.valueOf(((Number) obj).longValue()))) { arrayList.add(obj); } } int size = list.size() + arrayList.size(); int i = 0; for (List list2 : n.listOf((Object[]) new List[]{list, arrayList})) { int i2 = 0; for (Number number : list2) { long longValue = number.longValue(); Map map2 = (Map) map.get(Long.valueOf(longValue)); i2 += (map2 == null || storeEmoji$buildUsableEmojiSet$2.invoke(storeEmoji$buildUsableEmojiSet$1.invoke(longValue))) ? 0 : map2.size(); } i += i2; } Map map3 = this.unicodeEmojisNamesMap; if (map3 == null) { m.throwUninitializedPropertyAccessException("unicodeEmojisNamesMap"); } int size2 = map3.size(); Map> map4 = this.unicodeEmojis; if (map4 == null) { m.throwUninitializedPropertyAccessException("unicodeEmojis"); } Iterator it = map4.values().iterator(); int i3 = 0; while (it.hasNext()) { i3 += ((List) it.next()).size(); } ShallowPartitionMap.Companion companion = ShallowPartitionMap.Companion; ShallowPartitionMap create$default = ShallowPartitionMap.Companion.create$default(companion, i + size2, 0, 0, null, 14, null); HashMap hashMap = new HashMap(size); ShallowPartitionMap create$default2 = ShallowPartitionMap.Companion.create$default(companion, i + i3, 0, 0, null, 14, null); if (!(emojiContext instanceof EmojiContext.GuildProfile)) { Map> map5 = this.unicodeEmojis; if (map5 == null) { m.throwUninitializedPropertyAccessException("unicodeEmojis"); } Iterator it2 = map5.values().iterator(); while (it2.hasNext()) { for (Emoji emoji : (List) it2.next()) { String uniqueId = emoji.getUniqueId(); m.checkNotNullExpressionValue(uniqueId, "emoji.uniqueId"); create$default2.put(uniqueId, emoji); } } } StoreEmoji$buildUsableEmojiSet$4 storeEmoji$buildUsableEmojiSet$4 = StoreEmoji$buildUsableEmojiSet$4.INSTANCE; ShallowPartitionMap shallowPartitionMap = create$default2; StoreEmoji$buildUsableEmojiSet$5 storeEmoji$buildUsableEmojiSet$5 = new StoreEmoji$buildUsableEmojiSet$5(map, storeEmoji$buildUsableEmojiSet$1, storeEmoji$buildUsableEmojiSet$2, z4, emojiContext, z2, z3, create$default, shallowPartitionMap, hashMap); Map map6 = this.unicodeEmojisNamesMap; if (map6 == null) { m.throwUninitializedPropertyAccessException("unicodeEmojisNamesMap"); } for (String str : map6.keySet()) { StoreEmoji$buildUsableEmojiSet$4.INSTANCE.invoke((Map) create$default, (ShallowPartitionMap) str); } long guildId = emojiContext instanceof EmojiContext.Chat ? ((EmojiContext.Chat) emojiContext).getGuildId() : 0; storeEmoji$buildUsableEmojiSet$5.invoke(guildId); ArrayList arrayList2 = new ArrayList(); for (Object obj2 : list) { if (((Number) obj2).longValue() != guildId) { arrayList2.add(obj2); } } for (Number number2 : arrayList2) { storeEmoji$buildUsableEmojiSet$5.invoke(number2.longValue()); } for (Number number3 : arrayList) { storeEmoji$buildUsableEmojiSet$5.invoke(number3.longValue()); } ArrayList arrayList3 = new ArrayList(); for (Object obj3 : set) { if (obj3 instanceof StoreMediaFavorites.FavoriteEmoji) { arrayList3.add(obj3); } } ArrayList arrayList4 = new ArrayList(); for (StoreMediaFavorites.FavoriteEmoji favoriteEmoji : arrayList3) { Emoji emoji2 = (Emoji) shallowPartitionMap.get(favoriteEmoji.getEmojiUniqueId()); if (emoji2 != null) { arrayList4.add(emoji2); } shallowPartitionMap = shallowPartitionMap; } Set set2 = u.toSet(arrayList4); Map> map7 = this.unicodeEmojis; if (map7 == null) { m.throwUninitializedPropertyAccessException("unicodeEmojis"); } return new EmojiSet(map7, hashMap, shallowPartitionMap, getFrequentlyUsedEmojis(shallowPartitionMap), set2); } private final Pattern compileSurrogatesPattern() { Map map = this.unicodeEmojiSurrogateMap; if (map == null) { m.throwUninitializedPropertyAccessException("unicodeEmojiSurrogateMap"); } Pattern compile = Pattern.compile(u.joinToString$default(u.sortedWith(map.keySet(), new StoreEmoji$compileSurrogatesPattern$$inlined$sortedBy$1()), "|", null, null, 0, null, StoreEmoji$compileSurrogatesPattern$emojiSurrogatesPattern$2.INSTANCE, 30, null)); m.checkNotNullExpressionValue(compile, "Pattern.compile(emojiSurrogatesPattern)"); return compile; } public static /* synthetic */ Observable getEmojiSet$default(StoreEmoji storeEmoji, long j, long j2, boolean z2, boolean z3, int i, Object obj) { return storeEmoji.getEmojiSet(j, j2, (i & 4) != 0 ? false : z2, (i & 8) != 0 ? false : z3); } private final List getFrequentlyUsedEmojis(Map map) { Collection sortedKeys$default = FrecencyTracker.getSortedKeys$default(this.frecency, 0, 1, null); ArrayList arrayList = new ArrayList(); for (String str : sortedKeys$default) { Emoji emoji = (Emoji) map.get(str); if (emoji != null) { arrayList.add(emoji); } } List take = u.take(arrayList, 40); if (take.size() >= 40) { return take; } String[] strArr = DEFAULT_FREQUENT_EMOJIS; ArrayList arrayList2 = new ArrayList(); for (String str2 : strArr) { Map map2 = this.unicodeEmojisNamesMap; if (map2 == null) { m.throwUninitializedPropertyAccessException("unicodeEmojisNamesMap"); } ModelEmojiUnicode modelEmojiUnicode = (ModelEmojiUnicode) map2.get(str2); if (modelEmojiUnicode != null) { arrayList2.add(modelEmojiUnicode); } } return u.distinct(q.toList(d0.f0.n.flattenSequenceOfIterable(d0.f0.n.sequenceOf(take, u.take(arrayList2, 40 - take.size()))))); } private final void handleLoadedUnicodeEmojis(ModelEmojiUnicode.Bundle bundle) { HashMap hashMap = new HashMap(); HashMap hashMap2 = new HashMap(); HashMap hashMap3 = new HashMap(); StoreEmoji$handleLoadedUnicodeEmojis$1 storeEmoji$handleLoadedUnicodeEmojis$1 = new StoreEmoji$handleLoadedUnicodeEmojis$1(hashMap3, hashMap2); Map> emojis = bundle.getEmojis(); m.checkNotNullExpressionValue(emojis, "unicodeEmojisBundle.emojis"); for (Map.Entry> entry : emojis.entrySet()) { EmojiCategory key = entry.getKey(); List value = entry.getValue(); m.checkNotNullExpressionValue(key, "category"); m.checkNotNullExpressionValue(value, "categoryEmojis"); hashMap.put(key, value); for (ModelEmojiUnicode modelEmojiUnicode : value) { m.checkNotNullExpressionValue(modelEmojiUnicode, "unicodeEmoji"); storeEmoji$handleLoadedUnicodeEmojis$1.invoke(modelEmojiUnicode); List asDiverse = modelEmojiUnicode.getAsDiverse(); m.checkNotNullExpressionValue(asDiverse, "unicodeEmoji\n .asDiverse"); for (ModelEmojiUnicode modelEmojiUnicode2 : asDiverse) { m.checkNotNullExpressionValue(modelEmojiUnicode2, "diverseEmoji"); storeEmoji$handleLoadedUnicodeEmojis$1.invoke(modelEmojiUnicode2); } } } this.unicodeEmojis = hashMap; this.unicodeEmojisNamesMap = hashMap2; this.unicodeEmojiSurrogateMap = hashMap3; this.unicodeEmojisPattern = compileSurrogatesPattern(); } private final ModelEmojiUnicode.Bundle loadUnicodeEmojisFromDisk(Context context) { Model parse = new Model.JsonReader(new InputStreamReader(context.getAssets().open("data/emojis.json"), "UTF-8")).parse(new ModelEmojiUnicode.Bundle()); m.checkNotNullExpressionValue(parse, "jsonReader.parse(ModelEmojiUnicode.Bundle())"); return (ModelEmojiUnicode.Bundle) parse; } @StoreThread public final ModelEmojiCustom getCustomEmojiInternal(long j) { for (Map.Entry> entry : this.customEmojiStore.getAllGuildEmojiInternal().entrySet()) { ModelEmojiCustom modelEmojiCustom = entry.getValue().get(Long.valueOf(j)); if (modelEmojiCustom != null) { return modelEmojiCustom; } } return null; } public final Observable getEmojiSet(long j, long j2, boolean z2, boolean z3) { return getEmojiSet(new EmojiContext.Chat(j, j2), z2, z3); } public final Observable getEmojiSet(EmojiContext emojiContext, boolean z2, boolean z3) { Observable observable; m.checkNotNullParameter(emojiContext, "emojiContext"); if (emojiContext instanceof EmojiContext.Chat) { EmojiContext.Chat chat = (EmojiContext.Chat) emojiContext; if (chat.getGuildId() != 0) { observable = this.permissionsStore.observePermissionsForChannel(chat.getChannelId()).F(StoreEmoji$getEmojiSet$hasExternalEmojiPermissionObservable$1.INSTANCE); Observable Y = Observable.h(StoreUser.observeMe$default(this.userStore, false, 1, null).F(StoreEmoji$getEmojiSet$1.INSTANCE), observable, this.sortedGuildsStore.observeOrderedGuilds().F(StoreEmoji$getEmojiSet$2.INSTANCE), this.mediaFavoritesStore.observeFavorites(StoreMediaFavorites.Favorite.Companion.getEmojiTypes()), StoreEmoji$getEmojiSet$3.INSTANCE).r().Y(new StoreEmoji$getEmojiSet$4(this, emojiContext, z3, z2)); m.checkNotNullExpressionValue(Y, "Observable\n .comb… }\n }"); return Y; } } observable = new j(Boolean.TRUE); Observable Y = Observable.h(StoreUser.observeMe$default(this.userStore, false, 1, null).F(StoreEmoji$getEmojiSet$1.INSTANCE), observable, this.sortedGuildsStore.observeOrderedGuilds().F(StoreEmoji$getEmojiSet$2.INSTANCE), this.mediaFavoritesStore.observeFavorites(StoreMediaFavorites.Favorite.Companion.getEmojiTypes()), StoreEmoji$getEmojiSet$3.INSTANCE).r().Y(new StoreEmoji$getEmojiSet$4(this, emojiContext, z3, z2)); m.checkNotNullExpressionValue(Y, "Observable\n .comb… }\n }"); return Y; } /* JADX DEBUG: Type inference failed for r0v0. Raw type applied. Possible types: java.util.Map, java.util.Map */ @Override // com.discord.utilities.textprocessing.Rules.EmojiDataProvider public Map getUnicodeEmojiSurrogateMap() { Map map = this.unicodeEmojiSurrogateMap; if (map == null) { m.throwUninitializedPropertyAccessException("unicodeEmojiSurrogateMap"); } return map; } /* JADX DEBUG: Type inference failed for r0v0. Raw type applied. Possible types: java.util.Map, java.util.Map */ @Override // com.discord.utilities.textprocessing.Rules.EmojiDataProvider public Map getUnicodeEmojisNamesMap() { Map map = this.unicodeEmojisNamesMap; if (map == null) { m.throwUninitializedPropertyAccessException("unicodeEmojisNamesMap"); } return map; } @Override // com.discord.utilities.textprocessing.Rules.EmojiDataProvider public Pattern getUnicodeEmojisPattern() { Pattern pattern = this.unicodeEmojisPattern; if (pattern == null) { m.throwUninitializedPropertyAccessException("unicodeEmojisPattern"); } return pattern; } @StoreThread public final void handlePreLogout() { Persister.clear$default(this.frecencyCache, false, 1, null); } public final void initBlocking(Context context) { m.checkNotNullParameter(context, "context"); handleLoadedUnicodeEmojis(loadUnicodeEmojisFromDisk(context)); } public final void onEmojiUsed(Emoji emoji) { m.checkNotNullParameter(emoji, "emoji"); String uniqueId = emoji.getUniqueId(); m.checkNotNullExpressionValue(uniqueId, "emoji.uniqueId"); onEmojiUsed(uniqueId); } public final void onEmojiUsed(String str) { m.checkNotNullParameter(str, "emojiKey"); FrecencyTracker.track$default(this.frecency, str, 0, 2, null); Persister.set$default(this.frecencyCache, this.frecency, false, 2, null); } }