56 lines
2.6 KiB
TypeScript
56 lines
2.6 KiB
TypeScript
// Metro module 11296 (f11297).
|
|
import { useMemo } from "react";
|
|
import { useGuildIndexState } from "../../application_commands/ApplicationCommandIndexStore";
|
|
import UserStore from "../../../stores/UserStore";
|
|
import { DISCOVERY_COMMANDS_QUERY_LIMIT } from "../../application_commands/ApplicationCommandConstants";
|
|
import { useStateFromStores } from "../../../_bundle/Module589";
|
|
import { useDiscovery } from "../../application_commands/ApplicationCommandQueryApi";
|
|
import { ApplicationCommandType } from "../../../flow/Server";
|
|
import { BUILT_IN_SECTIONS } from "../../application_commands/ApplicationCommandBuiltIns";
|
|
import { useSortApplicationsViaFrecency } from "../../applications/ApplicationFrecencyHooks";
|
|
import Module12 from "../../../_bundle/Module12";
|
|
import isApplicationAgeRestricted from "../../applications/utils/isApplicationAgeRestricted";
|
|
export default function useAppsInThisServer({ context }) {
|
|
let commandsByActiveSection, memo, sortApplicationsViaFrecency;
|
|
commandsByActiveSection = void 0;
|
|
memo = void 0;
|
|
sortApplicationsViaFrecency = void 0;
|
|
const guildIndexState = useGuildIndexState((context.type === "channel" ? context.channel : void 0)?.guild_id, true);
|
|
const stateFromStores = useStateFromStores([UserStore], () => UserStore.getCurrentUser()?.nsfwAllowed);
|
|
const discovery = useDiscovery({
|
|
context,
|
|
filters: {
|
|
commandTypes: [ApplicationCommandType.CHAT, ApplicationCommandType.PRIMARY_ENTRY_POINT]
|
|
},
|
|
options: {
|
|
placeholderCount: 0,
|
|
limit: DISCOVERY_COMMANDS_QUERY_LIMIT,
|
|
includeFrecency: true
|
|
},
|
|
allowFetch: true
|
|
});
|
|
commandsByActiveSection = discovery.commandsByActiveSection;
|
|
const loading = discovery.loading;
|
|
memo = useMemo(() => commandsByActiveSection.reduce((acc, item) => {
|
|
const section = item.section;
|
|
if (item.data.length > 0) {
|
|
acc.add(section.id);
|
|
}
|
|
return acc;
|
|
}, new Set()), [commandsByActiveSection]);
|
|
sortApplicationsViaFrecency = useSortApplicationsViaFrecency(useMemo(() => {
|
|
const r6 = Object;
|
|
let r9 = guildIndexState.result?.sections;
|
|
if (r9 == null) {
|
|
r9 = {};
|
|
}
|
|
return r6.values(r9).map((item) => item.descriptor).filter((item) => !(item.id in BUILT_IN_SECTIONS) && memo.has(item.id));
|
|
}, [guildIndexState.result?.sections, memo]));
|
|
return {
|
|
appsInThisServer: useMemo(() => Module12.compact(sortApplicationsViaFrecency.map((item) => item.application)).filter((item) => !(stateFromStores === false && isApplicationAgeRestricted(item.id))).map((item) => ({
|
|
application: item
|
|
})), [stateFromStores, sortApplicationsViaFrecency]),
|
|
isLoading: guildIndexState.fetchState.fetching || loading
|
|
};
|
|
};
|