diff --git a/src/routes/invites/invite_fetch.rs b/src/routes/invites/invite_fetch.rs index ac1db8da..e931b66d 100644 --- a/src/routes/invites/invite_fetch.rs +++ b/src/routes/invites/invite_fetch.rs @@ -11,6 +11,8 @@ use serde::Serialize; pub enum InviteResponse { /// Server channel invite Server { + /// Invite code + code: String, /// Id of the server server_id: String, /// Name of the server @@ -38,6 +40,8 @@ pub enum InviteResponse { }, /// Group channel invite Group { + /// Invite code + code: String, /// Id of group channel channel_id: String, /// Name of group channel @@ -84,6 +88,7 @@ pub async fn req(db: &Db, target: Ref) -> Result> { let server = db.fetch_server(&server).await?; InviteResponse::Server { + code: target.id, member_count: db.fetch_member_count(&server.id).await? as i64, server_id: server.id, server_name: server.name, @@ -112,6 +117,7 @@ pub async fn req(db: &Db, target: Ref) -> Result> { description, .. } => InviteResponse::Group { + code: target.id, channel_id: id, channel_name: name, channel_description: description, diff --git a/src/routes/invites/invite_join.rs b/src/routes/invites/invite_join.rs index d28884bb..0bffae24 100644 --- a/src/routes/invites/invite_join.rs +++ b/src/routes/invites/invite_join.rs @@ -1,5 +1,5 @@ use revolt_quark::{ - models::{server_member::MemberCompositeKey, Channel, Invite, Member, Server, User}, + models::{Channel, Invite, Server, User}, Db, Error, Ref, Result, }; @@ -13,8 +13,8 @@ use crate::util::variables::MAX_SERVER_COUNT; #[serde(tag = "type")] pub enum InviteJoinResponse { Server { - /// Channel we are joining - channel: Channel, + /// Channels in the server + channels: Vec, /// Server we are joining server: Server, }, @@ -38,22 +38,10 @@ pub async fn req(db: &Db, user: User, target: Ref) -> Result { + Invite::Server { server, .. } => { let server = db.fetch_server(server).await?; - let channel = db.fetch_channel(channel).await?; - let member = Member { - id: MemberCompositeKey { - server: server.id.clone(), - user: user.id.clone(), - }, - ..Default::default() - }; - - member.create(db).await?; - - Ok(Json(InviteJoinResponse::Server { channel, server })) + let channels = server.create_member(db, user, None).await?; + Ok(Json(InviteJoinResponse::Server { channels, server })) } _ => unreachable!(), }