diff --git a/lib/models/LiveCare/IncomingCallData.dart b/lib/models/LiveCare/IncomingCallData.dart index 9234c876..d98b4c5b 100644 --- a/lib/models/LiveCare/IncomingCallData.dart +++ b/lib/models/LiveCare/IncomingCallData.dart @@ -1,4 +1,6 @@ class IncomingCallData { + String callerID; + String receiverID; String msgID; String notfID; String notificationForeground; @@ -49,6 +51,8 @@ class IncomingCallData { this.sound}); IncomingCallData.fromJson(Map json) { + callerID = json['callerID']; + receiverID = json['PatientID']; msgID = json['msgID']; notfID = json['notfID']; notificationForeground = json['notification_foreground']; diff --git a/lib/pages/conference/web_rtc/call_home_page.dart b/lib/pages/conference/web_rtc/call_home_page.dart index 892871cc..4af7b1de 100644 --- a/lib/pages/conference/web_rtc/call_home_page.dart +++ b/lib/pages/conference/web_rtc/call_home_page.dart @@ -69,10 +69,10 @@ class _CallHomePageState extends State { signaling.addCandidate(candidateJson); }, onDeclineCall: (arg0,arg1){ - _onHangup(); + // _onHangup(); }, onHangupCall: (arg0){ - _onHangup(); + // _onHangup(); }, onOffer: (offerSdp, callerUser) async{ diff --git a/lib/pages/landing/landing_page.dart b/lib/pages/landing/landing_page.dart index e420bf74..efe9f031 100644 --- a/lib/pages/landing/landing_page.dart +++ b/lib/pages/landing/landing_page.dart @@ -321,7 +321,9 @@ class _LandingPageState extends State with WidgetsBindingObserver { } if (Platform.isAndroid) { - if (message.data['data'].containsKey("is_call")) { + print("messagedata:${message}"); + print("messagedata:${message.data}"); + if (message.data.containsKey("is_call")) { var route = ModalRoute.of(context); if (route != null) { diff --git a/lib/pages/livecare/incoming_call.dart b/lib/pages/livecare/incoming_call.dart index c4f1f038..09a13205 100644 --- a/lib/pages/livecare/incoming_call.dart +++ b/lib/pages/livecare/incoming_call.dart @@ -3,6 +3,7 @@ import 'dart:ui'; import 'package:camera/camera.dart'; import 'package:diplomaticquarterapp/models/LiveCare/IncomingCallData.dart'; import 'package:diplomaticquarterapp/models/LiveCare/room_model.dart'; +import 'package:diplomaticquarterapp/pages/conference/web_rtc/call_home_page.dart'; import 'package:diplomaticquarterapp/pages/conference/widgets/platform_exception_alert_dialog.dart'; import 'package:diplomaticquarterapp/pages/landing/landing_page.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; @@ -167,7 +168,6 @@ class _IncomingCallState extends State with SingleTickerProviderSt Container( child: RawMaterialButton( onPressed: () { - LandingPage.isOpenCallPage = false; backToHome(); }, elevation: 2.0, @@ -337,7 +337,7 @@ class _IncomingCallState extends State with SingleTickerProviderSt } Future _submit() async { - backToHome(); + // backToHome(); try { final roomModel = RoomModel(name: widget.incomingCallData.name, token: widget.incomingCallData.sessionId, identity: widget.incomingCallData.identity); @@ -348,12 +348,13 @@ class _IncomingCallState extends State with SingleTickerProviderSt // ConferencePage(roomModel: roomModel), // ), // ); - // await Navigator.of(context).push( // todo temporary comment lines for call - // MaterialPageRoute( - // fullscreenDialog: true, - // builder: (BuildContext context) => CallHomePage(), - // ), - // ); + await Navigator.of(context).pushReplacement( + MaterialPageRoute( + fullscreenDialog: true, + builder: (BuildContext context) => CallHomePage(receiverId: widget.incomingCallData.receiverID, callerId: widget.incomingCallData.callerID), + + ), + ); } catch (err) { print(err); await PlatformExceptionAlertDialog( @@ -363,6 +364,7 @@ class _IncomingCallState extends State with SingleTickerProviderSt } void backToHome() { + LandingPage.isOpenCallPage = false; player.stop(); // disposeAudioResources(); Navigator.of(context).pop(); diff --git a/lib/pages/webRTC/call_page.dart b/lib/pages/webRTC/call_page.dart index c3dc6934..c85fba95 100644 --- a/lib/pages/webRTC/call_page.dart +++ b/lib/pages/webRTC/call_page.dart @@ -8,12 +8,6 @@ import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/material.dart'; import 'package:flutter_webrtc/flutter_webrtc.dart'; -final DOCTOR_TOKEN = 'cj2TFgotT6q-F0SCGVFaKR:APA91bFBY0NCY5tlCooYMKS9JWI8TMJQ6YcPLT0T5gNyn-qjfQgFVQWh60QeXDz_aNqL2U3B9qOjpDbaA32e4oBlK1klR-7uUYL0DwWiHKnU1hV_wlW9-Tib16CBVkN3ods7OMlKbPv9'; -String My_ID = '54321'; -String My_Mobile = '0500409598'; -String doctor_ID = '12345'; -String doctor_Mobile = '966500409598'; - class CallPage extends StatefulWidget { @override _CallPageState createState() => _CallPageState(); diff --git a/lib/pages/webRTC/signaling.dart b/lib/pages/webRTC/signaling.dart index ded40187..93c30f07 100644 --- a/lib/pages/webRTC/signaling.dart +++ b/lib/pages/webRTC/signaling.dart @@ -30,11 +30,11 @@ class Signaling { } - initializeSignalR() async{ + initializeSignalR(String userName) async{ if(signalR != null) await signalR.closeConnection(); - - signalR = SignalRUtil(hubName: "https://VCallApi.hmg.com/WebRTCHub?source=$My_Mobile&username=$My_ID"); + // https://vcallapi.hmg.com/webRTCHub?source=web&username=zohaib + signalR = SignalRUtil(hubName: "https://vcallapi.hmg.com/webRTCHub?source=mobile&username=$userName"); final connected = await signalR.openConnection(); if(!connected) throw 'Failed to connect SignalR'; @@ -55,19 +55,19 @@ class Signaling { MediaStream remoteStream; RTCDataChannel dataChannel; - Future call(String patientId, String mobile, {@required RTCVideoRenderer localVideo, @required RTCVideoRenderer remoteVideo}) async { - initializeSignalR(); - - final isCallPlaced = await FCM.sendCallNotifcationTo(DOCTOR_TOKEN, patientId, mobile); - if(!isCallPlaced) - throw 'Failed to notify target for call'; - - return isCallPlaced; - } + // Future call(String patientId, String mobile, {@required RTCVideoRenderer localVideo, @required RTCVideoRenderer remoteVideo}) async { + // await initializeSignalR(patientId); + // + // // final isCallPlaced = await FCM.sendCallNotifcationTo(DOCTOR_TOKEN, patientId, mobile); + // if(!isCallPlaced) + // throw 'Failed to notify target for call'; + // + // return isCallPlaced; + // } Future acceptCall(String caller, String receiver, {@required MediaStream localMediaStream, @required Function(MediaStream) onRemoteMediaStream}) async{ - await initializeSignalR(); + await initializeSignalR(receiver); signalR.setContributors(caller: caller, receiver: receiver); await signalR.acceptCall(receiver, caller).catchError((e) => throw 'Failed to inform signalR that i accepted a call'); @@ -143,7 +143,7 @@ class Signaling { }; peerConnection?.onConnectionState = (RTCPeerConnectionState state) { - print('Connection state change: $state'); + print('Connection state change: $state ${state.index}'); }; peerConnection?.onSignalingState = (RTCSignalingState state) { diff --git a/lib/uitl/SignalRUtil.dart b/lib/uitl/SignalRUtil.dart index d46a2ea8..d9a73a14 100644 --- a/lib/uitl/SignalRUtil.dart +++ b/lib/uitl/SignalRUtil.dart @@ -137,7 +137,8 @@ class SignalRUtil { // CallAccepted(string currentUserId,string targetUserId) Future acceptCall(String from, to) async{ - return await connectionHub.invoke('CallAccepted', args: [from, to]); + // return await connectionHub.send(methodName: 'CallAccepted', args: [from, to]); + return await connectionHub.invoke("CallAccepted", args: [ from, to]); }