[mastodon-client] Fix mentions

This commit is contained in:
Laura Hausmann 2023-09-15 18:12:58 +02:00
parent f906ec1d55
commit 81b08bebd0
Signed by: zotan
GPG key ID: D044E84C5BE01605
2 changed files with 7 additions and 3 deletions

View file

@ -1,19 +1,23 @@
import { User } from "@/models/entities/user.js";
import config from "@/config/index.js";
import { IMentionedRemoteUsers } from "@/models/entities/note.js";
export class MentionConverter {
public static encode(u: User): MastodonEntity.Mention {
public static encode(u: User, m: IMentionedRemoteUsers): MastodonEntity.Mention {
let acct = u.username;
let acctUrl = `https://${u.host || config.host}/@${u.username}`;
let url: string | null = null;
if (u.host) {
const info = m.find(r => r.username === u.username && r.host === u.host);
acct = `${u.username}@${u.host}`;
acctUrl = `https://${u.host}/@${u.username}`;
if (info) url = info.url ?? info.uri;
}
return {
id: u.id,
username: u.username,
acct: acct,
url: u.uri ?? acctUrl,
url: url ?? acctUrl,
};
}
}

View file

@ -73,7 +73,7 @@ export class NoteConverter {
const mentions = Promise.all(note.mentions.map(p =>
getUser(p)
.then(u => MentionConverter.encode(u))
.then(u => MentionConverter.encode(u, JSON.parse(note.mentionedRemoteUsers)))
.catch(() => null)))
.then(p => p.filter(m => m)) as Promise<MastodonEntity.Mention[]>;