aboutsummaryrefslogtreecommitdiff
path: root/src-vue/src/utils/ui.ts
blob: 4c735a9c0f80434290ae9c0c63cb2066fef06670 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import { ElNotification, NotificationHandle } from "element-plus";
import { i18n } from "../main";
import { store } from "../plugins/store";

/**
 * Displays content to the user in the form of a notification appearing on screen bottom right.
 * If the app is not focused when this is invoked, a notification is added to the notifications menu.
 **/
function showNotification(
    title: string,
    message: string = '',
    type: 'success' | 'warning' | 'error' | 'info' = 'success',
    duration: number = 4500
): NotificationHandle {
    if (!document.hasFocus()) {
        store.commit('addNotification', {title, text: message, type});
    }

    return ElNotification({
        title, message, type, duration,
        position: 'bottom-right',
    });
}

/**
 * Helper method displaying an error message to the user.
 **/
function showErrorNotification(
    error: string,
    title: string = i18n.global.tc('generic.error')
): NotificationHandle {
    return showNotification(title, error, 'error');
}

export {showNotification, showErrorNotification};