Răsfoiți Sursa

use pinia-colada-plugin-normalizer api in handlers

Jason Gorst 3 săptămâni în urmă
părinte
comite
5f62bd0ac5
1 a modificat fișierele cu 22 adăugiri și 6 ștergeri
  1. 22 6
      app/composables/useEventHandlers.js

+ 22 - 6
app/composables/useEventHandlers.js

@@ -1,13 +1,29 @@
+import { updateQueryData, useEntityStore } from "pinia-colada-plugin-normalizer"
+
 export default function useEventHandlers() {
   const {
     $socketio: { socket }
   } = useNuxtApp()
 
-  const { createCharacterFromEvent } = useCreateCharacter()
-  const { deleteCharacterFromEvent } = useDeleteCharacter()
-  const { updateCharacterFromEvent } = useUpdateCharacter()
+  const entityStore = useEntityStore()
+  const optionsCache = useOptionsCache()
+
+  socket.on("character:create", createCharacter)
+  socket.on("character:delete", deleteCharacter)
+  socket.on("character:update", updateCharacter)
+
+  function createCharacter(character) {
+    updateQueryData(characterListQuery.key, (data) => [...data, character])
+    optionsCache.update()
+  }
+
+  function deleteCharacter(id) {
+    entityStore.remove("character", id)
+    optionsCache.update()
+  }
 
-  socket.on("character:create", createCharacterFromEvent)
-  socket.on("character:delete", deleteCharacterFromEvent)
-  socket.on("character:update", updateCharacterFromEvent)
+  function updateCharacter(character) {
+    entityStore.set("character", character.id, character)
+    optionsCache.update()
+  }
 }