/ src / renderer / store / snackbar.ts
snackbar.ts
 1  import { defineStore } from 'pinia'
 2  
 3  type SnackbarType = 'error' | 'success' | 'info' | 'warning' | 'unknown'
 4  
 5  interface SnackbarState {
 6    isShow: boolean
 7    message: string
 8    type: SnackbarType
 9  }
10  
11  export const useSnackbarStore = defineStore('snackbarStore', {
12    state: () =>
13      ({
14        isShow: false,
15        message: '',
16        type: 'unknown'
17      }) as SnackbarState,
18  
19    actions: {
20      showMessage(message: string, type: SnackbarType = 'unknown') {
21        console.log(message)
22        this.isShow = true
23        this.message = message
24        this.type = type
25      },
26  
27      showErrorMessage(message: string) {
28        this.showMessage(message, 'error')
29      },
30      showSuccessMessage(message: string) {
31        this.showMessage(message, 'success')
32      },
33      showInfoMessage(message: string) {
34        this.showMessage(message, 'info')
35      },
36      showWarningMessage(message: string) {
37        this.showMessage(message, 'warning')
38      },
39      getIcon() {
40        const icon = {
41          info: 'mdi-information',
42          success: 'mdi-check-circle',
43          error: 'mdi-alert-circle',
44          warning: 'mdi-alert',
45          unknown: 'mdi-help-circle-outline'
46        }
47  
48        return icon[this.type]
49      }
50    }
51  })