mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 12:42:25 -05:00 
			
		
		
		
	refactor oauth registration flow
This commit is contained in:
		
					parent
					
						
							
								0bcf63b2cf
							
						
					
				
			
			
				commit
				
					
						11ac9e2fd2
					
				
			
		
					 1 changed files with 33 additions and 23 deletions
				
			
		|  | @ -12,19 +12,20 @@ module.exports = function Auth({setOauth}) { | |||
| 		// check if current domain runs an instance
 | ||||
| 		let thisUrl = new URL(window.location.origin); | ||||
| 		thisUrl.pathname = "/api/v1/instance"; | ||||
| 		fetch(thisUrl.href) | ||||
| 			.then((res) => res.json()) | ||||
| 			.then((json) => { | ||||
| 				if (json && json.uri) { | ||||
| 					if (isStillMounted) { | ||||
| 		Promise.try(() => { | ||||
| 			return fetch(thisUrl.href); | ||||
| 		}).then((res) => { | ||||
| 			if (res.status == 200) { | ||||
| 				return res.json(); | ||||
| 			} | ||||
| 		}).then((json) => { | ||||
| 			if (json && json.uri && isStillMounted) { | ||||
| 				setInstance(json.uri); | ||||
| 			} | ||||
| 				} | ||||
| 			}) | ||||
| 			.catch((e) => { | ||||
| 				console.error("caught", e); | ||||
| 				// no instance here
 | ||||
| 		}).catch((e) => { | ||||
| 			console.log("error checking instance response:", e); | ||||
| 		}); | ||||
| 
 | ||||
| 		return () => { | ||||
| 			// cleanup function
 | ||||
| 			isStillMounted = false; | ||||
|  | @ -32,18 +33,27 @@ module.exports = function Auth({setOauth}) { | |||
| 	}, []); | ||||
| 
 | ||||
| 	function doAuth() { | ||||
| 		return Promise.try(() => { | ||||
| 			return new URL(instance); | ||||
| 		}).catch(TypeError, () => { | ||||
| 			return new URL(`https://${instance}`); | ||||
| 		}).then((parsedURL) => { | ||||
| 			let url = parsedURL.toString(); | ||||
| 			let oauth = oauthLib({ | ||||
| 			instance: instance, | ||||
| 				instance: url, | ||||
| 				client_name: "GoToSocial Admin Panel", | ||||
| 				scope: ["admin"], | ||||
| 				website: window.location.href | ||||
| 			}); | ||||
| 			setOauth(oauth); | ||||
| 
 | ||||
| 		return Promise.try(() => { | ||||
| 			return oauth.register(); | ||||
| 		}).then(() => { | ||||
| 			setInstance(url); | ||||
| 			return oauth.register().then(() => { | ||||
| 				return oauth; | ||||
| 			}); | ||||
| 		}).then((oauth) => { | ||||
| 			return oauth.authorize(); | ||||
| 		}).catch((e) => { | ||||
| 			console.log("error authenticating:", e); | ||||
| 		}); | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue