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 - +