diff --git a/android/app/src/main/kotlin/com/hmg/hmgDr/MainActivity.kt b/android/app/src/main/kotlin/com/hmg/hmgDr/MainActivity.kt index f8b3f3ae..c4c49e54 100644 --- a/android/app/src/main/kotlin/com/hmg/hmgDr/MainActivity.kt +++ b/android/app/src/main/kotlin/com/hmg/hmgDr/MainActivity.kt @@ -64,16 +64,18 @@ class MainActivity : FlutterFragmentActivity(), MethodChannel.MethodCallHandler, val generalId = call.argument("generalId") val doctorId = call.argument("DoctorId") val patientName = call.argument("patientName") + val isRecording = call.argument("isRecording") val sessionStatusModel = - GetSessionStatusModel(VC_ID, tokenID, generalId, doctorId, patientName) + GetSessionStatusModel(VC_ID, tokenID, generalId, doctorId, patientName, isRecording!!) openVideoCall(apiKey, sessionId, token, appLang, baseUrl, sessionStatusModel) } "closeVideoCall" -> { - videoStreamService?.closeVideoCall() + dialogFragment?.onCallClicked() +// videoStreamService?.closeVideoCall() } "onCallConnected" -> { @@ -84,32 +86,62 @@ class MainActivity : FlutterFragmentActivity(), MethodChannel.MethodCallHandler, } } - private fun openVideoCall( - apiKey: String?, - sessionId: String?, - token: String?, - appLang: String?, - baseUrl: String?, - sessionStatusModel: GetSessionStatusModel - ) { - val arguments = Bundle() - arguments.putString("apiKey", apiKey) - arguments.putString("sessionId", sessionId) - arguments.putString("token", token) - arguments.putString("appLang", appLang) - arguments.putString("baseUrl", baseUrl) - arguments.putParcelable("sessionStatusModel", sessionStatusModel) - -// showSoftKeyBoard(null) - // start service - serviceIntent = Intent(this@MainActivity, VideoStreamContainerService::class.java) - serviceIntent?.run { - putExtras(arguments) - startService(this) + private fun openVideoCall(apiKey: String?, sessionId: String?, token: String?, appLang: String?, baseUrl: String?, sessionStatusModel: GetSessionStatusModel) { + if (dialogFragment == null) { + val arguments = Bundle() + arguments.putString("apiKey", apiKey) + arguments.putString("sessionId", sessionId) + arguments.putString("token", token) + arguments.putString("appLang", appLang) + arguments.putString("baseUrl", baseUrl) + arguments.putParcelable("sessionStatusModel", sessionStatusModel) + + val transaction = supportFragmentManager.beginTransaction() + dialogFragment = VideoCallFragment.newInstance(arguments) + dialogFragment?.let { + it.setCallListener(this) + it.isCancelable = true + if (it.isAdded){ + it.dismiss() + }else { + it.show(transaction, "dialog") + } + + + } + } else if (!dialogFragment!!.isVisible) { + val transaction = supportFragmentManager.beginTransaction() + dialogFragment!!.show(transaction, "dialog") } -// bindService() } +// private fun openVideoCall( +// apiKey: String?, +// sessionId: String?, +// token: String?, +// appLang: String?, +// baseUrl: String?, +// sessionStatusModel: GetSessionStatusModel +// ) { +// +// val arguments = Bundle() +// arguments.putString("apiKey", apiKey) +// arguments.putString("sessionId", sessionId) +// arguments.putString("token", token) +// arguments.putString("appLang", appLang) +// arguments.putString("baseUrl", baseUrl) +// arguments.putParcelable("sessionStatusModel", sessionStatusModel) +// +//// showSoftKeyBoard(null) +// // start service +// serviceIntent = Intent(this@MainActivity, VideoStreamContainerService::class.java) +// serviceIntent?.run { +// putExtras(arguments) +// startService(this) +// } +//// bindService() +// } + /* override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) var asd = ""; @@ -137,6 +169,7 @@ class MainActivity : FlutterFragmentActivity(), MethodChannel.MethodCallHandler, }*/ override fun onCallFinished(resultCode: Int, intent: Intent?) { + dialogFragment = null if (resultCode == Activity.RESULT_OK) { val result: SessionStatusModel? = intent?.getParcelableExtra("sessionStatusNotRespond") @@ -169,6 +202,11 @@ class MainActivity : FlutterFragmentActivity(), MethodChannel.MethodCallHandler, // videoStreamService!!.serviceRunning = false } + override fun errorHandle(message: String) { + dialogFragment = null +// Toast.makeText(this, message, Toast.LENGTH_LONG).show() + } + override fun minimizeVideoEvent(isMinimize: Boolean) { if (isMinimize) methodChannel.invokeMethod("onCallConnected", null) diff --git a/android/app/src/main/kotlin/com/hmg/hmgDr/Model/GetSessionStatusModel.java b/android/app/src/main/kotlin/com/hmg/hmgDr/Model/GetSessionStatusModel.java index 60350539..9e2e1cf4 100644 --- a/android/app/src/main/kotlin/com/hmg/hmgDr/Model/GetSessionStatusModel.java +++ b/android/app/src/main/kotlin/com/hmg/hmgDr/Model/GetSessionStatusModel.java @@ -23,16 +23,20 @@ public class GetSessionStatusModel implements Parcelable { @SerializedName("PatientName") @Expose private String patientName; + @SerializedName("isRecording") + @Expose + private boolean isRecording; public GetSessionStatusModel() { } - public GetSessionStatusModel(Integer vCID, String tokenID, String generalid, Integer doctorId, String patientName) { + public GetSessionStatusModel(Integer vCID, String tokenID, String generalid, Integer doctorId, String patientName, boolean isRecording) { this.vCID = vCID; this.tokenID = tokenID; this.generalid = generalid; this.doctorId = doctorId; this.patientName = patientName; + this.isRecording = isRecording; } protected GetSessionStatusModel(Parcel in) { @@ -49,6 +53,7 @@ public class GetSessionStatusModel implements Parcelable { doctorId = in.readInt(); } patientName = in.readString(); + isRecording = in.readInt() == 1; } public static final Creator CREATOR = new Creator() { @@ -105,6 +110,14 @@ public class GetSessionStatusModel implements Parcelable { this.patientName = patientName; } + public boolean isRecording() { + return isRecording; + } + + public void setRecording(boolean recording) { + isRecording = recording; + } + @Override public int describeContents() { return 0; @@ -127,5 +140,6 @@ public class GetSessionStatusModel implements Parcelable { dest.writeInt(doctorId); } dest.writeString(patientName); + dest.writeInt(isRecording ? 1 : 0); } } diff --git a/android/app/src/main/kotlin/com/hmg/hmgDr/ui/fragment/VideoCallFragment.kt b/android/app/src/main/kotlin/com/hmg/hmgDr/ui/fragment/VideoCallFragment.kt index 105c3f62..abe6225e 100644 --- a/android/app/src/main/kotlin/com/hmg/hmgDr/ui/fragment/VideoCallFragment.kt +++ b/android/app/src/main/kotlin/com/hmg/hmgDr/ui/fragment/VideoCallFragment.kt @@ -66,6 +66,7 @@ class VideoCallFragment : DialogFragment(), PermissionCallbacks, Session.Session private var mVolRunnable: Runnable? = null private var mConnectedRunnable: Runnable? = null + private lateinit var recordContainer: FrameLayout private lateinit var thumbnail_container: FrameLayout private lateinit var activity_clingo_video_call: RelativeLayout private lateinit var mPublisherViewContainer: FrameLayout @@ -79,6 +80,7 @@ class VideoCallFragment : DialogFragment(), PermissionCallbacks, Session.Session private var token: String? = null private var appLang: String? = null private var baseUrl: String? = null + private var isRecording: Boolean = true private var isSwitchCameraClicked = false private var isCameraClicked = false @@ -201,7 +203,9 @@ class VideoCallFragment : DialogFragment(), PermissionCallbacks, Session.Session this.videoCallResponseListener = videoCallResponseListener } - private fun onCreateView(inflater: LayoutInflater, container: ViewGroup?): View { + private fun onCreateView( + inflater: LayoutInflater, container: ViewGroup? + ): View { val view = inflater.inflate(R.layout.activity_video_call, container, false) // val parentViewLayoutParam: ConstraintLayout.LayoutParams = ConstraintLayout.LayoutParams( @@ -217,6 +221,8 @@ class VideoCallFragment : DialogFragment(), PermissionCallbacks, Session.Session appLang = getString("appLang") baseUrl = getString("baseUrl") sessionStatusModel = getParcelable("sessionStatusModel") + if (sessionStatusModel != null) + isRecording = sessionStatusModel!!.isRecording } initUI(view) requestPermissions() @@ -269,6 +275,7 @@ class VideoCallFragment : DialogFragment(), PermissionCallbacks, Session.Session layoutName = view.findViewById(R.id.layout_name) layoutMini = view.findViewById(R.id.layout_mini) icMini = view.findViewById(R.id.ic_mini) + recordContainer = view.findViewById(R.id.record_container) activity_clingo_video_call = view.findViewById(R.id.activity_clingo_video_call) thumbnail_container = view.findViewById(R.id.thumbnail_container) @@ -280,6 +287,12 @@ class VideoCallFragment : DialogFragment(), PermissionCallbacks, Session.Session patientName = view.findViewById(R.id.patient_name) patientName.text = sessionStatusModel!!.patientName + if (isRecording) { + recordContainer.visibility = View.VISIBLE + } else { + recordContainer.visibility = View.GONE + } + cmTimer = view.findViewById(R.id.cmTimer) cmTimer.format = "mm:ss" cmTimer.onChronometerTickListener = @@ -657,6 +670,7 @@ class VideoCallFragment : DialogFragment(), PermissionCallbacks, Session.Session 400, 600 ) + } else { dialog?.window?.setLayout( 300, @@ -665,6 +679,7 @@ class VideoCallFragment : DialogFragment(), PermissionCallbacks, Session.Session } isCircle = !isCircle + if (mSubscriber != null) { (mSubscriber!!.renderer as DynamicVideoRenderer).enableThumbnailCircle(isCircle) } else { @@ -706,11 +721,17 @@ class VideoCallFragment : DialogFragment(), PermissionCallbacks, Session.Session 400, 600 ) + recordContainer.visibility = View.GONE } else { dialog?.window?.setLayout( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT ) + if (isRecording) { + recordContainer.visibility = View.VISIBLE + } else { + recordContainer.visibility = View.GONE + } } isFullScreen = !isFullScreen @@ -868,7 +889,7 @@ class VideoCallFragment : DialogFragment(), PermissionCallbacks, Session.Session } else { if (isCircle) { - screenWidth = 300F + screenWidth = 300F screenHeight = 300F layoutNameParam.height = 0 @@ -883,7 +904,12 @@ class VideoCallFragment : DialogFragment(), PermissionCallbacks, Session.Session controlPanelParam.height = panelHeightSmall } - controlPanel.setPadding(panelPaddingMedium, panelPaddingMedium, panelPaddingMedium, panelPaddingMedium) + controlPanel.setPadding( + panelPaddingMedium, + panelPaddingMedium, + panelPaddingMedium, + panelPaddingMedium + ) } layoutName.layoutParams = layoutNameParam @@ -893,7 +919,7 @@ class VideoCallFragment : DialogFragment(), PermissionCallbacks, Session.Session var videoStreamHeight = screenHeight - controlPanelParam.height - layoutNameParam.height - layoutMiniParam.height - if (isFullScreen){ + if (isFullScreen) { // videoStreamHeight -= getStatusBarHeight() / 2 } diff --git a/android/app/src/main/res/drawable/ic_record.png b/android/app/src/main/res/drawable/ic_record.png new file mode 100644 index 00000000..39eada42 Binary files /dev/null and b/android/app/src/main/res/drawable/ic_record.png differ diff --git a/android/app/src/main/res/layout/activity_video_call.xml b/android/app/src/main/res/layout/activity_video_call.xml index 5affef8e..8dc33094 100644 --- a/android/app/src/main/res/layout/activity_video_call.xml +++ b/android/app/src/main/res/layout/activity_video_call.xml @@ -109,6 +109,23 @@ android:src="@drawable/video_off_fill" /> + + + + + (); openVideo(StartCallRes startModel, PatiantInformtion patientModel, - VoidCallback onCallConnected, VoidCallback onCallDisconnected) async { + bool isRecording,VoidCallback onCallConnected, VoidCallback onCallDisconnected) async { this.startCallRes = startModel; this.patient = patientModel; DoctorProfileModel doctorProfile = await getDoctorProfile(isGetProfile: true); await VideoChannel.openVideoCallScreen( - kToken: startCallRes.openTokenID, - // "T1==cGFydG5lcl9pZD00NzI0Nzk1NCZzaWc9NGIyZDljOTY3YjFiNWU1YzUzNzFmMjIyNjJmNmEzY2Y5NzZjOTdlYzpzZXNzaW9uX2lkPTFfTVg0ME56STBOemsxTkg1LU1UWXlNekEyTlRRMU9EVXhObjVrVFRoMFlVdFJXaXRYTWpadFZGZHFhSGxZVGpOdE1UVi1mZyZjcmVhdGVfdGltZT0xNjIzMDY1NDk1Jm5vbmNlPTAuMjM2Mjk0NTIwMTkyOTA4OTcmcm9sZT1wdWJsaXNoZXImZXhwaXJlX3RpbWU9MTYyNTY1NzQ5NCZpbml0aWFsX2xheW91dF9jbGFzc19saXN0PQ==", - kSessionId: startCallRes.openSessionID, - // "1_MX40NzI0Nzk1NH5-MTYyMzA2NTQ1ODUxNn5kTTh0YUtRWitXMjZtVFdqaHlYTjNtMTV-fg", - - kApiKey:'46209962', //'47247954', + kToken: startCallRes.openTokenID, + kSessionId: startCallRes.openSessionID, + kApiKey:'46209962', + // kToken: "T1==cGFydG5lcl9pZD00NzI0Nzk1NCZzaWc9NGIyZDljOTY3YjFiNWU1YzUzNzFmMjIyNjJmNmEzY2Y5NzZjOTdlYzpzZXNzaW9uX2lkPTFfTVg0ME56STBOemsxTkg1LU1UWXlNekEyTlRRMU9EVXhObjVrVFRoMFlVdFJXaXRYTWpadFZGZHFhSGxZVGpOdE1UVi1mZyZjcmVhdGVfdGltZT0xNjIzMDY1NDk1Jm5vbmNlPTAuMjM2Mjk0NTIwMTkyOTA4OTcmcm9sZT1wdWJsaXNoZXImZXhwaXJlX3RpbWU9MTYyNTY1NzQ5NCZpbml0aWFsX2xheW91dF9jbGFzc19saXN0PQ==", + // kSessionId: "1_MX40NzI0Nzk1NH5-MTYyMzA2NTQ1ODUxNn5kTTh0YUtRWitXMjZtVFdqaHlYTjNtMTV-fg", + // kApiKey:'47247954', vcId: patient.vcId, + isRecording: isRecording, patientName: patient.fullName ?? (patient.firstName != null ? "${patient.firstName} ${patient.lastName}" @@ -47,6 +48,7 @@ class VideoCallService extends BaseService { DrAppToastMsg.showErrorToast(error); }, onCallConnected: onCallConnected, + onCallDisconnected: onCallDisconnected, onCallEnd: () { WidgetsBinding.instance.addPostFrameCallback((_) async { GifLoaderDialogUtils.showMyDialog( diff --git a/lib/core/service/patient/LiveCarePatientServices.dart b/lib/core/service/patient/LiveCarePatientServices.dart index 29b120ec..fff803d8 100644 --- a/lib/core/service/patient/LiveCarePatientServices.dart +++ b/lib/core/service/patient/LiveCarePatientServices.dart @@ -41,9 +41,33 @@ class LiveCarePatientServices extends BaseService { await baseAppClient.post( GET_PENDING_PATIENT_ER_FOR_DOCTOR_APP, onSuccess: (dynamic response, int statusCode) { - _patientList.clear(); + + List localPatientList= []; + response['List_PendingPatientList'].forEach((v) { - _patientList.add(PatiantInformtion.fromJson(v)); + localPatientList.add(PatiantInformtion.fromJson(v)); + }); + + /// add new items. + localPatientList.forEach((element) { + if ((_patientList.singleWhere((it) => it.patientId == element.patientId, + orElse: () => null)) == null) { + _patientList.add(element); + } + }); + + /// remove items. + List removedPatientList= []; + _patientList.forEach((element) { + if ((localPatientList.singleWhere((it) => it.patientId == element.patientId, + orElse: () => null)) == null) { + removedPatientList.add(element); + } + }); + + + removedPatientList.forEach((element) { + _patientList.remove(element); }); }, onFailure: (String error, int statusCode) { diff --git a/lib/core/viewModel/LiveCarePatientViewModel.dart b/lib/core/viewModel/LiveCarePatientViewModel.dart index 378013bd..03cb0a7b 100644 --- a/lib/core/viewModel/LiveCarePatientViewModel.dart +++ b/lib/core/viewModel/LiveCarePatientViewModel.dart @@ -238,4 +238,18 @@ class LiveCarePatientViewModel extends BaseViewModel { AlternativeService(serviceID: 11, serviceName: "GASTRIC TUBE CHANGE"), ); } + + updateInCallPatient({PatiantInformtion patient, appointmentNo}){ + + _liveCarePatientServices.patientList.forEach((e) { + if(e.patientId == patient.patientId) { + e.episodeNo = 0 ; + e.appointmentNo = appointmentNo; + return; + } + }); + + setState(ViewState.Idle); + + } } diff --git a/lib/models/livecare/start_call_res.dart b/lib/models/livecare/start_call_res.dart index 67259996..e3c1a54f 100644 --- a/lib/models/livecare/start_call_res.dart +++ b/lib/models/livecare/start_call_res.dart @@ -5,6 +5,7 @@ class StartCallRes { bool isAuthenticated; int messageStatus; String appointmentNo; + bool isRecording; StartCallRes( {this.result, @@ -12,7 +13,9 @@ class StartCallRes { this.openTokenID, this.isAuthenticated, this.appointmentNo, - this.messageStatus}); + this.messageStatus, + this.isRecording = true, + }); StartCallRes.fromJson(Map json) { result = json['Result']; @@ -21,6 +24,7 @@ class StartCallRes { isAuthenticated = json['IsAuthenticated']; messageStatus = json['MessageStatus']; appointmentNo = json['AppointmentNo']; + isRecording = json['isRecording']; } Map toJson() { @@ -31,6 +35,7 @@ class StartCallRes { data['IsAuthenticated'] = this.isAuthenticated; data['MessageStatus'] = this.messageStatus; data['AppointmentNo'] = this.appointmentNo; + data['isRecording'] = this.isRecording; return data; } } diff --git a/lib/models/patient/patiant_info_model.dart b/lib/models/patient/patiant_info_model.dart index 6a58a923..83a70b01 100644 --- a/lib/models/patient/patiant_info_model.dart +++ b/lib/models/patient/patiant_info_model.dart @@ -1,9 +1,9 @@ -// TODO : it have to be changed. +// TODO = it have to be changed. import 'package:doctor_app_flutter/util/date-utils.dart'; class PatiantInformtion { - final PatiantInformtion patientDetails; + PatiantInformtion patientDetails; int genderInt; dynamic age; String appointmentDate; @@ -79,178 +79,268 @@ class PatiantInformtion { int vcId; String voipToken; - PatiantInformtion( - {this.patientDetails, - this.projectId, - this.clinicId, - this.doctorId, - this.patientId, - this.doctorName, - this.doctorNameN, - this.firstName, - this.middleName, - this.lastName, - this.firstNameN, - this.middleNameN, - this.lastNameN, - this.gender, - this.dateofBirth, - this.nationalityId, - this.mobileNumber, - this.emailAddress, - this.patientIdentificationNo, - this.patientType, - this.admissionNo, - this.admissionDate, - this.createdOn, - this.roomId, - this.bedId, - this.nursingStationId, - this.description, - this.clinicDescription, - this.clinicDescriptionN, - this.nationalityName, - this.nationalityNameN, - this.age, - this.genderDescription, - this.nursingStationName, - this.appointmentDate, - this.startTime, - this.appointmentNo, - this.arrivalTime, - this.arrivalTimeD, - this.callStatus, - this.callStatusDisc, - this.callTypeID, - this.clientRequestID, - this.clinicName, - this.consoltationEnd, - this.consultationNotes, - this.appointmentType, - this.appointmentTypeId, - this.arrivedOn, - this.clinicGroupId, - this.companyName, - this.dischargeStatus, - this.doctorDetails, - this.endTime, - this.episodeNo, - this.fallRiskScore, - this.genderInt, - this.isSigned, - this.medicationOrders, - this.nationality, - this.patientMRN, - this.visitType, - this.fullName, - this.fullNameN, - this.nationalityFlagURL, - this.patientStatusType, - this.patientStatus, - this.visitTypeId, - this.startTimes, - this.dischargeDate, - this.status, - this.vcId, - this.voipToken, - this.admissionDateWithDateTimeForm, + PatiantInformtion({this.patientDetails, + this.projectId, + this.clinicId, + this.doctorId, + this.patientId, + this.doctorName, + this.doctorNameN, + this.firstName, + this.middleName, + this.lastName, + this.firstNameN, + this.middleNameN, + this.lastNameN, + this.gender, + this.dateofBirth, + this.nationalityId, + this.mobileNumber, + this.emailAddress, + this.patientIdentificationNo, + this.patientType, + this.admissionNo, + this.admissionDate, + this.createdOn, + this.roomId, + this.bedId, + this.nursingStationId, + this.description, + this.clinicDescription, + this.clinicDescriptionN, + this.nationalityName, + this.nationalityNameN, + this.age, + this.genderDescription, + this.nursingStationName, + this.appointmentDate, + this.startTime, + this.appointmentNo, + this.arrivalTime, + this.arrivalTimeD, + this.callStatus, + this.callStatusDisc, + this.callTypeID, + this.clientRequestID, + this.clinicName, + this.consoltationEnd, + this.consultationNotes, + this.appointmentType, + this.appointmentTypeId, + this.arrivedOn, + this.clinicGroupId, + this.companyName, + this.dischargeStatus, + this.doctorDetails, + this.endTime, + this.episodeNo, + this.fallRiskScore, + this.genderInt, + this.isSigned, + this.medicationOrders, + this.nationality, + this.patientMRN, + this.visitType, + this.fullName, + this.fullNameN, + this.nationalityFlagURL, + this.patientStatusType, + this.patientStatus, + this.visitTypeId, + this.startTimes, + this.dischargeDate, + this.status, + this.vcId, + this.voipToken, + this.admissionDateWithDateTimeForm, this.appointmentDateWithDateTimeForm}); - factory PatiantInformtion.fromJson(Map json) => PatiantInformtion( - patientDetails: json['patientDetails'] != null ? new PatiantInformtion.fromJson(json['patientDetails']) : null, - projectId: json["ProjectID"] ?? json["projectID"], - clinicId: json["ClinicID"] ?? json["clinicID"], - doctorId: json["DoctorID"] ?? json["doctorID"], - patientId: json["PatientID"] != null + + PatiantInformtion.fromJson(Map json) { + { + patientDetails = json['patientDetails'] != null + ? new PatiantInformtion.fromJson(json['patientDetails']) + : null; + projectId = json["ProjectID"] ?? json["projectID"]; + clinicId = json["ClinicID"] ?? json["clinicID"]; + doctorId = json["DoctorID"] ?? json["doctorID"]; + patientId = json["PatientID"] != null ? json["PatientID"] is String - ? int.parse(json["PatientID"]) - : json["PatientID"] - : json["patientID"] ?? json['patientMRN'] ?? json['PatientMRN'], - doctorName: json["DoctorName"] ?? json["doctorName"], - doctorNameN: json["DoctorNameN"] ?? json["doctorNameN"], - firstName: json["FirstName"] ?? json["firstName"], - middleName: json["MiddleName"] ?? json["middleName"], - lastName: json["LastName"] ?? json["lastName"], - firstNameN: json["FirstNameN"] ?? json["firstNameN"], - middleNameN: json["MiddleNameN"] ?? json["middleNameN"], - lastNameN: json["LastNameN"] ?? json["lastNameN"], - gender: json["Gender"] != null + ? int.parse(json["PatientID"]) + : json["PatientID"] + : json["patientID"] ?? json['patientMRN'] ?? json['PatientMRN']; + doctorName = json["DoctorName"] ?? json["doctorName"]; + doctorNameN = json["DoctorNameN"] ?? json["doctorNameN"]; + firstName = json["FirstName"] ?? json["firstName"]; + middleName = json["MiddleName"] ?? json["middleName"]; + lastName = json["LastName"] ?? json["lastName"]; + firstNameN = json["FirstNameN"] ?? json["firstNameN"]; + middleNameN = json["MiddleNameN"] ?? json["middleNameN"]; + lastNameN = json["LastNameN"] ?? json["lastNameN"]; + gender = json["Gender"] != null ? json["Gender"] is String - ? int.parse(json["Gender"]) - : json["Gender"] - : json["gender"], - fullName: json["fullName"] ?? json["fullName"] ?? json["PatientName"], - fullNameN: json["fullNameN"] ?? json["fullNameN"] ?? json["PatientName"], - dateofBirth: json["DateofBirth"] ?? json["dob"] ?? json['DateOfBirth'], - nationalityId: json["NationalityID"] ?? json["nationalityID"], - mobileNumber: json["MobileNumber"] ?? json["mobileNumber"], - emailAddress: json["EmailAddress"] ?? json["emailAddress"], - patientIdentificationNo: json["PatientIdentificationNo"] ?? json["patientIdentificationNo"], + ? int.parse(json["Gender"]) + : json["Gender"] + : json["gender"]; + fullName = json["fullName"] ?? json["fullName"] ?? json["PatientName"]; + fullNameN = + json["fullNameN"] ?? json["fullNameN"] ?? json["PatientName"]; + dateofBirth = json["DateofBirth"] ?? json["dob"] ?? json['DateOfBirth']; + nationalityId = json["NationalityID"] ?? json["nationalityID"]; + mobileNumber = json["MobileNumber"] ?? json["mobileNumber"]; + emailAddress = json["EmailAddress"] ?? json["emailAddress"]; + patientIdentificationNo = + json["PatientIdentificationNo"] ?? json["patientIdentificationNo"]; //TODO make 7 dynamic when the backend retrun it in patient arrival - patientType: json["PatientType"] ?? json["patientType"] ?? 1, - admissionNo: json["AdmissionNo"] ?? json["admissionNo"], - admissionDate: json["AdmissionDate"] ?? json["admissionDate"], - createdOn: json["CreatedOn"] ?? json["CreatedOn"], - roomId: json["RoomID"] ?? json["roomID"], - bedId: json["BedID"] ?? json["bedID"], - nursingStationId: json["NursingStationID"] ?? json["nursingStationID"], - description: json["Description"] ?? json["description"], - clinicDescription: json["ClinicDescription"] ?? json["clinicDescription"], - clinicDescriptionN: json["ClinicDescriptionN"] ?? json["clinicDescriptionN"], - nationalityName: json["NationalityName"] ?? json["nationalityName"] ?? json['NationalityName'], - nationalityNameN: json["NationalityNameN"] ?? json["nationalityNameN"] ?? json['NationalityNameN'], - age: json["Age"] ?? json["age"], - genderDescription: json["GenderDescription"], - nursingStationName: json["NursingStationName"], - appointmentDate: json["AppointmentDate"] ?? '', - startTime: json["startTime"] ?? json['StartTime'], - appointmentNo: json['appointmentNo'] ?? json['AppointmentNo'], - appointmentType: json['appointmentType'], - appointmentTypeId: json['appointmentTypeId'] ?? json['appointmentTypeid'], - arrivedOn: json['ArrivedOn'] ?? json['arrivedOn'] ?? json['ArrivedOn'], - clinicGroupId: json['clinicGroupId'], - companyName: json['companyName'], - dischargeStatus: json['dischargeStatus'], - doctorDetails: json['doctorDetails'], - endTime: json['endTime'], - episodeNo: json['episodeNo'] ?? json['EpisodeID'] ?? json['EpisodeNo'], - fallRiskScore: json['fallRiskScore'], - isSigned: json['isSigned'], - medicationOrders: json['medicationOrders'], - nationality: json['nationality'] ?? json['NationalityNameN'], - patientMRN: json['patientMRN'] ?? + patientType = json["PatientType"] ?? json["patientType"] ?? 1; + admissionNo = json["AdmissionNo"] ?? json["admissionNo"]; + admissionDate = json["AdmissionDate"] ?? json["admissionDate"]; + createdOn = json["CreatedOn"] ?? json["CreatedOn"]; + roomId = json["RoomID"] ?? json["roomID"]; + bedId = json["BedID"] ?? json["bedID"]; + nursingStationId = json["NursingStationID"] ?? json["nursingStationID"]; + description = json["Description"] ?? json["description"]; + clinicDescription = + json["ClinicDescription"] ?? json["clinicDescription"]; + clinicDescriptionN = + json["ClinicDescriptionN"] ?? json["clinicDescriptionN"]; + nationalityName = json["NationalityName"] ?? + json["nationalityName"] ?? + json['NationalityName']; + nationalityNameN = json["NationalityNameN"] ?? + json["nationalityNameN"] ?? + json['NationalityNameN']; + age = json["Age"] ?? json["age"]; + genderDescription = json["GenderDescription"]; + nursingStationName = json["NursingStationName"]; + appointmentDate = json["AppointmentDate"] ?? ''; + startTime = json["startTime"] ?? json['StartTime']; + appointmentNo = json['appointmentNo'] ?? json['AppointmentNo']; + appointmentType = json['appointmentType']; + appointmentTypeId = + json['appointmentTypeId'] ?? json['appointmentTypeid']; + arrivedOn = json['ArrivedOn'] ?? json['arrivedOn'] ?? json['ArrivedOn']; + clinicGroupId = json['clinicGroupId']; + companyName = json['companyName']; + dischargeStatus = json['dischargeStatus']; + doctorDetails = json['doctorDetails']; + endTime = json['endTime']; + episodeNo = json['episodeNo'] ?? json['EpisodeID'] ?? json['EpisodeNo']; + fallRiskScore = json['fallRiskScore']; + isSigned = json['isSigned']; + medicationOrders = json['medicationOrders']; + nationality = json['nationality'] ?? json['NationalityNameN']; + patientMRN = json['patientMRN'] ?? json['PatientMRN'] ?? (json["PatientID"] != null ? int?.parse(json["PatientID"].toString()) - : json["patientID"] != null - ? int?.parse(json["patientID"].toString()) - : json["patientId"] != null - ? int?.parse(json["patientId"].toString()) - : ''), - visitType: json['visitType'] ?? json['visitType'] ?? json['visitType'], - nationalityFlagURL: json['NationalityFlagURL'] ?? json['NationalityFlagURL'], - patientStatusType: json['patientStatusType'] ?? json['PatientStatusType'], - visitTypeId: json['visitTypeId'] ?? json['visitTypeId'] ?? json['visitTypeid'], - startTimes: json['StartTime'] ?? json['StartTime'], - dischargeDate: json['DischargeDate'], - status: json['Status'], - vcId: json['VC_ID'], - arrivalTime: json['ArrivalTime'], - arrivalTimeD: json['ArrivalTimeD'], - callStatus: json['CallStatus'], - callStatusDisc: json['CallStatusDisc'], - callTypeID: json['CallTypeID'], - clientRequestID: json['ClientRequestID'], - clinicName: json['ClinicName'], - consoltationEnd: json['ConsoltationEnd'], - consultationNotes: json['ConsultationNotes'], - patientStatus: json['PatientStatus'], - voipToken: json['VoipToken'], - admissionDateWithDateTimeForm: json["AdmissionDate"] != null + : json["patientID"] != null ? int?.parse( + json["patientID"].toString()) : json["patientId"] != null ? int + ?.parse(json["patientId"].toString()) : ''); + visitType = json['visitType'] ?? json['visitType'] ?? json['visitType']; + nationalityFlagURL = + json['NationalityFlagURL'] ?? json['NationalityFlagURL']; + patientStatusType = + json['patientStatusType'] ?? json['PatientStatusType']; + visitTypeId = + json['visitTypeId'] ?? json['visitTypeId'] ?? json['visitTypeid']; + startTimes = json['StartTime'] ?? json['StartTime']; + dischargeDate = json['DischargeDate']; + status = json['Status']; + vcId = json['VC_ID']; + + arrivalTime = json['ArrivalTime']; + arrivalTimeD = json['ArrivalTimeD']; + callStatus = json['CallStatus']; + callStatusDisc = json['CallStatusDisc']; + callTypeID = json['CallTypeID']; + clientRequestID = json['ClientRequestID']; + clinicName = json['ClinicName']; + consoltationEnd = json['ConsoltationEnd']; + consultationNotes = json['ConsultationNotes']; + patientStatus = json['PatientStatus']; + voipToken = json['VoipToken']; + admissionDateWithDateTimeForm = json["AdmissionDate"] != null ? AppDateUtils.convertStringToDate(json["AdmissionDate"]) - : json["admissionDate"] != null - ? AppDateUtils.convertStringToDate(json["admissionDate"]) - : null, - appointmentDateWithDateTimeForm: - json["AppointmentDate"] != null ? AppDateUtils.convertStringToDate(json["AppointmentDate"]) : null); -} + : json["admissionDate"] != null ? AppDateUtils.convertStringToDate( + json["admissionDate"]) : null; + + appointmentDateWithDateTimeForm = + json["AppointmentDate"] != null ? AppDateUtils.convertStringToDate( + json["AppointmentDate"]) : null; + } + } + + + Map toJson() { + final Map data = new Map(); + + data['patientDetails'] = this.patientDetails; + data["ProjectID"] = this.projectId; + data["projectID"] = this.projectId; + data["ClinicID"] = this.clinicId; + data["clinicID"] = this.clinicId; + data["DoctorID"] = this.doctorId; + data["doctorID"] = this.doctorId; + data["PatientID"] = this.patientId; + data["patientID"] = this.patientId; + data['patientMRN'] = this.patientMRN; + data['PatientMRN'] = this.patientMRN; + + data['episodeNo'] = this.episodeNo; + data['EpisodeID'] = this.episodeNo; + data['EpisodeNo'] = this.episodeNo; + + data["DoctorName"] = this.doctorName; + data["doctorName"] = this.doctorName; + data["DoctorNameN"] = this.doctorNameN; + data["doctorNameN"] = this.doctorNameN; + data["FirstName"] = this.firstName; + data["firstName"] = this.firstName; + data["MiddleName"] = this.middleName; + data["middleName"] = this.middleName; + data["LastName"] = this.lastName; + data["lastName"] = this.lastName; + data["FirstNameN"] = this.firstNameN; + data["firstNameN"] = this.firstNameN; + data["MiddleNameN"] = this.middleNameN; + data["middleNameN"] = this.middleNameN; + data["LastNameN"] = this.lastNameN; + data["lastNameN"] = this.lastNameN; + + data["fullName"] = this.fullName; + data["fullName"] = this.fullName; + data["PatientName"] = this.fullName; + + data["Gender"] = this.gender; + data["gender"] = this.gender; + + + data['Age'] = this.age; + data['AppointmentDate'] = this.appointmentDate.isNotEmpty?this.appointmentDate:null; + data['AppointmentNo'] = this.appointmentNo; + data['ArrivalTime'] = this.arrivalTime; + data['ArrivalTimeD'] = this.arrivalTimeD; + data['CallStatus'] = this.callStatus; + data['CallStatusDisc'] = this.callStatusDisc; + data['CallTypeID'] = this.callTypeID; + data['ClientRequestID'] = this.clientRequestID; + data['ClinicName'] = this.clinicName; + data['ConsoltationEnd'] = this.consoltationEnd; + data['ConsultationNotes'] = this.consultationNotes; + data['CreatedOn'] = this.createdOn; + data['DoctorName'] = this.doctorName; + data['Gender'] = this.gender; + data['MobileNumber'] = this.mobileNumber; + data['PatientID'] = this.patientId; + data['PatientStatus'] = this.patientStatus; + data['ProjectID'] = this.projectId; + data['VC_ID'] = this.vcId; + data['VoipToken'] = this.voipToken; + + data["DateofBirth"] = this.dateofBirth; + data["dob"] = this.dateofBirth; + data['DateOfBirth'] = this.dateofBirth; + return data; + } +} \ No newline at end of file diff --git a/lib/screens/home/home_screen.dart b/lib/screens/home/home_screen.dart index d448083f..568ad60f 100644 --- a/lib/screens/home/home_screen.dart +++ b/lib/screens/home/home_screen.dart @@ -5,6 +5,7 @@ import 'package:doctor_app_flutter/core/viewModel/dashboard_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart'; import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart'; +import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/home/dashboard_slider-item-widget.dart'; import 'package:doctor_app_flutter/screens/home/dashboard_swipe_widget.dart'; @@ -28,6 +29,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:sticky_headers/sticky_headers/widget.dart'; +import '../../routes.dart'; import '../../widgets/shared/app_texts_widget.dart'; class HomeScreen extends StatefulWidget { @@ -288,7 +290,8 @@ class _HomeScreenState extends State { child: ListView( scrollDirection: Axis.horizontal, children: [ - ...homePatientsCardsWidget(model, projectsProvider), + ...homePatientsCardsWidget( + model, projectsProvider), ])), SizedBox( height: 20, @@ -306,7 +309,8 @@ class _HomeScreenState extends State { ); } - List homePatientsCardsWidget(DashboardViewModel model,projectsProvider) { + List homePatientsCardsWidget( + DashboardViewModel model, projectsProvider) { colorIndex = 0; List backgroundColors = List(3); @@ -334,6 +338,22 @@ class _HomeScreenState extends State { text: "${TranslationBase.of(context).liveCare}\n${TranslationBase.of(context).patients}", onTap: () { + // PatiantInformtion patient = PatiantInformtion( + // patientStatusType: 43, + // episodeNo: 0, + // vcId: 42342, + // fullName: "mosa test", + // dateofBirth: "2000-05-01 10:42:35.790004" + // ); + // Navigator.of(context).pushNamed(PATIENTS_PROFILE, arguments: { + // "patient": patient, + // "patientType": "0", + // "isSearch": false, + // "isInpatient": false, + // "arrivalType": "0", + // "isSearchAndOut": false, + // "isFromLiveCare": true, + // }); Navigator.push( context, FadePage( @@ -355,8 +375,10 @@ class _HomeScreenState extends State { Navigator.push( context, FadePage( - page: PatientInPatientScreen(specialClinic: model.getSpecialClinic(clinicId??projectsProvider - .doctorClinicsList[0].clinicID),), + page: PatientInPatientScreen( + specialClinic: model.getSpecialClinic( + clinicId ?? projectsProvider.doctorClinicsList[0].clinicID), + ), ), ); }, @@ -394,14 +416,12 @@ class _HomeScreenState extends State { backgroundIconColor: backgroundIconColors[colorIndex], cardIcon: DoctorApp.referral_1, textColor: textColors[colorIndex], - text: TranslationBase.of(context) - .myPatientsReferral, + text: TranslationBase.of(context).myPatientsReferral, onTap: () { Navigator.push( context, MaterialPageRoute( - builder: (context) => - PatientReferralScreen(), + builder: (context) => PatientReferralScreen(), ), ); }, @@ -413,14 +433,12 @@ class _HomeScreenState extends State { backgroundIconColor: backgroundIconColors[colorIndex], cardIcon: DoctorApp.search, textColor: textColors[colorIndex], - text: TranslationBase.of(context) - .searchPatientDashBoard, + text: TranslationBase.of(context).searchPatientDashBoard, onTap: () { Navigator.push( context, MaterialPageRoute( - builder: (context) => - PatientSearchScreen(), + builder: (context) => PatientSearchScreen(), )); }, )); @@ -431,14 +449,12 @@ class _HomeScreenState extends State { backgroundIconColor: backgroundIconColors[colorIndex], cardIcon: DoctorApp.search_medicines, textColor: textColors[colorIndex], - text: TranslationBase.of(context) - .searchMedicineDashboard, + text: TranslationBase.of(context).searchMedicineDashboard, onTap: () { Navigator.push( context, MaterialPageRoute( - builder: (context) => - MedicineSearchScreen(), + builder: (context) => MedicineSearchScreen(), )); }, )); diff --git a/lib/screens/live_care/end_call_screen.dart b/lib/screens/live_care/end_call_screen.dart index d3db12b6..0e65182b 100644 --- a/lib/screens/live_care/end_call_screen.dart +++ b/lib/screens/live_care/end_call_screen.dart @@ -79,6 +79,7 @@ class _EndCallScreenState extends State { kSessionId: liveCareModel.startCallRes.openSessionID, kApiKey: '46209962', vcId: patient.vcId, + isRecording: liveCareModel.startCallRes != null ? liveCareModel.startCallRes.isRecording: false, patientName: patient.fullName ?? (patient.firstName != null ? "${patient.firstName} ${patient.lastName}" : "-"), tokenID: await liveCareModel.getToken(), generalId: GENERAL_ID, diff --git a/lib/screens/live_care/live_care_patient_screen.dart b/lib/screens/live_care/live_care_patient_screen.dart index 911687c9..12c8caff 100644 --- a/lib/screens/live_care/live_care_patient_screen.dart +++ b/lib/screens/live_care/live_care_patient_screen.dart @@ -146,7 +146,7 @@ class _LiveCarePatientScreenState extends State { return Padding( padding: EdgeInsets.all(8.0), child: PatientCard( - patientInfo: model.filterData[index], + patientInfo: PatiantInformtion.fromJson(model.filterData[index].toJson()), patientType: "0", arrivalType: "0", isFromSearch: false, @@ -155,7 +155,7 @@ class _LiveCarePatientScreenState extends State { onTap: () { // TODO change the parameter to daynamic Navigator.of(context).pushNamed(PATIENTS_PROFILE, arguments: { - "patient": model.filterData[index], + "patient": PatiantInformtion.fromJson(model.filterData[index].toJson()), "patientType": "0", "isSearch": false, "isInpatient": false, diff --git a/lib/screens/live_care/video_call.dart b/lib/screens/live_care/video_call.dart index 07de1943..e024624a 100644 --- a/lib/screens/live_care/video_call.dart +++ b/lib/screens/live_care/video_call.dart @@ -66,6 +66,7 @@ class _VideoCallPageState extends State { //'1_MX40NjgwMzIyNH5-MTU5MzY4MzYzODYwM35ucExWYVRVSm5Hcy9uWGZmM1lOa3czZHV-fg', kApiKey: '46209962', vcId: widget.patientData.vcId, + isRecording: tokenData != null ? tokenData.isRecording: false, patientName: widget.patientData.fullName ?? widget.patientData.firstName != null ? "${widget.patientData.firstName} ${widget.patientData.lastName}" : "-", tokenID: token, //"hfkjshdf347r8743", generalId: "Cs2020@2016\$2958", diff --git a/lib/screens/patients/InPatientPage.dart b/lib/screens/patients/InPatientPage.dart index cf4b6120..a88d3007 100644 --- a/lib/screens/patients/InPatientPage.dart +++ b/lib/screens/patients/InPatientPage.dart @@ -26,7 +26,7 @@ class InPatientPage extends StatefulWidget { class _InPatientPageState extends State { TextEditingController _searchController = TextEditingController(); - bool isSortDes = true; + bool isSortDes = false; @override void dispose() { diff --git a/lib/screens/patients/profile/profile_screen/patient_profile_screen.dart b/lib/screens/patients/profile/profile_screen/patient_profile_screen.dart index 4dc49b15..d8410da1 100644 --- a/lib/screens/patients/profile/profile_screen/patient_profile_screen.dart +++ b/lib/screens/patients/profile/profile_screen/patient_profile_screen.dart @@ -1,12 +1,10 @@ import 'dart:async'; -import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/service/VideoCallService.dart'; import 'package:doctor_app_flutter/core/viewModel/LiveCarePatientViewModel.dart'; import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart'; import 'package:doctor_app_flutter/models/SOAP/PostEpisodeReqModel.dart'; -import 'package:doctor_app_flutter/models/livecare/session_status_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/live_care/end_call_screen.dart'; @@ -14,11 +12,8 @@ import 'package:doctor_app_flutter/screens/patients/profile/profile_screen/profi import 'package:doctor_app_flutter/screens/patients/profile/profile_screen/profile_gird_for_other.dart'; import 'package:doctor_app_flutter/screens/patients/profile/profile_screen/profile_gird_for_search.dart'; import 'package:doctor_app_flutter/util/NotificationPermissionUtils.dart'; -import 'package:doctor_app_flutter/util/VideoChannel.dart'; -import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; -import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-app-bar.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart'; @@ -118,6 +113,10 @@ class _PatientProfileScreenState extends State with Single callDisconnected() { callTimer.cancel(); videoCallDurationStreamController.sink.add(null); + + setState(() { + isCallStarted = false; + }); } @override @@ -302,52 +301,73 @@ class _PatientProfileScreenState extends State with Single : TranslationBase.of(context).initiateCall, disabled: isCallStarted || model.state == ViewState.BusyLocal, onPressed: () async { - // Navigator.push(context, MaterialPageRoute( - // builder: (BuildContext context) => - // EndCallScreen(patient:patient))); - - // AppPermissionsUtils.requestVideoCallPermission(context: context,onTapGrant: (){ - // locator().openVideo(model.startCallRes, patient, callConnected, callDisconnected); - // }); - - if(isCallFinished) { - Navigator.push(context, MaterialPageRoute( - builder: (BuildContext context) => EndCallScreen(patient:patient))); - } else { - GifLoaderDialogUtils.showMyDialog(context); - await model.startCall( isReCall : false, vCID: patient.vcId); - - if(model.state == ViewState.ErrorLocal) { - GifLoaderDialogUtils.hideDialog(context); - Helpers.showErrorToast(model.error); - } else { - await model.getDoctorProfile(); - patient.appointmentNo = int.parse(model.startCallRes.appointmentNo.toString()); - patient.episodeNo = 0; - setState(() { - isCallStarted = true; - }); - GifLoaderDialogUtils.hideDialog(context); - AppPermissionsUtils.requestVideoCallPermission(context: context,onTapGrant: (){ - locator().openVideo(model.startCallRes, patient, callConnected, callDisconnected); - }); - } - } + // AppPermissionsUtils + // .requestVideoCallPermission( + // context: context, + // onTapGrant: () { + // locator() + // .openVideo( + // model.startCallRes, + // patient, + // false, callConnected, // model.startCallRes.isRecording + // callDisconnected); + // }); + if (isCallFinished) { + Navigator.push( + context, + MaterialPageRoute( + builder: (BuildContext context) => + EndCallScreen(patient: patient))); + } else { + GifLoaderDialogUtils.showMyDialog(context); + await model.startCall( + isReCall: false, vCID: patient.vcId); - }, + if (model.state == ViewState.ErrorLocal) { + GifLoaderDialogUtils.hideDialog(context); + Helpers.showErrorToast(model.error); + } else { + await model.getDoctorProfile(); + patient.appointmentNo = int.parse(model + .startCallRes.appointmentNo + .toString()); + patient.episodeNo = 0; + model.updateInCallPatient( + patient: patient, + appointmentNo: int.parse(model + .startCallRes.appointmentNo + .toString())); + setState(() { + isCallStarted = true; + }); + GifLoaderDialogUtils.hideDialog(context); + AppPermissionsUtils + .requestVideoCallPermission( + context: context, + onTapGrant: () { + locator() + .openVideo( + model.startCallRes, + patient, + /*model.startCallRes != null ? model.startCallRes.isRecording : */ true + , callConnected, + callDisconnected); + }); + } + } + }, + ), + ), ), ), - ), - ), - SizedBox( - height: 5, + SizedBox( + height: 5, + ), + ], ), - ], - ), - ) : null, - ), - - + ) + : null, + ), ); } } diff --git a/lib/util/VideoChannel.dart b/lib/util/VideoChannel.dart index 832749cf..94035d7d 100644 --- a/lib/util/VideoChannel.dart +++ b/lib/util/VideoChannel.dart @@ -11,7 +11,7 @@ class VideoChannel{ /// channel name static const _channel = const MethodChannel("Dr.cloudSolution/videoCall"); static openVideoCallScreen({kApiKey, kSessionId, kToken, callDuration, warningDuration,int vcId,String tokenID, - String generalId,int doctorId, String patientName, Function() onCallEnd , + String generalId,int doctorId, String patientName, bool isRecording = false, Function() onCallEnd , Function(SessionStatusModel sessionStatusModel) onCallNotRespond ,Function(String error) onFailure, VoidCallback onCallConnected, VoidCallback onCallDisconnected}) async { onCallConnected = onCallConnected ?? (){}; @@ -41,6 +41,7 @@ class VideoChannel{ "generalId": generalId, "DoctorId": doctorId , "patientName": patientName, + "isRecording": isRecording, }, ); if(result['callResponse'] == 'CallEnd') {