useEventHandlers.js 793 B

1234567891011121314151617181920212223242526272829
  1. import { updateQueryData, useEntityStore } from "pinia-colada-plugin-normalizer"
  2. export default function useEventHandlers() {
  3. const {
  4. $socketio: { socket }
  5. } = useNuxtApp()
  6. const entityStore = useEntityStore()
  7. const optionsCache = useOptionsCache()
  8. socket.on("character:create", createCharacter)
  9. socket.on("character:delete", deleteCharacter)
  10. socket.on("character:update", updateCharacter)
  11. function createCharacter(character) {
  12. updateQueryData(characterListQuery.key, (data) => [...data, character])
  13. optionsCache.update()
  14. }
  15. function deleteCharacter(id) {
  16. entityStore.remove("character", id)
  17. optionsCache.update()
  18. }
  19. function updateCharacter(character) {
  20. entityStore.set("character", character.id, character)
  21. optionsCache.update()
  22. }
  23. }