diff options
| author | 2024-04-24 12:12:47 +0200 | |
|---|---|---|
| committer | 2024-04-24 11:12:47 +0100 | |
| commit | 7a1e6394831fb07e303c5ed0900dfe1ea4820de5 (patch) | |
| tree | bcd526463b19a85fbe821dcad2276da401daec18 /web/source/settings/admin/domain-permissions/form.tsx | |
| parent | [chore]: Bump codeberg.org/gruf/go-mutexes from 1.4.0 to 1.4.1 (#2860) (diff) | |
| download | gotosocial-7a1e6394831fb07e303c5ed0900dfe1ea4820de5.tar.xz | |
[chore] Refactor settings panel routing (and other fixes) (#2864)
Diffstat (limited to 'web/source/settings/admin/domain-permissions/form.tsx')
| -rw-r--r-- | web/source/settings/admin/domain-permissions/form.tsx | 153 | 
1 files changed, 0 insertions, 153 deletions
diff --git a/web/source/settings/admin/domain-permissions/form.tsx b/web/source/settings/admin/domain-permissions/form.tsx deleted file mode 100644 index 57502d6d9..000000000 --- a/web/source/settings/admin/domain-permissions/form.tsx +++ /dev/null @@ -1,153 +0,0 @@ -/* -	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 <http://www.gnu.org/licenses/>. -*/ - -import React from "react"; - -import { useEffect } from "react"; - -import { useExportDomainListMutation } from "../../lib/query/admin/domain-permissions/export"; -import useFormSubmit from "../../lib/form/submit"; - -import { -	RadioGroup, -	TextArea, -	Select, -} from "../../components/form/inputs"; - -import MutationButton from "../../components/form/mutation-button"; - -import { Error } from "../../components/error"; -import ExportFormatTable from "./export-format-table"; - -import type { -	FormSubmitFunction, -	FormSubmitResult, -	RadioFormInputHook, -	TextFormInputHook, -} from "../../lib/form/types"; - -export interface ImportExportFormProps { -	form: { -		domains: TextFormInputHook; -		exportType: TextFormInputHook; -		permType: RadioFormInputHook; -	}; -	submitParse: FormSubmitFunction; -	parseResult: FormSubmitResult; -}  - -export default function ImportExportForm({ form, submitParse, parseResult }: ImportExportFormProps) { -	const [submitExport, exportResult] = useFormSubmit(form, useExportDomainListMutation()); - -	function fileChanged(e) { -		const reader = new FileReader(); -		reader.onload = function (read) { -			const res = read.target?.result; -			if (typeof res === "string") { -				form.domains.value = res; -				submitParse(); -			} -		}; -		reader.readAsText(e.target.files[0]); -	} - -	useEffect(() => { -		if (exportResult.isSuccess) { -			form.domains.setter(exportResult.data); -		} -		/* eslint-disable-next-line react-hooks/exhaustive-deps */ -	}, [exportResult]); - -	return ( -		<> -			<h1>Import / Export domain permissions</h1> -			<p>This page can be used to import and export lists of domain permissions.</p> -			<p>Exports can be done in various formats, with varying functionality and support in other software.</p> -			<p>Imports will automatically detect what format is being processed.</p> -			<ExportFormatTable /> -			<div className="import-export"> -				<TextArea -					field={form.domains} -					label="Domains" -					placeholder={`google.com\nfacebook.com`} -					rows={8} -				/> - -				<RadioGroup -					field={form.permType} -				/> - -				<div className="button-grid"> -					<MutationButton -						label="Import" -						type="button" -						onClick={() => submitParse()} -						result={parseResult} -						showError={false} -						disabled={form.permType.value === undefined || form.permType.value.length === 0} -					/> -					<label className={`button with-icon${form.permType.value === undefined || form.permType.value.length === 0 ? " disabled" : ""}`}> -						<i className="fa fa-fw " aria-hidden="true" /> -						Import file -						<input -							type="file" -							className="hidden" -							onChange={fileChanged} -							accept="application/json,text/plain,text/csv" -							disabled={form.permType.value === undefined || form.permType.value.length === 0} -						/> -					</label> -					<b /> {/* grid filler */} -					<MutationButton -						label="Export" -						type="button" -						onClick={() => submitExport("export")} -						result={exportResult} showError={false} -						disabled={form.permType.value === undefined || form.permType.value.length === 0} -					/> -					<MutationButton -						label="Export to file" -						wrapperClassName="export-file-button" -						type="button" -						onClick={() => submitExport("export-file")} -						result={exportResult} -						showError={false} -						disabled={form.permType.value === undefined || form.permType.value.length === 0} -					/> -					<div className="export-file"> -						<span> -							as -						</span> -						<Select -							field={form.exportType} -							options={<> -								<option value="plain">Text</option> -								<option value="json">JSON</option> -								<option value="csv">CSV</option> -							</>} -						/> -					</div> -				</div> - -				{parseResult.error && <Error error={parseResult.error} />} -				{exportResult.error && <Error error={exportResult.error} />} -			</div> -		</> -	); -}  | 
