forked from jmug/stoatchat
Fix issues with incoming PRs.
This commit is contained in:
@@ -35,7 +35,7 @@ pub struct Relationship {
|
|||||||
pub status: RelationshipStatus,
|
pub status: RelationshipStatus,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug, Clone)]
|
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
|
||||||
pub enum Presence {
|
pub enum Presence {
|
||||||
Online,
|
Online,
|
||||||
Idle,
|
Idle,
|
||||||
@@ -153,12 +153,11 @@ impl User {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If the user's status is `Presence::Invisible`, return it as `Presence::Offline`
|
// If the user's status is `Presence::Invisible`, return it as `Presence::Offline`
|
||||||
if let Some(mut status) = user.status {
|
if let Some(status) = &user.status {
|
||||||
if let Some(presence) = status.presence {
|
if let Some(presence) = &status.presence {
|
||||||
if presence == Presence::Invisible {
|
if presence == &Presence::Invisible {
|
||||||
status.presence = Some(Presence::Offline);
|
user.status = None;
|
||||||
user.status = Some(status);
|
user.online = Some(false);
|
||||||
user.online = Some(False);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -129,11 +129,16 @@ async fn accept(stream: TcpStream) {
|
|||||||
}
|
}
|
||||||
} {
|
} {
|
||||||
if let Ok(user) = (Ref { id: id.clone() }).fetch_user().await {
|
if let Ok(user) = (Ref { id: id.clone() }).fetch_user().await {
|
||||||
let is_invisible = if let Some(status) = user.status {
|
let is_invisible = if let Some(status) = &user.status {
|
||||||
if let Some(presence) = status.presence {
|
if let Some(presence) = &status.presence {
|
||||||
presence == Presence::Invisible
|
presence == &Presence::Invisible
|
||||||
|
} else {
|
||||||
|
false
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
false
|
||||||
};
|
};
|
||||||
|
|
||||||
let was_online = is_online(&id);
|
let was_online = is_online(&id);
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ pub async fn edit_bot(user: User, target: Ref, data: Json<Data>) -> Result<Empty
|
|||||||
&& data.interactions_url.is_none()
|
&& data.interactions_url.is_none()
|
||||||
&& data.remove.is_none()
|
&& data.remove.is_none()
|
||||||
{
|
{
|
||||||
return Ok(());
|
return Ok(EmptyResponse {});
|
||||||
}
|
}
|
||||||
|
|
||||||
let bot = target.fetch_bot().await?;
|
let bot = target.fetch_bot().await?;
|
||||||
|
|||||||
@@ -59,7 +59,8 @@ pub async fn invite_bot(user: User, target: Ref, dest: Json<Destination>) -> Res
|
|||||||
Err(Error::MissingPermission)?
|
Err(Error::MissingPermission)?
|
||||||
}
|
}
|
||||||
|
|
||||||
channel.add_to_group(bot.id, user.id).await
|
channel.add_to_group(bot.id, user.id).await?;
|
||||||
|
Ok(EmptyResponse {})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,7 +70,8 @@ pub async fn req(user: User, target: Ref) -> Result<EmptyResponse> {
|
|||||||
|
|
||||||
target.publish_update(json!({ "owner": new_owner })).await?;
|
target.publish_update(json!({ "owner": new_owner })).await?;
|
||||||
} else {
|
} else {
|
||||||
return target.delete().await;
|
target.delete().await?;
|
||||||
|
return Ok(EmptyResponse {});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
get_collection("channels")
|
get_collection("channels")
|
||||||
@@ -108,7 +109,8 @@ pub async fn req(user: User, target: Ref) -> Result<EmptyResponse> {
|
|||||||
Channel::TextChannel { .. } |
|
Channel::TextChannel { .. } |
|
||||||
Channel::VoiceChannel { .. } => {
|
Channel::VoiceChannel { .. } => {
|
||||||
if perm.get_manage_channel() {
|
if perm.get_manage_channel() {
|
||||||
target.delete().await
|
target.delete().await?;
|
||||||
|
Ok(EmptyResponse {})
|
||||||
} else {
|
} else {
|
||||||
Err(Error::MissingPermission)
|
Err(Error::MissingPermission)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,6 @@ pub async fn req(user: User, target: Ref, member: Ref) -> Result<EmptyResponse>
|
|||||||
Err(Error::MissingPermission)?
|
Err(Error::MissingPermission)?
|
||||||
}
|
}
|
||||||
|
|
||||||
channel.add_to_group(member.id, user.id).await;
|
channel.add_to_group(member.id, user.id).await?;
|
||||||
Ok(EmptyResponse {})
|
Ok(EmptyResponse {})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,6 @@ pub async fn req(user: User, target: Ref, msg: Ref) -> Result<EmptyResponse> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
message.delete().await;
|
message.delete().await?;
|
||||||
Ok(EmptyResponse {})
|
Ok(EmptyResponse {})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,6 +73,6 @@ pub async fn req(user: User, target: Ref, msg: Ref, edit: Json<Data>) -> Result<
|
|||||||
with: "message",
|
with: "message",
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
message.publish_update(update).await;
|
message.publish_update(update).await?;
|
||||||
Ok(EmptyResponse {})
|
Ok(EmptyResponse {})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ pub async fn req(user: User, target: Ref) -> Result<EmptyResponse> {
|
|||||||
let target = target.fetch_invite().await?;
|
let target = target.fetch_invite().await?;
|
||||||
|
|
||||||
if target.creator() == &user.id {
|
if target.creator() == &user.id {
|
||||||
target.delete().await
|
target.delete().await?;
|
||||||
} else {
|
} else {
|
||||||
match &target {
|
match &target {
|
||||||
Invite::Server { server, .. } => {
|
Invite::Server { server, .. } => {
|
||||||
@@ -20,10 +20,11 @@ pub async fn req(user: User, target: Ref) -> Result<EmptyResponse> {
|
|||||||
return Err(Error::MissingPermission);
|
return Err(Error::MissingPermission);
|
||||||
}
|
}
|
||||||
|
|
||||||
target.delete().await;
|
target.delete().await?;
|
||||||
Ok(EmptyResponse {})
|
|
||||||
}
|
}
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ok(EmptyResponse {})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
use crate::database::*;
|
use crate::database::*;
|
||||||
use crate::util::result::{Error, Result};
|
use crate::util::result::{EmptyResponse, Error, Result};
|
||||||
|
|
||||||
use mongodb::bson::{doc, to_document};
|
use mongodb::bson::{doc, to_document};
|
||||||
use rauth::auth::Session;
|
use rauth::auth::Session;
|
||||||
use rocket::serde::json::Json;
|
use rocket::serde::json::Json;
|
||||||
use serde::{Deserialize, Serialize, EmptyResponse};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
pub struct Subscription {
|
pub struct Subscription {
|
||||||
|
|||||||
@@ -57,6 +57,6 @@ pub async fn req(user: User, server: Ref, target: Ref, data: Json<Data>) -> Resu
|
|||||||
with: "server_ban",
|
with: "server_ban",
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
server.remove_member(&target.id, RemoveMember::Ban).await;
|
server.remove_member(&target.id, RemoveMember::Ban).await?;
|
||||||
Ok(EmptyResponse {})
|
Ok(EmptyResponse {})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ pub async fn req(user: User, server: Ref, target: String, data: Json<Data>) -> R
|
|||||||
.map_err(|error| Error::FailedValidation { error })?;
|
.map_err(|error| Error::FailedValidation { error })?;
|
||||||
|
|
||||||
if data.nickname.is_none() && data.avatar.is_none() && data.roles.is_none() && data.remove.is_none() {
|
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?;
|
let server = server.fetch_server().await?;
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ pub async fn req(user: User, target: Ref, member: String) -> Result<EmptyRespons
|
|||||||
|
|
||||||
target
|
target
|
||||||
.remove_member(&member.id.user, RemoveMember::Kick)
|
.remove_member(&member.id.user, RemoveMember::Kick)
|
||||||
.await;
|
.await?;
|
||||||
|
|
||||||
Ok(EmptyResponse {})
|
Ok(EmptyResponse {})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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()
|
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?;
|
let target = target.fetch_server().await?;
|
||||||
|
|||||||
@@ -18,6 +18,6 @@ pub async fn req(user: User, target: Ref) -> Result<EmptyResponse> {
|
|||||||
Err(Error::MissingPermission)?
|
Err(Error::MissingPermission)?
|
||||||
}
|
}
|
||||||
|
|
||||||
target.mark_as_read(&user.id).await;
|
target.mark_as_read(&user.id).await?;
|
||||||
Ok(EmptyResponse {})
|
Ok(EmptyResponse {})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,8 +16,10 @@ pub async fn req(user: User, target: Ref) -> Result<EmptyResponse> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if user.id == target.owner {
|
if user.id == target.owner {
|
||||||
target.delete().await
|
target.delete().await?;
|
||||||
} else {
|
} else {
|
||||||
target.remove_member(&user.id, RemoveMember::Leave).await
|
target.remove_member(&user.id, RemoveMember::Leave).await?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ok(EmptyResponse {})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use rocket::serde::json::Value;
|
|||||||
|
|
||||||
#[get("/<target>")]
|
#[get("/<target>")]
|
||||||
pub async fn req(user: User, target: Ref) -> Result<Value> {
|
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)
|
let perm = permissions::PermissionCalculator::new(&user)
|
||||||
.with_user(&target)
|
.with_user(&target)
|
||||||
|
|||||||
@@ -71,8 +71,8 @@ pub enum Error {
|
|||||||
pub struct EmptyResponse;
|
pub struct EmptyResponse;
|
||||||
pub type Result<T, E = Error> = std::result::Result<T, E>;
|
pub type Result<T, E = Error> = std::result::Result<T, E>;
|
||||||
|
|
||||||
impl<'r> Responder<'r> for EmptyResponse {
|
impl<'r> Responder<'r, 'static> for EmptyResponse {
|
||||||
fn respond_to(self, req: &Request) -> response::Result<'r> {
|
fn respond_to(self, _: &'r Request<'_>) -> response::Result<'static> {
|
||||||
Response::build()
|
Response::build()
|
||||||
.status(rocket::http::Status { code: 204 })
|
.status(rocket::http::Status { code: 204 })
|
||||||
.ok()
|
.ok()
|
||||||
|
|||||||
Reference in New Issue
Block a user