Files
mono/components/notificator2/dist/services/web-push.service.d.ts
T
2025-07-03 18:03:31 +05:00

53 lines
1.8 KiB
TypeScript

import { OnModuleInit } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { Repository } from 'typeorm';
import { PushSubscription } from '../entities/push-subscription.entity';
export interface PushSubscriptionData {
endpoint: string;
keys: {
p256dh: string;
auth: string;
};
}
export interface NotificationPayload {
title: string;
body: string;
icon?: string;
badge?: string;
image?: string;
data?: any;
actions?: Array<{
action: string;
title: string;
icon?: string;
}>;
tag?: string;
requireInteraction?: boolean;
silent?: boolean;
timestamp?: number;
vibrate?: number[];
}
export declare class WebPushService implements OnModuleInit {
private configService;
private pushSubscriptionRepository;
private readonly logger;
constructor(configService: ConfigService, pushSubscriptionRepository: Repository<PushSubscription>);
onModuleInit(): Promise<void>;
private initializeWebPush;
private generateVapidKeys;
getVapidPublicKey(): string;
saveSubscription(userId: string, subscription: PushSubscriptionData, userAgent?: string): Promise<PushSubscription>;
removeSubscription(endpoint: string): Promise<void>;
getUserSubscriptions(userId: string): Promise<PushSubscription[]>;
sendNotificationToUser(userId: string, payload: NotificationPayload): Promise<void>;
sendNotificationToSubscriptions(subscriptions: PushSubscription[], payload: NotificationPayload): Promise<void>;
sendNotificationToAll(payload: NotificationPayload): Promise<void>;
getSubscriptionStats(): Promise<{
total: number;
active: number;
inactive: number;
uniqueUsers: number;
}>;
cleanupInactiveSubscriptions(olderThanDays?: number): Promise<number>;
}