diff --git a/main.go b/main.go index 312a5dc..77e388f 100644 --- a/main.go +++ b/main.go @@ -62,6 +62,7 @@ func main() { http.HandleFunc("GET /hub", withCORS(httpRequest.GetHubData)) http.HandleFunc("POST /hub/channel/message", withCORS(httpRequest.HandleHubChannelMessage)) http.HandleFunc("GET /hub/channel/messages", withCORS(httpRequest.HandleHubChannelGetMessages)) + http.HandleFunc("GET /hub/channel/unreadcount", withCORS(httpRequest.HandleGetChannelUnreadMessagesCount)) http.HandleFunc("GET /hub/channel", withCORS(httpRequest.GetChannelData)) http.HandleFunc("GET /hubs", withCORS(httpRequest.HandleGetHubs)) http.HandleFunc("GET /hub/channels", withCORS(httpRequest.HandleGetChannels)) diff --git a/packages/httpRequest/user.go b/packages/httpRequest/user.go index 14a8050..e088733 100644 --- a/packages/httpRequest/user.go +++ b/packages/httpRequest/user.go @@ -2,6 +2,7 @@ package httpRequest import ( "encoding/json" + "fmt" "maps" "net/http" "slices" @@ -345,3 +346,26 @@ func HandleGetHubs(response http.ResponseWriter, request *http.Request) { response.WriteHeader(http.StatusOK) response.Write(converted) } + +func HandleGetChannelUnreadMessagesCount(response http.ResponseWriter, request *http.Request) { + if !validCheckWithResponseOnFail(response, request, normal) { + return + } + ctx := request.Context() + user, err := getUserByToken(ctx, request.Header.Get("token")) + if err != nil { + http.Error(response, "invalid token", http.StatusUnauthorized) + return + } + targetId, err := convertions.StringToUuid(request.URL.Query().Get("target_id")) + if err != nil { + http.Error(response, "invalid targetid", http.StatusBadRequest) + return + } + + response.WriteHeader(http.StatusOK) + user.Mu.Lock() + response.Write([]byte(fmt.Sprintf("%d", user.ChannelUnreadMessage[targetId]))) + user.ChannelUnreadMessage[targetId] = 0 + user.Mu.Unlock() +}