diff --git a/android/app/build.gradle b/android/app/build.gradle
index ad02325b..5136988a 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -78,7 +78,7 @@ android {
targetSdkVersion 34
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
- multiDexEnabled false
+ multiDexEnabled true
}
sourceSets.main {
@@ -99,8 +99,8 @@ android {
debug {
debuggable true
signingConfig signingConfigs.debug
- shrinkResources false
minifyEnabled false
+ shrinkResources false
// ndk {
// abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86_64'
// }
@@ -137,6 +137,9 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
+ kotlinOptions {
+ jvmTarget = '1.8'
+ }
}
flutter {
@@ -186,6 +189,10 @@ dependencies {
implementation 'com.squareup.okhttp3:okhttp:4.10.0'
implementation 'androidx.test.ext:junit:1.1.5'
implementation 'com.android.volley:volley:1.2.1'
+ implementation 'androidx.constraintlayout:constraintlayout:2.2.0'
+ implementation 'androidx.navigation:navigation-fragment-ktx:2.8.5'
+ implementation 'androidx.navigation:navigation-ui-ktx:2.8.5'
+ implementation 'androidx.activity:activity:1.9.3'
def room_version = "2.4.0-alpha04"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
@@ -196,11 +203,11 @@ dependencies {
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
// implementation "com.mapbox.maps:android:10.16.6"
-// implementation 'com.mapbox.maps:android:11.3.1'
+ implementation 'com.mapbox.maps:android:11.3.1'
-// implementation files('libs/PenNavUI.aar')
-// implementation files('libs/Penguin.aar')
-// implementation files('libs/PenguinRenderer.aar')
+ implementation files('libs/PenNavUI.aar')
+ implementation files('libs/Penguin.aar')
+ implementation files('libs/PenguinRenderer.aar')
// implementation "org.jetbrains.anko:anko-commons:0.10.4"
implementation 'com.github.kittinunf.fuel:fuel:2.3.0' //for JVM
@@ -215,7 +222,10 @@ dependencies {
implementation 'com.google.android.material:material:1.9.0'
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.22'
androidTestImplementation "androidx.test:core:1.4.0"
- implementation 'com.airbnb.android:lottie:5.2.0'
- implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.22'
+// implementation 'com.airbnb.android:lottie:5.2.0'
+// implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.22'
+ implementation 'com.whatsapp.otp:whatsapp-otp-android-sdk:0.1.0'
+
+ implementation 'com.whatsapp.otp:whatsapp-otp-android-sdk:0.1.0'
}
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 2856e8f1..e216dae5 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -1,51 +1,82 @@
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ FlutterApplication and put your custom class here.
+ -->
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
-
+
-
-
+
+
-
+
-
+
-
-
+
+
+
+
@@ -53,106 +84,146 @@
-
-
-
-
-
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ android:icon="@mipmap/ic_launcher_local"
+ android:label="Dr. Alhabib"
+ android:screenOrientation="sensorPortrait"
+ android:showOnLockScreen="true"
+ android:usesCleartextTraffic="true"
+ tools:replace="android:extractNativeLibs,android:label">
+
+
+
+
+
+
+
-
-
+ to determine the Window background behind the Flutter UI.
+ -->
-
+ Flutter's first frame.
+ -->
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
+
+
-
+
-
+
-
-
+
-
-
-
+
+
+
-
+
@@ -168,26 +239,17 @@
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/MainActivity.kt b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/MainActivity.kt
index e03a9e8f..c874ea4d 100644
--- a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/MainActivity.kt
+++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/MainActivity.kt
@@ -1,4 +1,5 @@
package com.ejada.hmg
+import android.app.PendingIntent
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
@@ -6,11 +7,15 @@ import android.util.Log
import android.view.WindowManager
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi
-//import com.cloud.diplomaticquarterapp.PenguinInPlatformBridge
+import com.cloud.diplomaticquarterapp.PenguinInPlatformBridge
+import com.cloud.diplomaticquarterapp.whatsapp.AppSignatureRetriever
import com.ejada.hmg.utils.*
import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant
+import com.cloud.diplomaticquarterapp.whatsapp.WhatsApp
+import com.cloud.diplomaticquarterapp.whatsapp.WhatsAppOtpPlatformBridge
+
class MainActivity: FlutterFragmentActivity() {
@RequiresApi(Build.VERSION_CODES.O)
@@ -21,9 +26,10 @@ class MainActivity: FlutterFragmentActivity() {
PlatformBridge(flutterEngine, this).create()
OpenTokPlatformBridge(flutterEngine, this).create()
-// PenguinInPlatformBridge(flutterEngine, this).create()
-
-// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ PenguinInPlatformBridge(flutterEngine, this).create()
+ WhatsAppOtpPlatformBridge(flutterEngine, this).invoke()
+ AppSignatureRetriever().logSignatures(this)
+// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {x
// val mChannel = NotificationChannel("video_call_noti", "video call", NotificationManager.IMPORTANCE_HIGH)
// val soundUri = Uri.parse("android.resource://" + getApplicationContext()
// .getPackageName() + "/" + R.raw.alert)
diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/whatsapp/AppSignatureRetriever.java b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/whatsapp/AppSignatureRetriever.java
new file mode 100644
index 00000000..83e6e917
--- /dev/null
+++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/whatsapp/AppSignatureRetriever.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+package com.cloud.diplomaticquarterapp.whatsapp;
+
+import static java.sql.DriverManager.println;
+
+import android.content.Context;
+import android.content.ContextWrapper;
+import android.content.pm.PackageManager;
+import android.content.pm.Signature;
+import android.util.Base64;
+import java.nio.charset.StandardCharsets;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.stream.Collectors;
+
+public class AppSignatureRetriever {
+
+ private static final String HASH_TYPE = "SHA-256";
+ public static final int NUM_HASHED_BYTES = 9;
+ public static final int NUM_BASE64_CHAR = 11;
+
+
+ public void logSignatures(Context context) {
+ Collection appSignatures = getAppSignatures(context);
+ appSignatures.forEach(signature -> println("Signature: " + signature));
+ }
+
+ /**
+ * Get all the app signatures for the current package.
+ *
+ * @return signatures for current app
+ */
+ public Collection getAppSignatures(Context context) {
+ try {
+ // Get all package signatures for the current package
+ String packageName = context.getPackageName();
+ println("Package name: " + packageName);
+ PackageManager packageManager = context.getPackageManager();
+ Signature[] signatures = packageManager.getPackageInfo(packageName,
+ PackageManager.GET_SIGNATURES).signatures;
+
+ // For each signature create a compatible hash
+ Collection appCodes = Arrays.stream(signatures)
+ .map(signature -> hash(packageName, signature.toCharsString()))
+ .collect(Collectors.toList());
+ return appCodes;
+ } catch (PackageManager.NameNotFoundException e) {
+ println("Unable to find package to obtain hash.");
+ throw new RuntimeException("Unable to find package to obtain hash.", e);
+ }
+
+ }
+
+ private String hash(String packageName, String signature) {
+ String appInfo = packageName + " " + signature;
+ try {
+ MessageDigest messageDigest = MessageDigest.getInstance(HASH_TYPE);
+ messageDigest.update(appInfo.getBytes(StandardCharsets.UTF_8));
+ byte[] hashSignature = messageDigest.digest();
+
+ // truncated into NUM_HASHED_BYTES
+ hashSignature = Arrays.copyOfRange(hashSignature, 0, NUM_HASHED_BYTES);
+ // encode into Base64
+ String base64Hash = Base64.encodeToString(hashSignature, Base64.NO_PADDING | Base64.NO_WRAP);
+ base64Hash = base64Hash.substring(0, NUM_BASE64_CHAR);
+
+ println(String.format("pkg: %s -- hash: %s", packageName, base64Hash));
+ return base64Hash;
+ } catch (NoSuchAlgorithmException e) {
+ throw new RuntimeException("Unable to generate hash for application", e);
+ }
+ }
+}
diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/whatsapp/WhatsApp.kt b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/whatsapp/WhatsApp.kt
new file mode 100644
index 00000000..73452e6f
--- /dev/null
+++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/whatsapp/WhatsApp.kt
@@ -0,0 +1,31 @@
+
+package com.cloud.diplomaticquarterapp.whatsapp
+
+import android.content.Context
+import android.content.Intent
+import com.whatsapp.otp.android.sdk.WhatsAppOtpHandler
+import com.whatsapp.otp.android.sdk.WhatsAppOtpIncomingIntentHandler
+import java.lang.ref.WeakReference
+
+object WhatsApp {
+ val whatsAppOtpHandler = WhatsAppOtpHandler()
+ inline fun handleOTP ( intent: Intent, crossinline validateOTP:(code: String )-> Unit) =
+ WhatsAppOtpIncomingIntentHandler().processOtpCode(
+ intent,
+ // call your function to validate
+ {code -> validateOTP(code) },
+ {error,exception->
+ println("the error is ${error.name}")
+ println("the exception stacktrace is ${exception.message}")
+ println("the exception is cause ${exception.cause}")
+ })
+
+
+ fun performHandShake(context : WeakReference) = whatsAppOtpHandler.sendOtpIntentToWhatsApp(context.get()!!)
+
+
+
+ fun isWhatsAppInstalled(context : WeakReference) : Boolean = whatsAppOtpHandler.isWhatsAppInstalled(context.get()!!)
+
+
+}
diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/whatsapp/WhatsAppCodeActivity.kt b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/whatsapp/WhatsAppCodeActivity.kt
new file mode 100644
index 00000000..8e86ec97
--- /dev/null
+++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/whatsapp/WhatsAppCodeActivity.kt
@@ -0,0 +1,17 @@
+package com.ejada.hmg
+import android.app.PendingIntent
+import android.content.Intent
+import android.os.Bundle
+import com.cloud.diplomaticquarterapp.whatsapp.WhatsApp
+import com.cloud.diplomaticquarterapp.whatsapp.WhatsAppOtpPlatformBridge
+import io.flutter.embedding.android.FlutterFragmentActivity
+
+class WhatsAppCodeActivity : FlutterFragmentActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ WhatsApp.handleOTP(intent){code ->
+ WhatsAppOtpPlatformBridge.result?.success(code);
+ finish()
+ }
+ }
+}
\ No newline at end of file
diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/whatsapp/WhatsAppOtpPlatformBridge.kt b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/whatsapp/WhatsAppOtpPlatformBridge.kt
new file mode 100644
index 00000000..a03584ae
--- /dev/null
+++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/whatsapp/WhatsAppOtpPlatformBridge.kt
@@ -0,0 +1,52 @@
+package com.cloud.diplomaticquarterapp.whatsapp
+
+import android.os.Build
+import android.util.Log
+import androidx.annotation.RequiresApi
+import com.cloud.diplomaticquarterapp.penguin.PenguinView
+import com.ejada.hmg.MainActivity
+import io.flutter.embedding.engine.FlutterEngine
+import io.flutter.plugin.common.MethodCall
+import io.flutter.plugin.common.MethodChannel
+import java.lang.ref.WeakReference
+
+class WhatsAppOtpPlatformBridge(
+ private var flutterEngine: FlutterEngine,
+ private var mainActivity: MainActivity
+) {
+
+
+ private lateinit var channel: MethodChannel
+
+ companion object {
+ private const val CHANNEL = "whats_app_otp"
+ var result: MethodChannel.Result? = null
+ }
+
+ fun invoke() {
+ channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL)
+ channel.setMethodCallHandler { call: MethodCall, result: MethodChannel.Result ->
+ when (call.method) {
+ "isWhatsAppInstalled" -> {
+ val isAppInstalled =
+ WhatsApp.isWhatsAppInstalled(WeakReference(mainActivity))
+ result.success(isAppInstalled)
+ }
+
+ "performHandShake" -> {
+ WhatsApp.performHandShake(WeakReference(mainActivity))
+ }
+
+
+ "startListening" -> {
+ WhatsAppOtpPlatformBridge.result = result
+ }
+
+ else -> {
+ result.notImplemented()
+ }
+
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_whats_app_code.xml b/android/app/src/main/res/layout/activity_whats_app_code.xml
new file mode 100644
index 00000000..95bd5d8b
--- /dev/null
+++ b/android/app/src/main/res/layout/activity_whats_app_code.xml
@@ -0,0 +1,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
index 87d28a5f..6c4ac3df 100644
--- a/android/app/src/main/res/values/strings.xml
+++ b/android/app/src/main/res/values/strings.xml
@@ -1,23 +1,23 @@
- HMG Patient App
+ HMG Patient App
-
+
Unknown error: the Geofence service is not available now.
-
+
Geofence service is not available now. Go to Settings>Location>Mode and choose High accuracy.
-
+
Your app has registered too many geofences.
-
+
You have provided too many PendingIntents to the addGeofences() call.
-
+
App do not have permission to access location service.
-
+
Geofence requests happened too frequently.
- pk.eyJ1IjoicndhaWQiLCJhIjoiY2x5cGo4aHNjMGNsbTJyc2djempobGQxaSJ9.RCaC6WrUt4A4YnZNfxnONQ
+ sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg
diff --git a/android/build.gradle b/android/build.gradle
index 1f7a8c08..54052387 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -19,8 +19,8 @@ buildscript {
credentials {
username = 'mapbox'
-// password = "sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg"
- password = "pk.eyJ1IjoicndhaWQiLCJhIjoiY2x5cGo4aHNjMGNsbTJyc2djempobGQxaSJ9.RCaC6WrUt4A4YnZNfxnONQ"
+ password = "sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg"
+// password = "pk.eyJ1IjoicndhaWQiLCJhIjoiY2x5cGo4aHNjMGNsbTJyc2djempobGQxaSJ9.RCaC6WrUt4A4YnZNfxnONQ"
if (password == null || password == "") {
throw new GradleException("MAPBOX_DOWNLOADS_TOKEN isn't set. Set it to the project properties or to the enviroment variables.")
}
diff --git a/android/gradle.properties b/android/gradle.properties
index cb9913a1..9efff7ab 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -4,5 +4,5 @@ android.useAndroidX=true
android.enableJetifier=true
android.suppressUnsupportedCompileSdk=33
MAPBOX_USER_NAME = "mapbox"
-#MAPBOX_DOWNLOADS_TOKEN="sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg"
-MAPBOX_DOWNLOADS_TOKEN="pk.eyJ1IjoicndhaWQiLCJhIjoiY2x5cGo4aHNjMGNsbTJyc2djempobGQxaSJ9.RCaC6WrUt4A4YnZNfxnONQ"
\ No newline at end of file
+MAPBOX_DOWNLOADS_TOKEN="sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg"
+#MAPBOX_DOWNLOADS_TOKEN="pk.eyJ1IjoicndhaWQiLCJhIjoiY2x5cGo4aHNjMGNsbTJyc2djempobGQxaSJ9.RCaC6WrUt4A4YnZNfxnONQ"
\ No newline at end of file
diff --git a/android/settings.gradle b/android/settings.gradle
index 5a2f14fb..4c1c588e 100644
--- a/android/settings.gradle
+++ b/android/settings.gradle
@@ -1,4 +1,6 @@
include ':app'
+include ':vital-sign-engine'
+project(':vital-sign-engine').projectDir = new File('/Users/mohamedmekawy/Documents/Work/DiplomaticQuarter_3.16/packages/vital_sign_camera/android/libs')
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
diff --git a/ios/Podfile b/ios/Podfile
index 7721bb87..8706dcdb 100644
--- a/ios/Podfile
+++ b/ios/Podfile
@@ -33,7 +33,8 @@ target 'Runner' do
pod 'OpenTok', '~> 2.22.0'
pod 'VTO2Lib'
- pod 'MapboxMaps', '10.18.2'
+ pod 'MapboxMaps', '10.19.0'
+ pod 'MapboxNavigation', '2.19.0'
pod 'FLAnimatedImage'
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index 2c0073ff..318f2f08 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -14,15 +14,16 @@
306FE6C8271D790C002D6EFC /* OpenTokPlatformBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 306FE6C7271D790C002D6EFC /* OpenTokPlatformBridge.swift */; };
306FE6CB271D8B73002D6EFC /* OpenTok.swift in Sources */ = {isa = PBXBuildFile; fileRef = 306FE6CA271D8B73002D6EFC /* OpenTok.swift */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
- 47C935002C91766800981BA7 /* Penguin.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47C934FC2C91766400981BA7 /* Penguin.xcframework */; };
- 47C935012C91766800981BA7 /* Penguin.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 47C934FC2C91766400981BA7 /* Penguin.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 47C935022C91766900981BA7 /* PenguinINRenderer.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47C934FA2C91766400981BA7 /* PenguinINRenderer.xcframework */; };
- 47C935032C91766900981BA7 /* PenguinINRenderer.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 47C934FA2C91766400981BA7 /* PenguinINRenderer.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 47C935042C91766A00981BA7 /* PenNavUI.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47C934FB2C91766400981BA7 /* PenNavUI.xcframework */; };
- 47C935052C91766A00981BA7 /* PenNavUI.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 47C934FB2C91766400981BA7 /* PenNavUI.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ 55DE18989C1F69DC483B9FB6 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C56AF9B31AA04A5292EEA39F /* Pods_Runner.framework */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
762D738E274E42650063CE73 /* ring_30Sec.caf in Resources */ = {isa = PBXBuildFile; fileRef = 762D738C274E42650063CE73 /* ring_30Sec.caf */; };
762D738F274E42650063CE73 /* ring_30Sec.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 762D738D274E42650063CE73 /* ring_30Sec.mp3 */; };
+ 7651B82F2D3E9CA40066B33A /* PenguinINRenderer.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7651B82C2D3E9CA40066B33A /* PenguinINRenderer.xcframework */; };
+ 7651B8302D3E9CA40066B33A /* PenguinINRenderer.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 7651B82C2D3E9CA40066B33A /* PenguinINRenderer.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ 7651B8312D3E9CA40066B33A /* Penguin.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7651B82D2D3E9CA40066B33A /* Penguin.xcframework */; };
+ 7651B8322D3E9CA40066B33A /* Penguin.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 7651B82D2D3E9CA40066B33A /* Penguin.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ 7651B8332D3E9CA40066B33A /* PenNavUI.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7651B82E2D3E9CA40066B33A /* PenNavUI.xcframework */; };
+ 7651B8342D3E9CA40066B33A /* PenNavUI.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 7651B82E2D3E9CA40066B33A /* PenNavUI.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
76815B27275F381C00E66E94 /* HealthKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76815B26275F381C00E66E94 /* HealthKit.framework */; };
76962ECE28AE5C10004EAE09 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 76962ECD28AE5C10004EAE09 /* GoogleService-Info.plist */; };
76D71B672C6B7F9C00DAFB84 /* HMGPenguinInPlatformBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D71B662C6B7F9C00DAFB84 /* HMGPenguinInPlatformBridge.swift */; };
@@ -51,19 +52,18 @@
E9C8C136256BACDA00EFFB62 /* HMG_Guest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9C8C135256BACDA00EFFB62 /* HMG_Guest.swift */; };
E9E27168256E3A4000F49B69 /* LocalizedFromFlutter.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9E27167256E3A4000F49B69 /* LocalizedFromFlutter.swift */; };
E9F7623B25922BCE00FB5CCF /* FlutterConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9F7623A25922BCE00FB5CCF /* FlutterConstants.swift */; };
- FD7241B0D73FB24C87572FAC /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8E413842321D0D624872E9BE /* Pods_Runner.framework */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
- 768D81742C6DF6E4005C655F /* Embed Frameworks */ = {
+ 7651B8352D3E9CA50066B33A /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
+ buildActionMask = 12;
dstPath = "";
dstSubfolderSpec = 10;
files = (
- 47C935032C91766900981BA7 /* PenguinINRenderer.xcframework in Embed Frameworks */,
- 47C935012C91766800981BA7 /* Penguin.xcframework in Embed Frameworks */,
- 47C935052C91766A00981BA7 /* PenNavUI.xcframework in Embed Frameworks */,
+ 7651B8322D3E9CA40066B33A /* Penguin.xcframework in Embed Frameworks */,
+ 7651B8302D3E9CA40066B33A /* PenguinINRenderer.xcframework in Embed Frameworks */,
+ 7651B8342D3E9CA40066B33A /* PenNavUI.xcframework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
@@ -71,6 +71,7 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
+ 02C0468611167F0E858967A9 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
29631B9D2C96C7F600DF5916 /* PenguinNavigator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PenguinNavigator.swift; sourceTree = ""; };
@@ -79,10 +80,6 @@
306FE6C7271D790C002D6EFC /* OpenTokPlatformBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenTokPlatformBridge.swift; sourceTree = ""; };
306FE6CA271D8B73002D6EFC /* OpenTok.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenTok.swift; sourceTree = ""; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
- 47C934FA2C91766400981BA7 /* PenguinINRenderer.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = PenguinINRenderer.xcframework; path = Frameworks/PenguinINRenderer.xcframework; sourceTree = ""; };
- 47C934FB2C91766400981BA7 /* PenNavUI.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = PenNavUI.xcframework; path = Frameworks/PenNavUI.xcframework; sourceTree = ""; };
- 47C934FC2C91766400981BA7 /* Penguin.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Penguin.xcframework; path = Frameworks/Penguin.xcframework; sourceTree = ""; };
- 6EE8819867EC2775AB578377 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
762D738C274E42650063CE73 /* ring_30Sec.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = ring_30Sec.caf; path = ../../assets/sounds/ring_30Sec.caf; sourceTree = ""; };
@@ -90,6 +87,9 @@
7643E4042BE0D0B400BD2F25 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Main_Custom.strings; sourceTree = ""; };
7643E4052BE0D0B400BD2F25 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Main.strings; sourceTree = ""; };
7643E4062BE0D0B400BD2F25 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/LaunchScreen.strings; sourceTree = ""; };
+ 7651B82C2D3E9CA40066B33A /* PenguinINRenderer.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = PenguinINRenderer.xcframework; path = Frameworks/PenguinINRenderer.xcframework; sourceTree = ""; };
+ 7651B82D2D3E9CA40066B33A /* Penguin.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Penguin.xcframework; path = Frameworks/Penguin.xcframework; sourceTree = ""; };
+ 7651B82E2D3E9CA40066B33A /* PenNavUI.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = PenNavUI.xcframework; path = Frameworks/PenNavUI.xcframework; sourceTree = ""; };
76815B26275F381C00E66E94 /* HealthKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = HealthKit.framework; path = System/Library/Frameworks/HealthKit.framework; sourceTree = SDKROOT; };
76962ECD28AE5C10004EAE09 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; };
76D71B662C6B7F9C00DAFB84 /* HMGPenguinInPlatformBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HMGPenguinInPlatformBridge.swift; sourceTree = ""; };
@@ -99,8 +99,6 @@
76D71B6F2C6B81EA00DAFB84 /* PenguinViewFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PenguinViewFactory.swift; sourceTree = ""; };
76F2556027F1FFED0062C1CD /* PassKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PassKit.framework; path = System/Library/Frameworks/PassKit.framework; sourceTree = SDKROOT; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
- 838788A2BEDC4910F4B029A6 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
- 8E413842321D0D624872E9BE /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -108,6 +106,9 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 9E4A8F0312C6AED5D3DC152C /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
+ C56AF9B31AA04A5292EEA39F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D72A14381E2E5999FC41D0A8 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
E91B538D256AAA6500E96549 /* GlobalHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GlobalHelper.swift; sourceTree = ""; };
E91B538E256AAA6500E96549 /* Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; };
E91B538F256AAA6500E96549 /* API.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = API.swift; sourceTree = ""; };
@@ -126,7 +127,6 @@
E9C8C135256BACDA00EFFB62 /* HMG_Guest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HMG_Guest.swift; sourceTree = ""; };
E9E27167256E3A4000F49B69 /* LocalizedFromFlutter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalizedFromFlutter.swift; sourceTree = ""; };
E9F7623A25922BCE00FB5CCF /* FlutterConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlutterConstants.swift; sourceTree = ""; };
- F2C7D3C4718A1DED85DA3AD4 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -134,13 +134,13 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 7651B8312D3E9CA40066B33A /* Penguin.xcframework in Frameworks */,
76F2556127F1FFED0062C1CD /* PassKit.framework in Frameworks */,
76815B27275F381C00E66E94 /* HealthKit.framework in Frameworks */,
E9620805255C2ED100D3A35D /* NetworkExtension.framework in Frameworks */,
- 47C935042C91766A00981BA7 /* PenNavUI.xcframework in Frameworks */,
- 47C935002C91766800981BA7 /* Penguin.xcframework in Frameworks */,
- 47C935022C91766900981BA7 /* PenguinINRenderer.xcframework in Frameworks */,
- FD7241B0D73FB24C87572FAC /* Pods_Runner.framework in Frameworks */,
+ 7651B8332D3E9CA40066B33A /* PenNavUI.xcframework in Frameworks */,
+ 7651B82F2D3E9CA40066B33A /* PenguinINRenderer.xcframework in Frameworks */,
+ 55DE18989C1F69DC483B9FB6 /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -160,13 +160,13 @@
555EAAA626EFB641859EF0BE /* Frameworks */ = {
isa = PBXGroup;
children = (
- 47C934FC2C91766400981BA7 /* Penguin.xcframework */,
- 47C934FA2C91766400981BA7 /* PenguinINRenderer.xcframework */,
- 47C934FB2C91766400981BA7 /* PenNavUI.xcframework */,
+ 7651B82D2D3E9CA40066B33A /* Penguin.xcframework */,
+ 7651B82C2D3E9CA40066B33A /* PenguinINRenderer.xcframework */,
+ 7651B82E2D3E9CA40066B33A /* PenNavUI.xcframework */,
76F2556027F1FFED0062C1CD /* PassKit.framework */,
76815B26275F381C00E66E94 /* HealthKit.framework */,
E9620804255C2ED100D3A35D /* NetworkExtension.framework */,
- 8E413842321D0D624872E9BE /* Pods_Runner.framework */,
+ C56AF9B31AA04A5292EEA39F /* Pods_Runner.framework */,
);
name = Frameworks;
sourceTree = "";
@@ -174,9 +174,9 @@
605039E5DDF72C245F9765FE /* Pods */ = {
isa = PBXGroup;
children = (
- F2C7D3C4718A1DED85DA3AD4 /* Pods-Runner.debug.xcconfig */,
- 838788A2BEDC4910F4B029A6 /* Pods-Runner.release.xcconfig */,
- 6EE8819867EC2775AB578377 /* Pods-Runner.profile.xcconfig */,
+ D72A14381E2E5999FC41D0A8 /* Pods-Runner.debug.xcconfig */,
+ 02C0468611167F0E858967A9 /* Pods-Runner.release.xcconfig */,
+ 9E4A8F0312C6AED5D3DC152C /* Pods-Runner.profile.xcconfig */,
);
path = Pods;
sourceTree = "";
@@ -293,15 +293,15 @@
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
- 6D0B2FE51DC05E2D0395E861 /* [CP] Check Pods Manifest.lock */,
+ BEE88E0BBD555ACCD7E82B57 /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
- 768D81742C6DF6E4005C655F /* Embed Frameworks */,
+ 7651B8352D3E9CA50066B33A /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
- 487FDD6493EB9AE7D8E39485 /* [CP] Embed Pods Frameworks */,
- 4671D3CD126F6635F4B75A6E /* [CP] Copy Pods Resources */,
+ 191312D8478950EB12CBDD28 /* [CP] Embed Pods Frameworks */,
+ 4CC68CB45B720A365C7CF7DC /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -368,6 +368,23 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
+ 191312D8478950EB12CBDD28 /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
@@ -384,7 +401,7 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin\n";
};
- 4671D3CD126F6635F4B75A6E /* [CP] Copy Pods Resources */ = {
+ 4CC68CB45B720A365C7CF7DC /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -401,24 +418,22 @@
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
showEnvVarsInLog = 0;
};
- 487FDD6493EB9AE7D8E39485 /* [CP] Embed Pods Frameworks */ = {
+ 9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
- inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ inputPaths = (
);
- name = "[CP] Embed Pods Frameworks";
- outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ name = "Run Script";
+ outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
- showEnvVarsInLog = 0;
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n";
};
- 6D0B2FE51DC05E2D0395E861 /* [CP] Check Pods Manifest.lock */ = {
+ BEE88E0BBD555ACCD7E82B57 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -440,21 +455,6 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
- 9740EEB61CF901F6004384FC /* Run Script */ = {
- isa = PBXShellScriptBuildPhase;
- alwaysOutOfDate = 1;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- );
- name = "Run Script";
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
- };
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -583,12 +583,13 @@
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 1;
+ CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_TEAM = 3A359E86ZF;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
+ "$(SRCROOT)/Frameworks",
);
INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
@@ -600,7 +601,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
- MARKETING_VERSION = 4.5.991;
+ MARKETING_VERSION = 4.5.999;
PRODUCT_BUNDLE_IDENTIFIER = "com.HMG.HMG-Smartphone";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -734,12 +735,13 @@
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 1;
+ CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_TEAM = 3A359E86ZF;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
+ "$(SRCROOT)/Frameworks",
);
INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
@@ -751,7 +753,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
- MARKETING_VERSION = 4.5.991;
+ MARKETING_VERSION = 4.5.999;
PRODUCT_BUNDLE_IDENTIFIER = "com.HMG.HMG-Smartphone";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -777,12 +779,13 @@
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 1;
+ CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_TEAM = 3A359E86ZF;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
+ "$(SRCROOT)/Frameworks",
);
INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
@@ -794,7 +797,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
- MARKETING_VERSION = 4.5.991;
+ MARKETING_VERSION = 4.5.999;
PRODUCT_BUNDLE_IDENTIFIER = "com.HMG.HMG-Smartphone";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
diff --git a/lib/config/config.dart b/lib/config/config.dart
index 71dc2a20..04f86877 100644
--- a/lib/config/config.dart
+++ b/lib/config/config.dart
@@ -352,7 +352,7 @@ var CAN_PAY_FOR_FOR_WALKIN_APPOINTMENT = 'Services/Doctors.svc/REST/CanPayForWal
var CHANNEL = 3;
var GENERAL_ID = 'Cs2020@2016\$2958';
var IP_ADDRESS = '10.20.10.20';
-var VERSION_ID = 17.1;
+var VERSION_ID = 17.4;
var SETUP_ID = '91877';
var LANGUAGE = 2;
// var PATIENT_OUT_SA = 0;
@@ -694,6 +694,8 @@ var GET_PROJECT_FROM_NFC = 'Services/OUTPs.svc/Rest/GetProjectByNFC';
var GET_PATIENT_OCCUPATION_LIST = 'Services/Authentication.svc/REST/GetPatientOccupation';
+var IS_DOCTOR_AVAILABLE_BY_CALENDAR_SCHEDULE = 'Services/OUTPs.svc/REST/HIS_IsDoctorAvailableByCalendarSchedule';
+
//PAYFORT
var getPayFortProjectDetails = "Services/PayFort_Serv.svc/REST/GetPayFortProjectDetails";
var addPayFortApplePayResponse = "Services/PayFort_Serv.svc/REST/AddResponse";
diff --git a/lib/core/service/client/base_app_client.dart b/lib/core/service/client/base_app_client.dart
index db0ee615..8faf93bd 100644
--- a/lib/core/service/client/base_app_client.dart
+++ b/lib/core/service/client/base_app_client.dart
@@ -187,7 +187,7 @@ class BaseAppClient {
// body['IdentificationNo'] = 1023854217;
// body['MobileNo'] = "531940021"; //0560717232
- // body['PatientID'] = 1058229; //4609100
+ // body['PatientID'] = 5185584; //4609100
// body['TokenID'] = "@dm!n";
// Patient ID: 3027574
diff --git a/lib/core/service/medical/ask_doctor_services.dart b/lib/core/service/medical/ask_doctor_services.dart
index 9491354a..95597955 100644
--- a/lib/core/service/medical/ask_doctor_services.dart
+++ b/lib/core/service/medical/ask_doctor_services.dart
@@ -29,6 +29,25 @@ class AskDoctorService extends BaseService {
return Future.value(localRes);
}
+ Future isDoctorAvailable({int? projectId, int? doctorId, int? clinicId}) async {
+ hasError = false;
+ Map body = Map();
+ body['isDentalAllowedBackend'] = false;
+ body['DoctorID'] = doctorId;
+ body['ProjectID'] = projectId;
+ body['ClinicID'] = clinicId;
+
+ dynamic localRes;
+
+ await baseAppClient.post(IS_DOCTOR_AVAILABLE_BY_CALENDAR_SCHEDULE, onSuccess: (dynamic response, int statusCode) {
+ localRes = response;
+ }, onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: body);
+ return Future.value(localRes);
+ }
+
Future getCallRequestTypeLOV() async {
hasError = false;
Map body = Map();
diff --git a/lib/core/service/medical/labs_service.dart b/lib/core/service/medical/labs_service.dart
index 8ca246a0..c03b29f4 100644
--- a/lib/core/service/medical/labs_service.dart
+++ b/lib/core/service/medical/labs_service.dart
@@ -42,7 +42,7 @@ class LabsService extends BaseService {
_requestPatientLabSpecialResult.invoiceNo = isVidaPlus! ? "0" : invoiceNo;
_requestPatientLabSpecialResult.invoiceNoVP = isVidaPlus ? invoiceNo : "0";
- _requestPatientLabSpecialResult.invoiceType = invoiceType!;
+ _requestPatientLabSpecialResult.invoiceType = invoiceType ?? "";
_requestPatientLabSpecialResult.orderNo = orderNo;
_requestPatientLabSpecialResult.setupID = setupID;
diff --git a/lib/pages/AlHabibMedicalService/ancillary-orders/ancillaryOrdersDetails.dart b/lib/pages/AlHabibMedicalService/ancillary-orders/ancillaryOrdersDetails.dart
index cb1183ef..33a7cbd6 100644
--- a/lib/pages/AlHabibMedicalService/ancillary-orders/ancillaryOrdersDetails.dart
+++ b/lib/pages/AlHabibMedicalService/ancillary-orders/ancillaryOrdersDetails.dart
@@ -670,8 +670,8 @@ class _AnicllaryOrdersState extends State with SingleTic
currency: projectViewModel.user.outSA == 1 ? "AED" : "SAR",
onFailed: (failureResult) async {
GifLoaderDialogUtils.hideDialog(context);
- log("failureResult: ${failureResult.toString()}");
- AppToast.showErrorToast(message: failureResult.toString());
+ log("failureResult: ${failureResult.message.toString()}");
+ AppToast.showErrorToast(message: failureResult.message.toString());
},
onSuccess: (successResult) async {
log("Payfort: ${successResult.responseMessage}");
diff --git a/lib/pages/BookAppointment/BookConfirm.dart b/lib/pages/BookAppointment/BookConfirm.dart
index 65dfa1b1..cd2d8c7a 100644
--- a/lib/pages/BookAppointment/BookConfirm.dart
+++ b/lib/pages/BookAppointment/BookConfirm.dart
@@ -459,8 +459,9 @@ class _BookConfirmState extends State {
payfortProjectDetailsRespModel: payfortProjectDetailsRespModel,
currency: projectViewModel.user.outSA == 1 ? "AED" : "SAR",
onFailed: (failureResult) async {
- log("failureResult: ${failureResult.toString()}");
- AppToast.showErrorToast(message: failureResult.toString());
+ GifLoaderDialogUtils.hideDialog(context);
+ log("failureResult: ${failureResult.message.toString()}");
+ AppToast.showErrorToast(message: failureResult.message.toString());
},
onSuccess: (successResult) async {
log("Payfort: ${successResult.responseMessage}");
diff --git a/lib/pages/BookAppointment/BookSuccess.dart b/lib/pages/BookAppointment/BookSuccess.dart
index 61bcb977..f4df725b 100644
--- a/lib/pages/BookAppointment/BookSuccess.dart
+++ b/lib/pages/BookAppointment/BookSuccess.dart
@@ -712,8 +712,8 @@ class _BookSuccessState extends State {
currency: projectViewModel.user.outSA == 1 ? "AED" : "SAR",
onFailed: (failureResult) async {
GifLoaderDialogUtils.hideDialog(context);
- log("failureResult: ${failureResult.toString()}");
- AppToast.showErrorToast(message: failureResult.toString());
+ log("failureResult: ${failureResult.message.toString()}");
+ AppToast.showErrorToast(message: failureResult.message.toString());
},
onSuccess: (successResult) async {
log("Payfort: ${successResult.responseMessage}");
diff --git a/lib/pages/BookAppointment/QRCode.dart b/lib/pages/BookAppointment/QRCode.dart
index e27a55bb..c79e1fcf 100644
--- a/lib/pages/BookAppointment/QRCode.dart
+++ b/lib/pages/BookAppointment/QRCode.dart
@@ -389,7 +389,6 @@ class _QRCodeState extends State {
service.sendCheckinNfcRequest(widget!.patientShareResponse!.appointmentNo!, nfcId, widget.patientShareResponse!.projectID!, checkInBy, widget.patientShareResponse!.clinicID!, context).then((res) {
print(res);
-
GifLoaderDialogUtils.hideDialog(context);
_showMyDialog(res["SuccessMsg"], this.context);
}).catchError((err) {
diff --git a/lib/pages/ErService/EROnlineCheckIn/EROnlineCheckInPaymentDetails.dart b/lib/pages/ErService/EROnlineCheckIn/EROnlineCheckInPaymentDetails.dart
index a9873df4..69da5dfc 100644
--- a/lib/pages/ErService/EROnlineCheckIn/EROnlineCheckInPaymentDetails.dart
+++ b/lib/pages/ErService/EROnlineCheckIn/EROnlineCheckInPaymentDetails.dart
@@ -423,8 +423,9 @@ class _EROnlineCheckInPaymentDetailsState extends State with SingleTick
widget.appo.doctorImageURL!,
widget.appo.doctorSpeciality!,
"",
- widget.appo.projectName!,
+ widget.appo.projectName ?? "",
DateUtil.convertStringToDate(widget.appo.appointmentDate!),
widget.appo.isLiveCareAppointment! ? DateUtil.convertStringToDate(widget.appo.appointmentDate!).toString().split(" ")[1].substring(0, 5) : widget.appo.startTime!.substring(0, 5),
"",
diff --git a/lib/pages/MyAppointments/widgets/AppointmentActions.dart b/lib/pages/MyAppointments/widgets/AppointmentActions.dart
index d29030a1..17d463d3 100644
--- a/lib/pages/MyAppointments/widgets/AppointmentActions.dart
+++ b/lib/pages/MyAppointments/widgets/AppointmentActions.dart
@@ -409,6 +409,7 @@ class _AppointmentActionsState extends State {
if (res['ListLabResultsByAppNo'] != null) {
patientLabOrders.orderNo = res['ListLabResultsByAppNo'][0]['OrderNo'].toString();
patientLabOrders.invoiceNo = res['ListLabResultsByAppNo'][0]['InvoiceNo'].toString();
+ patientLabOrders.invoiceType = res['ListLabResultsByAppNo'][0]['InvoiceType'].toString();
patientLabOrders.clinicID = widget.appo.clinicID;
patientLabOrders.clinicDescription = widget.appo.clinicName;
patientLabOrders.projectID = widget.appo.projectID.toString();
diff --git a/lib/pages/ToDoList/ToDo.dart b/lib/pages/ToDoList/ToDo.dart
index bd860008..c5d99320 100644
--- a/lib/pages/ToDoList/ToDo.dart
+++ b/lib/pages/ToDoList/ToDo.dart
@@ -1531,8 +1531,8 @@ class _ToDoState extends State with SingleTickerProviderStateMixin {
currency: projectViewModel.user.outSA == 1 ? "AED" : "SAR",
onFailed: (failureResult) async {
GifLoaderDialogUtils.hideDialog(context);
- log("failureResult: ${failureResult.toString()}");
- AppToast.showErrorToast(message: failureResult.toString());
+ log("failureResult: ${failureResult.message.toString()}");
+ AppToast.showErrorToast(message: failureResult.message.toString());
},
onSuccess: (successResult) async {
log("Payfort: ${successResult.responseMessage}");
diff --git a/lib/pages/insurance/insurance_card_screen.dart b/lib/pages/insurance/insurance_card_screen.dart
index 0bdca4a8..fbe0c87e 100644
--- a/lib/pages/insurance/insurance_card_screen.dart
+++ b/lib/pages/insurance/insurance_card_screen.dart
@@ -171,17 +171,17 @@ class _InsuranceCardState extends State {
SizedBox(
height: 8.5,
),
- if (model.insurance[index].isActive == true)
- Container(
- color: Colors.transparent,
- child: DefaultButton(
- TranslationBase.of(context).seeDetails,
- () => {
- getDetails(model.insurance[index]),
- },
- ),
- width: double.infinity,
- ),
+ // if (model.insurance[index].isActive == true)
+ // Container(
+ // color: Colors.transparent,
+ // child: DefaultButton(
+ // TranslationBase.of(context).seeDetails,
+ // () => {
+ // getDetails(model.insurance[index]),
+ // },
+ // ),
+ // width: double.infinity,
+ // ),
],
),
),
diff --git a/lib/pages/landing/widgets/services_view.dart b/lib/pages/landing/widgets/services_view.dart
index b336887e..8ca7f76b 100644
--- a/lib/pages/landing/widgets/services_view.dart
+++ b/lib/pages/landing/widgets/services_view.dart
@@ -41,6 +41,7 @@ import 'package:diplomaticquarterapp/uitl/penguin_method_channel.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
+import 'package:diplomaticquarterapp/vital_signs/vital_sign.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/covid_consent_dialog.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/location_selection_dialog.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/radio_selection_dialog.dart';
@@ -229,6 +230,9 @@ class ServicesView extends StatelessWidget {
} else if (hmgServices.action == 1) {
openLiveCare(context);
} else if (hmgServices.action == 2) {
+ //todo for temporary basis
+ // Navigator.push(context, FadePage(page: VitalSigns()));
+
// initPenguinSDK();
if (projectViewModel.isIndoorNavigationEnabled) {
if (!isLocked) openNavigationProjectSelection(context);
diff --git a/lib/pages/livecare/live_care_payment_page.dart b/lib/pages/livecare/live_care_payment_page.dart
index ccec389b..028f5bd7 100644
--- a/lib/pages/livecare/live_care_payment_page.dart
+++ b/lib/pages/livecare/live_care_payment_page.dart
@@ -230,36 +230,6 @@ class _LiveCarePatmentPageState extends State {
),
),
mHeight(32.0),
- AutoSizeText(
- TranslationBase.of(context).selectedCallType,
- maxLines: 1,
- minFontSize: 12,
- style: TextStyle(
- fontSize: SizeConfig.textMultiplier! * 2.0,
- fontWeight: FontWeight.w600,
- letterSpacing: -0.39,
- height: 0.8,
- ),
- ),
- mHeight(12.0),
- Row(
- children: [
- SvgPicture.asset(
- getCallTypeImagePath(),
- width: 18,
- height: 18,
- ),
- mWidth(10),
- Text(
- getCallTypeText(),
- style: TextStyle(
- fontSize: 14.0,
- letterSpacing: -0.4,
- fontWeight: FontWeight.w600,
- ),
- ),
- ],
- ),
Container(
margin: EdgeInsets.only(top: 16.0),
child: Row(
@@ -300,6 +270,36 @@ class _LiveCarePatmentPageState extends State {
],
),
),
+ AutoSizeText(
+ TranslationBase.of(context).selectedCallType,
+ maxLines: 1,
+ minFontSize: 12,
+ style: TextStyle(
+ fontSize: SizeConfig.textMultiplier! * 2.0,
+ fontWeight: FontWeight.w600,
+ letterSpacing: -0.39,
+ height: 0.8,
+ ),
+ ),
+ mHeight(12.0),
+ Row(
+ children: [
+ SvgPicture.asset(
+ getCallTypeImagePath(),
+ width: 18,
+ height: 18,
+ ),
+ mWidth(10),
+ Text(
+ getCallTypeText(),
+ style: TextStyle(
+ fontSize: 14.0,
+ letterSpacing: -0.4,
+ fontWeight: FontWeight.w600,
+ ),
+ ),
+ ],
+ ),
mFlex(1),
Text(
TranslationBase.of(context).upComingPayOption,
diff --git a/lib/pages/livecare/widgets/clinic_list.dart b/lib/pages/livecare/widgets/clinic_list.dart
index cdb600dc..b0a5df48 100644
--- a/lib/pages/livecare/widgets/clinic_list.dart
+++ b/lib/pages/livecare/widgets/clinic_list.dart
@@ -486,9 +486,9 @@ class _clinic_listState extends State {
payfortProjectDetailsRespModel: payfortProjectDetailsRespModel,
currency: projectViewModel.user.outSA == 1 ? "AED" : "SAR",
onFailed: (failureResult) async {
- log("failureResult: ${failureResult.toString()}");
- GifLoaderDialogUtils.hideDialog(localContext!);
- AppToast.showErrorToast(message: failureResult.toString());
+ GifLoaderDialogUtils.hideDialog(context);
+ log("failureResult: ${failureResult.message.toString()}");
+ AppToast.showErrorToast(message: failureResult.message.toString());
},
onSuccess: (successResult) async {
GifLoaderDialogUtils.hideDialog(localContext!);
diff --git a/lib/pages/login/confirm-login.dart b/lib/pages/login/confirm-login.dart
index b43d9823..b02674c7 100644
--- a/lib/pages/login/confirm-login.dart
+++ b/lib/pages/login/confirm-login.dart
@@ -30,6 +30,7 @@ import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart';
+import 'package:diplomaticquarterapp/uitl/whatsapp_method_channel.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
@@ -344,7 +345,18 @@ class _ConfirmLogin extends State {
sharedPref.setInt(LAST_LOGIN, this.selectedOption); //this.cs.sharedService.setStorage(this.selectedOption, AuthenticationService.LAST_LOGIN);
}
- loginWithSMS(type) {
+ loginWithSMS(type) async {
+ if (type == 4) {
+ var channel = WhatsappMethodChannel();
+ // var whatsappStatus = await channel.isWhatsAppInstalled();
+ // if(whatsappStatus) {
+ // print("whatapp is installed");
+ channel.handleHandShake();
+ // }else{
+ // print("whatapp is not installed");
+ // }
+ }
+
//if (!el.disabled) {
if (this.user != null && this.registerd_data == null) {
this.checkUserAuthentication(type);
@@ -697,37 +709,37 @@ class _ConfirmLogin extends State {
}
checkIfUserAgreedBefore(CheckActivationCode result) {
- // this.authService.checkIfUserAgreed().then((result) {
- // if (result['IsPatientAlreadyAgreed']) {
- // goToHome();
- // } else {
- // this.authService.getUserAgreementContent().then((result) {
- // GifLoaderDialogUtils.hideDialog(AppGlobal.context);
- // Navigator.pushAndRemoveUntil(
- // context,
- // FadePage(
- // page: UserLoginAgreementPage(
- // userAgreementText: result['UserAgreementContent'],
- // authenticatedUserObject: authenticatedUserObject,
- // appointmentRateViewModel: appointmentRateViewModel,
- // selectedOption: selectedOption,
- // ),
- // ),
- // (r) => false);
- // }).catchError((err) {
- // GifLoaderDialogUtils.hideDialog(context);
- // print(err);
- // });
- // }
- // }).catchError((err) {
- // GifLoaderDialogUtils.hideDialog(context);
- // print(err);
- // });
+ this.authService.checkIfUserAgreed().then((result) {
+ if (result['IsPatientAlreadyAgreed']) {
+ goToHome();
+ } else {
+ this.authService.getUserAgreementContent().then((result) {
+ GifLoaderDialogUtils.hideDialog(AppGlobal.context);
+ Navigator.pushAndRemoveUntil(
+ context,
+ FadePage(
+ page: UserLoginAgreementPage(
+ userAgreementText: result['UserAgreementContent'],
+ authenticatedUserObject: authenticatedUserObject,
+ appointmentRateViewModel: appointmentRateViewModel,
+ selectedOption: selectedOption,
+ ),
+ ),
+ (r) => false);
+ }).catchError((err) {
+ GifLoaderDialogUtils.hideDialog(context);
+ print(err);
+ });
+ }
+ }).catchError((err) {
+ GifLoaderDialogUtils.hideDialog(context);
+ print(err);
+ });
// if (result.isNeedUserAgreement == true) {
- //move to agreement page.
+ // // move to agreement page.
// } else {
- goToHome();
+ // goToHome();
// }
}
diff --git a/lib/pages/login/login.dart b/lib/pages/login/login.dart
index beb047f5..832e0a1e 100644
--- a/lib/pages/login/login.dart
+++ b/lib/pages/login/login.dart
@@ -362,12 +362,12 @@ class _Login extends State {
projectViewModel.setPrivilege(privilegeList: result);
result = CheckActivationCode.fromJson(result);
result.list.isFamily = false;
- this.sharedPref.setString(BLOOD_TYPE,
+ await this.sharedPref.setString(BLOOD_TYPE,
result.patientBloodType != null ? result.patientBloodType : "");
- this.sharedPref.setObject(USER_PROFILE, result.list);
- this.sharedPref.setObject(MAIN_USER, result.list);
- this.sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID);
- this.sharedPref.setString(TOKEN, result.authenticationTokenID);
+ await this.sharedPref.setObject(USER_PROFILE, result.list);
+ await this.sharedPref.setObject(MAIN_USER, result.list);
+ await this.sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID);
+ await this.sharedPref.setString(TOKEN, result.authenticationTokenID);
await authenticatedUserObject.getUser(getUser: true);
authenticatedUserObject.isLogin = true;
appointmentRateViewModel.isLogin = true;
diff --git a/lib/pages/medical/ask_doctor/ask_doctor_page.dart b/lib/pages/medical/ask_doctor/ask_doctor_page.dart
index ab032541..09db7ba5 100644
--- a/lib/pages/medical/ask_doctor/ask_doctor_page.dart
+++ b/lib/pages/medical/ask_doctor/ask_doctor_page.dart
@@ -80,21 +80,23 @@ class AskDoctorPage extends StatelessWidget {
doctor: doctorList,
isLiveCareAppointment: false,
isShowFlag: false,
- onTap: () {
- GifLoaderDialogUtils.showMyDialog(context);
- service.getCallInfoHoursResult(doctorId: _doctor.doctorID, projectId: _doctor.projectID).then((res) {
- GifLoaderDialogUtils.hideDialog(context);
- Navigator.push(
- context,
- FadePage(
- page: RequestTypePage(doctorList: _doctor),
- ),
- );
- }).catchError((err) {
- GifLoaderDialogUtils.hideDialog(context);
- if (err != null) AppToast.showErrorToast(message: err.toString());
- print(err);
- });
+ onTap: () async {
+ if (await checkIfDoctorAvailable(_doctor, context)) {
+ GifLoaderDialogUtils.showMyDialog(context);
+ service.getCallInfoHoursResult(doctorId: _doctor.doctorID, projectId: _doctor.projectID).then((res) {
+ GifLoaderDialogUtils.hideDialog(context);
+ Navigator.push(
+ context,
+ FadePage(
+ page: RequestTypePage(doctorList: _doctor),
+ ),
+ );
+ }).catchError((err) {
+ GifLoaderDialogUtils.hideDialog(context);
+ if (err != null) AppToast.showErrorToast(message: err.toString());
+ print(err);
+ });
+ }
},
);
},
@@ -106,6 +108,27 @@ class AskDoctorPage extends StatelessWidget {
);
}
+ Future checkIfDoctorAvailable(DoctorList _doctor, BuildContext context) {
+ bool isAvailable = false;
+ GifLoaderDialogUtils.showMyDialog(context);
+ service.isDoctorAvailable(doctorId: _doctor.doctorID, projectId: _doctor.projectID, clinicId: _doctor.clinicID).then((res) {
+ GifLoaderDialogUtils.hideDialog(context);
+ print(res['IsDoctorAvailable']);
+ if (res['IsDoctorAvailable']) {
+ isAvailable = true;
+ } else {
+ isAvailable = false;
+ AppToast.showErrorToast(message: res['endUserMessage']);
+ }
+ }).catchError((err) {
+ GifLoaderDialogUtils.hideDialog(context);
+ if (err != null) AppToast.showErrorToast(message: err.toString());
+ print(err);
+ });
+
+ return Future.value(isAvailable);
+ }
+
String getDate(String date) {
DateTime dateObj = DateUtil.convertStringToDate(date);
return DateUtil.getWeekDay(dateObj.weekday) +
diff --git a/lib/pages/medical/balance/confirm_payment_page.dart b/lib/pages/medical/balance/confirm_payment_page.dart
index da9570f2..0c0f354c 100644
--- a/lib/pages/medical/balance/confirm_payment_page.dart
+++ b/lib/pages/medical/balance/confirm_payment_page.dart
@@ -330,8 +330,8 @@ class _ConfirmPaymentPageState extends State {
currency: projectViewModel.authenticatedUserObject.user.outSA == 1 ? "AED" : "SAR",
onFailed: (failureResult) async {
GifLoaderDialogUtils.hideDialog(context);
- log("failureResult: ${failureResult.toString()}");
- AppToast.showErrorToast(message: failureResult.toString());
+ log("failureResult: ${failureResult.message.toString()}");
+ AppToast.showErrorToast(message: failureResult.message.toString());
},
onSuccess: (successResult) async {
log("Payfort: ${successResult.responseMessage}");
diff --git a/lib/services/authentication/auth_provider.dart b/lib/services/authentication/auth_provider.dart
index d9b9935e..4a8a896c 100644
--- a/lib/services/authentication/auth_provider.dart
+++ b/lib/services/authentication/auth_provider.dart
@@ -1777,7 +1777,7 @@ class AuthProvider with ChangeNotifier {
Future checkIfUserAgreed() async {
Map request;
- request = {"Region": 1};
+ request = {"Region": 1, "SessionID": SESSION_ID};
dynamic localRes;
try {
await new BaseAppClient().post(CHECK_USAGE_AGREEMENT, onSuccess: (dynamic response, int statusCode) {
diff --git a/lib/services/clinic_services/get_clinic_service.dart b/lib/services/clinic_services/get_clinic_service.dart
index af2828cc..e1bda009 100644
--- a/lib/services/clinic_services/get_clinic_service.dart
+++ b/lib/services/clinic_services/get_clinic_service.dart
@@ -184,12 +184,13 @@ class ClinicListService extends BaseService {
return Future.value(localRes);
}
- Future