feat(safety): add global event for report creation (closes #225)

This commit is contained in:
Paul Makles
2023-02-23 17:58:05 +01:00
parent 2de37b23c1
commit 73af105feb
3 changed files with 11 additions and 5 deletions

View File

@@ -1,3 +1,4 @@
use revolt_quark::events::client::EventV1;
use revolt_quark::models::report::ReportedContent; use revolt_quark::models::report::ReportedContent;
use revolt_quark::models::snapshot::{Snapshot, SnapshotContent}; use revolt_quark::models::snapshot::{Snapshot, SnapshotContent};
use revolt_quark::models::{Report, User}; use revolt_quark::models::{Report, User};
@@ -121,5 +122,7 @@ pub async fn report_content(db: &Db, user: User, data: Json<DataReportContent>)
db.insert_report(&report).await?; db.insert_report(&report).await?;
EventV1::ReportCreate(report).global().await;
Ok(()) Ok(())
} }

View File

@@ -6,7 +6,7 @@ use crate::models::message::{AppendMessage, PartialMessage};
use crate::models::server::{FieldsRole, FieldsServer, PartialRole, PartialServer}; use crate::models::server::{FieldsRole, FieldsServer, PartialRole, PartialServer};
use crate::models::server_member::{FieldsMember, MemberCompositeKey, PartialMember}; use crate::models::server_member::{FieldsMember, MemberCompositeKey, PartialMember};
use crate::models::user::{FieldsUser, PartialUser, RelationshipStatus}; use crate::models::user::{FieldsUser, PartialUser, RelationshipStatus};
use crate::models::{Channel, Emoji, Member, Message, Server, User, UserSettings}; use crate::models::{Channel, Emoji, Member, Message, Report, Server, User, UserSettings};
use crate::Error; use crate::Error;
/// WebSocket Client Errors /// WebSocket Client Errors
@@ -213,6 +213,9 @@ pub enum EventV1 {
/// Delete emoji /// Delete emoji
EmojiDelete { id: String }, EmojiDelete { id: String },
/// New report
ReportCreate(Report),
/// Auth events /// Auth events
Auth(AuthifierEvent), Auth(AuthifierEvent),
} }

View File

@@ -1,7 +1,7 @@
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
/// Reason for reporting content (message or server) /// Reason for reporting content (message or server)
#[derive(Serialize, Deserialize, JsonSchema, Debug)] #[derive(Serialize, Deserialize, JsonSchema, Debug, Clone)]
pub enum ContentReportReason { pub enum ContentReportReason {
/// No reason has been specified /// No reason has been specified
NoneSpecified, NoneSpecified,
@@ -23,7 +23,7 @@ pub enum ContentReportReason {
} }
/// Reason for reporting a user /// Reason for reporting a user
#[derive(Serialize, Deserialize, JsonSchema, Debug)] #[derive(Serialize, Deserialize, JsonSchema, Debug, Clone)]
pub enum UserReportReason { pub enum UserReportReason {
/// No reason has been specified /// No reason has been specified
NoneSpecified, NoneSpecified,
@@ -44,7 +44,7 @@ pub enum UserReportReason {
Underage, Underage,
} }
#[derive(Serialize, Deserialize, JsonSchema, Debug)] #[derive(Serialize, Deserialize, JsonSchema, Debug, Clone)]
#[serde(tag = "type")] #[serde(tag = "type")]
pub enum ReportedContent { pub enum ReportedContent {
/// Report a message /// Report a message
@@ -71,7 +71,7 @@ pub enum ReportedContent {
} }
/// User-generated platform moderation report. /// User-generated platform moderation report.
#[derive(Serialize, Deserialize, JsonSchema, Debug)] #[derive(Serialize, Deserialize, JsonSchema, Debug, Clone)]
pub struct Report { pub struct Report {
/// Unique Id /// Unique Id
#[serde(rename = "_id")] #[serde(rename = "_id")]