summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/mastodon
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-03-24 14:26:25 -0400
committerHazelnoot <acomputerdog@gmail.com>2025-03-27 19:51:43 -0400
commit58cdee77d5d7a8dceef39683695d33947a614070 (patch)
treec68d2544191043adc30d60a57795ea5e0ad67a09 /packages/backend/src/server/api/mastodon
parentdon't render CW as HTML for mastodon (diff)
downloadsharkey-58cdee77d5d7a8dceef39683695d33947a614070.tar.gz
sharkey-58cdee77d5d7a8dceef39683695d33947a614070.tar.bz2
sharkey-58cdee77d5d7a8dceef39683695d33947a614070.zip
convert notification types in mastodon API
Diffstat (limited to 'packages/backend/src/server/api/mastodon')
-rw-r--r--packages/backend/src/server/api/mastodon/MastodonConverters.ts35
1 files changed, 16 insertions, 19 deletions
diff --git a/packages/backend/src/server/api/mastodon/MastodonConverters.ts b/packages/backend/src/server/api/mastodon/MastodonConverters.ts
index 7a1387e4aa..0e8ce5a2a7 100644
--- a/packages/backend/src/server/api/mastodon/MastodonConverters.ts
+++ b/packages/backend/src/server/api/mastodon/MastodonConverters.ts
@@ -6,6 +6,8 @@
import { Inject, Injectable } from '@nestjs/common';
import { Entity } from 'megalodon';
import mfm from '@transfem-org/sfm-js';
+import { MastodonNotificationType } from 'megalodon/lib/src/mastodon/notification.js';
+import { NotificationType } from 'megalodon/lib/src/notification.js';
import { DI } from '@/di-symbols.js';
import { MfmService } from '@/core/MfmService.js';
import type { Config } from '@/config.js';
@@ -355,27 +357,9 @@ export class MastodonConverters {
created_at: notification.created_at,
id: notification.id,
status: notification.status ? await this.convertStatus(notification.status, me) : undefined,
- type: notification.type,
+ type: convertNotificationType(notification.type as NotificationType),
};
}
-
- // public convertEmoji(emoji: string): MastodonEntity.Emoji {
- // const reaction: MastodonEntity.Reaction = {
- // name: emoji,
- // count: 1,
- // };
- //
- // if (emoji.startsWith(':')) {
- // const [, name] = emoji.match(/^:([^@:]+(?:@[^@:]+)?):$/) ?? [];
- // if (name) {
- // const url = `${this.config.url}/emoji/${name}.webp`;
- // reaction.url = url;
- // reaction.static_url = url;
- // }
- // }
- //
- // return reaction;
- // }
}
function simpleConvert<T>(data: T): T {
@@ -383,6 +367,19 @@ function simpleConvert<T>(data: T): T {
return Object.assign({}, data);
}
+function convertNotificationType(type: NotificationType): MastodonNotificationType {
+ switch (type) {
+ case 'emoji_reaction': return 'reaction';
+ case 'poll_vote':
+ case 'poll_expired':
+ return 'poll';
+ // Not supported by mastodon
+ case 'move':
+ return type as MastodonNotificationType;
+ default: return type;
+ }
+}
+
export function convertAnnouncement(announcement: Entity.Announcement): MastodonEntity.Announcement {
return {
...announcement,