addOnReceiveCallListener method

ReceivingCallsInstance addOnReceiveCallListener(
  1. OnReceiveVideoCallListener listener
)

Adds a listener that handles call requests coming from any remote user. Returns a ReceivingCallsInstance object where you can call ReceivingCallsInstance.cancel to stop receiving new call requests

Example

    bool _receivingCallHasBeenConfigured = false;
    final navigatorKey = GlobalKey<NavigatorState>();
    class MyApp extends StatelessWidget {
      const MyApp({super.key});

      @override
      Widget build(BuildContext context) {
          if (!_receivingCallHasBeenConfigured) {
           _receivingCallHasBeenConfigured = true;
           AsklessClient.instance.addOnReceiveCallListener((ReceivingCall receivingCall) {
              print("receiving call");
              Navigator.of(navigatorKey.currentContext!).push(MaterialPageRoute(builder: (context) => AcceptOrRejectCallPage(receivingCall: receivingCall)));
           });
          }

          return MaterialApp(
             title: 'Flutter with Mysql',
             navigatorKey: navigatorKey,
             ...
          );
      }
    }

Implementation

ReceivingCallsInstance addOnReceiveCallListener(OnReceiveVideoCallListener listener) {
  final StreamSubscription listeningToCallsSubscription = AsklessClient
      .instance
      .readStream(route: "askless-internal/call/receive", persevere: true)
      .listen((callRequest) {
    logger("askless-internal/call/receive");
    logger(Map.from(callRequest).toString());
    if (callRequest["hasCallRequest"] != true) {
      logger("hasCallRequest is ${callRequest["hasCallRequest"]}");
      return;
    }

    CallService<USER_ID>(_getWebRTCParams).onReceiveCallCallback(callRequest, listener);

  });

  return ReceivingCallsInstance(cancel: listeningToCallsSubscription.cancel);
}