import { AbstractWebNotificationManager, type NotificationPanelLocation, type WebNotification, } from '@modrinth/ui' import { type Ref, ref } from 'vue' export class AppNotificationManager extends AbstractWebNotificationManager { private readonly state: Ref private readonly locationState: Ref public constructor() { super() this.state = ref([]) this.locationState = ref('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) } }