feat(room): auto-inherit project members as room members on room creation
This commit is contained in:
parent
39d30678b5
commit
b740e2884d
@ -5,6 +5,7 @@ use chrono::Utc;
|
||||
use models::rooms::{
|
||||
RoomMemberRole, room, room_ai, room_category, room_member, room_message, room_pin, room_thread,
|
||||
};
|
||||
use models::projects::{project_members, MemberRole as Role};
|
||||
use queue::ProjectRoomEvent;
|
||||
use sea_orm::*;
|
||||
use uuid::Uuid;
|
||||
@ -122,6 +123,37 @@ impl RoomService {
|
||||
.insert(&txn)
|
||||
.await?;
|
||||
|
||||
// Inherit project members into room members
|
||||
let project_members_list = project_members::Entity::find()
|
||||
.filter(project_members::Column::Project.eq(project.id))
|
||||
.all(&txn)
|
||||
.await?;
|
||||
|
||||
for pm in project_members_list {
|
||||
if pm.user != user_id {
|
||||
let role = match pm.scope_role() {
|
||||
Ok(Role::Owner) => RoomMemberRole::Owner,
|
||||
Ok(Role::Admin) => RoomMemberRole::Admin,
|
||||
Ok(_) | Err(_) => RoomMemberRole::Member,
|
||||
};
|
||||
|
||||
room_member::ActiveModel {
|
||||
room: Set(room_model.id),
|
||||
user: Set(pm.user),
|
||||
role: Set(role),
|
||||
first_msg_in: Set(None),
|
||||
joined_at: Set(Some(Utc::now())),
|
||||
last_read_seq: Set(None),
|
||||
do_not_disturb: Set(false),
|
||||
dnd_start_hour: Set(None),
|
||||
dnd_end_hour: Set(None),
|
||||
}
|
||||
.insert(&txn)
|
||||
.await
|
||||
.ok();
|
||||
}
|
||||
}
|
||||
|
||||
txn.commit().await?;
|
||||
|
||||
self.spawn_room_workers(room_model.id);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user