/* * Vencord, a Discord client mod * Copyright (c) 2024 Vendicated and contributors * SPDX-License-Identifier: GPL-3.0-or-later */ import { Logger } from "@utils/Logger"; import { ModalCloseButton, ModalContent, ModalHeader, ModalRoot, openModal } from "@utils/modal"; import { useAwaiter } from "@utils/react"; import { Forms, Tooltip, useState } from "@webpack/common"; import { Auth } from "../auth"; import { ReviewDBUser } from "../entities"; import { fetchBlocks, unblockUser } from "../reviewDbApi"; import { cl } from "../utils"; function UnblockButton(props: { onClick?(): void; }) { return ( {tooltipProps => (
)}
); } function BlockedUser({ user, isBusy, setIsBusy }: { user: ReviewDBUser; isBusy: boolean; setIsBusy(v: boolean): void; }) { const [gone, setGone] = useState(false); if (gone) return null; return (
{user.username} { setIsBusy(true); try { await unblockUser(user.discordID); setGone(true); } finally { setIsBusy(false); } }} />
); } function Modal() { const [isBusy, setIsBusy] = useState(false); const [blocks, error, pending] = useAwaiter(fetchBlocks, { onError: e => new Logger("ReviewDB").error("Failed to fetch blocks", e), fallbackValue: [], }); if (pending) return null; if (error) return Failed to fetch blocks: ${String(error)}; if (!blocks.length) return No blocked users.; return ( <> {blocks.map(b => ( ))} ); } export function openBlockModal() { openModal(modalProps => ( Blocked Users {Auth.token ? : You are not logged into ReviewDB!} )); }