Servers: Fetch and edit members.

Permissions: Use bit representation for permissions.
This commit is contained in:
Paul
2021-06-06 14:57:55 +01:00
parent 0af4fa4be9
commit 1f1d9613e2
10 changed files with 256 additions and 23 deletions

View File

@@ -50,6 +50,12 @@ pub enum RemoveServerField {
Description,
}
#[derive(Serialize, Deserialize, Debug)]
pub enum RemoveMemberField {
Nickname,
Avatar
}
#[derive(Serialize, Deserialize, Debug)]
#[serde(tag = "type")]
pub enum ClientboundNotification {
@@ -109,6 +115,12 @@ pub enum ClientboundNotification {
ServerDelete {
id: String,
},
ServerMemberUpdate {
id: MemberCompositeKey,
data: JsonValue,
#[serde(skip_serializing_if = "Option::is_none")]
clear: Option<RemoveMemberField>,
},
ServerMemberJoin {
id: String,
user: String,
@@ -168,7 +180,7 @@ pub async fn prehandle_hook(notification: &ClientboundNotification) -> Result<()
}
Channel::TextChannel { server, .. } => {
// ! FIXME: write a better algorithm?
let members = Server::fetch_members(server).await?;
let members = Server::fetch_member_ids(server).await?;
for member in members {
subscribe_if_exists(member.clone(), channel_id.to_string()).ok();
}