/* GoToSocial Copyright (C) 2021-2023 GoToSocial Authors admin@gotosocial.org 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 . */ "use strict"; const React = require("react"); const { Switch, Route, Redirect, useLocation } = require("wouter"); const query = require("../../lib/query"); 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 isValidDomain = require("is-valid-domain"); const FormWithData = require("../../lib/form/form-with-data"); const { Error } = require("../../components/error"); const baseUrl = "/settings/admin/federation/import-export"; module.exports = function ImportExport() { const [updateFromFile, setUpdateFromFile] = React.useState(false); const form = { domains: useTextInput("domains"), exportType: useTextInput("exportType", { defaultValue: "plain", dontReset: true }) }; const [submitParse, parseResult] = useFormSubmit(form, query.useProcessDomainListMutation()); const [submitExport, exportResult] = useFormSubmit(form, query.useExportDomainListMutation()); function fileChanged(e) { const reader = new FileReader(); reader.onload = function (read) { form.domains.setter(read.target.result); setUpdateFromFile(true); }; reader.readAsText(e.target.files[0]); } React.useEffect(() => { if (exportResult.isSuccess) { form.domains.setter(exportResult.data); } /* eslint-disable-next-line react-hooks/exhaustive-deps */ }, [exportResult]); const [_location, setLocation] = useLocation(); if (updateFromFile) { setUpdateFromFile(false); submitParse(); } return ( {!parseResult.isSuccess && }

{ parseResult.reset(); setLocation(baseUrl); }}> < back Confirm import:

{parseResult.isSuccess && }

Import / Export suspended domains