video call improvements.

merge-requests/569/head
Sikander Saleem 4 years ago
parent e3bf988df5
commit caec2c4ca4

@ -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<String, dynamic> json) {
callerID = json['callerID'];
receiverID = json['PatientID'];
msgID = json['msgID'];
notfID = json['notfID'];
notificationForeground = json['notification_foreground'];

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

@ -321,7 +321,9 @@ class _LandingPageState extends State<LandingPage> 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) {

@ -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<IncomingCall> with SingleTickerProviderSt
Container(
child: RawMaterialButton(
onPressed: () {
LandingPage.isOpenCallPage = false;
backToHome();
},
elevation: 2.0,
@ -337,7 +337,7 @@ class _IncomingCallState extends State<IncomingCall> with SingleTickerProviderSt
}
Future<void> _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<IncomingCall> with SingleTickerProviderSt
// ConferencePage(roomModel: roomModel),
// ),
// );
// await Navigator.of(context).push( // todo temporary comment lines for call
// MaterialPageRoute<ConferencePage>(
// 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<IncomingCall> with SingleTickerProviderSt
}
void backToHome() {
LandingPage.isOpenCallPage = false;
player.stop();
// disposeAudioResources();
Navigator.of(context).pop();

@ -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();

@ -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<bool> 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<bool> 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<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);
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) {

@ -137,7 +137,8 @@ class SignalRUtil {
// CallAccepted(string currentUserId,string targetUserId)
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