refactor: improve config parsing robustness

This commit is contained in:
xboard
2026-03-15 13:10:54 +08:00
parent f83952a0dd
commit 3478eb52a1
4 changed files with 64 additions and 6 deletions
+12 -3
View File
@@ -268,11 +268,20 @@ func (w *WSClient) handleDataEvent(msg wsMessage) {
var event WSEvent
event.Type = msg.Event
// Helper to unmarshal and decode with weak Typing
decodeData := func(data []byte, target interface{}) error {
var raw map[string]interface{}
if err := json.Unmarshal(data, &raw); err != nil {
return err
}
return decodeWeakRaw(raw, target)
}
switch msg.Event {
case WSEventSyncConfig:
slog.Info("ws sync config event received")
var p syncConfigPayload
if err := json.Unmarshal(msg.Data, &p); err != nil {
if err := decodeData(msg.Data, &p); err != nil {
slog.Warn("ws: cannot decode config payload", "error", err)
return
}
@@ -281,7 +290,7 @@ func (w *WSClient) handleDataEvent(msg wsMessage) {
case WSEventSyncUsers:
slog.Info("ws sync users event received")
var p syncUsersPayload
if err := json.Unmarshal(msg.Data, &p); err != nil {
if err := decodeData(msg.Data, &p); err != nil {
slog.Warn("ws: cannot decode users payload", "error", err)
return
}
@@ -290,7 +299,7 @@ func (w *WSClient) handleDataEvent(msg wsMessage) {
case WSEventSyncUserDelta:
slog.Info("ws sync user delta event received")
var p syncUserDeltaPayload
if err := json.Unmarshal(msg.Data, &p); err != nil {
if err := decodeData(msg.Data, &p); err != nil {
slog.Warn("ws: cannot decode user delta payload", "error", err)
return
}