Initial Release
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
(async () => {
|
||||
const _AlertEmpty = $('#alert-empty')
|
||||
const _AlertLoad = $('#alert-load')
|
||||
const _Collection = $('#application-collection')
|
||||
|
||||
// Prepare Templates
|
||||
function prepareTemplate(name) {
|
||||
const elem = $(name)
|
||||
elem.removeAttribute('hidden')
|
||||
elem.removeAttribute('id')
|
||||
elem.remove()
|
||||
return elem
|
||||
}
|
||||
const _ItemTemplate = prepareTemplate('#application-template')
|
||||
const _ScopeTemplate = prepareTemplate('#scope-template')
|
||||
|
||||
// Fetch Connections
|
||||
SendRequest('GET', '/api/v1/users/@me/connections', null, 1)
|
||||
.then(([_, body]) => {
|
||||
if (body.length === 0) {
|
||||
_AlertEmpty.removeAttribute('hidden')
|
||||
return
|
||||
}
|
||||
body
|
||||
.sort((a, b) => new Date(b.created) - new Date(a.created))
|
||||
.forEach(connection => {
|
||||
|
||||
// Metadata
|
||||
const { name, flags, description, id, icon } = connection.application
|
||||
const Template = _ItemTemplate.cloneNode(true)
|
||||
$$(Template, '.text-header').textContent = name
|
||||
$$(Template, '.text-tip').textContent = description || 'No Description Provided.'
|
||||
|
||||
// Images
|
||||
const Image = $$(Template, '.application-icon')
|
||||
Image.src = ImageURL('icons', id, icon, false, 128)
|
||||
Image.alt = `Icon for ${name}`
|
||||
|
||||
// Scopes
|
||||
const ScopesParent = Template.querySelector('.scopes')
|
||||
_Scopes.forEach(s => {
|
||||
if ((connection.scopes & s[0]) !== 0) {
|
||||
const Scope = _ScopeTemplate.cloneNode(true)
|
||||
Scope.lastChild.textContent = s[1]
|
||||
ScopesParent.appendChild(Scope)
|
||||
}
|
||||
})
|
||||
|
||||
// Official Application?
|
||||
if ((flags & 1 << 3) !== 0) {
|
||||
$$(Template, '#verified-message').removeAttribute('hidden')
|
||||
}
|
||||
|
||||
// Buttons
|
||||
const Button = $$(Template, 'button')
|
||||
Button.title = `Disconnect Application ${name}`
|
||||
Button.addEventListener('click', async () => {
|
||||
await CreateModal({
|
||||
behaviour: {
|
||||
title: 'Disconnect Application?',
|
||||
tooltip: 'The application ' + name + ' will be disconnected from your account.'
|
||||
}
|
||||
})
|
||||
SendRequest('DELETE', `/api/v1/users/@me/connections/${connection.id}`, null, 2)
|
||||
.then(() => {
|
||||
// Remove Item from List
|
||||
body.length--
|
||||
Template.remove()
|
||||
if (body.length === 0) {
|
||||
_AlertEmpty.removeAttribute('hidden')
|
||||
_AlertLoad.setAttribute('hidden', true)
|
||||
return
|
||||
}
|
||||
})
|
||||
.catch(e => {
|
||||
$$(Template, '#error-message').textContent = e
|
||||
})
|
||||
})
|
||||
|
||||
// Append
|
||||
_Collection.appendChild(Template)
|
||||
})
|
||||
})
|
||||
.catch(e => {
|
||||
// Display Error Message
|
||||
$('#alert-error').removeAttribute('hidden')
|
||||
$('#error-message').textContent = e
|
||||
console.log(e)
|
||||
})
|
||||
.finally(() => {
|
||||
// Hide Loading Symbol
|
||||
_AlertLoad.setAttribute('hidden', true)
|
||||
})
|
||||
})()
|
||||
Reference in New Issue
Block a user