Merge branch 'development_v2.5' of https://gitlab.com/Cloud_Solution/diplomatic-quarter into development_v2.5

development_v2.5
haroon amjad 2 years ago
commit 8be9d3ae6e

@ -26,6 +26,7 @@ class IncomingCallData {
String isCall;
String sound;
String server;
String isWebRTC;
IncomingCallData(
{this.msgID,
@ -80,6 +81,7 @@ class IncomingCallData {
isCall = json['is_call'];
sound = json['sound'];
server = json['server'];
isWebRTC = json['isWebRTC'] ?? "false";
}
Map<String, dynamic> toJson() {
@ -109,6 +111,7 @@ class IncomingCallData {
data['is_call'] = this.isCall;
data['sound'] = this.sound;
data['server'] = this.server;
data['isWebRTC'] = this.isWebRTC;
return data;
}
}

@ -613,6 +613,7 @@ class _AppointmentDetailsState extends State<AppointmentDetails> with SingleTick
getToDoCount();
AppToast.showSuccessToast(message: res['ErrorEndUserMessage']);
Navigator.of(context).pop();
projectViewModel.analytics.appointment.appointment_details_cancel(appointment: widget.appo);
} else {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
}

@ -34,6 +34,7 @@ import 'package:diplomaticquarterapp/uitl/push-notification-handler.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/bottom_navigation/bottom_nav_bar.dart';
import 'package:diplomaticquarterapp/widgets/buttons/floatingActionButton.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/selection-dailog.dart';
import 'package:diplomaticquarterapp/widgets/drawer/app_drawer_widget.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/others/not_auh_page.dart';
@ -421,8 +422,8 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
}
login() async {
// dummyCall();
// return;
dummyCall();
return;
var data = await sharedPref.getObject(IMEI_USER_DATA);
sharedPref.remove(REGISTER_DATA_FOR_LOGIIN);
@ -450,6 +451,13 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
}
dummyCall() async {
final server = await SelectionDialog(
context,
title: "Select Server",
items: ["https://livecareturn.hmg.com:8086", "https://104.197.179.1:8086"]
).show();
final json = {
"callerID": "s1",
"PatientID": "s2",
@ -476,7 +484,7 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
"videoUrl": "video",
"picture": "video",
"is_call": "true",
"server": "192.168.8.104",
"server": server,
};
IncomingCallData incomingCallData = IncomingCallData.fromJson(json);

@ -238,17 +238,20 @@ class _IncomingCallState extends State<IncomingCall> with SingleTickerProviderSt
final caller = widget.incomingCallData.callerID;
final receiver = widget.incomingCallData.receiverID;
final host = widget.incomingCallData.server;
// return StartVideoCall(caller: caller, receiver: receiver, iAmCaller: false, host: host,);
if(widget.incomingCallData.isWebRTC == "true"){
return StartVideoCall(caller: caller, receiver: receiver, iAmCaller: false, host: host);
}else{
return OpenTokConnectCallPage(
apiKey: OPENTOK_API_KEY,
sessionId: widget.incomingCallData.sessionId,
token: widget.incomingCallData.token
);
}
// return VideoCallWebPage(receiverId: widget.incomingCallData.receiverID, callerId: widget.incomingCallData.callerID); // Web WebRTC VideoCall
// return CallHomePage(receiverId: widget.incomingCallData.receiverID, callerId: widget.incomingCallData.callerID); // App WebRTC VideoCall
return OpenTokConnectCallPage(
apiKey: OPENTOK_API_KEY,
sessionId: widget.incomingCallData.sessionId,
token: widget.incomingCallData.token
);
},
),
);

