34 lines
936 B
TypeScript
34 lines
936 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 };
|
|
});
|