package com.discord.stores; import a0.a.a.b; import c.d.b.a.a; import com.discord.api.activity.Activity; import com.discord.api.activity.ActivityEmoji; import com.discord.api.activity.ActivityType; import com.discord.api.guild.Guild; import com.discord.api.presence.ClientStatus; import com.discord.api.presence.ClientStatuses; import com.discord.api.thread.AugmentedThreadMember; import com.discord.api.thread.ThreadListMember; import com.discord.api.thread.ThreadMemberListUpdate; import com.discord.api.thread.ThreadMembersUpdate; import com.discord.api.user.User; import com.discord.models.domain.ModelCustomStatusSetting; import com.discord.models.domain.ModelPayload; import com.discord.models.domain.ModelSession; import com.discord.models.domain.ModelUserSettings; import com.discord.models.domain.emoji.ModelEmojiCustom; import com.discord.models.domain.emoji.ModelEmojiUnicode; import com.discord.models.presence.Presence; import com.discord.models.user.MeUser; import com.discord.stores.updates.ObservationDeck; import com.discord.utilities.collections.SnowflakePartitionMap; import com.discord.utilities.presence.ActivityUtilsKt; import com.discord.utilities.presence.PresenceUtils; import com.discord.utilities.time.Clock; import com.discord.utilities.time.TimeUtils; import d0.t.u; import d0.z.d.m; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import kotlin.jvm.internal.DefaultConstructorMarker; import rx.Observable; /* compiled from: StoreUserPresence.kt */ public final class StoreUserPresence extends StoreV2 { public static final Companion Companion = new Companion(null); private static final StoreUserPresence$Companion$LocalPresenceUpdateSource$1 LocalPresenceUpdateSource = new StoreUserPresence$Companion$LocalPresenceUpdateSource$1(); private final Clock clock; private Presence localPresence; private Presence localPresenceSnapshot; private MeUser meUser; private final ObservationDeck observationDeck; private final SnowflakePartitionMap.CopiablePartitionMap presences = new SnowflakePartitionMap.CopiablePartitionMap<>(0, 1, null); private Map presencesSnapshot = new HashMap(); private final StoreStream stream; private final HashMap> userGuildPresences = new HashMap<>(); /* compiled from: StoreUserPresence.kt */ public static final class Companion { private Companion() { } public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) { this(); } } /* compiled from: StoreUserPresence.kt */ public static final class TimestampedPresence { private final Presence presence; private final long timestamp; public TimestampedPresence(Presence presence, long j) { m.checkNotNullParameter(presence, "presence"); this.presence = presence; this.timestamp = j; } public static /* synthetic */ TimestampedPresence copy$default(TimestampedPresence timestampedPresence, Presence presence, long j, int i, Object obj) { if ((i & 1) != 0) { presence = timestampedPresence.presence; } if ((i & 2) != 0) { j = timestampedPresence.timestamp; } return timestampedPresence.copy(presence, j); } public final Presence component1() { return this.presence; } public final long component2() { return this.timestamp; } public final TimestampedPresence copy(Presence presence, long j) { m.checkNotNullParameter(presence, "presence"); return new TimestampedPresence(presence, j); } public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof TimestampedPresence)) { return false; } TimestampedPresence timestampedPresence = (TimestampedPresence) obj; return m.areEqual(this.presence, timestampedPresence.presence) && this.timestamp == timestampedPresence.timestamp; } public final Presence getPresence() { return this.presence; } public final long getTimestamp() { return this.timestamp; } public int hashCode() { Presence presence = this.presence; return b.a(this.timestamp) + ((presence != null ? presence.hashCode() : 0) * 31); } public String toString() { StringBuilder L = a.L("TimestampedPresence(presence="); L.append(this.presence); L.append(", timestamp="); return a.A(L, this.timestamp, ")"); } } public StoreUserPresence(Clock clock, StoreStream storeStream, ObservationDeck observationDeck) { m.checkNotNullParameter(clock, "clock"); m.checkNotNullParameter(storeStream, "stream"); m.checkNotNullParameter(observationDeck, "observationDeck"); this.clock = clock; this.stream = storeStream; this.observationDeck = observationDeck; ClientStatus clientStatus = ClientStatus.ONLINE; ClientStatus clientStatus2 = ClientStatus.OFFLINE; Presence presence = new Presence(clientStatus, new ClientStatuses(clientStatus2, clientStatus2, clientStatus), null); this.localPresence = presence; this.localPresenceSnapshot = Presence.copy$default(presence, null, null, null, 7, null); } public static final /* synthetic */ Presence access$getLocalPresenceSnapshot$p(StoreUserPresence storeUserPresence) { return storeUserPresence.localPresenceSnapshot; } public static final /* synthetic */ void access$setLocalPresenceSnapshot$p(StoreUserPresence storeUserPresence, Presence presence) { storeUserPresence.localPresenceSnapshot = presence; } @StoreThread private final void clearPresences(long j) { HashMap> hashMap = this.userGuildPresences; LinkedHashMap linkedHashMap = new LinkedHashMap(); for (Map.Entry> entry : hashMap.entrySet()) { if (entry.getValue().remove(Long.valueOf(j)) != null) { linkedHashMap.put(entry.getKey(), entry.getValue()); } } for (Map.Entry entry2 : linkedHashMap.entrySet()) { flattenPresence(((Number) entry2.getKey()).longValue()); } } /* JADX WARNING: Removed duplicated region for block: B:31:0x007b */ /* JADX WARNING: Removed duplicated region for block: B:32:0x0080 */ /* JADX WARNING: Removed duplicated region for block: B:35:0x0085 */ /* JADX WARNING: Removed duplicated region for block: B:38:0x009e */ @StoreThread private final void flattenPresence(long j) { Presence presence; ClientStatus clientStatus; ClientStatus clientStatus2; List activities; List sortedWith; Collection values; Object obj; Map map = this.userGuildPresences.get(Long.valueOf(j)); ClientStatus clientStatus3 = null; if (!(map == null || (values = map.values()) == null)) { Iterator it = values.iterator(); if (!it.hasNext()) { obj = null; } else { obj = it.next(); if (it.hasNext()) { long timestamp = ((TimestampedPresence) obj).getTimestamp(); do { Object next = it.next(); long timestamp2 = ((TimestampedPresence) next).getTimestamp(); if (timestamp < timestamp2) { obj = next; timestamp = timestamp2; } } while (it.hasNext()); } } TimestampedPresence timestampedPresence = (TimestampedPresence) obj; if (timestampedPresence != null) { presence = timestampedPresence.getPresence(); if (presence == null || (clientStatus = presence.getStatus()) == null) { clientStatus = ClientStatus.OFFLINE; } List reversed = (presence != null || (activities = presence.getActivities()) == null || (sortedWith = u.sortedWith(activities, PresenceUtils.INSTANCE.getACTIVITY_COMPARATOR$app_productionBetaRelease())) == null) ? null : u.reversed(sortedWith); ClientStatuses clientStatuses = presence == null ? presence.getClientStatuses() : null; clientStatus2 = ClientStatus.OFFLINE; if (clientStatus != clientStatus2) { this.userGuildPresences.remove(Long.valueOf(j)); if (this.presences.remove(Long.valueOf(j)) != null) { markChanged(); return; } return; } Presence presence2 = this.presences.get(Long.valueOf(j)); if (presence2 != null) { clientStatus3 = presence2.getStatus(); } if (clientStatus3 != clientStatus || (!m.areEqual(presence2.getActivities(), reversed)) || (!m.areEqual(presence2.getClientStatuses(), clientStatuses))) { SnowflakePartitionMap.CopiablePartitionMap copiablePartitionMap = this.presences; Long valueOf = Long.valueOf(j); if (clientStatuses == null) { clientStatuses = new ClientStatuses(clientStatus2, clientStatus2, clientStatus2); } copiablePartitionMap.put(valueOf, new Presence(clientStatus, clientStatuses, reversed)); markChanged(); return; } return; } } presence = null; clientStatus = ClientStatus.OFFLINE; if (presence != null) { } if (presence == null) { } clientStatus2 = ClientStatus.OFFLINE; if (clientStatus != clientStatus2) { } } @StoreThread private final Activity getCustomStatusActivityFromSetting(ModelCustomStatusSetting modelCustomStatusSetting) { ActivityEmoji activityEmoji = null; if (modelCustomStatusSetting == ModelCustomStatusSetting.Companion.getCLEAR()) { return null; } if (modelCustomStatusSetting.getExpiresAt() != null && TimeUtils.parseUTCDate(modelCustomStatusSetting.getExpiresAt()) - this.clock.currentTimeMillis() <= 0) { return null; } if (modelCustomStatusSetting.getEmojiId() != null) { StoreEmoji emojis$app_productionBetaRelease = this.stream.getEmojis$app_productionBetaRelease(); Long emojiId = modelCustomStatusSetting.getEmojiId(); m.checkNotNull(emojiId); ModelEmojiCustom customEmojiInternal = emojis$app_productionBetaRelease.getCustomEmojiInternal(emojiId.longValue()); if (customEmojiInternal != null) { activityEmoji = new ActivityEmoji(String.valueOf(customEmojiInternal.getId()), customEmojiInternal.getName(), customEmojiInternal.isAnimated()); } } else if (modelCustomStatusSetting.getEmojiName() != null) { Map unicodeEmojiSurrogateMap = this.stream.getEmojis$app_productionBetaRelease().getUnicodeEmojiSurrogateMap(); String emojiName = modelCustomStatusSetting.getEmojiName(); m.checkNotNull(emojiName); ModelEmojiUnicode modelEmojiUnicode = unicodeEmojiSurrogateMap.get(emojiName); if (modelEmojiUnicode != null) { activityEmoji = new ActivityEmoji(null, modelEmojiUnicode.getSurrogates(), false); } } return ActivityUtilsKt.createCustomStatusActivity(modelCustomStatusSetting.getText(), activityEmoji, this.clock.currentTimeMillis()); } /* JADX WARNING: Removed duplicated region for block: B:17:0x0035 */ private final List removeActivityInList(ActivityType activityType, List list) { List list2; int i; if (list == null || (list2 = u.toMutableList((Collection) list)) == null) { list2 = new ArrayList<>(); } if (list != null) { Iterator it = list.iterator(); i = 0; while (true) { if (!it.hasNext()) { break; } if (it.next().p() == activityType) { break; } i++; } if (i != -1) { list2.remove(i); } return list2; } i = -1; if (i != -1) { } return list2; } private final List replaceActivityInList(Activity activity, List list) { List removeActivityInList = removeActivityInList(activity.p(), list); removeActivityInList.add(activity); return removeActivityInList; } public static /* synthetic */ void updateActivity$default(StoreUserPresence storeUserPresence, ActivityType activityType, Activity activity, boolean z2, int i, Object obj) { if ((i & 4) != 0) { z2 = false; } storeUserPresence.updateActivity(activityType, activity, z2); } /* JADX WARNING: Code restructure failed: missing block: B:18:0x0042, code lost: if (r11 != null) goto L_0x0057; */ /* JADX WARNING: Removed duplicated region for block: B:25:0x005c */ /* JADX WARNING: Removed duplicated region for block: B:26:0x0061 */ /* JADX WARNING: Removed duplicated region for block: B:28:0x0064 */ /* JADX WARNING: Removed duplicated region for block: B:32:0x0082 */ @StoreThread private final void updateSelfPresence(ModelUserSettings modelUserSettings, List list, boolean z2) { ClientStatus clientStatus; List list2; ModelCustomStatusSetting customStatus; List list3; List list4; Object obj; MeUser meUser = this.meUser; if (meUser != null) { long id2 = meUser.getId(); if (modelUserSettings == null || (clientStatus = modelUserSettings.getStatus()) == null) { clientStatus = this.localPresence.getStatus(); } m.checkNotNullExpressionValue(clientStatus, "userSettings?.status\n … ?: localPresence.status"); if (list != null) { Iterator it = list.iterator(); while (true) { if (!it.hasNext()) { obj = null; break; } obj = it.next(); if (((ModelSession) obj).isActive()) { break; } } ModelSession modelSession = (ModelSession) obj; if (modelSession != null) { list4 = modelSession.getActivities(); } } Presence presence = this.presences.get(Long.valueOf(id2)); if (presence != null) { list4 = presence.getActivities(); list2 = list4; customStatus = modelUserSettings == null ? modelUserSettings.getCustomStatus() : null; if (customStatus == null) { Activity customStatusActivityFromSetting = getCustomStatusActivityFromSetting(customStatus); list3 = customStatusActivityFromSetting != null ? replaceActivityInList(customStatusActivityFromSetting, this.localPresence.getActivities()) : removeActivityInList(ActivityType.CUSTOM_STATUS, this.localPresence.getActivities()); } else { list3 = this.localPresence.getActivities(); } if (clientStatus != this.localPresence.getStatus() || (!m.areEqual(list3, this.localPresence.getActivities()))) { this.localPresence = new Presence(clientStatus, null, list3); markChanged(LocalPresenceUpdateSource); } handlePresenceUpdate(Long.MAX_VALUE, id2, clientStatus, null, list2); if (!z2 && PresenceUtils.INSTANCE.getCustomStatusActivity(this.localPresence) == null) { markUnchanged(LocalPresenceUpdateSource); return; } } list2 = null; if (modelUserSettings == null) { } if (customStatus == null) { } this.localPresence = new Presence(clientStatus, null, list3); markChanged(LocalPresenceUpdateSource); handlePresenceUpdate(Long.MAX_VALUE, id2, clientStatus, null, list2); if (!z2) { } } } public final Activity getApplicationActivity(long j, long j2) { List activities; boolean z2; Presence presence = this.presencesSnapshot.get(Long.valueOf(j)); Object obj = null; if (presence == null || (activities = presence.getActivities()) == null) { return null; } Iterator it = activities.iterator(); while (true) { if (!it.hasNext()) { break; } Object next = it.next(); Long a = ((Activity) next).a(); if (a != null && a.longValue() == j2) { z2 = true; continue; } else { z2 = false; continue; } if (z2) { obj = next; break; } } return (Activity) obj; } public final Presence getLocalPresence$app_productionBetaRelease() { return this.localPresence; } public final ObservationDeck getObservationDeck() { return this.observationDeck; } public final SnowflakePartitionMap.CopiablePartitionMap getPresences() { return this.presences; } /* renamed from: getPresences reason: collision with other method in class */ public final Map m14getPresences() { return this.presencesSnapshot; } public final StoreStream getStream() { return this.stream; } @StoreThread public final void handleConnectionOpen(ModelPayload modelPayload) { m.checkNotNullParameter(modelPayload, "payload"); this.userGuildPresences.clear(); this.presences.clear(); User me2 = modelPayload.getMe(); m.checkNotNullExpressionValue(me2, "payload.me"); this.meUser = new MeUser(me2); List guilds = modelPayload.getGuilds(); m.checkNotNullExpressionValue(guilds, "payload.guilds"); for (Guild guild : guilds) { handleGuildAdd(guild); } List presences = modelPayload.getPresences(); m.checkNotNullExpressionValue(presences, "payload.presences"); for (com.discord.api.presence.Presence presence : presences) { User f = presence.f(); if (f != null) { handlePresenceUpdate(Long.MAX_VALUE, f.i(), presence.e(), presence.c(), presence.b()); } } updateSelfPresence(modelPayload.getUserSettings(), modelPayload.getSessions(), false); markChanged(); } @StoreThread public final void handleGuildAdd(Guild guild) { m.checkNotNullParameter(guild, "guild"); List A = guild.A(); if (A != null) { for (com.discord.api.presence.Presence presence : A) { User f = presence.f(); if (f != null) { handlePresenceUpdate(guild.o(), f.i(), presence.e(), presence.c(), presence.b()); } } } } @StoreThread public final void handleGuildMemberRemove(long j, long j2) { Map map = this.userGuildPresences.get(Long.valueOf(j2)); if ((map != null ? map.remove(Long.valueOf(j)) : null) != null) { flattenPresence(j2); } } @StoreThread public final void handleGuildRemove(Guild guild) { m.checkNotNullParameter(guild, "guild"); clearPresences(guild.o()); } @StoreThread public final void handlePresenceReplace(List list) { m.checkNotNullParameter(list, "presencesList"); clearPresences(Long.MAX_VALUE); for (com.discord.api.presence.Presence presence : list) { User f = presence.f(); if (f != null) { long i = f.i(); ClientStatus e = presence.e(); ClientStatuses c2 = presence.c(); if (c2 == null) { ClientStatus clientStatus = ClientStatus.OFFLINE; c2 = new ClientStatuses(clientStatus, clientStatus, clientStatus); } handlePresenceUpdate(Long.MAX_VALUE, i, e, c2, presence.b()); } } } @StoreThread public final void handlePresenceUpdate(long j, long j2, ClientStatus clientStatus, ClientStatuses clientStatuses, List list) { m.checkNotNullParameter(clientStatus, "status"); if (j == 0) { j = Long.MAX_VALUE; } MeUser meUser = this.meUser; if (meUser == null || meUser.getId() != j2 || j == Long.MAX_VALUE) { HashMap> hashMap = this.userGuildPresences; Long valueOf = Long.valueOf(j2); Map map = hashMap.get(valueOf); if (map == null) { map = new HashMap<>(); hashMap.put(valueOf, map); } map.put(Long.valueOf(j), new TimestampedPresence(new Presence(clientStatus, clientStatuses, list), this.clock.currentTimeMillis())); flattenPresence(j2); } } @StoreThread public final void handlePresenceUpdate(long j, com.discord.api.presence.Presence presence) { m.checkNotNullParameter(presence, "presence"); User f = presence.f(); if (f != null) { handlePresenceUpdate(j, f.i(), presence.e(), presence.c(), presence.b()); } } @StoreThread public final void handleSessionsReplace(List list) { m.checkNotNullParameter(list, "sessions"); updateSelfPresence(null, list, true); } @StoreThread public final void handleThreadMemberListUpdate(ThreadMemberListUpdate threadMemberListUpdate) { m.checkNotNullParameter(threadMemberListUpdate, "threadMemberListUpdate"); List b = threadMemberListUpdate.b(); if (b != null) { for (ThreadListMember threadListMember : b) { com.discord.api.presence.Presence b2 = threadListMember.b(); if (b2 != null) { handlePresenceUpdate(threadMemberListUpdate.a(), threadListMember.c(), b2.e(), b2.c(), b2.b()); } } } } @StoreThread public final void handleThreadMembersUpdate(ThreadMembersUpdate threadMembersUpdate) { m.checkNotNullParameter(threadMembersUpdate, "threadMembersUpdate"); List a = threadMembersUpdate.a(); if (a != null) { for (AugmentedThreadMember augmentedThreadMember : a) { com.discord.api.presence.Presence d = augmentedThreadMember.d(); if (d != null) { handlePresenceUpdate(threadMembersUpdate.b(), augmentedThreadMember.e(), d.e(), d.c(), d.b()); } } } } @StoreThread public final void handleUserSettingsUpdate(ModelUserSettings modelUserSettings) { m.checkNotNullParameter(modelUserSettings, "userSettings"); updateSelfPresence(modelUserSettings, null, true); } public final Observable> observeAllPresences() { return ObservationDeck.connectRx$default(this.observationDeck, new ObservationDeck.UpdateSource[]{this}, false, null, null, new StoreUserPresence$observeAllPresences$1(this), 14, null); } public final Observable observeApplicationActivity(long j, long j2) { Observable r = observePresenceForUser(j).F(new StoreUserPresence$observeApplicationActivity$1(j2)).r(); m.checkNotNullExpressionValue(r, "observePresenceForUser(u… .distinctUntilChanged()"); return r; } public final Observable observeLocalPresence() { Observable r = ObservationDeck.connectRx$default(this.observationDeck, new ObservationDeck.UpdateSource[]{LocalPresenceUpdateSource}, false, null, null, new StoreUserPresence$observeLocalPresence$1(this), 14, null).r(); m.checkNotNullExpressionValue(r, "observationDeck\n .c… .distinctUntilChanged()"); return r; } public final Observable observePresenceForUser(long j) { Observable r = observeAllPresences().F(new StoreUserPresence$observePresenceForUser$1(j)).r(); m.checkNotNullExpressionValue(r, "observeAllPresences()\n … .distinctUntilChanged()"); return r; } public final Observable> observePresencesForUsers(Collection collection) { m.checkNotNullParameter(collection, "userIds"); Observable> r = observeAllPresences().F(new StoreUserPresence$observePresencesForUsers$1(collection)).r(); m.checkNotNullExpressionValue(r, "observeAllPresences()\n … .distinctUntilChanged()"); return r; } @Override // com.discord.stores.StoreV2 @StoreThread public void snapshotData() { this.presencesSnapshot = this.presences.fastCopy(); Presence presence = this.localPresence; List activities = presence.getActivities(); this.localPresenceSnapshot = Presence.copy$default(presence, null, null, activities != null ? u.toList(activities) : null, 3, null); if (getUpdateSources().contains(LocalPresenceUpdateSource)) { StoreGatewayConnection.presenceUpdate$default(StoreStream.Companion.getGatewaySocket(), this.localPresence.getStatus(), null, this.localPresence.getActivities(), null, 10, null); } } @StoreThread public final void updateActivity(ActivityType activityType, Activity activity, boolean z2) { Activity activity2; Object obj; boolean z3; m.checkNotNullParameter(activityType, "type"); if (!z2) { List activities = this.localPresence.getActivities(); if (activities != null) { Iterator it = activities.iterator(); while (true) { if (!it.hasNext()) { obj = null; break; } obj = it.next(); if (((Activity) obj).p() == (activity != null ? activity.p() : null)) { z3 = true; continue; } else { z3 = false; continue; } if (z3) { break; } } activity2 = (Activity) obj; } else { activity2 = null; } if (!(!m.areEqual(activity, activity2))) { return; } } List replaceActivityInList = activity != null ? replaceActivityInList(activity, this.localPresence.getActivities()) : removeActivityInList(activityType, this.localPresence.getActivities()); ArrayList arrayList = new ArrayList(); for (Object obj2 : replaceActivityInList) { if (((Activity) obj2).p() != ActivityType.UNKNOWN) { arrayList.add(obj2); } } this.localPresence = new Presence(this.localPresence.getStatus(), null, arrayList); markChanged(LocalPresenceUpdateSource); MeUser meUser = this.meUser; if (meUser != null) { long id2 = meUser.getId(); if (!m.areEqual(this.presences.get(Long.valueOf(id2)), this.localPresence)) { this.presences.put(Long.valueOf(id2), this.localPresence); markChanged(); } } } }