chore: include "code" in invite response

This commit is contained in:
Paul Makles
2022-04-09 19:03:14 +01:00
parent a2911e42c6
commit 24def22613
2 changed files with 12 additions and 18 deletions

View File

@@ -11,6 +11,8 @@ use serde::Serialize;
pub enum InviteResponse { pub enum InviteResponse {
/// Server channel invite /// Server channel invite
Server { Server {
/// Invite code
code: String,
/// Id of the server /// Id of the server
server_id: String, server_id: String,
/// Name of the server /// Name of the server
@@ -38,6 +40,8 @@ pub enum InviteResponse {
}, },
/// Group channel invite /// Group channel invite
Group { Group {
/// Invite code
code: String,
/// Id of group channel /// Id of group channel
channel_id: String, channel_id: String,
/// Name of group channel /// Name of group channel
@@ -84,6 +88,7 @@ pub async fn req(db: &Db, target: Ref) -> Result<Json<InviteResponse>> {
let server = db.fetch_server(&server).await?; let server = db.fetch_server(&server).await?;
InviteResponse::Server { InviteResponse::Server {
code: target.id,
member_count: db.fetch_member_count(&server.id).await? as i64, member_count: db.fetch_member_count(&server.id).await? as i64,
server_id: server.id, server_id: server.id,
server_name: server.name, server_name: server.name,
@@ -112,6 +117,7 @@ pub async fn req(db: &Db, target: Ref) -> Result<Json<InviteResponse>> {
description, description,
.. ..
} => InviteResponse::Group { } => InviteResponse::Group {
code: target.id,
channel_id: id, channel_id: id,
channel_name: name, channel_name: name,
channel_description: description, channel_description: description,

View File

@@ -1,5 +1,5 @@
use revolt_quark::{ use revolt_quark::{
models::{server_member::MemberCompositeKey, Channel, Invite, Member, Server, User}, models::{Channel, Invite, Server, User},
Db, Error, Ref, Result, Db, Error, Ref, Result,
}; };
@@ -13,8 +13,8 @@ use crate::util::variables::MAX_SERVER_COUNT;
#[serde(tag = "type")] #[serde(tag = "type")]
pub enum InviteJoinResponse { pub enum InviteJoinResponse {
Server { Server {
/// Channel we are joining /// Channels in the server
channel: Channel, channels: Vec<Channel>,
/// Server we are joining /// Server we are joining
server: Server, server: Server,
}, },
@@ -38,22 +38,10 @@ pub async fn req(db: &Db, user: User, target: Ref) -> Result<Json<InviteJoinResp
let invite = target.as_invite(db).await?; let invite = target.as_invite(db).await?;
match &invite { match &invite {
Invite::Server { Invite::Server { server, .. } => {
channel, server, ..
} => {
let server = db.fetch_server(server).await?; let server = db.fetch_server(server).await?;
let channel = db.fetch_channel(channel).await?; let channels = server.create_member(db, user, None).await?;
let member = Member { Ok(Json(InviteJoinResponse::Server { channels, server }))
id: MemberCompositeKey {
server: server.id.clone(),
user: user.id.clone(),
},
..Default::default()
};
member.create(db).await?;
Ok(Json(InviteJoinResponse::Server { channel, server }))
} }
_ => unreachable!(), _ => unreachable!(),
} }