Skip to content

Commit 64dee88

Browse files
committed
user.d: add methods for membership/operator added and removed
1 parent 74b7be7 commit 64dee88

File tree

3 files changed

+38
-27
lines changed

3 files changed

+38
-27
lines changed

src/server/room.d

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ final class Room
3737
void disband()
3838
{
3939
foreach (ref user ; users) {
40-
enum permanent = true;
41-
user.leave_room(name, permanent);
40+
user.leave_room(name);
41+
if (type == RoomType._private) user.room_membership_canceled(name);
4242
}
4343
}
4444

src/server/server.d

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -531,9 +531,7 @@ final class Server
531531
foreach (ref room_username ; members) send_user_msg(room_username);
532532
send_user_msg(owner);
533533

534-
scope msg = new SPrivateRoomAdded(room_name);
535-
target_user.send_message(msg);
536-
send_room_list(target);
534+
target_user.room_membership_granted(room_name);
537535

538536
send_pm(
539537
server_username, actor,
@@ -601,8 +599,8 @@ final class Server
601599

602600
auto target_user = get_user(target);
603601
if (target_user !is null) {
604-
enum permanent = true;
605-
target_user.leave_room(room_name, permanent);
602+
target_user.leave_room(room_name);
603+
target_user.room_membership_canceled(room_name);
606604
}
607605
}
608606

@@ -661,9 +659,7 @@ final class Server
661659
foreach (ref room_username ; members) send_user_msg(room_username);
662660
send_user_msg(owner);
663661

664-
scope msg = new SPrivateRoomOperatorAdded(room_name);
665-
target_user.send_message(msg);
666-
send_room_list(target);
662+
target_user.room_operator_added(room_name);
667663

668664
send_pm(
669665
server_username, owner,
@@ -704,12 +700,8 @@ final class Server
704700
);
705701

706702
auto target_user = get_user(target);
707-
if (target_user !is null) {
708-
scope msg = new SPrivateRoomOperatorRemoved(room_name);
709-
target_user.send_message(msg);
710-
711-
send_room_list(target);
712-
}
703+
if (target_user !is null)
704+
target_user.room_operator_removed(room_name);
713705
}
714706

715707
auto joined_rooms()

src/server/user.d

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -614,32 +614,51 @@ final class User
614614
room.add_user(this);
615615
}
616616

617-
bool leave_room(string room_name, bool permanent = false)
617+
bool leave_room(string room_name)
618618
{
619619
if (room_name !in joined_rooms)
620620
return false;
621621

622622
auto room = server.get_room(room_name);
623623

624-
if (permanent && room.type == RoomType._private) {
625-
scope room_removed_msg = new SPrivateRoomRemoved(room_name);
626-
send_message(room_removed_msg);
627-
}
628-
629624
room.remove_user(username);
630625
joined_rooms.remove(room_name);
631626

632627
if (room.num_users == 0) {
633-
const del_permanent = (
628+
const permanent = (
634629
room.type == RoomType._public && room.num_tickers == 0
635630
);
636-
server.del_room(room_name, del_permanent);
631+
server.del_room(room_name, permanent);
637632
}
633+
return true;
634+
}
638635

639-
if (permanent && room.type == RoomType._private)
640-
server.send_room_list(username);
636+
void room_membership_granted(string room_name)
637+
{
638+
scope msg = new SPrivateRoomAdded(room_name);
639+
send_message(msg);
640+
server.send_room_list(username);
641+
}
641642

642-
return true;
643+
void room_membership_canceled(string room_name)
644+
{
645+
scope msg = new SPrivateRoomRemoved(room_name);
646+
send_message(msg);
647+
server.send_room_list(username);
648+
}
649+
650+
void room_operator_added(string room_name)
651+
{
652+
scope msg = new SPrivateRoomOperatorAdded(room_name);
653+
send_message(msg);
654+
server.send_room_list(username);
655+
}
656+
657+
void room_operator_removed(string room_name)
658+
{
659+
scope msg = new SPrivateRoomRemoved(room_name);
660+
send_message(msg);
661+
server.send_room_list(username);
643662
}
644663

645664
string[] joined_room_names(RoomType type)()

0 commit comments

Comments
 (0)