e45af16bf9
* feat: Push notifications * feat: Feature-detect push notifications support * feat: Prompt user to reauthenticate when missing push scope * fix(service-worker): Add tags to notifications * feat: Push notification actions for mentions
38 lines
1.1 KiB
JavaScript
38 lines
1.1 KiB
JavaScript
import { post, paramsString, WRITE_TIMEOUT } from '../_utils/ajax'
|
|
import { basename } from './utils'
|
|
|
|
const WEBSITE = 'https://pinafore.social'
|
|
const SCOPES = 'read write follow push'
|
|
const CLIENT_NAME = 'Pinafore'
|
|
|
|
export function registerApplication (instanceName, redirectUri) {
|
|
const url = `${basename(instanceName)}/api/v1/apps`
|
|
return post(url, {
|
|
client_name: CLIENT_NAME,
|
|
redirect_uris: redirectUri,
|
|
scopes: SCOPES,
|
|
website: WEBSITE
|
|
}, null, { timeout: WRITE_TIMEOUT })
|
|
}
|
|
|
|
export function generateAuthLink (instanceName, clientId, redirectUri) {
|
|
let params = paramsString({
|
|
'client_id': clientId,
|
|
'redirect_uri': redirectUri,
|
|
'response_type': 'code',
|
|
'scope': SCOPES
|
|
})
|
|
return `${basename(instanceName)}/oauth/authorize?${params}`
|
|
}
|
|
|
|
export function getAccessTokenFromAuthCode (instanceName, clientId, clientSecret, code, redirectUri) {
|
|
let url = `${basename(instanceName)}/oauth/token`
|
|
return post(url, {
|
|
client_id: clientId,
|
|
client_secret: clientSecret,
|
|
redirect_uri: redirectUri,
|
|
grant_type: 'authorization_code',
|
|
code: code
|
|
}, null, { timeout: WRITE_TIMEOUT })
|
|
}
|