video call improvements.

merge-update-with-lab-changes
Sikander Saleem 4 years ago
parent e3bf988df5
commit caec2c4ca4

@ -1,4 +1,6 @@
class IncomingCallData { class IncomingCallData {
String callerID;
String receiverID;
String msgID; String msgID;
String notfID; String notfID;
String notificationForeground; String notificationForeground;
@ -49,6 +51,8 @@ class IncomingCallData {
this.sound}); this.sound});
IncomingCallData.fromJson(Map<String, dynamic> json) { IncomingCallData.fromJson(Map<String, dynamic> json) {
callerID = json['callerID'];
receiverID = json['PatientID'];
msgID = json['msgID']; msgID = json['msgID'];
notfID = json['notfID']; notfID = json['notfID'];
notificationForeground = json['notification_foreground']; notificationForeground = json['notification_foreground'];

@ -69,10 +69,10 @@ class _CallHomePageState extends State<CallHomePage> {
signaling.addCandidate(candidateJson); signaling.addCandidate(candidateJson);
}, },
onDeclineCall: (arg0,arg1){ onDeclineCall: (arg0,arg1){
_onHangup(); // _onHangup();
}, },
onHangupCall: (arg0){ onHangupCall: (arg0){
_onHangup(); // _onHangup();
}, },
onOffer: (offerSdp, callerUser) async{ onOffer: (offerSdp, callerUser) async{

@ -321,7 +321,9 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
} }
if (Platform.isAndroid) { 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); var route = ModalRoute.of(context);
if (route != null) { if (route != null) {

@ -3,6 +3,7 @@ import 'dart:ui';
import 'package:camera/camera.dart'; import 'package:camera/camera.dart';
import 'package:diplomaticquarterapp/models/LiveCare/IncomingCallData.dart'; import 'package:diplomaticquarterapp/models/LiveCare/IncomingCallData.dart';
import 'package:diplomaticquarterapp/models/LiveCare/room_model.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/conference/widgets/platform_exception_alert_dialog.dart';
import 'package:diplomaticquarterapp/pages/landing/landing_page.dart'; import 'package:diplomaticquarterapp/pages/landing/landing_page.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
@ -167,7 +168,6 @@ class _IncomingCallState extends State<IncomingCall> with SingleTickerProviderSt
Container( Container(
child: RawMaterialButton( child: RawMaterialButton(
onPressed: () { onPressed: () {
LandingPage.isOpenCallPage = false;
backToHome(); backToHome();
}, },
elevation: 2.0, elevation: 2.0,
@ -337,7 +337,7 @@ class _IncomingCallState extends State<IncomingCall> with SingleTickerProviderSt
} }
Future<void> _submit() async { Future<void> _submit() async {
backToHome(); // backToHome();
try { try {
final roomModel = RoomModel(name: widget.incomingCallData.name, token: widget.incomingCallData.sessionId, identity: widget.incomingCallData.identity); final roomModel = RoomModel(name: widget.incomingCallData.name, token: widget.incomingCallData.sessionId, identity: widget.incomingCallData.identity);
@ -348,12 +348,13 @@ class _IncomingCallState extends State<IncomingCall> with SingleTickerProviderSt
// ConferencePage(roomModel: roomModel), // ConferencePage(roomModel: roomModel),
// ), // ),
// ); // );
// await Navigator.of(context).push( // todo temporary comment lines for call await Navigator.of(context).pushReplacement(
// MaterialPageRoute<ConferencePage>( MaterialPageRoute(
// fullscreenDialog: true, fullscreenDialog: true,
// builder: (BuildContext context) => CallHomePage(), builder: (BuildContext context) => CallHomePage(receiverId: widget.incomingCallData.receiverID, callerId: widget.incomingCallData.callerID),
// ),
// ); ),
);
} catch (err) { } catch (err) {
print(err); print(err);
await PlatformExceptionAlertDialog( await PlatformExceptionAlertDialog(
@ -363,6 +364,7 @@ class _IncomingCallState extends State<IncomingCall> with SingleTickerProviderSt
} }
void backToHome() { void backToHome() {
LandingPage.isOpenCallPage = false;
player.stop(); player.stop();
// disposeAudioResources(); // disposeAudioResources();
Navigator.of(context).pop(); Navigator.of(context).pop();

@ -8,12 +8,6 @@ import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_webrtc/flutter_webrtc.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 { class CallPage extends StatefulWidget {
@override @override
_CallPageState createState() => _CallPageState(); _CallPageState createState() => _CallPageState();

@ -30,11 +30,11 @@ class Signaling {
} }
initializeSignalR() async{ initializeSignalR(String userName) async{
if(signalR != null) if(signalR != null)
await signalR.closeConnection(); await signalR.closeConnection();
// https://vcallapi.hmg.com/webRTCHub?source=web&username=zohaib
signalR = SignalRUtil(hubName: "https://VCallApi.hmg.com/WebRTCHub?source=$My_Mobile&username=$My_ID"); signalR = SignalRUtil(hubName: "https://vcallapi.hmg.com/webRTCHub?source=mobile&username=$userName");
final connected = await signalR.openConnection(); final connected = await signalR.openConnection();
if(!connected) if(!connected)
throw 'Failed to connect SignalR'; throw 'Failed to connect SignalR';
@ -55,19 +55,19 @@ class Signaling {
MediaStream remoteStream; MediaStream remoteStream;
RTCDataChannel dataChannel; RTCDataChannel dataChannel;
Future<bool> call(String patientId, String mobile, {@required RTCVideoRenderer localVideo, @required RTCVideoRenderer remoteVideo}) async { // Future<bool> call(String patientId, String mobile, {@required RTCVideoRenderer localVideo, @required RTCVideoRenderer remoteVideo}) async {
initializeSignalR(); // await initializeSignalR(patientId);
//
final isCallPlaced = await FCM.sendCallNotifcationTo(DOCTOR_TOKEN, patientId, mobile); // // final isCallPlaced = await FCM.sendCallNotifcationTo(DOCTOR_TOKEN, patientId, mobile);
if(!isCallPlaced) // if(!isCallPlaced)
throw 'Failed to notify target for call'; // throw 'Failed to notify target for call';
//
return isCallPlaced; // return isCallPlaced;
} // }
Future<bool> acceptCall(String caller, String receiver, {@required MediaStream localMediaStream, @required Function(MediaStream) onRemoteMediaStream}) async{ Future<bool> acceptCall(String caller, String receiver, {@required MediaStream localMediaStream, @required Function(MediaStream) onRemoteMediaStream}) async{
await initializeSignalR(); await initializeSignalR(receiver);
signalR.setContributors(caller: caller, receiver: receiver); signalR.setContributors(caller: caller, receiver: receiver);
await signalR.acceptCall(receiver, caller).catchError((e) => throw 'Failed to inform signalR that i accepted a call'); 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) { peerConnection?.onConnectionState = (RTCPeerConnectionState state) {
print('Connection state change: $state'); print('Connection state change: $state ${state.index}');
}; };
peerConnection?.onSignalingState = (RTCSignalingState state) { peerConnection?.onSignalingState = (RTCSignalingState state) {

@ -137,7 +137,8 @@ class SignalRUtil {
// CallAccepted(string currentUserId,string targetUserId) // CallAccepted(string currentUserId,string targetUserId)
Future<dynamic> acceptCall(String from, to) async{ Future<dynamic> 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]);
} }

Loading…
Cancel
Save