From ab6bfe91866e3c3d896921e85fb6172567be7e6f Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Sat, 25 Jan 2025 19:09:37 +0200 Subject: Fixed a bug where being kicked/banned from a network while being offline will cause a desync and crash the server and show an invalid network on the client side --- internal/client/ui/core/state/state.go | 6 ++++++ internal/server/api/api.go | 7 +++++++ 2 files changed, 13 insertions(+) (limited to 'internal') diff --git a/internal/client/ui/core/state/state.go b/internal/client/ui/core/state/state.go index 03b7b9d..044de2b 100644 --- a/internal/client/ui/core/state/state.go +++ b/internal/client/ui/core/state/state.go @@ -94,6 +94,12 @@ func UpdateNetworks(info *packet.NetworksInfo) { } } + // Remove any unrecognized networks + Data.Networks = slices.DeleteFunc(Data.Networks, func(id snowflake.ID) bool { + _, ok := State.Networks[id] + return !ok + }) + data := JsonUserData() gateway.SendAsync(&packet.SetUserData{ Data: &data, diff --git a/internal/server/api/api.go b/internal/server/api/api.go index 3e9e5e5..0036997 100644 --- a/internal/server/api/api.go +++ b/internal/server/api/api.go @@ -767,6 +767,13 @@ func GetUserData(ctx context.Context, sess *session.Session, request *packet.Get } data, err := queries.GetUserData(ctx, sess.ID()) + if err == sql.ErrNoRows { + data := "" + return &packet.SetUserData{ + Data: &data, + User: &user, + } + } if err != nil { log.Println("database error 1:", err) return &ErrInternalError -- cgit v1.3.1