/* 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 useFormSubmit from "../../../../lib/form/submit"; import { useCreateDomainPermissionSubscriptionMutation } from "../../../../lib/query/admin/domain-permissions/subscriptions"; import { useBoolInput, useNumberInput, useTextInput } from "../../../../lib/form"; import { urlValidator } from "../../../../lib/util/formvalidators"; import MutationButton from "../../../../components/form/mutation-button"; import { Checkbox, NumberInput, Select, TextInput } from "../../../../components/form/inputs"; import { useLocation } from "wouter"; import { DomainPermissionSubscriptionDocsLink, DomainPermissionSubscriptionHelpText } from "./common"; export default function DomainPermissionSubscriptionNew() { const [ _location, setLocation ] = useLocation(); const useBasicAuth = useBoolInput("useBasicAuth", { defaultValue: false }); const form = { priority: useNumberInput("priority", { defaultValue: 0 }), uri: useTextInput("uri", { validator: urlValidator, }), content_type: useTextInput("content_type", { defaultValue: "text/csv" }), permission_type: useTextInput("permission_type", { defaultValue: "block" }), title: useTextInput("title"), as_draft: useBoolInput("as_draft", { defaultValue: true }), adopt_orphans: useBoolInput("adopt_orphans", { defaultValue: false }), fetch_username: useTextInput("fetch_username", { nosubmit: !useBasicAuth.value }), fetch_password: useTextInput("fetch_password", { nosubmit: !useBasicAuth.value }), }; const [ showPassword, setShowPassword ] = useState(false); const [formSubmit, result] = useFormSubmit( form, useCreateDomainPermissionSubscriptionMutation(), { changedOnly: false, onFinish: (res) => { if (res.data) { // Creation successful, // redirect to subscription detail. setLocation(`/subscriptions/${res.data.id}`); } }, }); const submitDisabled = () => { // URI required. if (!form.uri.value || !form.uri.valid) { return true; } // If no basic auth, we don't care what // fetch_password and fetch_username are. if (!useBasicAuth.value) { return false; } // Either of fetch_password or fetch_username must be set. return !(form.fetch_password.value || form.fetch_username.value); }; return (

New Domain Permission Subscription

} /> <>Use basic auth <> when fetching } field={useBasicAuth} /> { useBasicAuth.value && <>
} { !form.as_draft.value &&
Unchecking "create permissions as drafts" means that permissions found on the subscribed list will be enforced immediately the next time the list is fetched.
If you're subscribing to a block list, this means that blocks will be created automatically from the given list, potentially severing any existing follow relationships with accounts on the blocked domain.
Before saving, make sure this is what you really want to do, and consider creating domain excludes for domains that you want to manage manually.
} ); }