elk/composables/push-notifications/types.ts

37 lines
1.2 KiB
TypeScript
Raw Permalink Normal View History

2023-01-08 06:21:09 +00:00
import type { mastodon } from 'masto'
import type { UserLogin } from '~/types'
export type SubscriptionResult = 'subscribed' | 'notification-denied' | 'not-supported' | 'invalid-vapid-key' | 'no-user'
export interface PushManagerSubscriptionInfo {
registration: ServiceWorkerRegistration
subscription: PushSubscription | null
}
export interface RequiredUserLogin extends Required<Omit<UserLogin, 'account' | 'pushSubscription'>> {
2023-01-08 06:21:09 +00:00
pushSubscription?: mastodon.v1.WebPushSubscription
}
export interface CreatePushNotification {
2023-01-08 06:21:09 +00:00
alerts?: Partial<mastodon.v1.WebPushSubscriptionAlerts> | null
policy?: mastodon.v1.SubscriptionPolicy
}
export type PushNotificationRequest = Record<string, boolean>
2023-01-08 06:21:09 +00:00
export type PushNotificationPolicy = Record<string, mastodon.v1.SubscriptionPolicy>
2022-12-23 22:56:16 +00:00
export interface CustomEmojisInfo {
lastUpdate: number
2023-01-08 06:21:09 +00:00
emojis: mastodon.v1.CustomEmoji[]
2022-12-23 22:56:16 +00:00
}
export type PushSubscriptionErrorCode = 'too_many_registrations' | 'vapid_not_supported' | 'invalid_vapid_key'
export class PushSubscriptionError extends Error {
code: PushSubscriptionErrorCode
constructor(code: PushSubscriptionErrorCode, message?: string) {
super(message)
this.code = code
}
}