Olivier Massot 3 年之前
父节点
当前提交
b4b27f7b17
共有 2 个文件被更改,包括 14 次插入52 次删除
  1. 10 33
      pages/cmf_licence/organization.vue
  2. 4 19
      store/sse.ts

+ 10 - 33
pages/cmf_licence/organization.vue

@@ -30,20 +30,12 @@
         </v-btn>
       </div>
     </v-form>
-    <!-- <<< for debugging purposes, TODO: remove before deploying -->
-    <div v-if="file !== null">
-      {{ file().value }}
-    </div>
-<!--    <ul>-->
-<!--      <li v-for="event in events">{{ event }}</li>-->
-<!--    </ul>-->
-    <!-- >>> for debugging purposes -->
   </div>
 </template>
 
 <script lang="ts">
 import {computed, ComputedRef, defineComponent, Ref, ref, useContext} from "@nuxtjs/composition-api";
-import {DENORMALIZER_TYPE, QUERY_TYPE} from "~/types/enums";
+import {QUERY_TYPE} from "~/types/enums";
 import DataPersister from "~/services/data/dataPersister";
 import {DataPersisterArgs} from "~/types/interfaces";
 import { Context } from "@nuxt/types";
@@ -52,20 +44,16 @@ import {Model, Query} from "@vuex-orm/core";
 import {repositoryHelper} from "~/services/store/repository";
 import {File} from "~/models/Core/File";
 import {queryHelper} from "~/services/store/query";
-import Serializer from "~/services/serializer/serializer";
 
 export default defineComponent({
   name: 'OrganizationCmfLicence',
   setup() {
     const context = useContext()
 
-
     let fileId: Ref<number | null> = ref(null)
 
     const file: ComputedRef<File | null> = computed(() => {
-      if (fileId.value === null)
-        return null
-      return queryHelper.getItem(query, fileId.value) as File
+      return fileId.value !== null ? queryHelper.getItem(query, fileId.value) as File : null
     })
 
     let pending: ComputedRef<boolean> = computed(() => {
@@ -85,38 +73,27 @@ export default defineComponent({
         {
           url: '/api/export/cmf-licence/organization',
           type: QUERY_TYPE.DEFAULT,
-          data: { format: 'pdf', async: true },
+          data: { format: 'pdf', async: async() },
           withCredentials: true
         } as DataPersisterArgs
       )
 
-      if (async()) {
-        // pending.value = true
-        console.log(response)
-        let entry = Serializer.denormalize(response.data, DENORMALIZER_TYPE.HYDRA)
-        let model = repositoryHelper.persist(File, entry.data) as any
-
-        console.log(model)
-        fileId.value = model.id
-        // file.value = () => { return queryHelper.getItem(query, model.id) as File }
-        // file.value = queryHelper.getItem(query, model.id) as File
-
-      } else {
+      if (!async()) {
         console.error('SSE unavailable - File downloaded synchronously')
-        // file.value = response
       }
-    }
 
-    // const onMessage = (eventData) => {
-    //   fileUrl.value = eventData.url
-    //   pending.value = false
-    // }
+      fileId.value = response.data.id
+      repositoryHelper.persist(File, response.data)
+    }
 
     return {
       submit,
       pending,
       file: () => file
     }
+  },
+  beforeDestroy() {
+    repositoryHelper.cleanRepository(File)
   }
 })
 

+ 4 - 19
store/sse.ts

@@ -1,12 +1,6 @@
 import {MercureEntityUpdate, sseState} from "~/types/interfaces";
 import {repositoryHelper} from "~/services/store/repository";
 import {models} from "~/models/_import";
-import Serializer from "~/services/serializer/serializer";
-import {DENORMALIZER_TYPE} from "~/types/enums";
-import {queryHelper} from "~/services/store/query";
-import {Repository as VuexRepository} from "@vuex-orm/core/dist/src/repository/Repository";
-import {Model, Query} from "@vuex-orm/core";
-import {File} from "~/models/Core/File";
 
 export const state = () => ({
   connected: false,
@@ -27,20 +21,11 @@ export const mutations = {
         const entityName = matches[1]
 
         let model = models.find(candidate => { return candidate.entity === entityName })
+        if (!model) {
+          throw new Error('SSE: no model found')
+        }
 
-        // let entry = Serializer.denormalize(event.data, DENORMALIZER_TYPE.HYDRA)
-
-        console.log(JSON.parse(event.data))
-
-        let entry = Serializer.denormalize(JSON.parse(event.data), DENORMALIZER_TYPE.HYDRA)
-        console.log(entry)
-
-        let item = repositoryHelper.persist(model, entry.data) as any
-
-        const repository: VuexRepository<Model> = repositoryHelper.getRepository(model)
-        const query: Query = repository.query()
-        console.log(item)
-        console.log(queryHelper.getItem(query, item.id))
+        repositoryHelper.persist(model, JSON.parse(event.data))
         break
 
       case "create":