add connection delevation option

This commit is contained in:
2026-04-19 18:40:02 +02:00
parent f24cab8fb0
commit dc1b9eab09
2 changed files with 48 additions and 0 deletions
@@ -8,4 +8,5 @@ const (
ConnectionCreated ConnectionCreated
ConnectionDeleted ConnectionDeleted
ConnectionElevated ConnectionElevated
ConnectionDeElevated
) )
+47
View File
@@ -329,6 +329,53 @@ func HandleUserElevateConnection(response http.ResponseWriter, request *http.Req
response.Write([]byte("waiting for second user to elevate")) response.Write([]byte("waiting for second user to elevate"))
} }
func HandleUserDeElevateConnection(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request, postNormal) {
return
}
ctx := request.Context()
user, err := getUserByToken(ctx, request.FormValue("token"))
if err != nil {
http.Error(response, "invalid token", http.StatusUnauthorized)
return
}
conn, ok := getConnectionWithResponseOnFail(&response, request, user)
if !ok {
return
}
if conn.State != ConnectionState.Stranger {
conn.State = ConnectionState.Stranger
err = postgresql.ConnectionUpdateState(ctx, conn)
if err != nil {
http.Error(response, "internal server error", http.StatusInternalServerError)
return
}
var user2 *types.User
if conn.RequestorId == user.Id {
user2, err = getUserById(ctx, conn.RecipientId)
} else {
user2, err = getUserById(ctx, conn.RequestorId)
}
wsServer.WsSendMessageCloseIfTimeout(user2, types.WsEventMessage{
Type: WsEventType.ConnectionElevated,
Event: types.ConnectionElevationData{
Id: conn.Id,
NewState: conn.State,
},
})
response.Write([]byte("de elevated"))
return
}
response.WriteHeader(http.StatusConflict)
response.Write([]byte("already lowest possible"))
}
func HandleUserGetConnections(response http.ResponseWriter, request *http.Request) { func HandleUserGetConnections(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request, postNormal) { if !postValidCheckWithResponseOnFail(&response, request, postNormal) {
return return