add new event types

This commit is contained in:
2026-04-28 16:38:16 +02:00
parent 00eddfb53e
commit 79219971d0
10 changed files with 137 additions and 67 deletions
+31
View File
@@ -2,15 +2,19 @@ package httpRequest
import (
json2 "encoding/json"
"maps"
"net/http"
"slices"
"time"
"go-socket/packages/Enums/WsEventType"
"go-socket/packages/cache"
"go-socket/packages/convertions"
"go-socket/packages/passwords"
"go-socket/packages/postgresql"
"go-socket/packages/tokens"
"go-socket/packages/types"
"go-socket/packages/wsServer"
"golang.org/x/crypto/bcrypt"
)
@@ -150,6 +154,7 @@ func HandleUserModProfile(response http.ResponseWriter, request *http.Request) {
}
updateList := &types.UserProfileUpdateList{}
updatedValues := map[string]any{}
if pronouns := request.FormValue("pronouns"); pronouns != "" {
if len(pronouns) > 32 {
@@ -158,6 +163,7 @@ func HandleUserModProfile(response http.ResponseWriter, request *http.Request) {
}
user.Pronouns = pronouns
updateList.Pronouns = true
updatedValues["pronouns"] = pronouns
}
if description := request.FormValue("description"); description != "" {
@@ -167,6 +173,7 @@ func HandleUserModProfile(response http.ResponseWriter, request *http.Request) {
}
user.Description = description
updateList.Description = true
updatedValues["description"] = description
}
if colorStr := request.FormValue("color"); colorStr != "" {
@@ -177,6 +184,12 @@ func HandleUserModProfile(response http.ResponseWriter, request *http.Request) {
}
user.Color = color
updateList.Color = true
updatedValues["color"] = color
}
if len(updatedValues) == 0 {
http.Error(response, "no values", http.StatusBadRequest)
return
}
err = postgresql.UserUpdateProfile(ctx, user, updateList)
@@ -184,6 +197,24 @@ func HandleUserModProfile(response http.ResponseWriter, request *http.Request) {
http.Error(response, "internal server error", http.StatusInternalServerError)
return
}
user.Mu.RLock()
connections := slices.Collect(maps.Values(user.Connections))
user.Mu.RUnlock()
for _, conn := range connections {
target, err := getUserById(ctx, conn.GetSecondUser(user.Id))
if err != nil {
continue
}
wsServer.WsSendMessageCloseIfTimeout(target, types.WsEventMessage{
Type: WsEventType.UserProfileChange,
Event: &map[string]any{
"userId": user.Id,
"profileChangeList": updatedValues,
},
})
}
response.WriteHeader(http.StatusAccepted)
}