Files
discord-decomp/modules/directory_channels/useAvailableAndAddedGuilds.tsx
T
2026-11-01 12:12:55 +02:00

42 lines
1.9 KiB
TypeScript

// Metro module 10070 (f10071).
import { useState, useMemo } from "react";
import GuildStore from "../../stores/GuildStore";
import PermissionStore from "../../stores/PermissionStore";
import SortedGuildStore from "../../stores/SortedGuildStore";
import GuildDirectoryStore from "./GuildDirectoryStore";
import { Permissions } from "../../Constants";
import { useStateFromStores, useStateFromStoresArray } from "../../_bundle/Module589";
import useMountEffect from "../../hooks/useMountEffect";
import { fetchGuildEntriesForIds } from "./GuildDirectoryActionCreators";
export default function useAvailableAndAddedGuilds(a0, c17671_1) {
let stateFromStoresArray;
const [loading, setState] = useState(false);
const stateFromStores = useStateFromStores([GuildDirectoryStore], () => GuildDirectoryStore.getAdminGuildEntryIds(c17671_1));
stateFromStoresArray = useStateFromStoresArray([SortedGuildStore, GuildStore, PermissionStore], () => {
const flattenedGuildIds = SortedGuildStore.getFlattenedGuildIds();
const r5 = [];
let c26610_0 = r5;
flattenedGuildIds.forEach((flattenedGuildId) => {
const guild = GuildStore.getGuild(flattenedGuildId);
if (guild != null && PermissionStore.can(Permissions.ADMINISTRATOR, guild) && guild.id !== a0) {
c26610_0.push(guild);
}
});
return r5;
}, [a0]);
useMountEffect(() => {
(async () => {
let c30188_0;
c30188_0 = void 0;
setState(true);
await fetchGuildEntriesForIds(c17671_1, stateFromStoresArray.map((item) => item.id));
(0, setState)(false);
})();
});
return {
availableGuilds: useMemo(() => stateFromStoresArray.filter((item) => !(stateFromStores == null ? void 0 : stateFromStores.has(item.id))), [stateFromStoresArray, stateFromStores]),
addedGuilds: useMemo(() => stateFromStoresArray.filter((item) => stateFromStores == null ? void 0 : stateFromStores.has(item.id)), [stateFromStoresArray, stateFromStores]),
loading
};
};