Change the name/server loading method of Actor to take the address directly
This commit is contained in:
parent
3c24c61e1e
commit
cb7ed42f9b
29
render.js
29
render.js
|
@ -100,21 +100,11 @@ var UI = {
|
|||
}
|
||||
})
|
||||
},
|
||||
// Get the username + servername from an address "user@server"
|
||||
getUserAndServer: function(address) {
|
||||
var names = address.split('@')
|
||||
return {
|
||||
user: names[0],
|
||||
server: names[1]
|
||||
}
|
||||
},
|
||||
// When the user enter its address, load the actor representing the user
|
||||
selectUser: function() {
|
||||
// Get the user name and server name
|
||||
var names = UI.getUserAndServer(Elem('connect-username').value)
|
||||
// Load the actor and go to the ask-password page
|
||||
ConnectedUser.actor.loadFromNameAndServer(
|
||||
names.user, names.server,
|
||||
ConnectedUser.actor.loadFromNameServerAddress(
|
||||
Elem('connect-username').value,
|
||||
function(load_ok, failure_message) {
|
||||
if (load_ok) {
|
||||
UI.showPage('ask-password')
|
||||
|
@ -167,10 +157,9 @@ var UI = {
|
|||
},
|
||||
// Add to recipient lists
|
||||
addToRecipient: function() {
|
||||
var names = UI.getUserAndServer(Elem('send-message-to-recipient').value)
|
||||
var actor = new Actor()
|
||||
actor.loadFromNameAndServer(
|
||||
names.user, names.server,
|
||||
actor.loadFromNameServerAddress(
|
||||
Elem('send-message-to-recipient').value,
|
||||
function(load_ok, failure_message) {
|
||||
if (load_ok) {
|
||||
UI.composed_message.addToRecipient(actor)
|
||||
|
@ -181,10 +170,9 @@ var UI = {
|
|||
})
|
||||
},
|
||||
addCcRecipient: function() {
|
||||
var names = UI.getUserAndServer(Elem('send-message-cc-recipient').value)
|
||||
var actor = new Actor()
|
||||
actor.loadFromNameAndServer(
|
||||
names.user, names.server,
|
||||
actor.loadFromNameServerAddress(
|
||||
Elem('send-message-cc-recipient').value,
|
||||
function(load_ok, failure_message) {
|
||||
if (load_ok) {
|
||||
UI.composed_message.addCcRecipient(actor)
|
||||
|
@ -343,10 +331,9 @@ var UI = {
|
|||
Elem('lookup-user-timeline').innerHTML = ''
|
||||
Elem('lookup-user-error').innerHTML = ''
|
||||
Elem('lookup-user-timeline-error').innerHTML = ''
|
||||
var names = UI.getUserAndServer(Elem('lookup-user').value)
|
||||
var actor = new Actor()
|
||||
actor.loadFromNameAndServer(
|
||||
names.user, names.server,
|
||||
actor.loadFromNameServerAddress(
|
||||
Elem('lookup-user').value,
|
||||
function(load_ok, failure_message) {
|
||||
if (load_ok) {
|
||||
Elem('lookup-user-info').innerHTML = UI.renderActor(actor)
|
||||
|
|
19
src/actor.js
19
src/actor.js
|
@ -45,13 +45,22 @@ Actor.prototype = {
|
|||
address: function() {
|
||||
return this.name + '@' + this.server
|
||||
},
|
||||
// Load from name@server.
|
||||
// Load from a "name@server" address.
|
||||
// Callback is a function accepting two arguments:
|
||||
// - a boolean indicating if the loading is complete or in failure,
|
||||
// - a string indicating the failure
|
||||
loadFromNameAndServer: function(name, server, callback) {
|
||||
this.name = name
|
||||
this.server = server
|
||||
loadFromNameServerAddress: function(address, callback) {
|
||||
var names = address.split('@')
|
||||
if (names.length < 2) {
|
||||
// Invalid data, return
|
||||
callback(false, 'Invalid address format.')
|
||||
return
|
||||
}
|
||||
this.server = names.splice(names.length - 1, 1)
|
||||
this.name = names.splice(0, 1)
|
||||
for (const elem of names) {
|
||||
this.name = this.name + '@' + elem
|
||||
}
|
||||
// Use Webfinger to find the profile URL
|
||||
var request = new XMLHttpRequest()
|
||||
request.onreadystatechange = function() {
|
||||
|
@ -76,7 +85,7 @@ Actor.prototype = {
|
|||
callback(false, 'webfinger: server error')
|
||||
}
|
||||
}.bind(this)
|
||||
request.open('GET', 'https://' + server + '/.well-known/webfinger' + '?resource=acct:' + name + '@' + server, true)
|
||||
request.open('GET', 'https://' + this.server + '/.well-known/webfinger' + '?resource=acct:' + address, true)
|
||||
request.send()
|
||||
},
|
||||
// Indicate if the type is compatible with an actor
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
const {Actor} = require('./actor.js')
|
||||
|
||||
// Connected user structure
|
||||
var ConnectedUser = {
|
||||
const ConnectedUser = {
|
||||
// Data
|
||||
actor: new Actor(),
|
||||
tokens: {
|
||||
|
@ -18,15 +18,15 @@ var ConnectedUser = {
|
|||
// Load data from local storage if possible
|
||||
// Callback is used to get the status of the loading
|
||||
loadFromLocalStorage: function (callback) {
|
||||
var server_name = window.localStorage.getItem('last:server.name')
|
||||
var user_name = window.localStorage.getItem('last:user.name')
|
||||
const server_name = window.localStorage.getItem('last:server.name')
|
||||
const user_name = window.localStorage.getItem('last:user.name')
|
||||
if (server_name && user_name) {
|
||||
ConnectedUser.tokens.server.client_id = window.localStorage.getItem('client_id:' + server_name)
|
||||
ConnectedUser.tokens.server.client_secret = window.localStorage.getItem('client_secret:' + server_name)
|
||||
ConnectedUser.tokens.user.refresh_token = window.localStorage.getItem('refresh_token:' + user_name + '@' + server_name)
|
||||
ConnectedUser.tokens.user.access_token = window.localStorage.getItem('access_token:' + user_name + '@' + server_name)
|
||||
// Load the rest with webfinger / activity pub requests
|
||||
ConnectedUser.actor.loadFromNameAndServer(user_name, server_name, callback)
|
||||
ConnectedUser.actor.loadFromNameServerAddress(user_name + '@' + server_name, callback)
|
||||
} else {
|
||||
callback(false, 'local storage: no data')
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue