diff --git a/packages/backend/src/server/api/mastodon/converters/notification.ts b/packages/backend/src/server/api/mastodon/converters/notification.ts index 6b830b7eb0..26381787c3 100644 --- a/packages/backend/src/server/api/mastodon/converters/notification.ts +++ b/packages/backend/src/server/api/mastodon/converters/notification.ts @@ -15,7 +15,7 @@ import { unique } from "@/prelude/array.js"; import type { Note } from "@/models/entities/note.js"; import type { SwSubscription } from "@/models/entities/sw-subscription.js"; import { fetchMeta, isQuote } from "backend-rs"; -import { getNoteSummary } from "backend-rs"; +import { getNoteSummary, getTimestamp } from "backend-rs"; import type { Packed } from "@/misc/schema"; import { I18n } from "@/misc/i18n.js"; import locales from "../../../../../../../locales/index.mjs"; @@ -159,7 +159,7 @@ export class NotificationConverter { ctx: MastoContext, ): Promise<MastodonEntity.PushSubscription> { const instance = await fetchMeta(true); - return { + const result: MastodonEntity.PushSubscription = { id: subscription.id, endpoint: subscription.endpoint, server_key: instance.swPublicKey ?? "", @@ -172,6 +172,13 @@ export class NotificationConverter { status: subscription.subscriptionTypes.includes("status"), }, }; + + // IceCubes wants an int for ID despite the docs says string. + if (ctx.tokenApp?.name === "IceCubesApp") { + result.id = getTimestamp(subscription.id); + } + + return result; } public static async encodePushNotificationPayloadForRust(