crm/frontend/src/stores/notifications.js
2024-10-31 12:45:40 +05:30

43 lines
939 B
JavaScript

import { defineStore } from 'pinia'
import { createResource } from 'frappe-ui'
import { computed, ref } from 'vue'
export const visible = ref(false)
export const notifications = createResource({
url: 'crm.api.notifications.get_notifications',
initialData: [],
auto: true,
})
export const unreadNotificationsCount = computed(
() => notifications.data?.filter((n) => !n.read).length || 0,
)
export const notificationsStore = defineStore('crm-notifications', () => {
const mark_as_read = createResource({
url: 'crm.api.notifications.mark_as_read',
onSuccess: () => {
mark_as_read.params = {}
notifications.reload()
},
})
function toggle() {
visible.value = !visible.value
}
function mark_doc_as_read(doc) {
mark_as_read.params = { doc: doc }
mark_as_read.reload()
toggle()
}
return {
unreadNotificationsCount,
mark_as_read,
mark_doc_as_read,
toggle,
}
})