From 454aae529405e47734a98157925872e33d03f68c Mon Sep 17 00:00:00 2001 From: mountain Date: Fri, 14 Jul 2023 15:09:20 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A9=A4=EB=B2=84=20=EB=8F=84=ED=81=90?= =?UTF-8?q?=EB=A8=BC=ED=8A=B8=EB=A5=BC=20=EC=A7=81=EC=A0=91=20=EB=A9=94?= =?UTF-8?q?=EC=8B=9C=EC=A7=80=20=EB=B3=B4=EB=82=B4=EB=8A=94=20=EB=B0=A9?= =?UTF-8?q?=EC=8B=9D=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/tavern.go | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/core/tavern.go b/core/tavern.go index 49af6ac..d415722 100644 --- a/core/tavern.go +++ b/core/tavern.go @@ -267,26 +267,31 @@ func (tv *Tavern) RegisterHandlers(ctx context.Context, serveMux *http.ServeMux, return nil } -type tavernCommandMessage struct { - Cmd string - Args []string -} - func (sub *subTavern) clientMessageReceived(sender *wshandler.Sender, messageType wshandler.WebSocketMessageType, body io.Reader) { if messageType == wshandler.Connected { sub.cm.add(sender.Accid, sender.Alias) } else if messageType == wshandler.Disconnected { sub.cm.remove(sender.Accid) } else if messageType == wshandler.BinaryMessage { - var msg tavernCommandMessage + var msg map[string][]any dec := json.NewDecoder(body) if err := dec.Decode(&msg); err == nil { - switch msg.Cmd { - case "EnterChannel": - sub.wsh.EnterRoom(sub.region, msg.Args[0], sender.Accid) + for cmd, args := range msg { + switch cmd { + case "EnterChannel": + sub.wsh.EnterRoom(sub.region, args[0].(string), sender.Accid) - case "LeaveChannel": - sub.wsh.LeaveRoom(sub.region, msg.Args[0], sender.Accid) + case "LeaveChannel": + sub.wsh.LeaveRoom(sub.region, args[0].(string), sender.Accid) + + case "UpdateGroupMemberDocument": + typename := args[0].(string) + gidobj, _ := primitive.ObjectIDFromHex(args[1].(string)) + doc := args[2].(map[string]any) + if group := sub.groups[typename]; group != nil { + group.UpdateMemberDocument(gidobj, sender.Accid, doc) + } + } } } }