|
|
@@ -1,6 +1,7 @@
|
|
|
import {MercureEntityUpdate, sseState} from "~/types/interfaces";
|
|
|
import {repositoryHelper} from "~/services/store/repository";
|
|
|
import {models} from "~/models/_import";
|
|
|
+import ModelsUtils from "~/services/utils/modelsUtils";
|
|
|
|
|
|
export const state = () => ({
|
|
|
connected: false,
|
|
|
@@ -12,19 +13,10 @@ export const mutations = {
|
|
|
},
|
|
|
addEvent(state: sseState, event: MercureEntityUpdate) {
|
|
|
|
|
|
+ const model = ModelsUtils.getModelFromIri(event.iri)
|
|
|
+
|
|
|
switch (event.operation) {
|
|
|
case "update":
|
|
|
- const matches = event.iri.match(/^\/api\/(\w+)\/.*/)
|
|
|
- if (!matches) {
|
|
|
- throw new Error('SSE: cannot parse the IRI')
|
|
|
- }
|
|
|
- const entityName = matches[1]
|
|
|
-
|
|
|
- let model = models.find(candidate => { return candidate.entity === entityName })
|
|
|
- if (!model) {
|
|
|
- throw new Error('SSE: no model found')
|
|
|
- }
|
|
|
-
|
|
|
repositoryHelper.persist(model, JSON.parse(event.data))
|
|
|
break
|
|
|
|