startMeeting method

  1. @override
Future<List> startMeeting({
  1. required String clientId,
  2. required String clientSecret,
  3. required String accountId,
  4. required MeetingOptions meetingOptions,
})
override

Start Meeting Function for Zoom Web

Implementation

@override
Future<List> startMeeting(
    {required String clientId,
    required String clientSecret,
    required String accountId,
    required MeetingOptions meetingOptions}) async {
  final Completer<List> completer = Completer();

  String jwtSignature = jwtGenerator.generate(
      key: zoomoptions.clientId ?? "",
      secret: zoomoptions.clientSecert ?? "",
      meetingId: int.tryParse(meetingOptions.meetingId ?? "") ?? 0,
      role: meetingOptions.userType ?? "1");

  // Instantiate ZoomProvider and ZoomRepository
  final ZoomProvider zoomProvider = ZoomProvider();
  final ZoomRepository repository =
      ZoomRepository(zoomProvider: zoomProvider);

  // Fetch access token
  final AccessTokenModel accessTokenResponse =
      await repository.fetchAccesstoken(
    accountId: accountId,
    clientId: clientId,
    clientSecret: clientSecret,
  );

  // Fetch zak token
  final String zakTokenResponse = await repository.fetchZaktoken(
    clientId: clientId,
    clientSecret: clientSecret,
    accessToken: accessTokenResponse.accessToken,
  );

  ZoomMtg.join(JoinParams(
      meetingNumber: meetingOptions.meetingId,
      userName: meetingOptions.displayName ?? meetingOptions.userId,
      signature: jwtSignature,
      sdkKey: zoomoptions.clientId,
      passWord: meetingOptions.meetingPassword,
      zak: zakTokenResponse,
      success: allowInterop((var res) {
        completer.complete(["MEETING STATUS", "SUCCESS"]);
      }),
      error: allowInterop((var res) {
        completer.complete(["MEETING STATUS", "FAILED"]);
      })));
  return ["MEETING STATUS", "Working"];
}