From 6bb155ffd01afcbaf8aad60d17ef8fe6ad9877ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Fern=C3=A1ndez=20Aldana?= Date: Sun, 9 Aug 2026 18:59:41 +0200 Subject: [PATCH] Add support for clientLibVersion >= 194 for message sending in match --- server/internal/models/advertisement.go | 5 ++-- server/internal/models/message.go | 23 ++++++++++++++----- .../routes/game/party/sendMatchChat.go | 5 ++-- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/server/internal/models/advertisement.go b/server/internal/models/advertisement.go index e6e2cbc0..d43647dd 100644 --- a/server/internal/models/advertisement.go +++ b/server/internal/models/advertisement.go @@ -64,7 +64,7 @@ type Advertisement interface { GetIp() string UnsafeGetHostId() int32 GetPeers() *i.SafeOrderedMap[int32, Peer] - MakeMessage(broadcast bool, content string, typeId uint8, sender User, receivers []User) Message + MakeMessage(broadcast bool, content string, typeId uint8, metadata string, sender User, receivers []User) Message StartObserving(userId int32) StopObserving(userId int32) EncodePeers() []i.A @@ -327,7 +327,7 @@ func (advs *MainAdvertisements) Store(advFrom *shared.AdvertisementHostRequest, return storedAdv } -func (adv *MainAdvertisement) MakeMessage(broadcast bool, content string, typeId uint8, sender User, receivers []User) Message { +func (adv *MainAdvertisement) MakeMessage(broadcast bool, content string, typeId uint8, metadata string, sender User, receivers []User) Message { return &MainMessage{ advertisementId: adv.GetId(), time: time.Now().UTC().Unix(), @@ -336,6 +336,7 @@ func (adv *MainAdvertisement) MakeMessage(broadcast bool, content string, typeId typ: typeId, sender: sender, receivers: receivers, + metadata: metadata, } } diff --git a/server/internal/models/message.go b/server/internal/models/message.go index 70195834..b01da3da 100644 --- a/server/internal/models/message.go +++ b/server/internal/models/message.go @@ -12,7 +12,8 @@ type Message interface { GetSender() User GetReceivers() []User GetAdvertisementId() int32 - Encode() i.A + GetMetadata() string + Encode(clientLibVersion uint16) i.A } type MainMessage struct { @@ -20,9 +21,11 @@ type MainMessage struct { time int64 broadcast bool content string - typ uint8 - sender User - receivers []User + // Only used for clientLibVersion >= 194, json encoded + metadata string + typ uint8 + sender User + receivers []User } func (message *MainMessage) GetTime() int64 { @@ -53,12 +56,20 @@ func (message *MainMessage) GetAdvertisementId() int32 { return message.advertisementId } -func (message *MainMessage) Encode() i.A { - return i.A{ +func (message *MainMessage) GetMetadata() string { + return message.metadata +} + +func (message *MainMessage) Encode(clientLibVersion uint16) i.A { + msg := i.A{ message.sender.GetId(), message.content, message.content, message.typ, message.advertisementId, } + if clientLibVersion >= 194 { + msg = append(msg, message.metadata) + } + return msg } diff --git a/server/internal/routes/game/party/sendMatchChat.go b/server/internal/routes/game/party/sendMatchChat.go index 95c6bfd9..b7871343 100644 --- a/server/internal/routes/game/party/sendMatchChat.go +++ b/server/internal/routes/game/party/sendMatchChat.go @@ -15,6 +15,7 @@ type request struct { MatchID int32 `schema:"match_id"` Broadcast bool `schema:"broadcast"` Message string `schema:"message"` + Metadata string `schema:"metadata"` } type profileIds struct { @@ -86,11 +87,11 @@ func SendMatchChat(w http.ResponseWriter, r *http.Request) { req.Broadcast, req.Message, req.MessageTypeID, + req.Metadata, currentUser, receivers, ) - messageEncoded := message.Encode() sessions := g.Sessions() var receiverSession models.Session for _, receiver := range receivers { @@ -101,7 +102,7 @@ func SendMatchChat(w http.ResponseWriter, r *http.Request) { wss.SendOrStoreMessage( receiverSession, "MatchReceivedChatMessage", - messageEncoded, + message.Encode(receiverSession.GetClientLibVersion()), ) } i.JSON(&w, i.A{0})