Skip to content

Commit

Permalink
promoting single member in room
Browse files Browse the repository at this point in the history
  • Loading branch information
skewb1k committed Jan 15, 2025
1 parent 3517171 commit 17e8007
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 3 deletions.
11 changes: 11 additions & 0 deletions internal/controller/helper.controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,17 @@ func (c controller) helperDisconn(ctx context.Context, roomId string, memberId s
}

if !disconnectMemberResp.IsRoomDeleted {
if disconnectMemberResp.PromotedMemberConn != nil {
if err := c.writeToConn(ctx, disconnectMemberResp.PromotedMemberConn, &Output{
Type: "IS_ADMIN_UPDATED",
Payload: map[string]any{
//?
"is_admin": true,
},
}); err != nil {
return fmt.Errorf("failed to write to conn: %w", err)
}
}
if err := c.broadcast(ctx, disconnectMemberResp.Conns, &Output{
Type: "MEMBER_DISCONNECTED",
Payload: map[string]any{
Expand Down
22 changes: 19 additions & 3 deletions internal/service/member.service.go
Original file line number Diff line number Diff line change
Expand Up @@ -201,9 +201,10 @@ type DisconnectMemberParams struct {
}

type DisconnectMemberResponse struct {
Conns []*websocket.Conn
Members []Member
IsRoomDeleted bool
Conns []*websocket.Conn
Members []Member
PromotedMemberConn *websocket.Conn
IsRoomDeleted bool
}

func (s service) DisconnectMember(ctx context.Context, params *DisconnectMemberParams) (DisconnectMemberResponse, error) {
Expand Down Expand Up @@ -309,6 +310,21 @@ func (s service) DisconnectMember(ctx context.Context, params *DisconnectMemberP
return DisconnectMemberResponse{}, fmt.Errorf("failed to get conns: %w", err)
}

// promote single left member to admin
if len(members) == 1 && !members[0].IsAdmin {
if err := s.roomRepo.UpdateMemberIsAdmin(ctx, params.RoomId, members[0].Id, true); err != nil {
return DisconnectMemberResponse{}, fmt.Errorf("failed to update member is admin: %w", err)
}
members[0].IsAdmin = true

return DisconnectMemberResponse{
PromotedMemberConn: conns[0],
Conns: conns,
Members: members,
IsRoomDeleted: false,
}, nil
}

return DisconnectMemberResponse{
Conns: conns,
Members: members,
Expand Down

0 comments on commit 17e8007

Please sign in to comment.