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::{
|
use models::rooms::{
|
||||||
RoomMemberRole, room, room_ai, room_category, room_member, room_message, room_pin, room_thread,
|
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 queue::ProjectRoomEvent;
|
||||||
use sea_orm::*;
|
use sea_orm::*;
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
@ -122,6 +123,37 @@ impl RoomService {
|
|||||||
.insert(&txn)
|
.insert(&txn)
|
||||||
.await?;
|
.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?;
|
txn.commit().await?;
|
||||||
|
|
||||||
self.spawn_room_workers(room_model.id);
|
self.spawn_room_workers(room_model.id);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user