/* 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, { useState } from "react"; import { useLocation, useParams } from "wouter"; import { useBaseUrl } from "../../../../lib/navigation/util"; import BackButton from "../../../../components/back-button"; import { useGetDomainPermissionSubscriptionQuery, useRemoveDomainPermissionSubscriptionMutation, useUpdateDomainPermissionSubscriptionMutation } from "../../../../lib/query/admin/domain-permissions/subscriptions"; import { useBoolInput, useNumberInput, useTextInput } from "../../../../lib/form"; import FormWithData from "../../../../lib/form/form-with-data"; import { DomainPermSub } from "../../../../lib/types/domain-permission"; import MutationButton from "../../../../components/form/mutation-button"; import { Checkbox, NumberInput, Select, TextInput } from "../../../../components/form/inputs"; import useFormSubmit from "../../../../lib/form/submit"; import UsernameLozenge from "../../../../components/username-lozenge"; import { urlValidator } from "../../../../lib/util/formvalidators"; export default function DomainPermissionSubscriptionDetail() { const params = useParams(); let id = params.permSubId as string | undefined; if (!id) { throw "no permSub ID"; } return ( ); } function DomainPermSubForm({ data: permSub }: { data: DomainPermSub }) { const baseUrl = useBaseUrl(); const backLocation: string = history.state?.backLocation ?? `~${baseUrl}/subscriptions/search`; return (

Domain Permission Subscription Detail

); } function DomainPermSubDetails({ permSub }: { permSub: DomainPermSub }) { const [ location ] = useLocation(); const baseUrl = useBaseUrl(); const permType = permSub.permission_type; if (!permType) { throw "permission_type was undefined"; } const created = new Date(permSub.created_at).toDateString(); let fetchedAtStr = "never"; if (permSub.fetched_at) { fetchedAtStr = new Date(permSub.fetched_at).toDateString(); } let successfullyFetchedAtStr = "never"; if (permSub.successfully_fetched_at) { successfullyFetchedAtStr = new Date(permSub.successfully_fetched_at).toDateString(); } return (
Permission type:
{permType}
ID
{permSub.id}
Created
Created By
Last fetch attempt:
{fetchedAtStr}
Last successful fetch:
{successfullyFetchedAtStr}
Discovered {permSub.permission_type}s:
{permSub.count}
); } function UpdateDomainPermSub({ permSub }: { permSub: DomainPermSub }) { const [ showPassword, setShowPassword ] = useState(false); const form = { priority: useNumberInput("priority", { source: permSub }), uri: useTextInput("uri", { source: permSub, validator: urlValidator, }), content_type: useTextInput("content_type", { source: permSub }), title: useTextInput("title", { source: permSub }), as_draft: useBoolInput("as_draft", { source: permSub }), adopt_orphans: useBoolInput("adopt_orphans", { source: permSub }), useBasicAuth: useBoolInput("useBasicAuth", { defaultValue: (permSub.fetch_password !== undefined && permSub.fetch_password !== "") || (permSub.fetch_username !== undefined && permSub.fetch_username !== ""), nosubmit: true }), fetch_username: useTextInput("fetch_username", { source: permSub }), fetch_password: useTextInput("fetch_password", { source: permSub }), }; const [submitUpdate, updateResult] = useFormSubmit( form, useUpdateDomainPermissionSubscriptionMutation(), { changedOnly: true, customizeMutationArgs: (mutationData) => { // Clear username + password if they were set, // but user has selected to not use basic auth. if (!form.useBasicAuth.value) { if (permSub.fetch_username !== undefined && permSub.fetch_username !== "") { mutationData["fetch_username"] = ""; } if (permSub.fetch_password !== undefined && permSub.fetch_password !== "") { mutationData["fetch_password"] = ""; } } // Remove useBasicAuth if included. delete mutationData["useBasicAuth"]; // Modify mutation argument to // include ID and permission type. return { id: permSub.id, permType: permSub.permission_type, formData: mutationData, }; }, onFinish: res => { // On a successful response that returns data, // clear the fetch_username and fetch_password // fields if they weren't set on the returned sub. if (res.data) { if (res.data.fetch_username === undefined || res.data.fetch_username === "") { form.fetch_username.setter(""); } if (res.data.fetch_password === undefined || res.data.fetch_password === "") { form.fetch_password.setter(""); } } } } ); const submitDisabled = () => { // If no basic auth, we don't care what // fetch_password and fetch_username are. if (!form.useBasicAuth.value) { return false; } // Either of fetch_password or fetch_username must be set. return !(form.fetch_password.value || form.fetch_username.value); }; return (

Edit Subscription