30 lines
904 B
TypeScript
30 lines
904 B
TypeScript
import { ref } from 'vue';
|
|
import { defineStore } from 'pinia';
|
|
import type { Alert } from '@/types';
|
|
|
|
export const useAlertStore = defineStore('alerts', () => {
|
|
const alerts = ref<Alert[]>([]);
|
|
|
|
function addAlert(message: string, type: 'info' | 'success' | 'warning' | 'error', seconds: number) {
|
|
alerts.value.push({ message, type, created: new Date(), seconds });
|
|
}
|
|
|
|
function alertSuccess(message: string, seconds = 2) {
|
|
addAlert(message, 'success', seconds);
|
|
}
|
|
|
|
function alertInfo(message: string, seconds = 3) {
|
|
addAlert(message, 'info', seconds);
|
|
}
|
|
|
|
function alertWarning(message: string, seconds = 4) {
|
|
addAlert(message, 'warning', seconds);
|
|
}
|
|
|
|
function alertError(message: string, seconds = 5) {
|
|
addAlert(message, 'error', seconds);
|
|
}
|
|
|
|
return { alerts, alertSuccess, alertInfo, alertWarning, alertError };
|
|
})
|