refactor oauth registration flow

This commit is contained in:
f0x 2022-06-07 21:42:55 +02:00
commit 11ac9e2fd2

View file

@ -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);
});
}