Restricted notify ability

This commit is contained in:
2024-04-06 16:08:33 +08:00
parent 1b68faf8ba
commit 35b28d1003
6 changed files with 117 additions and 61 deletions

View File

@ -85,6 +85,35 @@ func kickChannel(c *fiber.Ctx) error {
}
}
func editChannelMembership(c *fiber.Ctx) error {
user := c.Locals("principal").(models.Account)
channelId, _ := c.ParamsInt("channelId", 0)
var data struct {
NotifyLevel int8 `json:"notify_level"`
}
if err := BindAndValidate(c, &data); err != nil {
return err
}
var membership models.ChannelMember
if err := database.C.Where(&models.ChannelMember{
ChannelID: uint(channelId),
AccountID: user.ID,
}).First(&membership).Error; err != nil {
return fiber.NewError(fiber.StatusNotFound, err.Error())
}
membership.Notify = data.NotifyLevel
if membership, err := services.EditChannelMember(membership); err != nil {
return fiber.NewError(fiber.StatusBadRequest, err.Error())
} else {
return c.JSON(membership)
}
}
func leaveChannel(c *fiber.Ctx) error {
user := c.Locals("principal").(models.Account)
channelId, _ := c.ParamsInt("channelId", 0)

View File

@ -86,6 +86,7 @@ func NewServer() {
channels.Delete("/:channelId", authMiddleware, deleteChannel)
channels.Get("/:channelId/members", listChannelMembers)
channels.Put("/:channelId/members", authMiddleware, editChannelMembership)
channels.Post("/:channelId/invite", authMiddleware, inviteChannel)
channels.Post("/:channelId/kick", authMiddleware, kickChannel)
channels.Post("/:channelId/leave", authMiddleware, leaveChannel)