|
@@ -1,13 +1,29 @@
|
|
|
|
|
+import { updateQueryData, useEntityStore } from "pinia-colada-plugin-normalizer"
|
|
|
|
|
+
|
|
|
export default function useEventHandlers() {
|
|
export default function useEventHandlers() {
|
|
|
const {
|
|
const {
|
|
|
$socketio: { socket }
|
|
$socketio: { socket }
|
|
|
} = useNuxtApp()
|
|
} = 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()
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|