summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--web/source/settings/admin/emoji/remote/parse-from-toot.js18
-rw-r--r--web/source/settings/lib/form/check-list.jsx2
-rw-r--r--web/source/settings/lib/form/submit.js11
-rw-r--r--web/source/settings/lib/query/admin/custom-emoji.js2
4 files changed, 27 insertions, 6 deletions
diff --git a/web/source/settings/admin/emoji/remote/parse-from-toot.js b/web/source/settings/admin/emoji/remote/parse-from-toot.js
index 84bbbdc92..905deee30 100644
--- a/web/source/settings/admin/emoji/remote/parse-from-toot.js
+++ b/web/source/settings/admin/emoji/remote/parse-from-toot.js
@@ -115,12 +115,26 @@ function CopyEmojiForm({ localEmojiCodes, type, emojiList }) {
const form = {
selectedEmoji: useCheckListInput("selectedEmoji", {
entries: emojiList,
- uniqueKey: "shortcode"
+ uniqueKey: "id"
}),
category: useComboBoxInput("category")
};
- const [formSubmit, result] = useFormSubmit(form, query.usePatchRemoteEmojisMutation(), { changedOnly: false });
+ const [formSubmit, result] = useFormSubmit(
+ form,
+ query.usePatchRemoteEmojisMutation(),
+ {
+ changedOnly: false,
+ onFinish: ({ data }) => {
+ if (data != undefined) {
+ form.selectedEmoji.updateMultiple(
+ // uncheck all successfully processed emoji
+ data.map(([id]) => [id, { checked: false }])
+ );
+ }
+ }
+ }
+ );
const buttonsInactive = form.selectedEmoji.someSelected
? {}
diff --git a/web/source/settings/lib/form/check-list.jsx b/web/source/settings/lib/form/check-list.jsx
index 7827671be..8412df077 100644
--- a/web/source/settings/lib/form/check-list.jsx
+++ b/web/source/settings/lib/form/check-list.jsx
@@ -171,7 +171,7 @@ module.exports = function useCheckListInput({ name }, { entries, uniqueKey = "ke
onChange,
selectedValues,
reset,
- someSelected: state.someChecked,
+ someSelected: state.selectedEntries.size > 0,
updateMultiple,
toggleAll: {
ref: toggleAllRef,
diff --git a/web/source/settings/lib/form/submit.js b/web/source/settings/lib/form/submit.js
index 2a81307c5..46a182885 100644
--- a/web/source/settings/lib/form/submit.js
+++ b/web/source/settings/lib/form/submit.js
@@ -18,10 +18,11 @@
"use strict";
+const Promise = require("bluebird");
const React = require("react");
const syncpipe = require("syncpipe");
-module.exports = function useFormSubmit(form, mutationQuery, { changedOnly = true } = {}) {
+module.exports = function useFormSubmit(form, mutationQuery, { changedOnly = true, onFinish } = {}) {
if (!Array.isArray(mutationQuery)) {
throw new ("useFormSubmit: mutationQuery was not an Array. Is a valid useMutation RTK Query provided?");
}
@@ -64,7 +65,13 @@ module.exports = function useFormSubmit(form, mutationQuery, { changedOnly = tru
mutationData.action = action;
- return runMutation(mutationData);
+ return Promise.try(() => {
+ return runMutation(mutationData);
+ }).then((res) => {
+ if (onFinish) {
+ return onFinish(res);
+ }
+ });
},
{
...result,
diff --git a/web/source/settings/lib/query/admin/custom-emoji.js b/web/source/settings/lib/query/admin/custom-emoji.js
index e8fe08852..163c1f61a 100644
--- a/web/source/settings/lib/query/admin/custom-emoji.js
+++ b/web/source/settings/lib/query/admin/custom-emoji.js
@@ -149,7 +149,7 @@ module.exports = (build) => ({
body: body
}).then(unwrapRes);
}).then((res) => {
- data.push([emoji.shortcode, res]);
+ data.push([emoji.id, res]);
}).catch((e) => {
let msg = e.message ?? e;
if (e.data.error) {