/*
	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 query = require("../../../lib/query");
const {
	useTextInput,
	useComboBoxInput,
	useCheckListInput
} = require("../../../lib/form");
const useFormSubmit = require("../../../lib/form/submit");
const CheckList = require("../../../components/check-list");
const { CategorySelect } = require('../category-select');
const { TextInput } = require("../../../components/form/inputs");
const MutationButton = require("../../../components/form/mutation-button");
const { Error } = require("../../../components/error");
module.exports = function ParseFromToot({ emojiCodes }) {
	const [searchStatus, result] = query.useSearchStatusForEmojiMutation();
	const [onURLChange, _resetURL, { url }] = useTextInput("url");
	function submitSearch(e) {
		e.preventDefault();
		if (url.trim().length != 0) {
			searchStatus(url);
		}
	}
	return (
		
	);
};
function SearchResult({ result, localEmojiCodes }) {
	const { error, data, isSuccess, isError } = result;
	if (!(isSuccess || isError)) {
		return null;
	}
	if (error == "NONE_FOUND") {
		return "No results found";
	} else if (error == "LOCAL_INSTANCE") {
		return This is a local user/toot, all referenced emoji are already on your instance;
	} else if (error != undefined) {
		return ;
	}
	if (data.list.length == 0) {
		return This {data.type == "statuses" ? "toot" : "account"} doesn't use any custom emoji;
	}
	return (
		
	);
}
function CopyEmojiForm({ localEmojiCodes, type, emojiList }) {
	const form = {
		selectedEmoji: useCheckListInput("selectedEmoji", {
			entries: emojiList,
			uniqueKey: "id"
		}),
		category: useComboBoxInput("category")
	};
	const [formSubmit, result] = useFormSubmit(
		form,
		query.usePatchRemoteEmojisMutation(),
		{
			changedOnly: false,
			onFinish: ({ data }) => {
				if (data != undefined) {
					form.selectedEmoji.updateMultiple(
						// uncheck all successfully processed emoji
						data.map(([id]) => [id, { checked: false }])
					);
				}
			}
		}
	);
	const buttonsInactive = form.selectedEmoji.someSelected
		? {}
		: {
			disabled: true,
			title: "No emoji selected, cannot perform any actions"
		};
	const checkListExtraProps = React.useCallback(() => ({ localEmojiCodes }), [localEmojiCodes]);
	return (
		
			This {type == "statuses" ? "toot" : "account"} uses the following custom emoji, select the ones you want to copy/disable:
			
		 
	);
}
function ErrorList({ errors }) {
	return (
		
			One or multiple emoji failed to process:
			{errors.map(([shortcode, err]) => (
				
					{shortcode}: {err}
				
			))}
		
 {
					shortcodeField.onChange(e);
					onChange({ shortcode: e.target.value, checked: true });
				}}
			/>
		>
	);
}
			 {
					shortcodeField.onChange(e);
					onChange({ shortcode: e.target.value, checked: true });
				}}
			/>
		>
	);
}