/* 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 . */ const React = require("react"); const query = require("../../../lib/query"); const { isValidDomainBlock, hasBetterScope } = require("../../../lib/domain-block"); const { useTextInput, useBoolInput, useRadioInput, useCheckListInput } = require("../../../lib/form"); const useFormSubmit = require("../../../lib/form/submit"); const { TextInput, TextArea, Checkbox, Select, RadioGroup } = require("../../../components/form/inputs"); const CheckList = require("../../../components/check-list"); const MutationButton = require("../../../components/form/mutation-button"); const FormWithData = require("../../../lib/form/form-with-data"); module.exports = React.memo( function ProcessImport({ list }) { return (
); } ); function ImportList({ list, data: blockedInstances }) { const hasComment = React.useMemo(() => { let hasPublic = false; let hasPrivate = false; list.some((entry) => { if (entry.public_comment?.length > 0) { hasPublic = true; } if (entry.private_comment?.length > 0) { hasPrivate = true; } return hasPublic && hasPrivate; }); if (hasPublic && hasPrivate) { return { both: true }; } else if (hasPublic) { return { type: "public_comment" }; } else if (hasPrivate) { return { type: "private_comment" }; } else { return {}; } }, [list]); const showComment = useTextInput("showComment", { defaultValue: hasComment.type ?? "public_comment" }); const form = { domains: useCheckListInput("domains", { entries: list }), obfuscate: useBoolInput("obfuscate"), privateComment: useTextInput("private_comment", { defaultValue: `Imported on ${new Date().toLocaleString()}` }), privateCommentBehavior: useRadioInput("private_comment_behavior", { defaultValue: "append", options: { append: "Append to", replace: "Replace" } }), publicComment: useTextInput("public_comment"), publicCommentBehavior: useRadioInput("public_comment_behavior", { defaultValue: "append", options: { append: "Append to", replace: "Replace" } }), }; const [importDomains, importResult] = useFormSubmit(form, query.useImportDomainListMutation(), { changedOnly: false }); return ( <>
{list.length} domain{list.length != 1 ? "s" : ""} in this list {hasComment.both &&