diff options
author | 2023-01-18 14:45:14 +0100 | |
---|---|---|
committer | 2023-01-18 14:45:14 +0100 | |
commit | 9b139b632098e6741b10fa87ff6224dcb5045947 (patch) | |
tree | c72b5c666ed01db7d1a18e531e5e01e07f504a46 /web/source/settings/lib/query/custom-emoji.js | |
parent | [chore] Change default sqlite busy timeout to 5m (#1352) (diff) | |
download | gotosocial-9b139b632098e6741b10fa87ff6224dcb5045947.tar.xz |
[frogend] Settings refactor (#1318)
* yakshave new form field structure
* fully refactor user profile settings form
* use rtk query api for profile settings
* refactor user post settings
* refactor password change form
* refactor admin settings
* FormWithData structure for user forms
* admin actions refactor
* whitespace
* fix user settings data prop
* remove superfluous logging
* cleanup old code
* refactor federation/suspend (overview, detail)
* mostly abstracted (emoji) checkbox list
* refactor parse-from-toot
* refactor custom-emoji, progress on federation bulk
* loading icon styling to prevent big spinny
* refactor federation import-export interface
* cleanup old files
* [chore] Update/add license headers for 2023
* redux fixes
* text-field exports
* appease the linter
* refactor authentication with RTK Query
* fix login/logout state transition weirdness
* fixes/cleanup
* small linter-related fixes
* add eslint license header check, fix existing files
* remove old code, clarify comment
* clarify suspend on subdomains
* collapse if/else
* fa-fw width info comment
Diffstat (limited to 'web/source/settings/lib/query/custom-emoji.js')
-rw-r--r-- | web/source/settings/lib/query/custom-emoji.js | 180 |
1 files changed, 0 insertions, 180 deletions
diff --git a/web/source/settings/lib/query/custom-emoji.js b/web/source/settings/lib/query/custom-emoji.js deleted file mode 100644 index e62931cb2..000000000 --- a/web/source/settings/lib/query/custom-emoji.js +++ /dev/null @@ -1,180 +0,0 @@ -/* - GoToSocial - Copyright (C) 2021-2023 GoToSocial Authors admin@gotosocial.org - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -"use strict"; - -const Promise = require("bluebird"); - -const base = require("./base"); - -function unwrap(res) { - if (res.error != undefined) { - throw res.error; - } else { - return res.data; - } -} - -const endpoints = (build) => ({ - getAllEmoji: build.query({ - query: (params = {}) => ({ - url: "/api/v1/admin/custom_emojis", - params: { - limit: 0, - ...params - } - }), - providesTags: (res) => - res - ? [...res.map((emoji) => ({type: "Emojis", id: emoji.id})), {type: "Emojis", id: "LIST"}] - : [{type: "Emojis", id: "LIST"}] - }), - getEmoji: build.query({ - query: (id) => ({ - url: `/api/v1/admin/custom_emojis/${id}` - }), - providesTags: (res, error, id) => [{type: "Emojis", id}] - }), - addEmoji: build.mutation({ - query: (form) => { - return { - method: "POST", - url: `/api/v1/admin/custom_emojis`, - asForm: true, - body: form - }; - }, - invalidatesTags: (res) => - res - ? [{type: "Emojis", id: "LIST"}, {type: "Emojis", id: res.id}] - : [{type: "Emojis", id: "LIST"}] - }), - editEmoji: build.mutation({ - query: ({id, ...patch}) => { - return { - method: "PATCH", - url: `/api/v1/admin/custom_emojis/${id}`, - asForm: true, - body: { - type: "modify", - ...patch - } - }; - }, - invalidatesTags: (res) => - res - ? [{type: "Emojis", id: "LIST"}, {type: "Emojis", id: res.id}] - : [{type: "Emojis", id: "LIST"}] - }), - deleteEmoji: build.mutation({ - query: (id) => ({ - method: "DELETE", - url: `/api/v1/admin/custom_emojis/${id}` - }), - invalidatesTags: (res, error, id) => [{type: "Emojis", id}] - }), - searchStatusForEmoji: build.mutation({ - query: (url) => ({ - method: "GET", - url: `/api/v2/search?q=${encodeURIComponent(url)}&resolve=true&limit=1` - }), - transformResponse: (res) => { - /* Parses search response, prioritizing a toot result, - and returns referenced custom emoji - */ - let type; - - if (res.statuses.length > 0) { - type = "statuses"; - } else if (res.accounts.length > 0) { - type = "accounts"; - } else { - return { - type: "none" - }; - } - - let data = res[type][0]; - - return { - type, - domain: (new URL(data.url)).host, // to get WEB_DOMAIN, see https://github.com/superseriousbusiness/gotosocial/issues/1225 - list: data.emojis - }; - } - }), - patchRemoteEmojis: build.mutation({ - queryFn: ({action, domain, list, category}, api, _extraOpts, baseQuery) => { - const data = []; - const errors = []; - - return Promise.each(list, (emoji) => { - return Promise.try(() => { - return baseQuery({ - method: "GET", - url: `/api/v1/admin/custom_emojis`, - params: { - filter: `domain:${domain},shortcode:${emoji.shortcode}`, - limit: 1 - } - }).then(unwrap); - }).then(([lookup]) => { - if (lookup == undefined) { throw "not found"; } - - let body = { - type: action - }; - - if (action == "copy") { - body.shortcode = emoji.localShortcode ?? emoji.shortcode; - if (category.trim().length != 0) { - body.category = category; - } - } - - return baseQuery({ - method: "PATCH", - url: `/api/v1/admin/custom_emojis/${lookup.id}`, - asForm: true, - body: body - }).then(unwrap); - }).then((res) => { - data.push([emoji.shortcode, res]); - }).catch((e) => { - console.error("emoji lookup for", emoji.shortcode, "failed:", e); - let msg = e.message ?? e; - if (e.data.error) { - msg = e.data.error; - } - errors.push([emoji.shortcode, msg]); - }); - }).then(() => { - if (errors.length == 0) { - return { data }; - } else { - return { - error: errors - }; - } - }); - }, - invalidatesTags: () => [{type: "Emojis", id: "LIST"}] - }) -}); - -module.exports = base.injectEndpoints({endpoints});
\ No newline at end of file |