import { useState } from "#app"; import { type NotificationPanelLocation, type WebNotification, AbstractWebNotificationManager, } from "@modrinth/ui"; export class FrontendNotificationManager extends AbstractWebNotificationManager { private readonly state: Ref; private readonly locationState: Ref; public constructor() { super(); this.state = useState("notifications", () => []); this.locationState = useState( "notifications.location", () => "right", ); } public getNotificationLocation(): NotificationPanelLocation { return this.locationState.value; } public setNotificationLocation(location: NotificationPanelLocation): void { this.locationState.value = location; } public getNotifications(): WebNotification[] { return this.state.value; } protected addNotificationToStorage(notification: WebNotification): void { this.state.value.push(notification); } protected removeNotificationFromStorage(id: string | number): void { const index = this.state.value.findIndex((n) => n.id === id); if (index > -1) { this.state.value.splice(index, 1); } } protected removeNotificationFromStorageByIndex(index: number): void { this.state.value.splice(index, 1); } protected clearAllNotificationsFromStorage(): void { this.state.value.splice(0); } }