feat(safety): save surrounding context around messages (closes #226)
This commit is contained in:
6
Cargo.lock
generated
6
Cargo.lock
generated
@@ -2792,7 +2792,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "revolt-bonfire"
|
name = "revolt-bonfire"
|
||||||
version = "0.5.8"
|
version = "0.5.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-std",
|
"async-std",
|
||||||
"async-tungstenite",
|
"async-tungstenite",
|
||||||
@@ -2808,7 +2808,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "revolt-delta"
|
name = "revolt-delta"
|
||||||
version = "0.5.8"
|
version = "0.5.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-channel",
|
"async-channel",
|
||||||
"async-std",
|
"async-std",
|
||||||
@@ -2848,7 +2848,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "revolt-quark"
|
name = "revolt-quark"
|
||||||
version = "0.5.8"
|
version = "0.5.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-lock",
|
"async-lock",
|
||||||
"async-recursion",
|
"async-recursion",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "revolt-bonfire"
|
name = "revolt-bonfire"
|
||||||
version = "0.5.8"
|
version = "0.5.9"
|
||||||
license = "AGPL-3.0-or-later"
|
license = "AGPL-3.0-or-later"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "revolt-delta"
|
name = "revolt-delta"
|
||||||
version = "0.5.8"
|
version = "0.5.9"
|
||||||
license = "AGPL-3.0-or-later"
|
license = "AGPL-3.0-or-later"
|
||||||
authors = ["Paul Makles <paulmakles@gmail.com>"]
|
authors = ["Paul Makles <paulmakles@gmail.com>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|||||||
@@ -53,7 +53,38 @@ pub async fn report_content(db: &Db, user: User, data: Json<DataReportContent>)
|
|||||||
.map(|attachments| attachments.iter().map(|x| x.id.to_string()).collect())
|
.map(|attachments| attachments.iter().map(|x| x.id.to_string()).collect())
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
|
|
||||||
(SnapshotContent::Message(message), files)
|
// Collect prior context
|
||||||
|
let prior_context = db
|
||||||
|
.fetch_messages(
|
||||||
|
&message.channel,
|
||||||
|
Some(15),
|
||||||
|
Some(message.id.to_string()),
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
// Collect leading context
|
||||||
|
let leading_context = db
|
||||||
|
.fetch_messages(
|
||||||
|
&message.channel,
|
||||||
|
Some(15),
|
||||||
|
None,
|
||||||
|
Some(message.id.to_string()),
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
(
|
||||||
|
SnapshotContent::Message {
|
||||||
|
message,
|
||||||
|
prior_context,
|
||||||
|
leading_context,
|
||||||
|
},
|
||||||
|
files,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
ReportedContent::Server { id, .. } => {
|
ReportedContent::Server { id, .. } => {
|
||||||
let server = db.fetch_server(id).await?;
|
let server = db.fetch_server(id).await?;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "revolt-quark"
|
name = "revolt-quark"
|
||||||
version = "0.5.8"
|
version = "0.5.9"
|
||||||
license = "AGPL-3.0-or-later"
|
license = "AGPL-3.0-or-later"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,19 @@ use crate::models::{Message, Server, User};
|
|||||||
#[derive(Serialize, Deserialize, JsonSchema, Debug)]
|
#[derive(Serialize, Deserialize, JsonSchema, Debug)]
|
||||||
#[serde(tag = "_type")]
|
#[serde(tag = "_type")]
|
||||||
pub enum SnapshotContent {
|
pub enum SnapshotContent {
|
||||||
Message(Message),
|
Message {
|
||||||
|
/// Context before the message
|
||||||
|
#[serde(rename = "_prior_context")]
|
||||||
|
prior_context: Vec<Message>,
|
||||||
|
|
||||||
|
/// Context after the message
|
||||||
|
#[serde(rename = "_leading_context")]
|
||||||
|
leading_context: Vec<Message>,
|
||||||
|
|
||||||
|
/// Message
|
||||||
|
#[serde(flatten)]
|
||||||
|
message: Message,
|
||||||
|
},
|
||||||
Server(Server),
|
Server(Server),
|
||||||
User(User),
|
User(User),
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user