summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-03-21 21:47:32 -0400
committerHazelnoot <acomputerdog@gmail.com>2025-03-27 19:51:42 -0400
commit67e57ab50af284e6ef45bd005d85dfca53a3eab4 (patch)
treeb32a4ddb9bf9d087526b03cf3c3541440bd606aa /packages/backend/src/server/api
parentremove unused megalodon components (diff)
downloadsharkey-67e57ab50af284e6ef45bd005d85dfca53a3eab4.tar.gz
sharkey-67e57ab50af284e6ef45bd005d85dfca53a3eab4.tar.bz2
sharkey-67e57ab50af284e6ef45bd005d85dfca53a3eab4.zip
fix several mastodon converters
Diffstat (limited to 'packages/backend/src/server/api')
-rw-r--r--packages/backend/src/server/api/mastodon/converters.ts49
1 files changed, 27 insertions, 22 deletions
diff --git a/packages/backend/src/server/api/mastodon/converters.ts b/packages/backend/src/server/api/mastodon/converters.ts
index d1bd92b618..9d8e031831 100644
--- a/packages/backend/src/server/api/mastodon/converters.ts
+++ b/packages/backend/src/server/api/mastodon/converters.ts
@@ -196,7 +196,7 @@ export class MastoConverters {
});
}
- public async getEdits(id: string, me?: MiLocalUser | null) {
+ public async getEdits(id: string, me?: MiLocalUser | null): Promise<StatusEdit[]> {
const note = await this.mastodonDataService.getNote(id, me);
if (!note) {
return [];
@@ -280,6 +280,7 @@ export class MastoConverters {
: '';
const reblogged = await this.mastodonDataService.hasReblog(note.id, me);
+ const reactions = await Promise.all(status.emoji_reactions.map(r => this.convertReaction(r)));
// noinspection ES6MissingAwait
return await awaitAll({
@@ -312,8 +313,8 @@ export class MastoConverters {
application: null, //FIXME
language: null, //FIXME
pinned: false, //FIXME
- reactions: status.emoji_reactions,
- emoji_reactions: status.emoji_reactions,
+ reactions,
+ emoji_reactions: reactions,
bookmarked: false, //FIXME
quote: isQuote ? await this.convertReblog(status.reblog, me) : null,
edited_at: note.updatedAt?.toISOString() ?? null,
@@ -338,6 +339,13 @@ export class MastoConverters {
type: notification.type,
};
}
+
+ public async convertReaction(reaction: Entity.Reaction): Promise<Entity.Reaction> {
+ if (reaction.accounts) {
+ reaction.accounts = await Promise.all(reaction.accounts.map(a => this.convertAccount(a)));
+ }
+ return reaction;
+ }
}
function simpleConvert<T>(data: T): T {
@@ -345,12 +353,13 @@ function simpleConvert<T>(data: T): T {
return Object.assign({}, data);
}
-export function convertAccount(account: Entity.Account) {
- return simpleConvert(account);
-}
-export function convertAnnouncement(announcement: Entity.Announcement) {
- return simpleConvert(announcement);
+export function convertAnnouncement(announcement: Entity.Announcement): MastodonEntity.Announcement {
+ return {
+ ...announcement,
+ updated_at: announcement.updated_at ?? announcement.published_at,
+ };
}
+
export function convertAttachment(attachment: Entity.Attachment): MastodonEntity.Attachment {
const { width, height } = attachment.meta?.original ?? attachment.meta ?? {};
const size = (width && height) ? `${width}x${height}` : undefined;
@@ -376,28 +385,24 @@ export function convertAttachment(attachment: Entity.Attachment): MastodonEntity
} : null,
};
}
-export function convertFilter(filter: Entity.Filter) {
+export function convertFilter(filter: Entity.Filter): MastodonEntity.Filter {
return simpleConvert(filter);
}
-export function convertList(list: Entity.List) {
- return simpleConvert(list);
+export function convertList(list: Entity.List): MastodonEntity.List {
+ return {
+ id: list.id,
+ title: list.title,
+ replies_policy: list.replies_policy ?? 'followed',
+ };
}
-export function convertFeaturedTag(tag: Entity.FeaturedTag) {
+export function convertFeaturedTag(tag: Entity.FeaturedTag): MastodonEntity.FeaturedTag {
return simpleConvert(tag);
}
-export function convertPoll(poll: Entity.Poll) {
+export function convertPoll(poll: Entity.Poll): MastodonEntity.Poll {
return simpleConvert(poll);
}
-// noinspection JSUnusedGlobalSymbols
-export function convertReaction(reaction: Entity.Reaction) {
- if (reaction.accounts) {
- reaction.accounts = reaction.accounts.map(convertAccount);
- }
- return reaction;
-}
-
// Megalodon sometimes returns broken / stubbed relationship data
export function convertRelationship(relationship: Partial<Entity.Relationship> & { id: string }): MastodonEntity.Relationship {
return {
@@ -420,6 +425,6 @@ export function convertRelationship(relationship: Partial<Entity.Relationship> &
}
// noinspection JSUnusedGlobalSymbols
-export function convertStatusSource(status: Entity.StatusSource) {
+export function convertStatusSource(status: Entity.StatusSource): MastodonEntity.StatusSource {
return simpleConvert(status);
}