forked from jmug/stoatchat
feat(safety): add global event for report creation (closes #225)
This commit is contained in:
@@ -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(())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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")]
|
||||||
|
|||||||
Reference in New Issue
Block a user