From 045c693329b944613612d3313dded4db5eaf46f3 Mon Sep 17 00:00:00 2001
From: Dennis Postma <dennis@directonline.io>
Date: Sat, 28 Dec 2024 23:48:37 +0100
Subject: [PATCH] Removed characterJoin and characterLeave

---
 src/events/character/connect.ts | 24 ++++++++++++++++++++----
 1 file changed, 20 insertions(+), 4 deletions(-)

diff --git a/src/events/character/connect.ts b/src/events/character/connect.ts
index 09c062d..3c54e4e 100644
--- a/src/events/character/connect.ts
+++ b/src/events/character/connect.ts
@@ -13,7 +13,18 @@ export default class CharacterConnectEvent extends BaseEvent {
     this.socket.on('character:connect', this.handleEvent.bind(this))
   }
 
-  private async handleEvent(data: CharacterConnectPayload, callback: (response: boolean) => void): Promise<void> {
+  /**
+   * Handle character connect event
+   * @TODO:
+   * 1. Check if character is already connected
+   * 2. Update character hair if provided
+   * 3. Emit character connect event
+   * 4. Let other clients know of new character
+   * @param data
+   * @param callback
+   * @private
+   */
+  private async handleEvent(data: CharacterConnectPayload, callback: (response: any) => void): Promise<void> {
     if (!this.socket.userId) {
       this.emitError('User not authenticated')
       return
@@ -36,11 +47,16 @@ export default class CharacterConnectEvent extends BaseEvent {
       this.socket.characterId = character.id
 
       // Set character hair
-      const characterHair = await CharacterHairRepository.getById(data.characterHairId ?? 0)
-      await character.setCharacterHair(characterHair).update()
+      if (data.characterHairId !== undefined && data.characterHairId !== null) {
+        const characterHair = await CharacterHairRepository.getById(data.characterHairId)
+        await character.setCharacterHair(characterHair).update()
+      }
 
       // Emit character connect event
-      this.socket.emit('character:connect', character)
+      callback({
+        character,
+        zone: character.zone
+      })
     } catch (error) {
       this.handleError('Failed to connect character', error) // @TODO : Make global error handler
     }