@ -2,14 +2,14 @@ import 'dart:convert';
import 'dart:async';
import 'dart:io';
Future<Map> getTurnCredential(String host, int port) async {
Future<Map> getTurnCredential(String host) async {
HttpClient client = HttpClient(context: SecurityContext());
client.badCertificateCallback =
(X509Certificate cert, String host, int port) {
print('getTurnCredential: Allow self-signed certificate => $host:$port. ');
return true;
};
var url = 'https://$host:$port/api/turn?service=turn&username=flutter-webrtc';
var url = '$host/api/turn?service=turn&username=flutter-webrtc';
var request = await client.getUrl(Uri.parse(url));
var response = await request.close();
var responseBody = await response.transform(Utf8Decoder()).join();

@ -51,7 +51,6 @@ class SocketUser{
class Signaling {
var _host;
var _port = 8086;
var _turnCredential;
SimpleWebSocket _socket;
@ -248,11 +247,11 @@ class Signaling {
}
Future<void> connect() async {
_socket = SimpleWebSocket('https://$_host:$_port/ws');
_socket = SimpleWebSocket('$_host/ws');
if (_turnCredential == null) {
try {
_turnCredential = await getTurnCredential(_host, _port);
_turnCredential = await getTurnCredential(_host);
/*
{
"username": "1584195784:mbzrxpgjys",
@ -404,7 +403,7 @@ class Signaling {
'to': session.remote_user?.id,
'from': session.local_user.id,
'candidate': {
'sdpMLineIndex': candidate.sdpMLineIndex,
'sdpMLineIndex': candidate.sdpMlineIndex, // sdpMlineIndex or sdpMLineIndex
'sdpMid': candidate.sdpMid,
'candidate': candidate.candidate,
},

@ -3,6 +3,7 @@ import 'dart:async';
import 'package:diplomaticquarterapp/pages/conference/conference_button_bar.dart';
import 'package:diplomaticquarterapp/pages/conference/web_rtc/widgets/cam_view_widget.dart';
import 'package:diplomaticquarterapp/pages/videocall-webrtc-rnd/utils/device_info.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'dart:core';

@ -1,5 +1,6 @@
import 'dart:async';
import 'dart:convert';
import 'dart:ffi';
import 'dart:io';
import 'package:diplomaticquarterapp/config/config.dart';
@ -9,6 +10,7 @@ import 'package:diplomaticquarterapp/models/LiveCare/IncomingCallData.dart';
import 'package:diplomaticquarterapp/pages/DrawerPages/notifications/notification_details_page.dart';
import 'package:diplomaticquarterapp/pages/landing/landing_page.dart';
import 'package:diplomaticquarterapp/pages/livecare/incoming_call.dart';
import 'package:diplomaticquarterapp/pages/videocall-webrtc-rnd/webrtc/start_video_call.dart';
import 'package:diplomaticquarterapp/pages/webRTC/OpenTok/OpenTok.dart';
import 'package:diplomaticquarterapp/services/livecare_services/livecare_provider.dart';
import 'package:diplomaticquarterapp/uitl/app-permissions.dart';
@ -86,8 +88,15 @@ RemoteMessage toFirebaseRemoteMessage(h_push.RemoteMessage message) {
return fire_message;
}
callPage(String sessionID, String token) async {
await NavigationService.navigateToPage(OpenTokConnectCallPage(apiKey: OPENTOK_API_KEY, sessionId: sessionID, token: token));
callPage(String sessionID, String token, String isWebrtc, String callerIdString) async {
if (isWebrtc == "true"){
String caller = callerIdString.split("*")[3];
String receiver = callerIdString.split("*")[4];
String host = callerIdString.split("*")[5];
return StartVideoCall(caller: caller, receiver: receiver, iAmCaller: false, host: host);
}else{
await NavigationService.navigateToPage(OpenTokConnectCallPage(apiKey: OPENTOK_API_KEY, sessionId: sessionID, token: token));
}
}
_incomingCall(Map data) async {
@ -192,6 +201,7 @@ class PushNotificationHandler {
String sessionID = callerId.split("*")[0];
String token = callerId.split("*")[1];
String isWebRTC = callerId.split("*")[2];
print("🎈 SessionID: $sessionID");
print("🎈 Token: $token");
@ -204,7 +214,7 @@ class PushNotificationHandler {
Future.delayed(new Duration(milliseconds: 2000)).then((value) async {
print("🎈 Incoming Call!!!");
callPage(sessionID, token);
callPage(sessionID, token, isWebRTC, callerId);
});
// print("🎈 Identity: $identity");

@ -1,14 +1,22 @@
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class SelectionDialog<T> extends StatefulWidget{
final String title;
final List<T> items;
BuildContext context;
SelectionDialog(this.context,{@required this.title, @required this.items});
@override
State<StatefulWidget> createState() => SelectionDialogState();
String title;
List<T> items;
show({@required String title, @required List<T> items}){
this.title = title;
Future<T> show() async{
return showDialog<T>(context: context, builder: (ctx){
return this;
});
}
}
@ -16,11 +24,14 @@ class SelectionDialogState extends State<SelectionDialog>{
@override
Widget build(BuildContext context) {
return Column(
return Scaffold(
backgroundColor: Colors.transparent,
body: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
margin: EdgeInsets.all(20),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(15)),
child: Column(
children: [
@ -32,6 +43,7 @@ class SelectionDialogState extends State<SelectionDialog>{
Container(height: 0.5, color: Colors.grey,),
ListView.separated(
shrinkWrap: true,
padding: EdgeInsets.all(10),
itemCount: widget.items.length,
itemBuilder: (ctx,idx) => item(idx),
@ -40,16 +52,20 @@ class SelectionDialogState extends State<SelectionDialog>{
),
)
],
)
);
}
Widget item(int idx){
var model = widget.items[idx];
return Container(
padding: EdgeInsets.all(10),
height: 20,
color: Colors.blue,
child: Text(model.toString()),
return InkWell(
onTap: (){
Navigator.pop(context, model);
},
child: Container(
padding: EdgeInsets.all(20),
child: Text(model.toString(), style: TextStyle(color: Colors.black)),
),
);
}

Loading…
Cancel
Save