sendAction method
Implementation
Future<TCICActionRepModel?> sendAction(
String userId,
MemberActionType actionType,
) async {
final key = "${_config.userId}_${actionType.name}";
final lastSendTimestamp = _uiInfoObs.getUserActionSendMap(key);
final now = DateTime.now().millisecondsSinceEpoch;
if (lastSendTimestamp > 0 && now - lastSendTimestamp < 2000) {
TCICLog.error(
"sendAction failed: actionType is $actionType, lastSendTimestamp is $lastSendTimestamp",
actionModule: ActionModule.tcicController.name,
actionName: ActionName.sendAction.name,
);
TCICToast.show(StringEnum.sendActionTooFast);
return null;
}
_uiInfoObs.setUserActionSendMap(key, now);
final body = ActionBody(
classId: _config.classId,
userId: userId,
actionType: actionType,
);
final data = await networkService.sendAction(body);
if (data?.errorCode == 0) {
_uiInfoObs.setUserActionSendMap(key, 0);
final member = _membersInfoObs.getMemberInfoByUserId(userId);
final name = member?.userName ?? "";
TCICToast.show(
StringEnum.sendActionSuccess,
params: [_getActionSendToast(actionType, name)],
);
return data;
} else {
TCICLog.error(
"sendAction failed: errorCode is ${data?.errorCode}, errorMsg is ${data?.errorMsg}",
actionModule: ActionModule.tcicController.name,
actionName: ActionName.sendAction.name,
);
if (actionType == MemberActionType.cameraOpen ||
actionType == MemberActionType.micOpen) {
final member = _membersInfoObs.getMemberInfoByUserId(userId);
final name = member?.userName ?? "";
TCICToast.show(
StringEnum.sendActionSuccess,
params: [_getActionSendToast(actionType, name)],
);
} else {
TCICToast.showString(data?.errorMsg ?? '');
}
return null;
}
}