From 85e7f2ccb55655dfe19299e2a92835879161450f Mon Sep 17 00:00:00 2001 From: f0x Date: Sun, 8 Jan 2023 16:14:46 +0000 Subject: [PATCH] refactor admin settings --- web/source/settings/admin/settings.js | 105 ++++++++++-------- .../settings/lib/form/form-with-data.jsx | 17 +++ web/source/settings/lib/query/admin.js | 36 ++++++ web/source/settings/lib/query/base.js | 8 +- web/source/settings/lib/query/index.js | 3 +- .../lib/query/{user-settings.js => user.js} | 0 web/source/settings/user/profile.js | 4 +- 7 files changed, 124 insertions(+), 49 deletions(-) create mode 100644 web/source/settings/lib/form/form-with-data.jsx create mode 100644 web/source/settings/lib/query/admin.js rename web/source/settings/lib/query/{user-settings.js => user.js} (100%) diff --git a/web/source/settings/admin/settings.js b/web/source/settings/admin/settings.js index c3b8e9d91..294b9b885 100644 --- a/web/source/settings/admin/settings.js +++ b/web/source/settings/admin/settings.js @@ -19,88 +19,103 @@ "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); + FileInput +} = require("../components/form/inputs"); + +const FormWithData = require("../lib/form/form-with-data"); +const MutationButton = require("../components/form/mutation-button"); module.exports = function AdminSettings() { - const dispatch = Redux.useDispatch(); - const instance = Redux.useSelector(state => state.instances.adminSettings); - - const [errorMsg, setError] = React.useState(""); - const [statusMsg, setStatus] = React.useState(""); - - const updateSettings = submit( - () => dispatch(api.admin.updateInstance()), - {setStatus, setError} + 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 [result, submitForm] = useFormSubmit(form, query.useUpdateInstanceMutation()); return ( -
+

Instance Settings

Instance thumbnail

- {instance.thumbnail - +