handleClick method
Implementation
Future<void> handleClick(int page, int offSet) async {
if (page == options.currentUserPage) {
return;
}
PaginationParameters parameters = options.parameters;
final PaginationParameters updatedParameters =
parameters.getUpdatedAllParams();
parameters = updatedParameters;
var breakOutRoomStarted = parameters.breakOutRoomStarted;
var breakOutRoomEnded = parameters.breakOutRoomEnded;
var member = parameters.member;
var breakoutRooms = parameters.breakoutRooms;
var hostNewRoom = parameters.hostNewRoom;
var roomName = parameters.roomName;
var islevel = parameters.islevel;
var showAlert = parameters.showAlert;
var socket = parameters.socket;
if (breakOutRoomStarted && !breakOutRoomEnded && page != 0) {
final roomMember = breakoutRooms.firstWhere(
(r) => r.any((p) => p.name == member),
orElse: () => [BreakoutParticipant(name: '')],
);
final pageInt = page - offSet;
int memberBreakRoom = -1;
if (roomMember.isNotEmpty && roomMember.first.name == member) {
memberBreakRoom = breakoutRooms.indexOf(roomMember);
}
if ((memberBreakRoom == -1 || memberBreakRoom != pageInt) &&
pageInt >= 0) {
if (islevel != '2') {
showAlert!(
message: 'You are not part of the breakout room ${pageInt + 1}.',
type: 'danger',
duration: 3000,
);
return;
}
final optionsHandlePageChange = GeneratePageContentOptions(
parameters: parameters,
page: page,
breakRoom: pageInt,
inBreakRoom: true,
);
await options.handlePageChange(
optionsHandlePageChange,
);
if (hostNewRoom != pageInt) {
socket!.emitWithAck(
'updateHostBreakout', {'newRoom': pageInt, 'roomName': roomName},
ack: (response) async {});
}
} else {
final optionsHandlePageChange = GeneratePageContentOptions(
page: page,
parameters: parameters,
breakRoom: pageInt,
inBreakRoom: pageInt >= 0,
);
await options.handlePageChange(
optionsHandlePageChange,
);
if (islevel == '2' && hostNewRoom != -1) {
socket!.emitWithAck('updateHostBreakout',
{'prevRoom': hostNewRoom, 'newRoom': -1, 'roomName': roomName},
ack: (response) async {});
}
}
} else {
final optionsHandlePageChange = GeneratePageContentOptions(
page: page,
parameters: parameters,
breakRoom: 0,
inBreakRoom: false,
);
await options.handlePageChange(
optionsHandlePageChange,
);
if (islevel == '2' && hostNewRoom != -1) {
socket!.emitWithAck('updateHostBreakout',
{'prevRoom': hostNewRoom, 'newRoom': -1, 'roomName': roomName},
ack: (response) async {});
}
}
}