add new event types
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user