sse.ts 790 B

1234567891011121314151617181920212223242526272829303132
  1. import {MercureEntityUpdate, sseState} from "~/types/interfaces";
  2. import {repositoryHelper} from "~/services/store/repository";
  3. import ModelsUtils from "~/services/utils/modelsUtils";
  4. import {defineStore} from "pinia";
  5. export const useSseStore = defineStore('sse', {
  6. state: (): sseState => {
  7. return {
  8. connected: false,
  9. events: []
  10. }
  11. },
  12. actions: {
  13. addEvent(state: sseState, event: MercureEntityUpdate) {
  14. const model = ModelsUtils.getModelFromIri(event.iri)
  15. switch (event.operation) {
  16. case "update":
  17. case "create":
  18. repositoryHelper.persist(model, JSON.parse(event.data))
  19. break
  20. case "delete":
  21. break
  22. default:
  23. throw new Error('SSE: unknown operation type')
  24. }
  25. }
  26. }
  27. })