forked from didirus/AstralRinth
* feat: migrate frontend notifications to dependency injection based notificaton manager * fix: lint * fix: issues * fix: compile error + notif binding issue * refactor: move org context to new DI setup * feat: migrate app notifications to DI + frontend styling * fix: sidebar issues * fix: dont use delete in computed * fix: import and prop issue * refactor: move handleError to main notification manager class * fix: lint & build * fix: merge issues * fix: lint issues * fix: lint issues --------- Signed-off-by: IMB11 <hendersoncal117@gmail.com> Signed-off-by: Cal H. <hendersoncal117@gmail.com>
49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
import {
|
|
AbstractWebNotificationManager,
|
|
type NotificationPanelLocation,
|
|
type WebNotification,
|
|
} from '@modrinth/ui'
|
|
import { ref, type Ref } from 'vue'
|
|
|
|
export class AppNotificationManager extends AbstractWebNotificationManager {
|
|
private readonly state: Ref<WebNotification[]>
|
|
private readonly locationState: Ref<NotificationPanelLocation>
|
|
|
|
public constructor() {
|
|
super()
|
|
this.state = ref<WebNotification[]>([])
|
|
this.locationState = ref<NotificationPanelLocation>('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)
|
|
}
|
|
}
|