56 lines
1.2 KiB
Go
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,
|
|
},
|
|
})
|
|
}
|