import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; import 'package:doctor_app_flutter/core/model/doctor/doctor_profile_model.dart'; import 'package:doctor_app_flutter/core/model/livecare/end_call_req.dart'; import 'package:doctor_app_flutter/core/model/livecare/session_status_model.dart'; import 'package:doctor_app_flutter/core/model/livecare/start_call_res.dart'; import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/core/service/base/base_service.dart'; import 'package:doctor_app_flutter/core/service/patient/LiveCarePatientServices.dart'; import 'package:doctor_app_flutter/utils/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/utils/video_channel_utils.dart'; import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart'; import 'package:flutter/cupertino.dart'; import '../../locator.dart'; import '../../routes.dart'; import 'NavigationService.dart'; class VideoCallService extends BaseService { late StartCallRes startCallRes; late PatiantInformtion patient; LiveCarePatientServices _liveCarePatientServices = locator(); openVideo(StartCallRes startModel, PatiantInformtion patientModel, bool isRecording, VoidCallback onCallConnected, VoidCallback onCallDisconnected) async { this.startCallRes = startModel; this.patient = patientModel; DoctorProfileModel doctorProfile = await getDoctorProfile(isGetProfile: true); await VideoChannel.openVideoCallScreen( // TODO MOSA TEST kApiKey: '46209962', kToken: startCallRes.openTokenID, kSessionId: startCallRes.openSessionID, // // kToken: // "T1==cGFydG5lcl9pZD00NjIwOTk2MiZzaWc9Y2YwYWY5YWMyNjg5ZTljODUyN2QwMmI5YzVhZmQxMTE4M2M3OGNmNDpzZXNzaW9uX2lkPTJfTVg0ME5qSXdPVGsyTW41LU1UY3dNamc0TmpjNU5qa3hPWDVuVTFCcmRDOTRVbk5MUTBoYVJYUjVWVE5xWkRGdVl5dC1mbjQmY3JlYXRlX3RpbWU9MTcwMjg4Njc5NyZub25jZT0wLjE5NDM0MzQyMTAyOTg4MjY3JnJvbGU9bW9kZXJhdG9yJmV4cGlyZV90aW1lPTE3MDM0OTE1OTcmaW5pdGlhbF9sYXlvdXRfY2xhc3NfbGlzdD0=", // kSessionId: "2_MX40NjIwOTk2Mn5-MTcwMjg4Njc5NjkxOX5nU1BrdC94UnNLQ0haRXR5VTNqZDFuYyt-fn4", vcId: patient.vcId!, isRecording: isRecording, patientName: patient.fullName ?? (patient.firstName != null ? "${patient.firstName} ${patient.lastName}" : "-"), tokenID: await sharedPref.getString(TOKEN), generalId: GENERAL_ID, doctorId: doctorProfile.doctorID!, onFailure: (String error) { DrAppToastMsg.showErrorToast(error); }, onCallConnected: onCallConnected, onCallDisconnected: onCallDisconnected, onCallEnd: () { WidgetsBinding.instance.addPostFrameCallback((_) async { GifLoaderDialogUtils.showMyDialog(locator().navigatorKey.currentContext!); endCall( patient.vcId!, false, ).then((value) { GifLoaderDialogUtils.hideDialog(locator().navigatorKey.currentContext!); if (hasError) { DrAppToastMsg.showErrorToast(error); } else locator().navigateTo(PATIENTS_END_Call, arguments: { "patient": patient, }); }); }); }, onCallNotRespond: (SessionStatusModel sessionStatusModel) { WidgetsBinding.instance.addPostFrameCallback((_) { GifLoaderDialogUtils.showMyDialog(locator().navigatorKey.currentContext!); endCall( patient.vcId!, sessionStatusModel.sessionStatus == 3, ).then((value) { GifLoaderDialogUtils.hideDialog(locator().navigatorKey.currentContext!); if (hasError) { DrAppToastMsg.showErrorToast(error); } else { locator().navigateTo(PATIENTS_END_Call, arguments: { "patient": patient, }); } }); }); }); } Future endCall(int vCID, bool isPatient) async { hasError = false; await getDoctorProfile(isGetProfile: true); EndCallReq endCallReq = new EndCallReq(); endCallReq.doctorId = doctorProfile!.doctorID; endCallReq.generalid = 'Cs2020@2016\$2958'; endCallReq.vCID = vCID; endCallReq.isDestroy = isPatient; await _liveCarePatientServices.endCall(endCallReq); if (_liveCarePatientServices.hasError) { error = _liveCarePatientServices.error; } } }