✨ Encrypted channels
This commit is contained in:
@ -99,6 +99,7 @@ func createChannel(c *fiber.Ctx) error {
|
||||
Alias string `json:"alias" validate:"required,lowercase,min=4,max=32"`
|
||||
Name string `json:"name" validate:"required"`
|
||||
Description string `json:"description"`
|
||||
IsEncrypted bool `json:"is_encrypted"`
|
||||
}
|
||||
|
||||
if err := BindAndValidate(c, &data); err != nil {
|
||||
@ -121,9 +122,9 @@ func createChannel(c *fiber.Ctx) error {
|
||||
var err error
|
||||
var channel models.Channel
|
||||
if realm != nil {
|
||||
channel, err = services.NewChannel(user, data.Alias, data.Name, data.Description, realm.ID)
|
||||
channel, err = services.NewChannel(user, data.Alias, data.Name, data.Description, data.IsEncrypted, realm.ID)
|
||||
} else {
|
||||
channel, err = services.NewChannel(user, data.Alias, data.Name, data.Description)
|
||||
channel, err = services.NewChannel(user, data.Alias, data.Name, data.Description, data.IsEncrypted)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
@ -141,6 +142,7 @@ func editChannel(c *fiber.Ctx) error {
|
||||
Alias string `json:"alias" validate:"required,min=4,max=32"`
|
||||
Name string `json:"name" validate:"required"`
|
||||
Description string `json:"description"`
|
||||
IsEncrypted bool `json:"is_encrypted"`
|
||||
}
|
||||
|
||||
if err := BindAndValidate(c, &data); err != nil {
|
||||
@ -166,7 +168,7 @@ func editChannel(c *fiber.Ctx) error {
|
||||
return fiber.NewError(fiber.StatusNotFound, err.Error())
|
||||
}
|
||||
|
||||
channel, err := services.EditChannel(channel, data.Alias, data.Name, data.Description)
|
||||
channel, err := services.EditChannel(channel, data.Alias, data.Name, data.Description, data.IsEncrypted)
|
||||
if err != nil {
|
||||
return fiber.NewError(fiber.StatusBadRequest, err.Error())
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"git.solsynth.dev/hydrogen/messaging/pkg/database"
|
||||
@ -48,7 +47,6 @@ func newMessage(c *fiber.Ctx) error {
|
||||
var data struct {
|
||||
Type string `json:"type" validate:"required"`
|
||||
Content map[string]any `json:"content"`
|
||||
Metadata map[string]any `json:"metadata"`
|
||||
Attachments []models.Attachment `json:"attachments"`
|
||||
ReplyTo *uint `json:"reply_to"`
|
||||
}
|
||||
@ -74,22 +72,17 @@ func newMessage(c *fiber.Ctx) error {
|
||||
}
|
||||
}
|
||||
|
||||
var encodedContent []byte
|
||||
if raw, err := json.Marshal(data.Content); err != nil {
|
||||
rawContent, err := json.Marshal(data.Content)
|
||||
if err != nil {
|
||||
return fiber.NewError(fiber.StatusBadRequest, fmt.Sprintf("invalid message content, unable to encode: %v", err))
|
||||
} else {
|
||||
encoder := base64.StdEncoding
|
||||
encodedContent = make([]byte, encoder.EncodedLen(len(raw)))
|
||||
encoder.Encode(encodedContent, raw)
|
||||
}
|
||||
|
||||
message := models.Message{
|
||||
Content: encodedContent,
|
||||
Content: rawContent,
|
||||
Sender: member,
|
||||
Channel: channel,
|
||||
ChannelID: channel.ID,
|
||||
SenderID: member.ID,
|
||||
Metadata: data.Metadata,
|
||||
Attachments: data.Attachments,
|
||||
Type: data.Type,
|
||||
}
|
||||
@ -119,7 +112,6 @@ func editMessage(c *fiber.Ctx) error {
|
||||
var data struct {
|
||||
Type string `json:"type" validate:"required"`
|
||||
Content map[string]any `json:"content"`
|
||||
Metadata map[string]any `json:"metadata"`
|
||||
Attachments []models.Attachment `json:"attachments"`
|
||||
ReplyTo *uint `json:"reply_to"`
|
||||
}
|
||||
@ -148,18 +140,13 @@ func editMessage(c *fiber.Ctx) error {
|
||||
return fiber.NewError(fiber.StatusNotFound, err.Error())
|
||||
}
|
||||
|
||||
var encodedContent []byte
|
||||
if raw, err := json.Marshal(data.Content); err != nil {
|
||||
rawContent, err := json.Marshal(data.Content)
|
||||
if err != nil {
|
||||
return fiber.NewError(fiber.StatusBadRequest, fmt.Sprintf("invalid message content, unable to encode: %v", err))
|
||||
} else {
|
||||
encoder := base64.StdEncoding
|
||||
encodedContent = make([]byte, encoder.EncodedLen(len(raw)))
|
||||
encoder.Encode(encodedContent, raw)
|
||||
}
|
||||
|
||||
message.Attachments = data.Attachments
|
||||
message.Metadata = data.Metadata
|
||||
message.Content = encodedContent
|
||||
message.Content = rawContent
|
||||
message.Type = data.Type
|
||||
|
||||
message, err = services.EditMessage(message)
|
||||
|
Reference in New Issue
Block a user