Fix issues with incoming PRs.

This commit is contained in:
Paul
2021-08-16 14:07:42 +01:00
parent c632341eb7
commit 326e539ad3
18 changed files with 42 additions and 32 deletions

View File

@@ -35,7 +35,7 @@ pub struct Relationship {
pub status: RelationshipStatus,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub enum Presence {
Online,
Idle,
@@ -153,12 +153,11 @@ impl User {
}
// If the user's status is `Presence::Invisible`, return it as `Presence::Offline`
if let Some(mut status) = user.status {
if let Some(presence) = status.presence {
if presence == Presence::Invisible {
status.presence = Some(Presence::Offline);
user.status = Some(status);
user.online = Some(False);
if let Some(status) = &user.status {
if let Some(presence) = &status.presence {
if presence == &Presence::Invisible {
user.status = None;
user.online = Some(false);
}
}
}

View File

@@ -129,11 +129,16 @@ async fn accept(stream: TcpStream) {
}
} {
if let Ok(user) = (Ref { id: id.clone() }).fetch_user().await {
let is_invisible = if let Some(status) = user.status {
if let Some(presence) = status.presence {
presence == Presence::Invisible
let is_invisible = if let Some(status) = &user.status {
if let Some(presence) = &status.presence {
presence == &Presence::Invisible
} else {
false
}
} else {
false
};
let was_online = is_online(&id);
{

View File

@@ -35,7 +35,7 @@ pub async fn edit_bot(user: User, target: Ref, data: Json<Data>) -> Result<Empty
&& data.interactions_url.is_none()
&& data.remove.is_none()
{
return Ok(());
return Ok(EmptyResponse {});
}
let bot = target.fetch_bot().await?;

View File

@@ -59,7 +59,8 @@ pub async fn invite_bot(user: User, target: Ref, dest: Json<Destination>) -> Res
Err(Error::MissingPermission)?
}
channel.add_to_group(bot.id, user.id).await
channel.add_to_group(bot.id, user.id).await?;
Ok(EmptyResponse {})
}
}
}

View File

@@ -70,7 +70,8 @@ pub async fn req(user: User, target: Ref) -> Result<EmptyResponse> {
target.publish_update(json!({ "owner": new_owner })).await?;
} else {
return target.delete().await;
target.delete().await?;
return Ok(EmptyResponse {});
}
} else {
get_collection("channels")
@@ -108,7 +109,8 @@ pub async fn req(user: User, target: Ref) -> Result<EmptyResponse> {
Channel::TextChannel { .. } |
Channel::VoiceChannel { .. } => {
if perm.get_manage_channel() {
target.delete().await
target.delete().await?;
Ok(EmptyResponse {})
} else {
Err(Error::MissingPermission)
}

View File

@@ -19,6 +19,6 @@ pub async fn req(user: User, target: Ref, member: Ref) -> Result<EmptyResponse>
Err(Error::MissingPermission)?
}
channel.add_to_group(member.id, user.id).await;
channel.add_to_group(member.id, user.id).await?;
Ok(EmptyResponse {})
}

View File

@@ -24,6 +24,6 @@ pub async fn req(user: User, target: Ref, msg: Ref) -> Result<EmptyResponse> {
}
}
message.delete().await;
message.delete().await?;
Ok(EmptyResponse {})
}

View File

@@ -73,6 +73,6 @@ pub async fn req(user: User, target: Ref, msg: Ref, edit: Json<Data>) -> Result<
with: "message",
})?;
message.publish_update(update).await;
message.publish_update(update).await?;
Ok(EmptyResponse {})
}

View File

@@ -6,7 +6,7 @@ pub async fn req(user: User, target: Ref) -> Result<EmptyResponse> {
let target = target.fetch_invite().await?;
if target.creator() == &user.id {
target.delete().await
target.delete().await?;
} else {
match &target {
Invite::Server { server, .. } => {
@@ -20,10 +20,11 @@ pub async fn req(user: User, target: Ref) -> Result<EmptyResponse> {
return Err(Error::MissingPermission);
}
target.delete().await;
Ok(EmptyResponse {})
target.delete().await?;
}
_ => unreachable!(),
}
}
Ok(EmptyResponse {})
}

View File

@@ -1,10 +1,10 @@
use crate::database::*;
use crate::util::result::{Error, Result};
use crate::util::result::{EmptyResponse, Error, Result};
use mongodb::bson::{doc, to_document};
use rauth::auth::Session;
use rocket::serde::json::Json;
use serde::{Deserialize, Serialize, EmptyResponse};
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
pub struct Subscription {

View File

@@ -57,6 +57,6 @@ pub async fn req(user: User, server: Ref, target: Ref, data: Json<Data>) -> Resu
with: "server_ban",
})?;
server.remove_member(&target.id, RemoveMember::Ban).await;
server.remove_member(&target.id, RemoveMember::Ban).await?;
Ok(EmptyResponse {})
}

View File

@@ -25,7 +25,7 @@ pub async fn req(user: User, server: Ref, target: String, data: Json<Data>) -> R
.map_err(|error| Error::FailedValidation { error })?;
if data.nickname.is_none() && data.avatar.is_none() && data.roles.is_none() && data.remove.is_none() {
return Ok(());
return Ok(EmptyResponse {});
}
let server = server.fetch_server().await?;

View File

@@ -27,7 +27,7 @@ pub async fn req(user: User, target: Ref, member: String) -> Result<EmptyRespons
target
.remove_member(&member.id.user, RemoveMember::Kick)
.await;
.await?;
Ok(EmptyResponse {})
}

View File

@@ -26,7 +26,7 @@ pub async fn req(user: User, target: Ref, role_id: String, data: Json<Data>) ->
if data.name.is_none() && data.colour.is_none() && data.hoist.is_none() && data.rank.is_none() && data.remove.is_none()
{
return Ok(());
return Ok(EmptyResponse {});
}
let target = target.fetch_server().await?;

View File

@@ -18,6 +18,6 @@ pub async fn req(user: User, target: Ref) -> Result<EmptyResponse> {
Err(Error::MissingPermission)?
}
target.mark_as_read(&user.id).await;
target.mark_as_read(&user.id).await?;
Ok(EmptyResponse {})
}

View File

@@ -16,8 +16,10 @@ pub async fn req(user: User, target: Ref) -> Result<EmptyResponse> {
}
if user.id == target.owner {
target.delete().await
target.delete().await?;
} else {
target.remove_member(&user.id, RemoveMember::Leave).await
target.remove_member(&user.id, RemoveMember::Leave).await?;
}
Ok(EmptyResponse {})
}

View File

@@ -5,7 +5,7 @@ use rocket::serde::json::Value;
#[get("/<target>")]
pub async fn req(user: User, target: Ref) -> Result<Value> {
let mut target = target.fetch_user().await?;
let target = target.fetch_user().await?;
let perm = permissions::PermissionCalculator::new(&user)
.with_user(&target)

View File

@@ -71,8 +71,8 @@ pub enum Error {
pub struct EmptyResponse;
pub type Result<T, E = Error> = std::result::Result<T, E>;
impl<'r> Responder<'r> for EmptyResponse {
fn respond_to(self, req: &Request) -> response::Result<'r> {
impl<'r> Responder<'r, 'static> for EmptyResponse {
fn respond_to(self, _: &'r Request<'_>) -> response::Result<'static> {
Response::build()
.status(rocket::http::Status { code: 204 })
.ok()