156 lines
8.4 KiB
Java
156 lines
8.4 KiB
Java
package com.discord.widgets.channels.memberlist;
|
|
|
|
import com.discord.api.channel.Channel;
|
|
import com.discord.api.presence.ClientStatus;
|
|
import com.discord.api.role.GuildRole;
|
|
import com.discord.models.domain.ModelApplicationStream;
|
|
import com.discord.models.guild.Guild;
|
|
import com.discord.models.member.GuildMember;
|
|
import com.discord.models.presence.Presence;
|
|
import com.discord.models.user.User;
|
|
import com.discord.stores.StoreChannelMembers;
|
|
import com.discord.stores.StoreEmojiCustom;
|
|
import com.discord.stores.StoreGuilds;
|
|
import com.discord.utilities.guilds.RoleUtils;
|
|
import com.discord.utilities.lazy.memberlist.MemberListRow;
|
|
import com.discord.utilities.lazy.memberlist.ThreadMemberList;
|
|
import com.discord.widgets.channels.memberlist.WidgetChannelMembersListViewModel;
|
|
import d0.t.m0;
|
|
import d0.t.u;
|
|
import d0.z.d.m;
|
|
import java.util.ArrayList;
|
|
import java.util.Collection;
|
|
import java.util.Comparator;
|
|
import java.util.LinkedHashMap;
|
|
import java.util.Map;
|
|
import java.util.Set;
|
|
import java.util.SortedSet;
|
|
/* compiled from: ThreadMemberListItemGenerator.kt */
|
|
public final class ThreadMemberListItemGeneratorKt {
|
|
private static final Comparator<MemberListRow.Member> ALPHABETICAL_COMPARATOR = ThreadMemberListItemGeneratorKt$ALPHABETICAL_COMPARATOR$1.INSTANCE;
|
|
|
|
public static final ThreadMemberList createThreadMemberList(String str, Map<Long, GuildRole> map, LinkedHashMap<Long, SortedSet<MemberListRow.Member>> linkedHashMap) {
|
|
String str2;
|
|
m.checkNotNullParameter(str, "listId");
|
|
m.checkNotNullParameter(map, "roles");
|
|
m.checkNotNullParameter(linkedHashMap, "threadMemberMap");
|
|
int i = 0;
|
|
ThreadMemberList threadMemberList = new ThreadMemberList(str, 0, 2, null);
|
|
for (Map.Entry<Long, SortedSet<MemberListRow.Member>> entry : linkedHashMap.entrySet()) {
|
|
long longValue = entry.getKey().longValue();
|
|
SortedSet<MemberListRow.Member> value = entry.getValue();
|
|
if (!value.isEmpty()) {
|
|
MemberListRow.StatusHeader.Type type = MemberListRow.StatusHeader.Type.ONLINE;
|
|
if (longValue == type.getId()) {
|
|
threadMemberList.add(new MemberListRow.StatusHeader(type.name(), type, value.size()));
|
|
} else {
|
|
MemberListRow.StatusHeader.Type type2 = MemberListRow.StatusHeader.Type.OFFLINE;
|
|
if (longValue == type2.getId()) {
|
|
threadMemberList.add(new MemberListRow.StatusHeader(type2.name(), type2, value.size()));
|
|
} else {
|
|
GuildRole guildRole = map.get(Long.valueOf(longValue));
|
|
if (guildRole == null || (str2 = guildRole.f()) == null) {
|
|
str2 = "";
|
|
}
|
|
threadMemberList.add(new MemberListRow.RoleHeader(longValue, str2, value.size()));
|
|
}
|
|
}
|
|
threadMemberList.getGroupIndices().put(Integer.valueOf(i), String.valueOf(longValue));
|
|
int size = value.size() + 1 + i;
|
|
for (MemberListRow.Member member : value) {
|
|
threadMemberList.add(member);
|
|
}
|
|
i = size;
|
|
}
|
|
}
|
|
return threadMemberList;
|
|
}
|
|
|
|
public static final WidgetChannelMembersListViewModel.MemberList generateThreadMemberListItems(Channel channel, Map<Long, GuildRole> map, Guild guild, Map<Long, GuildMember> map2, Map<Long, ? extends User> map3, Map<Long, Presence> map4, Map<Long, ? extends ModelApplicationStream> map5, Set<Long> set, StoreGuilds storeGuilds, StoreEmojiCustom storeEmojiCustom) {
|
|
Map<Long, Presence> map6 = map4;
|
|
m.checkNotNullParameter(channel, "channel");
|
|
m.checkNotNullParameter(map, "roles");
|
|
m.checkNotNullParameter(map2, "guildMembers");
|
|
m.checkNotNullParameter(map3, "users");
|
|
m.checkNotNullParameter(map6, "presences");
|
|
m.checkNotNullParameter(map5, "streams");
|
|
m.checkNotNullParameter(set, "threadMembers");
|
|
m.checkNotNullParameter(storeGuilds, "storeGuilds");
|
|
m.checkNotNullParameter(storeEmojiCustom, "storeEmojiCustom");
|
|
if (set.isEmpty()) {
|
|
return GuildMemberListItemGeneratorKt.generateGuildMemberListItems(new ThreadMemberList(String.valueOf(channel.h()), map2.size()), guild, channel, map, false, storeGuilds, storeEmojiCustom);
|
|
}
|
|
LinkedHashMap<Long, SortedSet<MemberListRow.Member>> initializeOrderedMap = initializeOrderedMap(map);
|
|
for (Number number : set) {
|
|
long longValue = number.longValue();
|
|
MemberListRow.Member makeRowMember = StoreChannelMembers.Companion.makeRowMember(longValue, map2, map3, map6.get(Long.valueOf(longValue)), map5.containsKey(Long.valueOf(longValue)), false);
|
|
if (makeRowMember != null) {
|
|
insertMemberIntoMap(makeRowMember, map2, map, initializeOrderedMap);
|
|
}
|
|
initializeOrderedMap = initializeOrderedMap;
|
|
map6 = map4;
|
|
}
|
|
return GuildMemberListItemGeneratorKt.generateGuildMemberListItems(createThreadMemberList(String.valueOf(channel.h()), map, initializeOrderedMap), guild, channel, map, false, storeGuilds, storeEmojiCustom);
|
|
}
|
|
|
|
public static final Comparator<MemberListRow.Member> getALPHABETICAL_COMPARATOR() {
|
|
return ALPHABETICAL_COMPARATOR;
|
|
}
|
|
|
|
private static final LinkedHashMap<Long, SortedSet<MemberListRow.Member>> initializeOrderedMap(Map<Long, GuildRole> map) {
|
|
LinkedHashMap<Long, SortedSet<MemberListRow.Member>> linkedHashMap = new LinkedHashMap<>();
|
|
Collection<GuildRole> values = map.values();
|
|
ArrayList arrayList = new ArrayList();
|
|
for (Object obj : values) {
|
|
if (((GuildRole) obj).c()) {
|
|
arrayList.add(obj);
|
|
}
|
|
}
|
|
for (GuildRole guildRole : u.sortedWith(arrayList, RoleUtils.getROLE_COMPARATOR())) {
|
|
linkedHashMap.put(Long.valueOf(guildRole.getId()), m0.sortedSetOf(ALPHABETICAL_COMPARATOR, new MemberListRow.Member[0]));
|
|
}
|
|
Long valueOf = Long.valueOf(MemberListRow.StatusHeader.Type.ONLINE.getId());
|
|
Comparator<MemberListRow.Member> comparator = ALPHABETICAL_COMPARATOR;
|
|
linkedHashMap.put(valueOf, m0.sortedSetOf(comparator, new MemberListRow.Member[0]));
|
|
linkedHashMap.put(Long.valueOf(MemberListRow.StatusHeader.Type.OFFLINE.getId()), m0.sortedSetOf(comparator, new MemberListRow.Member[0]));
|
|
return linkedHashMap;
|
|
}
|
|
|
|
private static final void insertMemberIntoMap(MemberListRow.Member member, Map<Long, GuildMember> map, Map<Long, GuildRole> map2, LinkedHashMap<Long, SortedSet<MemberListRow.Member>> linkedHashMap) {
|
|
SortedSet<MemberListRow.Member> sortedSet;
|
|
GuildMember guildMember = map.get(Long.valueOf(member.getUserId()));
|
|
Presence presence = member.getPresence();
|
|
Long l = null;
|
|
boolean z2 = false;
|
|
boolean z3 = (presence != null ? presence.getStatus() : null) == null || member.getPresence().getStatus() == ClientStatus.INVISIBLE || member.getPresence().getStatus() == ClientStatus.OFFLINE;
|
|
if (!((guildMember != null ? Long.valueOf(guildMember.getHoistRoleId()) : null) == null || guildMember.getHoistRoleId() == 0)) {
|
|
z2 = true;
|
|
}
|
|
if (z3) {
|
|
MemberListRow.StatusHeader.Type type = MemberListRow.StatusHeader.Type.OFFLINE;
|
|
SortedSet<MemberListRow.Member> sortedSet2 = linkedHashMap.get(Long.valueOf(type.getId()));
|
|
if (sortedSet2 != null) {
|
|
sortedSet2.add(member);
|
|
linkedHashMap.put(Long.valueOf(type.getId()), sortedSet2);
|
|
return;
|
|
}
|
|
} else if (z2) {
|
|
if (guildMember != null) {
|
|
l = Long.valueOf(guildMember.getHoistRoleId());
|
|
}
|
|
GuildRole guildRole = map2.get(l);
|
|
if (!(guildRole == null || (sortedSet = linkedHashMap.get(Long.valueOf(guildRole.getId()))) == null)) {
|
|
sortedSet.add(member);
|
|
linkedHashMap.put(Long.valueOf(guildRole.getId()), sortedSet);
|
|
return;
|
|
}
|
|
}
|
|
MemberListRow.StatusHeader.Type type2 = MemberListRow.StatusHeader.Type.ONLINE;
|
|
SortedSet<MemberListRow.Member> sortedSet3 = linkedHashMap.get(Long.valueOf(type2.getId()));
|
|
if (sortedSet3 != null) {
|
|
sortedSet3.add(member);
|
|
linkedHashMap.put(Long.valueOf(type2.getId()), sortedSet3);
|
|
}
|
|
}
|
|
}
|