Add WebFinger support (#1498)

* Add WebFinger support

* Fix TS7006

* Follow lint

* Fix TS7006
pull/1535/head
Acid Chicken (硫酸鶏) 2018-12-18 18:42:39 +09:00 committed by Chocobozzz
parent 1b04f19c48
commit 583cd0d212
1 changed files with 19 additions and 2 deletions

View File

@ -37,7 +37,24 @@ export class RemoteSubscribeComponent extends FormReactive implements OnInit {
formValidated () {
const address = this.form.value['text']
const [ , hostname ] = address.split('@')
window.open(`https://${hostname}/authorize_interaction?acct=${this.account}`)
const [ username, hostname ] = address.split('@')
fetch(`https://${hostname}/.well-known/webfinger?resource=acct:${username}@${hostname}`)
.then(response => response.json())
.then(data => new Promise((resolve, reject) => {
if (data && Array.isArray(data.links)) {
const link: {
template: string
} = data.links.find((link: any) =>
link && typeof link.template === 'string' && link.rel === 'http://ostatus.org/schema/1.0/subscribe')
if (link && link.template.includes('{uri}')) {
resolve(link.template.replace('{uri}', `acct:${this.account}`))
}
}
reject()
}))
.then(window.open)
.catch(() => window.open(`https://${hostname}/authorize_interaction?acct=${this.account}`))
}
}