/* 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 { useRoute, Link, Redirect } = require("wouter"); const { useComboBoxInput, useFileInput, useValue } = require("../../../lib/form"); const { CategorySelect } = require("../category-select"); const useFormSubmit = require("../../../lib/form/submit").default; const { useBaseUrl } = require("../../../lib/navigation/util"); const FakeToot = require("../../../components/fake-toot"); const FormWithData = require("../../../lib/form/form-with-data").default; const Loading = require("../../../components/loading"); const { FileInput } = require("../../../components/form/inputs"); const MutationButton = require("../../../components/form/mutation-button"); const { Error } = require("../../../components/error"); const { useGetEmojiQuery, useEditEmojiMutation, useDeleteEmojiMutation, } = require("../../../lib/query/admin/custom-emoji"); module.exports = function EmojiDetailRoute({ }) { const baseUrl = useBaseUrl(); let [_match, params] = useRoute(`${baseUrl}/:emojiId`); if (params?.emojiId == undefined) { return ; } else { return (
< go back
); } }; function EmojiDetailForm({ data: emoji }) { const baseUrl = useBaseUrl(); const form = { id: useValue("id", emoji.id), category: useComboBoxInput("category", { source: emoji }), image: useFileInput("image", { withPreview: true, maxSize: 50 * 1024 // TODO: get from instance api }) }; const [modifyEmoji, result] = useFormSubmit(form, useEditEmojiMutation()); // Automatic submitting of category change React.useEffect(() => { if ( form.category.hasChanged() && !form.category.state.open && !form.category.isNew) { modifyEmoji(); } /* eslint-disable-next-line react-hooks/exhaustive-deps */ }, [form.category.hasChanged(), form.category.isNew, form.category.state.open]); const [deleteEmoji, deleteResult] = useDeleteEmojiMutation(); if (deleteResult.isSuccess) { return ; } return ( <>
{emoji.shortcode}

{emoji.shortcode}

deleteEmoji(emoji.id)} className="danger" showError={false} result={deleteResult} />

Modify this emoji {result.isLoading && }

Look at this new custom emoji {emoji.shortcode} isn't it cool? {result.error && } {deleteResult.error && }
); }