This repository has been archived on 2025-04-12. You can view files and clone it, but cannot push or open issues or pull requests.
2025-04-06 14:30:45 +08:00

56 lines
1.2 KiB
Go

package api
import (
"fmt"
"git.solsynth.dev/hypernet/nexus/pkg/nex/sec"
"github.com/gofiber/fiber/v2"
"github.com/spf13/viper"
"strings"
)
type meetRoomArgs struct {
RoomName string `json:"room_name"`
User meetRoomUser `json:"user"`
}
type meetRoomUser struct {
Avatar string `json:"avatar"`
Nick string `json:"nick"`
}
func renderMeetRoom(c *fiber.Ctx) error {
if err := sec.EnsureAuthenticated(c); err != nil {
return err
}
user := c.Locals("nex_user").(*sec.UserInfo)
channel := c.Params("channel")
var nick string
if val, ok := user.Metadata["nick"].(string); ok {
nick = val
} else {
nick = user.Name
}
var avatar string
if val, ok := user.Metadata["avatar"].(string); ok {
if strings.HasPrefix(val, "http") {
avatar = val
} else {
endpoint := viper.GetString("resources_endpoint")
avatar = fmt.Sprintf("%s/attachments/%s", endpoint, val)
}
avatar = fmt.Sprintf("\"%s\"", avatar) // Make the avatar a string to embed into the js
} else {
avatar = "undefined"
}
return c.Render("meet", meetRoomArgs{
RoomName: fmt.Sprintf("%s-%s", "sn-chat", channel),
User: meetRoomUser{
Avatar: avatar,
Nick: nick,
},
})
}