feat(messaging): add masquerade to messages

This commit is contained in:
Paul
2021-11-04 20:50:30 +00:00
parent 84ba038350
commit 08c1aa6f5d
6 changed files with 35 additions and 7 deletions

View File

@@ -9,6 +9,7 @@ use mongodb::bson::{doc, to_bson, DateTime};
use rocket::serde::json::Value;
use serde::{Deserialize, Serialize};
use ulid::Ulid;
use validator::Validate;
use std::time::SystemTime;
#[derive(Serialize, Deserialize, Debug, Clone)]
@@ -123,6 +124,7 @@ impl Content {
target.id().to_string(),
self,
None,
None,
None
)
.publish(&target, false)
@@ -130,6 +132,16 @@ impl Content {
}
}
#[derive(Serialize, Deserialize, Debug, Clone, Validate)]
pub struct Masquerade {
#[serde(skip_serializing_if = "Option::is_none")]
#[validate(length(min = 1, max = 32))]
name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[validate(length(min = 1, max = 128))]
avatar: Option<String>
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Message {
#[serde(rename = "_id")]
@@ -149,7 +161,9 @@ pub struct Message {
#[serde(skip_serializing_if = "Option::is_none")]
pub mentions: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub replies: Option<Vec<String>>
pub replies: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub masquerade: Option<Masquerade>
}
impl Message {
@@ -159,6 +173,7 @@ impl Message {
content: Content,
mentions: Option<Vec<String>>,
replies: Option<Vec<String>>,
masquerade: Option<Masquerade>,
) -> Message {
Message {
id: Ulid::new().to_string(),
@@ -170,7 +185,8 @@ impl Message {
edited: None,
embeds: None,
mentions,
replies
replies,
masquerade
}
}

View File

@@ -11,7 +11,7 @@ struct MigrationInfo {
revision: i32,
}
pub const LATEST_REVISION: i32 = 10;
pub const LATEST_REVISION: i32 = 11;
pub async fn migrate_database() {
let migrations = get_collection("migrations");

View File

@@ -17,6 +17,7 @@ pub enum ChannelPermission {
InviteOthers = 0b00000000000000000000000000100000, // 32
EmbedLinks = 0b00000000000000000000000001000000, // 64
UploadFiles = 0b00000000000000000000000010000000, // 128
Masquerade = 0b00000000000000000000000100000000, // 256
}
lazy_static! {
@@ -27,7 +28,8 @@ lazy_static! {
+ ChannelPermission::VoiceCall
+ ChannelPermission::InviteOthers
+ ChannelPermission::EmbedLinks
+ ChannelPermission::UploadFiles;
+ ChannelPermission::UploadFiles
+ ChannelPermission::Masquerade;
pub static ref DEFAULT_PERMISSION_SERVER: u32 =
ChannelPermission::View
@@ -52,6 +54,7 @@ bitfield! {
pub get_invite_others, _: 26;
pub get_embed_links, _: 25;
pub get_upload_files, _: 24;
pub get_masquerade, _: 23;
}
impl<'a> PermissionCalculator<'a> {