Files
vibesonic/internal/subsonic/chat.go
T

47 lines
1.1 KiB
Go

package subsonic
import (
"time"
"git.noroutes.net/NoRoutes/vibetunes/internal/database"
)
func init() {
register("getChatMessages", handleGetChatMessages)
register("addChatMessage", handleAddChatMessage)
}
func handleGetChatMessages(rc *Context) *apiError {
since := time.Time{}
if ms := rc.Params.Int64("since", 0); ms > 0 {
since = time.UnixMilli(ms)
}
messages, err := database.ListChatMessagesSince(rc.Server.DB, since)
if err != nil {
return newError(ErrGeneric, err.Error())
}
out := &ChatMessages{}
for _, m := range messages {
out.ChatMessage = append(out.ChatMessage, ChatMessage{
Username: m.Username,
Time: m.CreatedAt.UnixMilli(),
Message: m.Message,
})
}
rc.Response = newResponse()
rc.Response.ChatMessages = out
return nil
}
func handleAddChatMessage(rc *Context) *apiError {
message, aerr := rc.Params.Required("message")
if aerr != nil {
return aerr
}
if err := database.AddChatMessage(rc.Server.DB, rc.User.ID, message); err != nil {
return newError(ErrGeneric, err.Error())
}
rc.Response = newResponse()
return nil
}