diff --git a/web/source/settings-panel/admin/actions.js b/web/source/settings-panel/admin/actions.js index a9d779312..d4980d021 100644 --- a/web/source/settings-panel/admin/actions.js +++ b/web/source/settings-panel/admin/actions.js @@ -25,6 +25,7 @@ const Redux = require("react-redux"); const Submit = require("../components/submit"); const api = require("../lib/api"); +const submit = require("../lib/submit"); module.exports = function AdminActionPanel() { const dispatch = Redux.useDispatch(); @@ -34,18 +35,10 @@ module.exports = function AdminActionPanel() { const [errorMsg, setError] = React.useState(""); const [statusMsg, setStatus] = React.useState(""); - function submit() { - setStatus("PATCHing"); - setError(""); - return Promise.try(() => { - return dispatch(api.admin.mediaCleanup(days)); - }).then(() => { - setStatus("Saved!"); - }).catch((e) => { - setError(e.message); - setStatus(""); - }); - } + const removeMedia = submit( + () => dispatch(api.admin.mediaCleanup(days)), + {setStatus, setError} + ); return ( <> @@ -61,7 +54,7 @@ module.exports = function AdminActionPanel() { <label htmlFor="days">Days: </label> <input id="days" type="number" value={days} onChange={(e) => setDays(e.target.value)}/> </div> - <Submit onClick={submit} label="Remove media" errorMsg={errorMsg} statusMsg={statusMsg} /> + <Submit onClick={removeMedia} label="Remove media" errorMsg={errorMsg} statusMsg={statusMsg} /> </div> </> ); diff --git a/web/source/settings-panel/admin/federation.js b/web/source/settings-panel/admin/federation.js index 1c5070efc..d57c0e1a4 100644 --- a/web/source/settings-panel/admin/federation.js +++ b/web/source/settings-panel/admin/federation.js @@ -28,6 +28,7 @@ const { formFields } = require("../components/form-fields"); const api = require("../lib/api"); const adminActions = require("../redux/reducers/admin").actions; +const submit = require("../lib/submit"); const base = "/settings/admin/federation"; @@ -334,31 +335,15 @@ function InstancePage({domain, Form}) { } } - function submit() { - setStatus("PATCHing"); - setError(""); - return Promise.try(() => { - return dispatch(api.admin.updateDomainBlock(domain)); - }).then(() => { - setStatus("Saved!"); - }).catch((e) => { - setError(e.message); - setStatus(""); - }); - } + const updateBlock = submit( + () => dispatch(api.admin.updateDomainBlock(domain)), + {setStatus, setError} + ); - function removeBlock() { - setStatus("removing"); - setError(""); - return Promise.try(() => { - return dispatch(api.admin.removeDomainBlock(domain)); - }).then(() => { - setStatus("removed"); - }).catch((e) => { - setError(e.message); - setStatus(""); - }); - } + const removeBlock = submit( + () => dispatch(api.admin.removeDomainBlock(domain)), + {setStatus, setError, startStatus: "Removing", successStatus: "Removed!"} + ); return ( <div> @@ -381,7 +366,7 @@ function InstancePage({domain, Form}) { /> <div className="messagebutton"> - <button type="submit" onClick={submit}>{entry.new ? "Add block" : "Save block"}</button> + <button type="submit" onClick={updateBlock}>{entry.new ? "Add block" : "Save block"}</button> {!entry.new && <button className="danger" onClick={removeBlock}>Remove block</button> diff --git a/web/source/settings-panel/admin/settings.js b/web/source/settings-panel/admin/settings.js index c88aa4549..09c8580ac 100644 --- a/web/source/settings-panel/admin/settings.js +++ b/web/source/settings-panel/admin/settings.js @@ -25,6 +25,8 @@ const Redux = require("react-redux"); const Submit = require("../components/submit"); const api = require("../lib/api"); +const submit = require("../lib/submit"); + const adminActions = require("../redux/reducers/instances").actions; const { @@ -35,23 +37,14 @@ const { 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(""); - function submit() { - setStatus("PATCHing"); - setError(""); - return Promise.try(() => { - return dispatch(api.admin.updateInstance()); - }).then(() => { - setStatus("Saved!"); - }).catch((e) => { - setError(e.message); - setStatus(""); - }); - } + const updateSettings = submit( + () => dispatch(api.admin.updateInstance()), + {setStatus, setError} + ); return ( <div> @@ -111,7 +104,7 @@ module.exports = function AdminSettings() { /> </div> </div> */} - <Submit onClick={submit} label="Save" errorMsg={errorMsg} statusMsg={statusMsg} /> + <Submit onClick={updateSettings} label="Save" errorMsg={errorMsg} statusMsg={statusMsg} /> </div> ); }; \ No newline at end of file diff --git a/web/source/settings-panel/lib/submit.js b/web/source/settings-panel/lib/submit.js index 4092b292b..f268b5cf9 100644 --- a/web/source/settings-panel/lib/submit.js +++ b/web/source/settings-panel/lib/submit.js @@ -34,7 +34,6 @@ module.exports = function submit(func, { }).then(() => { setStatus(successStatus); if (onSuccess != undefined) { - console.log("running", onSuccess); return onSuccess(); } }).catch((e) => { diff --git a/web/source/settings-panel/user/profile.js b/web/source/settings-panel/user/profile.js index e06d3cde1..7cf3a7b52 100644 --- a/web/source/settings-panel/user/profile.js +++ b/web/source/settings-panel/user/profile.js @@ -26,6 +26,7 @@ const Submit = require("../components/submit"); const api = require("../lib/api"); const user = require("../redux/reducers/user").actions; +const submit = require("../lib/submit"); const { formFields } = require("../components/form-fields"); @@ -46,18 +47,10 @@ module.exports = function UserProfile() { const [errorMsg, setError] = React.useState(""); const [statusMsg, setStatus] = React.useState(""); - function submit() { - setStatus("PATCHing"); - setError(""); - return Promise.try(() => { - return dispatch(api.user.updateProfile()); - }).then(() => { - setStatus("Saved!"); - }).catch((e) => { - setError(e.message); - setStatus(""); - }); - } + const saveProfile = submit( + () => dispatch(api.user.updateProfile()), + {setStatus, setError} + ); return ( <div className="user-profile"> @@ -114,7 +107,7 @@ module.exports = function UserProfile() { <a href="https://docs.gotosocial.org/en/latest/user_guide/custom_css" target="_blank" className="moreinfolink" rel="noreferrer">Learn more about custom profile CSS (opens in a new tab)</a> </TextArea> } - <Submit onClick={submit} label="Save profile info" errorMsg={errorMsg} statusMsg={statusMsg} /> + <Submit onClick={saveProfile} label="Save profile info" errorMsg={errorMsg} statusMsg={statusMsg} /> </div> ); }; \ No newline at end of file diff --git a/web/source/settings-panel/user/settings.js b/web/source/settings-panel/user/settings.js index 29f382cb9..47d1a41d7 100644 --- a/web/source/settings-panel/user/settings.js +++ b/web/source/settings-panel/user/settings.js @@ -24,6 +24,7 @@ const Redux = require("react-redux"); const api = require("../lib/api"); const user = require("../redux/reducers/user").actions; +const submit = require("../lib/submit"); const Languages = require("../components/languages"); const Submit = require("../components/submit"); @@ -39,18 +40,10 @@ module.exports = function UserSettings() { const [errorMsg, setError] = React.useState(""); const [statusMsg, setStatus] = React.useState(""); - function submit() { - setStatus("PATCHing"); - setError(""); - return Promise.try(() => { - return dispatch(api.user.updateSettings()); - }).then(() => { - setStatus("Saved!"); - }).catch((e) => { - setError(e.message); - setStatus(""); - }); - } + const updateSettings = submit( + () => dispatch(api.user.updateSettings()), + {setStatus, setError} + ); return ( <> @@ -82,7 +75,7 @@ module.exports = function UserSettings() { name="Mark my posts as sensitive by default" /> - <Submit onClick={submit} label="Save post settings" errorMsg={errorMsg} statusMsg={statusMsg}/> + <Submit onClick={updateSettings} label="Save post settings" errorMsg={errorMsg} statusMsg={statusMsg}/> </div> <div> <PasswordChange/> @@ -101,7 +94,7 @@ function PasswordChange() { const [newPassword, setNewPassword] = React.useState(""); const [newPasswordConfirm, setNewPasswordConfirm] = React.useState(""); - function submit() { + function changePassword() { if (newPassword !== newPasswordConfirm) { setError("New password and confirm new password did not match!"); return; @@ -141,7 +134,7 @@ function PasswordChange() { <label htmlFor="confirm-new-password">Confirm new password</label> <input name="confirm-new-password" id="confirm-new-password" type="password" autoComplete="new-password" value={newPasswordConfirm} onChange={(e) => setNewPasswordConfirm(e.target.value)} /> </div> - <Submit onClick={submit} label="Save new password" errorMsg={errorMsg} statusMsg={statusMsg}/> + <Submit onClick={changePassword} label="Save new password" errorMsg={errorMsg} statusMsg={statusMsg}/> </> ); } \ No newline at end of file