/* GoToSocial Copyright (C) GoToSocial Authors admin@gotosocial.org SPDX-License-Identifier: AGPL-3.0-or-later This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ import React from "react"; import { useLocation, useParams } from "wouter"; import Loading from "../../../../components/loading"; import { useBaseUrl } from "../../../../lib/navigation/util"; import BackButton from "../../../../components/back-button"; import { useAcceptDomainPermissionDraftMutation, useGetDomainPermissionDraftQuery, useRemoveDomainPermissionDraftMutation } from "../../../../lib/query/admin/domain-permissions/drafts"; import { Error as ErrorC } from "../../../../components/error"; import UsernameLozenge from "../../../../components/username-lozenge"; import MutationButton from "../../../../components/form/mutation-button"; import { useBoolInput, useTextInput } from "../../../../lib/form"; import { Checkbox, Select } from "../../../../components/form/inputs"; import { PermType } from "../../../../lib/types/perm"; export default function DomainPermissionDraftDetail() { const baseUrl = useBaseUrl(); const backLocation: string = history.state?.backLocation ?? `~${baseUrl}`; const params = useParams(); let id = params.permDraftId as string | undefined; if (!id) { throw "no perm ID"; } const { data: permDraft, isLoading, isFetching, isError, error, } = useGetDomainPermissionDraftQuery(id); if (isLoading || isFetching) { return ; } else if (isError) { return ; } else if (permDraft === undefined) { return ; } const created = permDraft.created_at ? new Date(permDraft.created_at).toDateString(): "unknown"; const domain = permDraft.domain; const permType = permDraft.permission_type; if (!permType) { return ; } const publicComment = permDraft.public_comment ?? "[none]"; const privateComment = permDraft.private_comment ?? "[none]"; const subscriptionID = permDraft.subscription_id ?? "[none]"; return (

Domain Permission Draft Detail

Created
Created By
Domain
{domain}
Permission type
{permType}
Private comment
{privateComment}
Public comment
{publicComment}
Subscription ID
{subscriptionID}
); } function HandleDraft({ id, permType, backLocation }: { id: string, permType: PermType, backLocation: string }) { const [ accept, acceptResult ] = useAcceptDomainPermissionDraftMutation(); const [ remove, removeResult ] = useRemoveDomainPermissionDraftMutation(); const [_location, setLocation] = useLocation(); const form = { acceptOrRemove: useTextInput("accept_or_remove", { defaultValue: "accept" }), overwrite: useBoolInput("overwrite"), exclude_target: useBoolInput("exclude_target"), }; const onClick = (e) => { e.preventDefault(); if (form.acceptOrRemove.value === "accept") { const overwrite = form.overwrite.value; accept({id, overwrite, permType}).then(res => { if ("data" in res) { setLocation(backLocation); } }); } else { const exclude_target = form.exclude_target.value; remove({id, exclude_target}).then(res => { if ("data" in res) { setLocation(backLocation); } }); } }; return (
{ form.acceptOrRemove.value === "accept" && <> } { form.acceptOrRemove.value === "remove" && <> } ); }