diff options
author | 2022-11-08 17:51:44 +0100 | |
---|---|---|
committer | 2022-11-08 17:51:44 +0100 | |
commit | eb25739c340b2c541e37422c2df1ef7b5c4de0f5 (patch) | |
tree | 03b21d945f1f95ad9acf56d5bb7c3d6b45642021 /web/source/settings/lib/api/index.js | |
parent | [chore]: Bump github.com/spf13/viper from 1.13.0 to 1.14.0 (#1003) (diff) | |
download | gotosocial-eb25739c340b2c541e37422c2df1ef7b5c4de0f5.tar.xz |
[frontend] Custom Emoji Deletion (#994)
* re-add eslint
* fix oauth url getting too long
* actually attach single emoji get and delete routes
* basic emoji details + deletion using rtk query
* refactor emoji upload to rtk query
* clean up old redux api+reducers for custom emoji
* fix validation order
* refactor custom emoji form fields
* remove unused requires
* cleanup, fix most eslint errors
* more small eslint fixes
* fix max emoji size
* tiny bit of function documentation
Diffstat (limited to 'web/source/settings/lib/api/index.js')
-rw-r--r-- | web/source/settings/lib/api/index.js | 44 |
1 files changed, 26 insertions, 18 deletions
diff --git a/web/source/settings/lib/api/index.js b/web/source/settings/lib/api/index.js index e699011bd..8af7d5b43 100644 --- a/web/source/settings/lib/api/index.js +++ b/web/source/settings/lib/api/index.js @@ -24,14 +24,12 @@ const d = require("dotty"); const { APIError, AuthenticationError } = require("../errors"); const { setInstanceInfo, setNamedInstanceInfo } = require("../../redux/reducers/instances").actions; -const oauth = require("../../redux/reducers/oauth").actions; function apiCall(method, route, payload, type = "json") { return function (dispatch, getState) { const state = getState(); let base = state.oauth.instance; let auth = state.oauth.token; - console.log(method, base, route, "auth:", auth != undefined); return Promise.try(() => { let url = new URL(base); @@ -51,21 +49,7 @@ function apiCall(method, route, payload, type = "json") { headers["Content-Type"] = "application/json"; body = JSON.stringify(payload); } else if (type == "form") { - const formData = new FormData(); - Object.entries(payload).forEach(([key, val]) => { - if (isPlainObject(val)) { - Object.entries(val).forEach(([key2, val2]) => { - if (val2 != undefined) { - formData.set(`${key}[${key2}]`, val2); - } - }); - } else { - if (val != undefined) { - formData.set(key, val); - } - } - }); - body = formData; + body = convertToForm(payload); } } @@ -100,6 +84,28 @@ function apiCall(method, route, payload, type = "json") { }; } +/* + Takes an object with (nested) keys, and transforms it into + a FormData object to be sent over the API +*/ +function convertToForm(payload) { + const formData = new FormData(); + Object.entries(payload).forEach(([key, val]) => { + if (isPlainObject(val)) { + Object.entries(val).forEach(([key2, val2]) => { + if (val2 != undefined) { + formData.set(`${key}[${key2}]`, val2); + } + }); + } else { + if (val != undefined) { + formData.set(key, val); + } + } + }); + return formData; +} + function getChanges(state, keys) { const { formKeys = [], fileKeys = [], renamedKeys = {} } = keys; const update = {}; @@ -129,7 +135,8 @@ function getChanges(state, keys) { } function getCurrentUrl() { - return `${window.location.origin}${window.location.pathname}`; + let [pre, _past] = window.location.pathname.split("/settings"); + return `${window.location.origin}${pre}/settings`; } function fetchInstanceWithoutStore(domain) { @@ -181,5 +188,6 @@ module.exports = { user: require("./user")(submoduleArgs), admin: require("./admin")(submoduleArgs), apiCall, + convertToForm, getChanges };
\ No newline at end of file |