42 lines
1.9 KiB
TypeScript
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
|
|
};
|
|
};
|