mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 06:22:25 -05:00 
			
		
		
		
	[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
This commit is contained in:
		
					parent
					
						
							
								be011b1641
							
						
					
				
			
			
				commit
				
					
						eb25739c34
					
				
			
		
					 32 changed files with 1467 additions and 506 deletions
				
			
		|  | @ -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 | ||||
| }; | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue