forked from jmug/stoatchat
chore: include "code" in invite response
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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!(),
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user