init
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
use crate::domain::events::channel::{ChannelCreatedEvent, ChannelDeletedEvent};
|
||||
use crate::models::server;
|
||||
use crate::repositories::Repositories;
|
||||
use crate::services::ServicesContext;
|
||||
use std::sync::Arc;
|
||||
@@ -71,8 +73,8 @@ impl PermissionSyncService {
|
||||
event_bus.on_async_with(
|
||||
"server_created",
|
||||
repositories.clone(),
|
||||
move |repositories, server_id: Uuid| async move {
|
||||
Self::sync_server(repositories, server_id).await;
|
||||
move |repositories, server: server::Model| async move {
|
||||
Self::sync_server(repositories, server.id).await;
|
||||
},
|
||||
);
|
||||
|
||||
@@ -139,16 +141,20 @@ impl PermissionSyncService {
|
||||
event_bus.on_async_with(
|
||||
"channel_created",
|
||||
repositories.clone(),
|
||||
move |repositories, server_id: Uuid| async move {
|
||||
Self::sync_server(repositories, server_id).await;
|
||||
move |repositories, event: ChannelCreatedEvent| async move {
|
||||
if let Some(server_id) = event.channel.server_id {
|
||||
Self::sync_server(repositories, server_id).await;
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
event_bus.on_async_with(
|
||||
"channel_deleted",
|
||||
repositories.clone(),
|
||||
move |repositories, server_id: Uuid| async move {
|
||||
Self::sync_server(repositories, server_id).await;
|
||||
move |repositories, event: ChannelDeletedEvent| async move {
|
||||
if let Some(server_id) = event.channel.server_id {
|
||||
Self::sync_server(repositories, server_id).await;
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
@@ -167,6 +173,42 @@ impl PermissionSyncService {
|
||||
Self::sync_user(repositories, user_id, server_id).await;
|
||||
},
|
||||
);
|
||||
|
||||
event_bus.on_async_with(
|
||||
"channel_user_permission_created",
|
||||
repositories.clone(),
|
||||
move |repositories, (channel_id, user_id, _permissions): (Uuid, Uuid, u64)| async move {
|
||||
if let Some(channel) = repositories
|
||||
.channel
|
||||
.get_by_id(channel_id)
|
||||
.await
|
||||
.ok()
|
||||
.flatten()
|
||||
{
|
||||
if let Some(server_id) = channel.server_id {
|
||||
Self::sync_user(repositories, user_id, server_id).await;
|
||||
}
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
event_bus.on_async_with(
|
||||
"channel_user_permission_deleted",
|
||||
repositories,
|
||||
move |repositories, (channel_id, user_id): (Uuid, Uuid)| async move {
|
||||
if let Some(channel) = repositories
|
||||
.channel
|
||||
.get_by_id(channel_id)
|
||||
.await
|
||||
.ok()
|
||||
.flatten()
|
||||
{
|
||||
if let Some(server_id) = channel.server_id {
|
||||
Self::sync_user(repositories, user_id, server_id).await;
|
||||
}
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user