Invites: Include server and channel ID.
Permissions: Small fix, consider self as User.
This commit is contained in:
@@ -30,7 +30,7 @@ impl_op_ex_commutative!(+ |a: &u32, b: &UserPermission| -> u32 { *a | *b as u32
|
|||||||
|
|
||||||
pub fn get_relationship(a: &User, b: &str) -> RelationshipStatus {
|
pub fn get_relationship(a: &User, b: &str) -> RelationshipStatus {
|
||||||
if a.id == b {
|
if a.id == b {
|
||||||
return RelationshipStatus::Friend;
|
return RelationshipStatus::User;
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(relations) = &a.relations {
|
if let Some(relations) = &a.relations {
|
||||||
@@ -55,7 +55,8 @@ impl<'a> PermissionCalculator<'a> {
|
|||||||
.map(|v| v.to_owned())
|
.map(|v| v.to_owned())
|
||||||
.unwrap_or_else(|| get_relationship(&self.perspective, &target))
|
.unwrap_or_else(|| get_relationship(&self.perspective, &target))
|
||||||
{
|
{
|
||||||
RelationshipStatus::Friend => return Ok(u32::MAX),
|
RelationshipStatus::Friend |
|
||||||
|
RelationshipStatus::User => return Ok(u32::MAX),
|
||||||
RelationshipStatus::Blocked | RelationshipStatus::BlockedOther => {
|
RelationshipStatus::Blocked | RelationshipStatus::BlockedOther => {
|
||||||
return Ok(UserPermission::Access as u32)
|
return Ok(UserPermission::Access as u32)
|
||||||
}
|
}
|
||||||
@@ -64,7 +65,7 @@ impl<'a> PermissionCalculator<'a> {
|
|||||||
// ! INFO: if we add boolean switch for permission to
|
// ! INFO: if we add boolean switch for permission to
|
||||||
// ! message people who have mutual, we need to get
|
// ! message people who have mutual, we need to get
|
||||||
// ! rid of this return statement.
|
// ! rid of this return statement.
|
||||||
return Ok(permissions);
|
// return Ok(permissions);
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,11 +8,13 @@ use serde::Serialize;
|
|||||||
#[serde(tag = "type")]
|
#[serde(tag = "type")]
|
||||||
pub enum InviteResponse {
|
pub enum InviteResponse {
|
||||||
Server {
|
Server {
|
||||||
|
server_id: String,
|
||||||
server_name: String,
|
server_name: String,
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
server_icon: Option<File>,
|
server_icon: Option<File>,
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
server_banner: Option<File>,
|
server_banner: Option<File>,
|
||||||
|
channel_id: String,
|
||||||
channel_name: String,
|
channel_name: String,
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
channel_description: Option<String>,
|
channel_description: Option<String>,
|
||||||
@@ -34,6 +36,7 @@ pub async fn req(target: Ref) -> Result<JsonValue> {
|
|||||||
let creator = Ref::from_unchecked(creator).fetch_user().await?;
|
let creator = Ref::from_unchecked(creator).fetch_user().await?;
|
||||||
|
|
||||||
if let Channel::TextChannel {
|
if let Channel::TextChannel {
|
||||||
|
id,
|
||||||
server,
|
server,
|
||||||
name,
|
name,
|
||||||
description,
|
description,
|
||||||
@@ -43,9 +46,11 @@ pub async fn req(target: Ref) -> Result<JsonValue> {
|
|||||||
let server = Ref::from_unchecked(server).fetch_server().await?;
|
let server = Ref::from_unchecked(server).fetch_server().await?;
|
||||||
|
|
||||||
Ok(json!(InviteResponse::Server {
|
Ok(json!(InviteResponse::Server {
|
||||||
|
server_id: server.id,
|
||||||
server_name: server.name,
|
server_name: server.name,
|
||||||
server_icon: server.icon,
|
server_icon: server.icon,
|
||||||
server_banner: server.banner,
|
server_banner: server.banner,
|
||||||
|
channel_id: id,
|
||||||
channel_name: name,
|
channel_name: name,
|
||||||
channel_description: description,
|
channel_description: description,
|
||||||
user_name: creator.username,
|
user_name: creator.username,
|
||||||
|
|||||||
Reference in New Issue
Block a user