mirror of
https://github.com/stoatchat/stoatchat.git
synced 2026-07-14 05:26:59 +00:00
fix(bans): fix data format returned
This commit is contained in:
@@ -34,11 +34,5 @@ pub async fn req(
|
||||
let member = target.as_member(db, &server.id).await?;
|
||||
// ! FIXME_PERMISSIONS
|
||||
|
||||
let ban = ServerBan {
|
||||
id: member.id,
|
||||
reason: data.reason,
|
||||
};
|
||||
|
||||
db.insert_ban(&ban).await?;
|
||||
Ok(Json(ban))
|
||||
member.ban(db, data.reason).await.map(Json)
|
||||
}
|
||||
|
||||
@@ -6,18 +6,43 @@ use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
struct BannedUser {
|
||||
_id: String,
|
||||
username: String,
|
||||
avatar: Option<File>,
|
||||
#[serde(rename = "_id")]
|
||||
pub id: String,
|
||||
pub username: String,
|
||||
pub avatar: Option<File>,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub struct BanListResult {
|
||||
users: Vec<BannedUser>,
|
||||
bans: Vec<ServerBan>,
|
||||
}
|
||||
|
||||
#[get("/<target>/bans")]
|
||||
pub async fn req(db: &Db, user: User, target: Ref) -> Result<Json<Vec<ServerBan>>> {
|
||||
pub async fn req(db: &Db, user: User, target: Ref) -> Result<Json<BanListResult>> {
|
||||
let server = target.as_server(db).await?;
|
||||
perms(&user)
|
||||
.server(&server)
|
||||
.throw_permission(db, Permission::BanMembers)
|
||||
.await?;
|
||||
|
||||
db.fetch_bans(&server.id).await.map(Json)
|
||||
let bans = db.fetch_bans(&server.id).await?;
|
||||
let users = db
|
||||
.fetch_users(
|
||||
&bans
|
||||
.iter()
|
||||
.map(|x| &x.id.user)
|
||||
.cloned()
|
||||
.collect::<Vec<String>>(),
|
||||
)
|
||||
.await?
|
||||
.into_iter()
|
||||
.map(|x| BannedUser {
|
||||
id: x.id,
|
||||
username: x.username,
|
||||
avatar: x.avatar,
|
||||
})
|
||||
.collect();
|
||||
|
||||
Ok(Json(BanListResult { users, bans }))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user