43 lines
939 B
JavaScript
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,
|
|
}
|
|
})
|