addOnReceiveCallListener method
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);
}