import { AbstractWebNotificationManager, type NotificationPanelLocation, type WebNotification, } from '@modrinth/ui' import { useState } from '#app' 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) } }