aboutsummaryrefslogtreecommitdiff
path: root/src-vue/src/plugins/modules/notifications.ts
diff options
context:
space:
mode:
authorRémy Raes <contact@remyraes.com>2023-10-16 16:17:37 +0200
committerGitHub <noreply@github.com>2023-10-16 16:17:37 +0200
commit07ca1acee9a5f4227d18766b49b3fe6c8690e9a1 (patch)
tree824f2e659536dc9a5eb10f6e99bfb16da3d65647 /src-vue/src/plugins/modules/notifications.ts
parent4ddf57e0024dcd70a39473b15bbe1a0e1f69db88 (diff)
downloadFlightCore-07ca1acee9a5f4227d18766b49b3fe6c8690e9a1.tar.gz
FlightCore-07ca1acee9a5f4227d18766b49b3fe6c8690e9a1.zip
feat: Notification menu (#615)
Introduces a notification menu, which hosts notifications fired while the app was not focused. Notifications can be closed by the user.
Diffstat (limited to 'src-vue/src/plugins/modules/notifications.ts')
-rw-r--r--src-vue/src/plugins/modules/notifications.ts31
1 files changed, 31 insertions, 0 deletions
diff --git a/src-vue/src/plugins/modules/notifications.ts b/src-vue/src/plugins/modules/notifications.ts
new file mode 100644
index 00000000..ed57f8af
--- /dev/null
+++ b/src-vue/src/plugins/modules/notifications.ts
@@ -0,0 +1,31 @@
+type NotificationType = 'success' | 'warning' | 'info' | 'error';
+
+export interface Notification {
+ title: string;
+ text: string;
+ type: NotificationType;
+}
+
+interface NotificationsStoreState {
+ notifications: Notification[];
+}
+
+
+/**
+ * This notification module is meant to host the list of notifications that have been fired while the application was
+ * not focused.
+ * This list is then used by the [NotificationButton] component to display notifications to user.
+ **/
+export const notificationsModule = {
+ state: () => ({
+ notifications: []
+ }) as NotificationsStoreState,
+ mutations: {
+ addNotification(state: NotificationsStoreState, payload: Notification) {
+ state.notifications.push(payload);
+ },
+ removeNotification(state: NotificationsStoreState, index: number): void {
+ state.notifications.splice(index, 1);
+ }
+ }
+ }