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 = ref(false) const events: Ref> = 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, } })