diff --git a/frontend/src/stores/views.js b/frontend/src/stores/views.js new file mode 100644 index 00000000..64039643 --- /dev/null +++ b/frontend/src/stores/views.js @@ -0,0 +1,34 @@ +import { defineStore } from 'pinia' +import { createListResource } from 'frappe-ui' +import { reactive } from 'vue' + +export const viewsStore = defineStore('crm-views', () => { + let viewsByName = reactive({}) + + const views = createListResource({ + doctype: 'CRM View Settings', + fields: ['*'], + cache: 'crm-views', + initialData: [], + auto: true, + transform(views) { + for (let view of views) { + viewsByName[view.name] = view + } + return views + }, + }) + + function getView(view) { + if (!view) return null + if (!viewsByName[view]) { + views.reload() + } + return viewsByName[view] + } + + return { + views, + getView, + } +})