From 9b139b632098e6741b10fa87ff6224dcb5045947 Mon Sep 17 00:00:00 2001 From: f0x52 Date: Wed, 18 Jan 2023 14:45:14 +0100 Subject: [frogend] Settings refactor (#1318) * yakshave new form field structure * fully refactor user profile settings form * use rtk query api for profile settings * refactor user post settings * refactor password change form * refactor admin settings * FormWithData structure for user forms * admin actions refactor * whitespace * fix user settings data prop * remove superfluous logging * cleanup old code * refactor federation/suspend (overview, detail) * mostly abstracted (emoji) checkbox list * refactor parse-from-toot * refactor custom-emoji, progress on federation bulk * loading icon styling to prevent big spinny * refactor federation import-export interface * cleanup old files * [chore] Update/add license headers for 2023 * redux fixes * text-field exports * appease the linter * refactor authentication with RTK Query * fix login/logout state transition weirdness * fixes/cleanup * small linter-related fixes * add eslint license header check, fix existing files * remove old code, clarify comment * clarify suspend on subdomains * collapse if/else * fa-fw width info comment --- web/source/settings/admin/settings.js | 107 ++++++++++++++++++++-------------- 1 file changed, 62 insertions(+), 45 deletions(-) (limited to 'web/source/settings/admin/settings.js') diff --git a/web/source/settings/admin/settings.js b/web/source/settings/admin/settings.js index c3b8e9d91..c0a9eabbe 100644 --- a/web/source/settings/admin/settings.js +++ b/web/source/settings/admin/settings.js @@ -19,88 +19,105 @@ "use strict"; const React = require("react"); -const Redux = require("react-redux"); -const Submit = require("../components/submit"); +const query = require("../lib/query"); -const api = require("../lib/api"); -const submit = require("../lib/submit"); +const { + useTextInput, + useFileInput +} = require("../lib/form"); -const adminActions = require("../redux/reducers/instances").actions; +const useFormSubmit = require("../lib/form/submit"); const { TextInput, TextArea, - File -} = require("../components/form-fields").formFields(adminActions.setAdminSettingsVal, (state) => state.instances.adminSettings); - -module.exports = function AdminSettings() { - const dispatch = Redux.useDispatch(); - const instance = Redux.useSelector(state => state.instances.adminSettings); + FileInput +} = require("../components/form/inputs"); - const [errorMsg, setError] = React.useState(""); - const [statusMsg, setStatus] = React.useState(""); +const FormWithData = require("../lib/form/form-with-data"); +const MutationButton = require("../components/form/mutation-button"); - const updateSettings = submit( - () => dispatch(api.admin.updateInstance()), - {setStatus, setError} +module.exports = function AdminSettings() { + return ( + ); +}; + +function AdminSettingsForm({ data: instance }) { + const form = { + title: useTextInput("title", { defaultValue: instance.title }), + thumbnail: useFileInput("thumbnail", { withPreview: true }), + thumbnailDesc: useTextInput("thumbnail_description", { defaultValue: instance.thumbnail_description }), + shortDesc: useTextInput("short_description", { defaultValue: instance.short_description }), + description: useTextInput("description", { defaultValue: instance.description }), + contactUser: useTextInput("contact_username", { defaultValue: instance.contact_account?.username }), + contactEmail: useTextInput("contact_email", { defaultValue: instance.email }), + terms: useTextInput("terms", { defaultValue: instance.terms }) + }; + + const [submitForm, result] = useFormSubmit(form, query.useUpdateInstanceMutation()); return ( -
+

Instance Settings

Instance thumbnail

- {instance.thumbnail - +