diff options
| author | Hazelnoot <acomputerdog@gmail.com> | 2025-03-24 14:26:25 -0400 |
|---|---|---|
| committer | Hazelnoot <acomputerdog@gmail.com> | 2025-03-27 19:51:43 -0400 |
| commit | 58cdee77d5d7a8dceef39683695d33947a614070 (patch) | |
| tree | c68d2544191043adc30d60a57795ea5e0ad67a09 /packages/backend/src/server/api/mastodon/MastodonConverters.ts | |
| parent | don't render CW as HTML for mastodon (diff) | |
| download | sharkey-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/MastodonConverters.ts')
| -rw-r--r-- | packages/backend/src/server/api/mastodon/MastodonConverters.ts | 35 |
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, |