53 lines
1.3 KiB
JavaScript
53 lines
1.3 KiB
JavaScript
import { defineStore } from 'pinia'
|
|
import { v4 as uuidv4 } from 'uuid';
|
|
|
|
// Almacenar estado de las notificaciones
|
|
const useNotification = defineStore('notifications', {
|
|
state: () => ({
|
|
notifications: [],
|
|
}),
|
|
getters: {
|
|
getNotifications(state) {
|
|
return state.notifications
|
|
}
|
|
},
|
|
actions: {
|
|
boot() {
|
|
let local = localStorage.getItem('notifications')
|
|
|
|
if(local) {
|
|
this.notifications = JSON.parse(localStorage.getItem('notifications'))
|
|
}
|
|
},
|
|
add({
|
|
title = '',
|
|
message = '',
|
|
type = 'info',
|
|
preserve = false
|
|
}) {
|
|
this.notifications.push({
|
|
uuid: uuidv4(),
|
|
title,
|
|
message,
|
|
type,
|
|
preserve
|
|
})
|
|
|
|
this.save()
|
|
},
|
|
delete(uuid) {
|
|
this.notifications = this.notifications.filter(x => {
|
|
return x.uuid != uuid
|
|
})
|
|
|
|
this.save()
|
|
},
|
|
save() {
|
|
localStorage.setItem('notifications', JSON.stringify(this.notifications.filter(x => {
|
|
return x.preserve == true
|
|
} )))
|
|
}
|
|
},
|
|
})
|
|
|
|
export default useNotification |