mirror of
https://github.com/stoatchat/stoatchat.git
synced 2026-07-14 05:26:59 +00:00
Bump reqwest version.
Add mark server as read route. Mark servers as read on join.
This commit is contained in:
71
Cargo.lock
generated
71
Cargo.lock
generated
@@ -1327,6 +1327,19 @@ dependencies = [
|
||||
"tokio-tls",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hyper-tls"
|
||||
version = "0.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
|
||||
dependencies = [
|
||||
"bytes 1.0.1",
|
||||
"hyper 0.14.11",
|
||||
"native-tls",
|
||||
"tokio 1.9.0",
|
||||
"tokio-native-tls",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ident_case"
|
||||
version = "1.0.1"
|
||||
@@ -1688,7 +1701,7 @@ dependencies = [
|
||||
"pbkdf2",
|
||||
"percent-encoding",
|
||||
"rand 0.7.3",
|
||||
"reqwest",
|
||||
"reqwest 0.10.10",
|
||||
"rustls 0.17.0",
|
||||
"serde",
|
||||
"serde_bytes",
|
||||
@@ -2515,7 +2528,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "rauth"
|
||||
version = "0.3.0"
|
||||
source = "git+https://gitlab.insrt.uk/insert/rauth?rev=840ad003263fd5570aba4866e7d72e4fc1b3e95a#840ad003263fd5570aba4866e7d72e4fc1b3e95a"
|
||||
source = "git+https://gitlab.insrt.uk/insert/rauth?rev=19bef300ecc269c028e3d746f0a2f09842d3b37b#19bef300ecc269c028e3d746f0a2f09842d3b37b"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"handlebars",
|
||||
@@ -2525,7 +2538,7 @@ dependencies = [
|
||||
"mongodb",
|
||||
"nanoid 0.3.0",
|
||||
"regex",
|
||||
"reqwest",
|
||||
"reqwest 0.11.4",
|
||||
"rocket",
|
||||
"rust-argon2",
|
||||
"serde",
|
||||
@@ -2620,14 +2633,12 @@ dependencies = [
|
||||
"http-body 0.3.1",
|
||||
"hyper 0.13.10",
|
||||
"hyper-rustls",
|
||||
"hyper-tls",
|
||||
"ipnet",
|
||||
"js-sys",
|
||||
"lazy_static",
|
||||
"log",
|
||||
"mime",
|
||||
"mime_guess",
|
||||
"native-tls",
|
||||
"percent-encoding",
|
||||
"pin-project-lite 0.2.4",
|
||||
"rustls 0.18.1",
|
||||
@@ -2636,7 +2647,6 @@ dependencies = [
|
||||
"serde_urlencoded",
|
||||
"tokio 0.2.25",
|
||||
"tokio-rustls 0.14.1",
|
||||
"tokio-tls",
|
||||
"url",
|
||||
"wasm-bindgen",
|
||||
"wasm-bindgen-futures",
|
||||
@@ -2645,6 +2655,41 @@ dependencies = [
|
||||
"winreg 0.7.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "reqwest"
|
||||
version = "0.11.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "246e9f61b9bb77df069a947682be06e31ac43ea37862e244a69f177694ea6d22"
|
||||
dependencies = [
|
||||
"base64 0.13.0",
|
||||
"bytes 1.0.1",
|
||||
"encoding_rs",
|
||||
"futures-core",
|
||||
"futures-util",
|
||||
"http",
|
||||
"http-body 0.4.2",
|
||||
"hyper 0.14.11",
|
||||
"hyper-tls 0.5.0",
|
||||
"ipnet",
|
||||
"js-sys",
|
||||
"lazy_static",
|
||||
"log",
|
||||
"mime",
|
||||
"native-tls",
|
||||
"percent-encoding",
|
||||
"pin-project-lite 0.2.4",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"serde_urlencoded",
|
||||
"tokio 1.9.0",
|
||||
"tokio-native-tls",
|
||||
"url",
|
||||
"wasm-bindgen",
|
||||
"wasm-bindgen-futures",
|
||||
"web-sys",
|
||||
"winreg 0.7.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "resolv-conf"
|
||||
version = "0.7.0"
|
||||
@@ -2682,7 +2727,7 @@ dependencies = [
|
||||
"phf",
|
||||
"rauth",
|
||||
"regex",
|
||||
"reqwest",
|
||||
"reqwest 0.11.4",
|
||||
"rocket",
|
||||
"rocket-governor",
|
||||
"rocket_cors",
|
||||
@@ -3460,6 +3505,16 @@ dependencies = [
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-native-tls"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b"
|
||||
dependencies = [
|
||||
"native-tls",
|
||||
"tokio 1.9.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-rustls"
|
||||
version = "0.13.1"
|
||||
@@ -3975,7 +4030,7 @@ dependencies = [
|
||||
"futures",
|
||||
"http",
|
||||
"hyper 0.13.10",
|
||||
"hyper-tls",
|
||||
"hyper-tls 0.4.3",
|
||||
"lazy_static",
|
||||
"log",
|
||||
"native-tls",
|
||||
|
||||
@@ -39,14 +39,14 @@ validator = { version = "0.11", features = ["derive"] }
|
||||
# async
|
||||
futures = "0.3.8"
|
||||
chrono = "0.4.15"
|
||||
reqwest = { version = "0.10.8", features = ["json"] }
|
||||
reqwest = { version = "0.11.4", features = ["json"] }
|
||||
async-std = { version = "1.8.0", features = ["tokio1", "tokio02", "attributes"] }
|
||||
|
||||
# internal util
|
||||
web-push = "0.7.2"
|
||||
many-to-many = "0.1.2"
|
||||
lettre = "0.10.0-alpha.4"
|
||||
rauth = { git = "https://gitlab.insrt.uk/insert/rauth", rev = "840ad003263fd5570aba4866e7d72e4fc1b3e95a" }
|
||||
rauth = { git = "https://gitlab.insrt.uk/insert/rauth", rev = "19bef300ecc269c028e3d746f0a2f09842d3b37b" }
|
||||
hive_pubsub = { git = "https://gitlab.insrt.uk/insert/hive", rev = "a89826df2b30166220e68a6ed01a58b751456604", features = ["mongo"] }
|
||||
|
||||
# web
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
#!/bin/bash
|
||||
export version=0.5.1-alpha.22
|
||||
export version=0.5.1-alpha.23
|
||||
echo "pub const VERSION: &str = \"${version}\";" > src/version.rs
|
||||
|
||||
@@ -10,6 +10,7 @@ use mongodb::bson::to_document;
|
||||
use mongodb::bson::Document;
|
||||
use rocket::serde::json::Value;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use ulid::Ulid;
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug, Clone)]
|
||||
pub struct MemberCompositeKey {
|
||||
@@ -246,7 +247,48 @@ impl Server {
|
||||
.collect::<Vec<String>>())
|
||||
}
|
||||
|
||||
pub async fn mark_as_read(&self, id: &str) -> Result<()> {
|
||||
let current_time = Ulid::new().to_string();
|
||||
let unreads = get_collection("channel_unreads");
|
||||
|
||||
unreads.delete_many(
|
||||
doc! {
|
||||
"_id.channel": {
|
||||
"$in": &self.channels
|
||||
},
|
||||
"_id.user": &id
|
||||
},
|
||||
None
|
||||
)
|
||||
.await
|
||||
.map_err(|_| Error::DatabaseError {
|
||||
operation: "delete_many",
|
||||
with: "channel_unreads",
|
||||
})?;
|
||||
|
||||
unreads.insert_many(
|
||||
self.channels
|
||||
.iter()
|
||||
.map(|channel| doc! {
|
||||
"_id": {
|
||||
"channel": channel,
|
||||
"user": &id
|
||||
},
|
||||
"last_id": ¤t_time
|
||||
})
|
||||
.collect::<Vec<Document>>(),
|
||||
None
|
||||
)
|
||||
.await
|
||||
.map_err(|_| Error::DatabaseError {
|
||||
operation: "update_many",
|
||||
with: "channel_unreads",
|
||||
})
|
||||
.map(|_| ())
|
||||
}
|
||||
|
||||
pub async fn join_member(&self, id: &str) -> Result<()> {
|
||||
// Check if user is banned.
|
||||
if get_collection("server_bans")
|
||||
.find_one(
|
||||
doc! {
|
||||
@@ -265,6 +307,7 @@ impl Server {
|
||||
return Err(Error::Banned);
|
||||
}
|
||||
|
||||
// Add user to server.
|
||||
get_collection("server_members")
|
||||
.insert_one(
|
||||
doc! {
|
||||
@@ -281,12 +324,14 @@ impl Server {
|
||||
with: "server_members",
|
||||
})?;
|
||||
|
||||
// Announce that user joined server.
|
||||
ClientboundNotification::ServerMemberJoin {
|
||||
id: self.id.clone(),
|
||||
user: id.to_string(),
|
||||
}
|
||||
.publish(self.id.clone());
|
||||
|
||||
// Broadcast join message.
|
||||
if let Some(channels) = &self.system_messages {
|
||||
if let Some(cid) = &channels.user_joined {
|
||||
let channel = Ref::from_unchecked(cid.clone()).fetch_channel().await?;
|
||||
@@ -296,6 +341,9 @@ impl Server {
|
||||
}
|
||||
}
|
||||
|
||||
// Mark entire server as read.
|
||||
self.mark_as_read(&id).await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ mod server_create;
|
||||
mod server_delete;
|
||||
mod server_edit;
|
||||
mod server_fetch;
|
||||
mod server_ack;
|
||||
|
||||
mod channel_create;
|
||||
|
||||
@@ -30,6 +31,7 @@ pub fn routes() -> Vec<Route> {
|
||||
server_delete::req,
|
||||
server_fetch::req,
|
||||
server_edit::req,
|
||||
server_ack::req,
|
||||
channel_create::req,
|
||||
member_fetch_all::req,
|
||||
member_remove::req,
|
||||
|
||||
18
src/routes/servers/server_ack.rs
Normal file
18
src/routes/servers/server_ack.rs
Normal file
@@ -0,0 +1,18 @@
|
||||
use crate::database::*;
|
||||
use crate::util::result::{Error, Result};
|
||||
|
||||
#[put("/<target>/ack")]
|
||||
pub async fn req(user: User, target: Ref) -> Result<()> {
|
||||
let target = target.fetch_server().await?;
|
||||
|
||||
let perm = permissions::PermissionCalculator::new(&user)
|
||||
.with_server(&target)
|
||||
.for_server()
|
||||
.await?;
|
||||
|
||||
if !perm.get_view() {
|
||||
Err(Error::MissingPermission)?
|
||||
}
|
||||
|
||||
target.mark_as_read(&user.id).await
|
||||
}
|
||||
@@ -1 +1 @@
|
||||
pub const VERSION: &str = "0.5.1-alpha.22";
|
||||
pub const VERSION: &str = "0.5.1-alpha.23";
|
||||
|
||||
Reference in New Issue
Block a user