🐛 Fix cannot do message action in channel related realm
This commit is contained in:
parent
485f72eded
commit
f4ff82a804
@ -43,7 +43,13 @@ func listChannel(c *fiber.Ctx) error {
|
|||||||
func listOwnedChannel(c *fiber.Ctx) error {
|
func listOwnedChannel(c *fiber.Ctx) error {
|
||||||
user := c.Locals("principal").(models.Account)
|
user := c.Locals("principal").(models.Account)
|
||||||
|
|
||||||
channels, err := services.ListChannelWithUser(user)
|
var err error
|
||||||
|
var channels []models.Channel
|
||||||
|
if val, ok := c.Locals("realm").(models.Realm); ok {
|
||||||
|
channels, err = services.ListChannelWithUser(user, val.ID)
|
||||||
|
} else {
|
||||||
|
channels, err = services.ListChannelWithUser(user)
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fiber.NewError(fiber.StatusBadRequest, err.Error())
|
return fiber.NewError(fiber.StatusBadRequest, err.Error())
|
||||||
}
|
}
|
||||||
@ -54,7 +60,13 @@ func listOwnedChannel(c *fiber.Ctx) error {
|
|||||||
func listAvailableChannel(c *fiber.Ctx) error {
|
func listAvailableChannel(c *fiber.Ctx) error {
|
||||||
user := c.Locals("principal").(models.Account)
|
user := c.Locals("principal").(models.Account)
|
||||||
|
|
||||||
channels, err := services.ListChannelIsAvailable(user)
|
var err error
|
||||||
|
var channels []models.Channel
|
||||||
|
if val, ok := c.Locals("realm").(models.Realm); ok {
|
||||||
|
channels, err = services.ListAvailableChannel(user, val.ID)
|
||||||
|
} else {
|
||||||
|
channels, err = services.ListAvailableChannel(user)
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fiber.NewError(fiber.StatusBadRequest, err.Error())
|
return fiber.NewError(fiber.StatusBadRequest, err.Error())
|
||||||
}
|
}
|
||||||
|
@ -55,9 +55,19 @@ func newMessage(c *fiber.Ctx) error {
|
|||||||
return fmt.Errorf("you must write or upload some content in a single message")
|
return fmt.Errorf("you must write or upload some content in a single message")
|
||||||
}
|
}
|
||||||
|
|
||||||
channel, member, err := services.GetAvailableChannelWithAlias(alias, user)
|
var err error
|
||||||
if err != nil {
|
var channel models.Channel
|
||||||
return fiber.NewError(fiber.StatusNotFound, err.Error())
|
var member models.ChannelMember
|
||||||
|
if val, ok := c.Locals("realm").(models.Realm); ok {
|
||||||
|
channel, member, err = services.GetAvailableChannelWithAlias(alias, user, val.ID)
|
||||||
|
if err != nil {
|
||||||
|
return fiber.NewError(fiber.StatusNotFound, err.Error())
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
channel, member, err = services.GetAvailableChannelWithAlias(alias, user)
|
||||||
|
if err != nil {
|
||||||
|
return fiber.NewError(fiber.StatusNotFound, err.Error())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
message := models.Message{
|
message := models.Message{
|
||||||
@ -102,17 +112,30 @@ func editMessage(c *fiber.Ctx) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
var channel models.Channel
|
||||||
|
var member models.ChannelMember
|
||||||
|
if val, ok := c.Locals("realm").(models.Realm); ok {
|
||||||
|
channel, member, err = services.GetAvailableChannelWithAlias(alias, user, val.ID)
|
||||||
|
if err != nil {
|
||||||
|
return fiber.NewError(fiber.StatusNotFound, err.Error())
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
channel, member, err = services.GetAvailableChannelWithAlias(alias, user)
|
||||||
|
if err != nil {
|
||||||
|
return fiber.NewError(fiber.StatusNotFound, err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var message models.Message
|
var message models.Message
|
||||||
if channel, member, err := services.GetAvailableChannelWithAlias(alias, user); err != nil {
|
if message, err = services.GetMessageWithPrincipal(channel, member, uint(messageId)); err != nil {
|
||||||
return fiber.NewError(fiber.StatusNotFound, err.Error())
|
|
||||||
} else if message, err = services.GetMessageWithPrincipal(channel, member, uint(messageId)); err != nil {
|
|
||||||
return fiber.NewError(fiber.StatusNotFound, err.Error())
|
return fiber.NewError(fiber.StatusNotFound, err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
message.Content = data.Content
|
message.Content = data.Content
|
||||||
message.Attachments = data.Attachments
|
message.Attachments = data.Attachments
|
||||||
|
|
||||||
message, err := services.EditMessage(message)
|
message, err = services.EditMessage(message)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fiber.NewError(fiber.StatusBadRequest, err.Error())
|
return fiber.NewError(fiber.StatusBadRequest, err.Error())
|
||||||
}
|
}
|
||||||
@ -125,14 +148,27 @@ func deleteMessage(c *fiber.Ctx) error {
|
|||||||
alias := c.Params("channel")
|
alias := c.Params("channel")
|
||||||
messageId, _ := c.ParamsInt("messageId", 0)
|
messageId, _ := c.ParamsInt("messageId", 0)
|
||||||
|
|
||||||
|
var err error
|
||||||
|
var channel models.Channel
|
||||||
|
var member models.ChannelMember
|
||||||
|
if val, ok := c.Locals("realm").(models.Realm); ok {
|
||||||
|
channel, member, err = services.GetAvailableChannelWithAlias(alias, user, val.ID)
|
||||||
|
if err != nil {
|
||||||
|
return fiber.NewError(fiber.StatusNotFound, err.Error())
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
channel, member, err = services.GetAvailableChannelWithAlias(alias, user)
|
||||||
|
if err != nil {
|
||||||
|
return fiber.NewError(fiber.StatusNotFound, err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var message models.Message
|
var message models.Message
|
||||||
if channel, member, err := services.GetAvailableChannelWithAlias(alias, user); err != nil {
|
if message, err = services.GetMessageWithPrincipal(channel, member, uint(messageId)); err != nil {
|
||||||
return fiber.NewError(fiber.StatusNotFound, err.Error())
|
|
||||||
} else if message, err = services.GetMessageWithPrincipal(channel, member, uint(messageId)); err != nil {
|
|
||||||
return fiber.NewError(fiber.StatusNotFound, err.Error())
|
return fiber.NewError(fiber.StatusNotFound, err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
message, err := services.DeleteMessage(message)
|
message, err = services.DeleteMessage(message)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fiber.NewError(fiber.StatusBadRequest, err.Error())
|
return fiber.NewError(fiber.StatusBadRequest, err.Error())
|
||||||
}
|
}
|
||||||
|
@ -42,11 +42,11 @@ func GetChannelWithAlias(alias string, realmId ...uint) (models.Channel, error)
|
|||||||
return channel, nil
|
return channel, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetAvailableChannelWithAlias(alias string, user models.Account) (models.Channel, models.ChannelMember, error) {
|
func GetAvailableChannelWithAlias(alias string, user models.Account, realmId ...uint) (models.Channel, models.ChannelMember, error) {
|
||||||
var err error
|
var err error
|
||||||
var member models.ChannelMember
|
var member models.ChannelMember
|
||||||
var channel models.Channel
|
var channel models.Channel
|
||||||
if channel, err = GetChannelWithAlias(alias); err != nil {
|
if channel, err = GetChannelWithAlias(alias, realmId...); err != nil {
|
||||||
return channel, member, err
|
return channel, member, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,16 +93,22 @@ func ListChannel(realmId ...uint) ([]models.Channel, error) {
|
|||||||
return channels, nil
|
return channels, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func ListChannelWithUser(user models.Account) ([]models.Channel, error) {
|
func ListChannelWithUser(user models.Account, realmId ...uint) ([]models.Channel, error) {
|
||||||
var channels []models.Channel
|
var channels []models.Channel
|
||||||
if err := database.C.Where(&models.Channel{AccountID: user.ID}).Find(&channels).Error; err != nil {
|
tx := database.C.Where(&models.Channel{AccountID: user.ID})
|
||||||
|
if len(realmId) > 0 {
|
||||||
|
tx = tx.Where("realm_id = ?", realmId)
|
||||||
|
} else {
|
||||||
|
tx = tx.Where("realm_id IS NULL")
|
||||||
|
}
|
||||||
|
if err := tx.Find(&channels).Error; err != nil {
|
||||||
return channels, err
|
return channels, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return channels, nil
|
return channels, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func ListChannelIsAvailable(user models.Account) ([]models.Channel, error) {
|
func ListAvailableChannel(user models.Account, realmId ...uint) ([]models.Channel, error) {
|
||||||
var channels []models.Channel
|
var channels []models.Channel
|
||||||
var members []models.ChannelMember
|
var members []models.ChannelMember
|
||||||
if err := database.C.Where(&models.ChannelMember{
|
if err := database.C.Where(&models.ChannelMember{
|
||||||
@ -115,7 +121,13 @@ func ListChannelIsAvailable(user models.Account) ([]models.Channel, error) {
|
|||||||
return item.ChannelID
|
return item.ChannelID
|
||||||
})
|
})
|
||||||
|
|
||||||
if err := database.C.Where("id IN ?", idx).Find(&channels).Error; err != nil {
|
tx := database.C.Where("id IN ?", idx)
|
||||||
|
if len(realmId) > 0 {
|
||||||
|
tx = tx.Where("realm_id = ?", realmId)
|
||||||
|
} else {
|
||||||
|
tx = tx.Where("realm_id IS NULL")
|
||||||
|
}
|
||||||
|
if err := tx.Find(&channels).Error; err != nil {
|
||||||
return channels, err
|
return channels, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user