| 1234567891011121314151617181920212223242526272829303132333435 |
- import { defineStore } from 'pinia'
- import { ref } from 'vue'
- import type { Ref } from 'vue'
- import { useEntityManager } from '~/composables/data/useEntityManager'
- import type { MercureEntityUpdate } from '~/types/interfaces'
- export const useSseStore = defineStore('sse', () => {
- const connected: Ref<boolean> = ref(false)
- const events: Ref<Array<MercureEntityUpdate>> = ref([])
- const addEvent = async (event: MercureEntityUpdate) => {
- const { em } = useEntityManager()
- const model = em.getModelFromIri(event.iri)
- switch (event.operation) {
- case 'update':
- case 'create':
- await em.save(model, JSON.parse(event.data), true)
- break
- case 'delete':
- break
- default:
- throw new Error('SSE: unknown operation type')
- }
- }
- return {
- connected,
- events,
- addEvent,
- }
- })
|