135 lines
5.5 KiB
TypeScript
135 lines
5.5 KiB
TypeScript
// Metro module 15200 (f15201).
|
|
import { useMemo, useRef, useState, useEffect } from "react";
|
|
import ChannelRTCStore from "../calls/ChannelRTCStore";
|
|
import VoiceStateRecord from "../../records/VoiceStateRecord";
|
|
import AuthenticationStore from "../../stores/AuthenticationStore";
|
|
import ChannelStore from "../../stores/ChannelStore";
|
|
import GuildMemberStore from "../../stores/GuildMemberStore";
|
|
import RTCConnectionDesyncStore from "../../stores/RTCConnectionDesyncStore";
|
|
import RTCConnectionStore from "../../stores/RTCConnectionStore";
|
|
import UserStore from "../../stores/UserStore";
|
|
import VoiceStateStore from "../../stores/VoiceStateStore";
|
|
import { sortedIndexBy } from "../../_bundle/Module12";
|
|
import { useStateFromStores, useStateFromStoresArray } from "../../_bundle/Module589";
|
|
import { isNotNullish } from "../../utils/GlobalUtils";
|
|
import { sortKey } from "../calls/ChannelRTCParticipants";
|
|
function $mk95679($env) {
|
|
return () => {
|
|
const r3 = $env[0];
|
|
const r1 = $env.$parent;
|
|
return r3 === r1[10].getChannelId() ? r1[9].getDesyncedParticipants() : null;
|
|
};
|
|
}
|
|
let env10790 = {};
|
|
export function useEnsureSyncedChannelVoiceStates(c21755_0, a1) {
|
|
let stateFromStoresArray, stateFromStoresArray2, stateFromStores2, memo;
|
|
let c21755_1 = a1;
|
|
const stateFromStores = useStateFromStores([RTCConnectionDesyncStore, RTCConnectionStore], () => c21755_0 === RTCConnectionStore.getChannelId() ? RTCConnectionDesyncStore.getDesyncedVoiceStates() : null);
|
|
stateFromStoresArray = useStateFromStoresArray([ChannelRTCStore], () => c21755_0 == null ? [] : [...ChannelRTCStore.getGuildRingingUsers(c21755_0)]);
|
|
stateFromStoresArray2 = useStateFromStoresArray([UserStore], () => stateFromStoresArray.map((item) => UserStore.getUser(item)).filter(isNotNullish));
|
|
stateFromStores2 = useStateFromStores([ChannelStore], () => ChannelStore.getBasicChannel(c21755_0));
|
|
memo = useMemo(() => stateFromStoresArray2.map((item) => ({
|
|
voiceState: new VoiceStateRecord(item.id),
|
|
user: item,
|
|
member: stateFromStores2?.guild_id != null ? GuildMemberStore.getMember(stateFromStores2?.guild_id, item.id) : null,
|
|
nick: item.globalName,
|
|
comparator: item.globalName,
|
|
_isPlaceholder: false
|
|
})), [stateFromStoresArray2, stateFromStores2?.guild_id]);
|
|
return useMemo(() => (function syncChannelVoiceStates(a0, a1, a2) {
|
|
if (!(a0 != null && a0.length !== 0) && a2.length === 0) {
|
|
return a1;
|
|
}
|
|
const r26 = [];
|
|
let c30853_0 = r26;
|
|
const set = new Set();
|
|
let c30853_1 = set;
|
|
for (const item of a1) {
|
|
r26.push(item);
|
|
set.add(item.user.id);
|
|
}
|
|
if (a0 != null) {
|
|
a0.forEach((item) => {
|
|
c30853_0.splice(sortedIndexBy(c30853_0, item, (a0) => a0.comparator), 0, item);
|
|
});
|
|
}
|
|
if (a2.length > 0) {
|
|
a2.forEach((item) => {
|
|
if (!c30853_1.has(item.user.id)) {
|
|
c30853_0.splice(sortedIndexBy(c30853_0, item, (a0) => a0.comparator), 0, item);
|
|
}
|
|
});
|
|
}
|
|
return r26;
|
|
})(stateFromStores, c21755_1, memo), [stateFromStores, a1, memo]);
|
|
}
|
|
export function useDesyncedChannelParticipants(a0) {
|
|
let env21754;
|
|
const r1 = env21754 = {
|
|
$parent: env10790
|
|
};
|
|
env21754[0] = a0;
|
|
return useStateFromStores([RTCConnectionDesyncStore, RTCConnectionStore], $mk95679(r1));
|
|
}
|
|
export function useEnsureSyncedChannelParticipants(a0, a1) {
|
|
let env21757;
|
|
const r3 = env21757 = {
|
|
$parent: env10790
|
|
};
|
|
env21757[0] = a0;
|
|
const stateFromStores3 = useStateFromStores([RTCConnectionDesyncStore, RTCConnectionStore], $mk95679(r3));
|
|
return useMemo(() => {
|
|
let r10 = a1;
|
|
if (stateFromStores3 != null) {
|
|
const length = stateFromStores3.length;
|
|
r10 = a1;
|
|
if (length !== 0) {
|
|
const r12 = [...a1];
|
|
let c27962_0 = r12;
|
|
stateFromStores3.forEach((item) => {
|
|
c27962_0.splice(sortedIndexBy(c27962_0, item, (a0) => sortKey(a0)), 0, item);
|
|
});
|
|
r10 = r12;
|
|
}
|
|
}
|
|
return r10;
|
|
}, [stateFromStores3, a1]);
|
|
}
|
|
export function useIsRTCDisconnectedUIVisible(a0, c21758_1) {
|
|
let stateFromStores4, ref, stateFromStores5, stateFromStores6;
|
|
const stateFromStores7 = useStateFromStores([AuthenticationStore], () => AuthenticationStore.getId() === c21758_1);
|
|
stateFromStores4 = useStateFromStores([RTCConnectionStore], () => RTCConnectionStore.getChannelId());
|
|
ref = useRef(null);
|
|
const [state, setState] = useState(false);
|
|
const [state2, setState2] = useState(false);
|
|
stateFromStores5 = useStateFromStores([RTCConnectionStore, VoiceStateStore], () => c21758_1 != null && a0 != null && RTCConnectionStore.getChannelId() === a0 && VoiceStateStore.isInChannel(a0, c21758_1) != null && RTCConnectionStore.isUserConnected(c21758_1));
|
|
stateFromStores6 = useStateFromStores([RTCConnectionStore, VoiceStateStore], () => c21758_1 != null && a0 != null && RTCConnectionStore.getChannelId() === a0 && VoiceStateStore.isInChannel(a0, c21758_1) != null && !RTCConnectionStore.isUserConnected(c21758_1));
|
|
useEffect(() => {
|
|
if (stateFromStores5) {
|
|
setState2(true);
|
|
}
|
|
}, [stateFromStores5]);
|
|
useEffect(() => {
|
|
if (stateFromStores4 !== a0) {
|
|
setState2(false);
|
|
}
|
|
}, [a0, stateFromStores4]);
|
|
useEffect(() => {
|
|
if (stateFromStores6 && ref.current == null) {
|
|
ref.current = setTimeout(() => {
|
|
ref.current = null;
|
|
setState(true);
|
|
}, 250);
|
|
} else {
|
|
clearTimeout(ref.current);
|
|
ref.current = null;
|
|
setState(false);
|
|
}
|
|
return () => {
|
|
clearTimeout(ref.current);
|
|
ref.current = null;
|
|
};
|
|
}, [stateFromStores6]);
|
|
return (stateFromStores7 ? !stateFromStores7 : state2) && state;
|
|
}
|