40 lines
1.4 KiB
TypeScript
40 lines
1.4 KiB
TypeScript
import Mastodon from 'megalodon';
|
|
|
|
/**
|
|
* Creates the Hyperspace app with the appropriate Redirect URI
|
|
* @param name The name of the app (if not Hyperspace, will use `name (Hyperspace-like)`)
|
|
* @param scopes The scopes that the app needs
|
|
* @param baseurl The base URL of the instance
|
|
* @param redirect_uri The URL to redirect to when authorizing
|
|
*/
|
|
export function createHyperspaceApp(name: string, scopes: string, baseurl: string, redirect_uri: string) {
|
|
let appName = name === "Hyperspace"? "Hyperspace": `${name} (Hyperspace-like)`
|
|
return Mastodon.createApp(appName, {
|
|
scopes: scopes,
|
|
redirect_uris: redirect_uri,
|
|
website: 'https://hyperspace.marquiskurt.net',
|
|
}, baseurl).then(appData => {
|
|
return Mastodon.generateAuthUrl(appData.clientId, appData.clientSecret, {
|
|
redirect_uri: redirect_uri,
|
|
scope: scopes
|
|
}, baseurl).then(url => {
|
|
appData.url = url;
|
|
return appData;
|
|
})
|
|
})
|
|
}
|
|
|
|
/**
|
|
* Gets the appropriate redirect address.
|
|
* @param type The address or configuration to use
|
|
*/
|
|
export function getRedirectAddress(type: "desktop" | "dynamic" | string): string {
|
|
switch(type) {
|
|
case "desktop":
|
|
return "hyperspace://hyperspace/app/";
|
|
case "dynamic":
|
|
return `https://${window.location.host}`;
|
|
default:
|
|
return type;
|
|
}
|
|
} |