wumbo changes (proper mastodon API support and oauth login!)
This commit is contained in:
parent
b7c03381f7
commit
e17b26b075
20 changed files with 1935 additions and 1618 deletions
|
@ -1,7 +1,4 @@
|
|||
import Instance from '../instance.js';
|
||||
import Emoji from '../emoji.js';
|
||||
|
||||
let user_cache = Object;
|
||||
import { parseText as parseEmojis } from '../emoji.js';
|
||||
|
||||
export default class User {
|
||||
id;
|
||||
|
@ -11,66 +8,6 @@ export default class User {
|
|||
avatar_url;
|
||||
emojis;
|
||||
|
||||
static resolve_id(id) {
|
||||
return user_cache[id];
|
||||
}
|
||||
|
||||
static resolve_mention(mention) {
|
||||
for (let i = 0; i < Object.keys(user_cache).length; i++) {
|
||||
let user = user_cache[Object.keys(user_cache)[i]];
|
||||
if (user.mention === mention) return user;
|
||||
}
|
||||
}
|
||||
|
||||
static parse(data) {
|
||||
const instance = Instance.get_instance();
|
||||
let user = null;
|
||||
switch (instance.type) {
|
||||
case Instance.types.ICESHRIMP:
|
||||
user = User.#parse_iceshrimp(data);
|
||||
break;
|
||||
case Instance.types.MASTODON:
|
||||
user = User.#parse_mastodon(data);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (!user) {
|
||||
console.error("Error while parsing user data");
|
||||
return null;
|
||||
}
|
||||
user_cache[user.id] = user;
|
||||
return user;
|
||||
}
|
||||
|
||||
static #parse_iceshrimp(data) {
|
||||
let user = new User();
|
||||
user.id = data.id;
|
||||
user.nickname = data.name;
|
||||
user.username = data.username;
|
||||
user.host = data.host || Instance.get_instance().host;
|
||||
user.avatar_url = data.avatarUrl;
|
||||
user.emojis = [];
|
||||
data.emojis.forEach(emoji => {
|
||||
user.emojis.push(Emoji.parse(emoji, user.host));
|
||||
});
|
||||
return user;
|
||||
}
|
||||
|
||||
static #parse_mastodon(data) {
|
||||
let user = new User();
|
||||
user.id = data.id;
|
||||
user.nickname = data.display_name;
|
||||
user.username = data.username;
|
||||
user.host = data.acct.search('@') ? data.acct.substring(data.acct.search('@') + 1) : instance.host;
|
||||
user.avatar_url = data.avatar;
|
||||
user.emojis = [];
|
||||
data.emojis.forEach(emoji => {
|
||||
user.emojis.push(Emoji.parse(emoji, user.host));
|
||||
});
|
||||
return user;
|
||||
}
|
||||
|
||||
get name() {
|
||||
return this.nickname || this.username;
|
||||
}
|
||||
|
@ -80,4 +17,9 @@ export default class User {
|
|||
if (this.host) res += "@" + this.host;
|
||||
return res;
|
||||
}
|
||||
|
||||
get rich_name() {
|
||||
if (!this.nickname) return this.username;
|
||||
return parseEmojis(this.nickname, this.host);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue