summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2025-01-25 19:09:37 +0200
committerKyren223 <Kyren223@proton.me>2025-01-25 19:09:37 +0200
commitab6bfe91866e3c3d896921e85fb6172567be7e6f (patch)
tree4b0a627189c3ea64ac731e409c43da85a2faebdd /internal
parentd06bbbe2f60e671687b7d248d7304c4a4632c607 (diff)
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
Diffstat (limited to 'internal')
-rw-r--r--internal/client/ui/core/state/state.go6
-rw-r--r--internal/server/api/api.go7
2 files changed, 13 insertions, 0 deletions
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