admin actions refactor

This commit is contained in:
f0x 2023-01-08 17:18:41 +00:00
parent 5d0aa28633
commit 4ca607914b
2 changed files with 30 additions and 20 deletions

View file

@ -19,42 +19,43 @@
"use strict"; "use strict";
const React = require("react"); 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 { useTextInput } = require("../lib/form");
const submit = require("../lib/submit"); const { TextInput } = require("../components/form/inputs");
const MutationButton = require("../components/form/mutation-button");
module.exports = function AdminActionPanel() { module.exports = function AdminActionPanel() {
const dispatch = Redux.useDispatch(); const daysField = useTextInput("days", {defaultValue: 30});
const [days, setDays] = React.useState(30); const [mediaCleanup, mediaCleanupResult] = query.useMediaCleanupMutation();
const [errorMsg, setError] = React.useState(""); function submitMediaCleanup(e) {
const [statusMsg, setStatus] = React.useState(""); e.preventDefault();
mediaCleanup(daysField.value);
const removeMedia = submit( }
() => dispatch(api.admin.mediaCleanup(days)),
{setStatus, setError}
);
return ( return (
<> <>
<h1>Admin Actions</h1> <h1>Admin Actions</h1>
<div> <form onSubmit={submitMediaCleanup}>
<h2>Media cleanup</h2> <h2>Media cleanup</h2>
<p> <p>
Clean up remote media older than the specified number of days. Clean up remote media older than the specified number of days.
If the remote instance is still online they will be refetched when needed. If the remote instance is still online they will be refetched when needed.
Also cleans up unused headers and avatars from the media cache. Also cleans up unused headers and avatars from the media cache.
</p> </p>
<div> <TextInput
<label htmlFor="days">Days: </label> field={daysField}
<input id="days" type="number" value={days} onChange={(e) => setDays(e.target.value)}/> label="Days"
</div> type="number"
<Submit onClick={removeMedia} label="Remove media" errorMsg={errorMsg} statusMsg={statusMsg} /> min="0"
</div> placeholder="30"
/>
<MutationButton text="Remove old media" result={mediaCleanupResult} />
</form>
</> </>
); );
}; };

View file

@ -30,6 +30,15 @@ const endpoints = (build) => ({
body: formData body: formData
}), }),
...updateCacheOnMutation("instance") ...updateCacheOnMutation("instance")
}),
mediaCleanup: build.mutation({
query: (days) => ({
method: "POST",
url: `/api/v1/admin/media_cleanup`,
params: {
remote_cache_days: days
}
})
}) })
}); });