diff --git a/android/app/build.gradle b/android/app/build.gradle
index f1799225..3b2fb467 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -56,6 +56,10 @@ android {
compileSdkVersion 34
// ndkVersion "24.0.8215888"
+ buildFeatures {
+ viewBinding true
+ }
+
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
@@ -126,6 +130,7 @@ android {
compileOptions {
+// coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
@@ -136,6 +141,8 @@ flutter {
}
dependencies {
+// coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
+
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "com.google.firebase:firebase-messaging:21.0.0"
// implementation ('com.google.firebase:firebase-inappmessaging-display:19.1.2',{
@@ -163,9 +170,33 @@ dependencies {
// implementation "us.zoom.videosdk:ZoomVideoSDK:1.10.11"
// implementation group: 'us.zoom.videosdk', name: 'zoomvideosdk-core', version: '1.10.11'
- implementation "us.zoom.videosdk:zoomvideosdk-core:1.10.1"
- implementation "us.zoom.videosdk:zoomvideosdk-annotation:1.10.1"
- implementation "us.zoom.videosdk:zoomvideosdk-videoeffects:1.10.1"
+// implementation "us.zoom.videosdk:zoomvideosdk-core:1.10.1"
+// implementation "us.zoom.videosdk:zoomvideosdk-annotation:1.10.1"
+// implementation "us.zoom.videosdk:zoomvideosdk-videoeffects:1.10.1"
+
+ implementation 'com.squareup.okhttp3:logging-interceptor:4.9.3'
+ implementation 'com.squareup.retrofit2:retrofit:2.9.0'
+ implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
+ implementation 'com.squareup.retrofit2:adapter-java8:2.4.0'
+ implementation 'com.google.code.gson:gson:2.8.9'
+ implementation 'com.google.android.gms:play-services-location:21.3.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.10.0'
+ implementation 'androidx.test.ext:junit:1.1.5'
+ implementation 'com.android.volley:volley:1.2.1'
+ def room_version = "2.4.0-alpha04"
+ implementation "androidx.room:room-runtime:$room_version"
+ annotationProcessor "androidx.room:room-compiler:$room_version"
+ implementation 'net.zetetic:android-database-sqlcipher:4.5.2'
+ implementation 'com.intuit.ssp:ssp-android:1.1.0'
+ implementation 'com.intuit.sdp:sdp-android:1.1.0'
+ implementation 'com.github.bumptech.glide:glide:4.12.0'
+ annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
+
+ implementation "com.mapbox.maps:android:10.16.6"
+
+ 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
@@ -177,6 +208,7 @@ dependencies {
implementation 'com.facebook.stetho:stetho-urlconnection:1.5.1'
implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.appcompat:appcompat:1.3.1'
+ implementation 'com.google.android.material:material:1.9.0'
androidTestImplementation "androidx.test:core:1.4.0"
}
diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro
index 69cd8026..ab7b2ca4 100644
--- a/android/app/proguard-rules.pro
+++ b/android/app/proguard-rules.pro
@@ -53,4 +53,20 @@
}
-dontwarn com.opentok.android.**
--dontwarn com.opentok.otc.**
\ No newline at end of file
+-dontwarn com.opentok.otc.**
+
+-dontwarn penguin.com.pennav.Model.Navigation.NearLandmark
+
+-keep,includedescriptorclasses class net.sqlcipher.** { *; }
+-keep,includedescriptorclasses interface net.sqlcipher.** { *; }
+
+-keep class retrofit2.** { *; }
+-keep class okhttp3.** { *; }
+-dontwarn retrofit2.**
+
+-keep class com.google.gson.** { *; }
+-dontwarn com.google.gson.**
+
+# Penguin classes
+-keep class com.peng.pennavmap.models.** { *; }
+-keep class com.peng.pennavmap.db.** { *; }
\ No newline at end of file
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index b1540644..67bc20bf 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -21,7 +21,7 @@
-
+
@@ -42,6 +42,7 @@
+
@@ -65,7 +66,7 @@
android:screenOrientation="sensorPortrait"
android:allowBackup="false"
android:extractNativeLibs="true"
- tools:replace="android:extractNativeLibs"
+ tools:replace="android:extractNativeLibs,android:label"
android:label="Dr. Alhabib">
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 8aa1ef85..c6da60fa 100644
--- a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/MainActivity.kt
+++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/MainActivity.kt
@@ -9,6 +9,7 @@ import android.util.Log
import android.os.Build
import android.view.WindowManager
import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi
import com.ejada.hmg.utils.*
import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.embedding.engine.FlutterEngine
@@ -16,6 +17,7 @@ import io.flutter.plugin.common.MethodChannel
import io.flutter.plugins.GeneratedPluginRegistrant
class MainActivity: FlutterFragmentActivity() {
+ @RequiresApi(Build.VERSION_CODES.O)
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
// Create Flutter Platform Bridge
@@ -23,6 +25,7 @@ class MainActivity: FlutterFragmentActivity() {
PlatformBridge(flutterEngine, this).create()
OpenTokPlatformBridge(flutterEngine, this).create()
+ PenguinInPlatformBridge(flutterEngine, this).create()
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// val mChannel = NotificationChannel("video_call_noti", "video call", NotificationManager.IMPORTANCE_HIGH)
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
index 4e107030..1093435a 100644
--- a/android/app/src/main/res/values/strings.xml
+++ b/android/app/src/main/res/values/strings.xml
@@ -19,4 +19,5 @@
Geofence requests happened too frequently.
+ sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg
diff --git a/android/build.gradle b/android/build.gradle
index b5185cca..dfa013d5 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -13,6 +13,20 @@ buildscript {
google()
jcenter()
maven { url 'https://developer.huawei.com/repo/' }
+ maven {
+ url 'https://api.mapbox.com/downloads/v2/releases/maven'
+
+ credentials {
+ username = 'mapbox'
+ password = "sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg"
+ if (password == null || password == "") {
+ throw new GradleException("MAPBOX_DOWNLOADS_TOKEN isn't set. Set it to the project properties or to the enviroment variables.")
+ }
+ }
+ authentication {
+ basic(BasicAuthentication)
+ }
+ }
// maven {
// url "https://dl.bintray.com/kotlin/kotlin-eap/"
@@ -34,12 +48,29 @@ allprojects {
google()
// jcenter()
mavenCentral()
+ flatDir {
+ dirs 'libs'
+ }
maven {
url 'https://developer.huawei.com/repo/'
}
maven {
url "https://artifactory.ess-dev.com/artifactory/gradle-dev-local"
}
+ maven {
+ url 'https://api.mapbox.com/downloads/v2/releases/maven'
+
+ credentials {
+ username = 'mapbox'
+ password = "sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg"
+ if (password == null || password == "") {
+ throw new GradleException("MAPBOX_DOWNLOADS_TOKEN isn't set. Set it to the project properties or to the enviroment variables.")
+ }
+ }
+ authentication {
+ basic(BasicAuthentication)
+ }
+ }
}
}
diff --git a/android/gradle.properties b/android/gradle.properties
index 06a44c05..cf554544 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -3,3 +3,5 @@ org.gradle.jvmargs=-Xmx4096m
android.useAndroidX=true
android.enableJetifier=true
android.suppressUnsupportedCompileSdk=33
+MAPBOX_USER_NAME = "mapbox"
+MAPBOX_DOWNLOADS_TOKEN="sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg"
\ No newline at end of file
diff --git a/ios/Podfile b/ios/Podfile
index 5495f0ca..f6415e64 100644
--- a/ios/Podfile
+++ b/ios/Podfile
@@ -33,6 +33,7 @@ target 'Runner' do
pod 'OpenTok', '~> 2.22.0'
pod 'VTO2Lib'
+ pod 'MapboxMaps', '10.16.4'
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end
@@ -54,6 +55,7 @@ post_install do |installer|
]
build_configuration.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64 i386'
build_configuration.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
+ build_configuration.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
xcconfig_path = build_configuration.base_configuration_reference.real_path
xcconfig = File.read(xcconfig_path)
xcconfig_mod = xcconfig.gsub(/DT_TOOLCHAIN_DIR/, "TOOLCHAIN_DIR")
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index 130bc8cc..227416ca 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -19,6 +19,17 @@
762D738F274E42650063CE73 /* ring_30Sec.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 762D738D274E42650063CE73 /* ring_30Sec.mp3 */; };
76815B27275F381C00E66E94 /* HealthKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76815B26275F381C00E66E94 /* HealthKit.framework */; };
76962ECE28AE5C10004EAE09 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 76962ECD28AE5C10004EAE09 /* GoogleService-Info.plist */; };
+ 76D71B602C6B7B0000DAFB84 /* Penguin.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76D71B5C2C6B7ABB00DAFB84 /* Penguin.xcframework */; };
+ 76D71B612C6B7B0000DAFB84 /* Penguin.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 76D71B5C2C6B7ABB00DAFB84 /* Penguin.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ 76D71B622C6B7B0100DAFB84 /* PenguinINRenderer.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76D71B5B2C6B7ABB00DAFB84 /* PenguinINRenderer.xcframework */; };
+ 76D71B632C6B7B0100DAFB84 /* PenguinINRenderer.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 76D71B5B2C6B7ABB00DAFB84 /* PenguinINRenderer.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ 76D71B642C6B7B0200DAFB84 /* PenNavUI.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76D71B5A2C6B7ABB00DAFB84 /* PenNavUI.xcframework */; };
+ 76D71B652C6B7B0200DAFB84 /* PenNavUI.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 76D71B5A2C6B7ABB00DAFB84 /* PenNavUI.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ 76D71B672C6B7F9C00DAFB84 /* HMGPenguinInPlatformBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D71B662C6B7F9C00DAFB84 /* HMGPenguinInPlatformBridge.swift */; };
+ 76D71B6A2C6B819000DAFB84 /* PenguinModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D71B692C6B819000DAFB84 /* PenguinModel.swift */; };
+ 76D71B6C2C6B81B300DAFB84 /* PenguinView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D71B6B2C6B81B300DAFB84 /* PenguinView.swift */; };
+ 76D71B6E2C6B81CC00DAFB84 /* PenguinPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D71B6D2C6B81CC00DAFB84 /* PenguinPlugin.swift */; };
+ 76D71B702C6B81EA00DAFB84 /* PenguinViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D71B6F2C6B81EA00DAFB84 /* PenguinViewFactory.swift */; };
76F2556127F1FFED0062C1CD /* PassKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76F2556027F1FFED0062C1CD /* PassKit.framework */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
@@ -49,6 +60,9 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
+ 76D71B632C6B7B0100DAFB84 /* PenguinINRenderer.xcframework in Embed Frameworks */,
+ 76D71B612C6B7B0000DAFB84 /* Penguin.xcframework in Embed Frameworks */,
+ 76D71B652C6B7B0200DAFB84 /* PenNavUI.xcframework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
@@ -74,6 +88,14 @@
7643E4062BE0D0B400BD2F25 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/LaunchScreen.strings; 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 = ""; };
+ 76D71B5A2C6B7ABB00DAFB84 /* PenNavUI.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = PenNavUI.xcframework; path = Frameworks/PenNavUI.xcframework; sourceTree = ""; };
+ 76D71B5B2C6B7ABB00DAFB84 /* PenguinINRenderer.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = PenguinINRenderer.xcframework; path = Frameworks/PenguinINRenderer.xcframework; sourceTree = ""; };
+ 76D71B5C2C6B7ABB00DAFB84 /* Penguin.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Penguin.xcframework; path = Frameworks/Penguin.xcframework; sourceTree = ""; };
+ 76D71B662C6B7F9C00DAFB84 /* HMGPenguinInPlatformBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HMGPenguinInPlatformBridge.swift; sourceTree = ""; };
+ 76D71B692C6B819000DAFB84 /* PenguinModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PenguinModel.swift; sourceTree = ""; };
+ 76D71B6B2C6B81B300DAFB84 /* PenguinView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PenguinView.swift; sourceTree = ""; };
+ 76D71B6D2C6B81CC00DAFB84 /* PenguinPlugin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PenguinPlugin.swift; sourceTree = ""; };
+ 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 = ""; };
@@ -114,6 +136,9 @@
76815B27275F381C00E66E94 /* HealthKit.framework in Frameworks */,
E9620805255C2ED100D3A35D /* NetworkExtension.framework in Frameworks */,
4EE411B2E3CB5D4F81AE5078 /* Pods_Runner.framework in Frameworks */,
+ 76D71B642C6B7B0200DAFB84 /* PenNavUI.xcframework in Frameworks */,
+ 76D71B602C6B7B0000DAFB84 /* Penguin.xcframework in Frameworks */,
+ 76D71B622C6B7B0100DAFB84 /* PenguinINRenderer.xcframework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -133,6 +158,9 @@
555EAAA626EFB641859EF0BE /* Frameworks */ = {
isa = PBXGroup;
children = (
+ 76D71B5C2C6B7ABB00DAFB84 /* Penguin.xcframework */,
+ 76D71B5B2C6B7ABB00DAFB84 /* PenguinINRenderer.xcframework */,
+ 76D71B5A2C6B7ABB00DAFB84 /* PenNavUI.xcframework */,
76F2556027F1FFED0062C1CD /* PassKit.framework */,
76815B26275F381C00E66E94 /* HealthKit.framework */,
E9620804255C2ED100D3A35D /* NetworkExtension.framework */,
@@ -151,6 +179,17 @@
path = Pods;
sourceTree = "";
};
+ 76D71B682C6B817500DAFB84 /* Penguin */ = {
+ isa = PBXGroup;
+ children = (
+ 76D71B692C6B819000DAFB84 /* PenguinModel.swift */,
+ 76D71B6B2C6B81B300DAFB84 /* PenguinView.swift */,
+ 76D71B6D2C6B81CC00DAFB84 /* PenguinPlugin.swift */,
+ 76D71B6F2C6B81EA00DAFB84 /* PenguinViewFactory.swift */,
+ );
+ path = Penguin;
+ sourceTree = "";
+ };
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
@@ -186,6 +225,7 @@
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
+ 76D71B682C6B817500DAFB84 /* Penguin */,
762D738C274E42650063CE73 /* ring_30Sec.caf */,
762D738D274E42650063CE73 /* ring_30Sec.mp3 */,
306FE6C9271D8B54002D6EFC /* OpenTok */,
@@ -220,6 +260,7 @@
E923EFD52587443800E3E751 /* HMGPlatformBridge.swift */,
306FE6C7271D790C002D6EFC /* OpenTokPlatformBridge.swift */,
E9F7623A25922BCE00FB5CCF /* FlutterConstants.swift */,
+ 76D71B662C6B7F9C00DAFB84 /* HMGPenguinInPlatformBridge.swift */,
);
path = Helper;
sourceTree = "";
@@ -419,12 +460,17 @@
buildActionMask = 2147483647;
files = (
306FE6C8271D790C002D6EFC /* OpenTokPlatformBridge.swift in Sources */,
+ 76D71B6E2C6B81CC00DAFB84 /* PenguinPlugin.swift in Sources */,
E923EFD225863FDF00E3E751 /* GeoZoneModel.swift in Sources */,
E91B539A256AAA6500E96549 /* MainFlutterVC.swift in Sources */,
+ 76D71B672C6B7F9C00DAFB84 /* HMGPenguinInPlatformBridge.swift in Sources */,
E91B539C256AAA6500E96549 /* HMG_GUEST_bkp.swift in Sources */,
E91B5396256AAA6500E96549 /* GlobalHelper.swift in Sources */,
E923EFD4258645C100E3E751 /* HMG_Geofence.swift in Sources */,
E923EFD62587443800E3E751 /* HMGPlatformBridge.swift in Sources */,
+ 76D71B6C2C6B81B300DAFB84 /* PenguinView.swift in Sources */,
+ 76D71B6A2C6B819000DAFB84 /* PenguinModel.swift in Sources */,
+ 76D71B702C6B81EA00DAFB84 /* PenguinViewFactory.swift in Sources */,
301C79AE27200D9F0016307B /* OpenTokRemoteVideoFactory.swift in Sources */,
E9F7623B25922BCE00FB5CCF /* FlutterConstants.swift in Sources */,
306FE6CB271D8B73002D6EFC /* OpenTok.swift in Sources */,
diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift
index d8e5e0f6..fb55f0fd 100644
--- a/ios/Runner/AppDelegate.swift
+++ b/ios/Runner/AppDelegate.swift
@@ -30,11 +30,13 @@ var userNotificationCenterDelegate:UNUserNotificationCenterDelegate? = nil
flutterViewController = mainViewController
HMGPlatformBridge.initialize(flutterViewController: flutterViewController)
OpenTokPlatformBridge.initialize(flutterViewController: flutterViewController, registrar: self.registrar(forPlugin: "open-tok"))
+ HMGPenguinInPlatformBridge.initialize(flutterViewController: flutterViewController)
}else if let mainViewController = initialViewController(){ // platform initialization suppose to be in background
flutterViewController = mainViewController
HMGPlatformBridge.initialize(flutterViewController: flutterViewController)
OpenTokPlatformBridge.initialize(flutterViewController: flutterViewController, registrar: self.registrar(forPlugin: "open-tok"))
+ HMGPenguinInPlatformBridge.initialize(flutterViewController: flutterViewController)
}
}
diff --git a/lib/config/config.dart b/lib/config/config.dart
index a9091a47..2b75fe23 100644
--- a/lib/config/config.dart
+++ b/lib/config/config.dart
@@ -22,8 +22,8 @@ var PACKAGES_ORDER_HISTORY = '/api/orders/items';
var PACKAGES_TAMARA_OPT = '/api/orders/paymentoptions/tamara';
// var BASE_URL = 'http://10.50.100.198:2018/';
// var BASE_URL = 'http://10.50.100.198:4422/';
-// var BASE_URL = 'https://uat.hmgwebservices.com/';
-var BASE_URL = 'https://hmgwebservices.com/';
+var BASE_URL = 'https://uat.hmgwebservices.com/';
+// var BASE_URL = 'https://hmgwebservices.com/';
// var BASE_URL = 'http://10.20.200.111:1010/';
// var BASE_URL = 'https://orash.cloudsolutions.com.sa/';
// var BASE_URL = 'https://vidauat.cloudsolutions.com.sa/';
diff --git a/lib/pages/AlHabibMedicalService/all_habib_medical_service_page2.dart b/lib/pages/AlHabibMedicalService/all_habib_medical_service_page2.dart
index f23d175d..420f08f1 100644
--- a/lib/pages/AlHabibMedicalService/all_habib_medical_service_page2.dart
+++ b/lib/pages/AlHabibMedicalService/all_habib_medical_service_page2.dart
@@ -37,6 +37,7 @@ class _AllHabibMedicalSevicePage2State extends State
AuthProvider authProvider = new AuthProvider();
WeatherService _weatherService = WeatherService();
double weatherNum = 30;
+ late ProjectViewModel projectViewModel;
@override
void initState() {
@@ -235,7 +236,7 @@ class _AllHabibMedicalSevicePage2State extends State
itemCount: hmgServices.length,
padding: EdgeInsets.zero,
itemBuilder: (BuildContext context, int index) {
- return ServicesView(hmgServices[index], index, false);
+ return ServicesView(hmgServices[index], index, false, projectViewModel);
},
),
),
diff --git a/lib/pages/landing/fragments/home_page_fragment2.dart b/lib/pages/landing/fragments/home_page_fragment2.dart
index c1c922ac..1c77020e 100644
--- a/lib/pages/landing/fragments/home_page_fragment2.dart
+++ b/lib/pages/landing/fragments/home_page_fragment2.dart
@@ -52,7 +52,8 @@ class _HomePageFragment2State extends State {
hmgServices.add(HmgServices(0, TranslationBase.of(context).book, TranslationBase.of(context).appointmentLabel, "assets/images/new/book appointment.svg", isLogin));
hmgServices.add(HmgServices(1, TranslationBase.of(context).liveCare, TranslationBase.of(context).onlineConsulting, "assets/images/new/Live_Care.svg", isLogin));
- hmgServices.add(HmgServices(2, TranslationBase.of(context).emergencyTitle, TranslationBase.of(context).emergencySubtitle, "assets/images/new/emergency.svg", isLogin));
+ // hmgServices.add(HmgServices(2, TranslationBase.of(context).emergencyTitle, TranslationBase.of(context).emergencySubtitle, "assets/images/new/emergency.svg", isLogin));
+ hmgServices.add(HmgServices(2, "Hospital", "Navigation", "assets/images/new/emergency.svg", isLogin));
hmgServices.add(HmgServices(3, TranslationBase.of(context).hhcHome, TranslationBase.of(context).healthCare, "assets/images/new/HHC.svg", isLogin));
hmgServices.add(HmgServices(4, TranslationBase.of(context).checkup, TranslationBase.of(context).comprehensive, "assets/images/new/comprehensive_checkup.svg", isLogin));
hmgServices.add(HmgServices(5, TranslationBase.of(context).online, TranslationBase.of(context).payment, "assets/images/new/paymentMethods.png", isLogin));
@@ -296,7 +297,7 @@ class _HomePageFragment2State extends State {
child: ServicesView(
new HmgServices(23, TranslationBase.of(context).InPatient, TranslationBase.of(context).inPatientServices, "assets/images/new/InPatient.svg", false),
23,
- true)),
+ true, projectViewModel)),
),
),
Expanded(
@@ -304,7 +305,7 @@ class _HomePageFragment2State extends State {
child: AspectRatio(
aspectRatio: 1.0,
child: ServicesView(
- new HmgServices(5, TranslationBase.of(context).online, TranslationBase.of(context).payment, "assets/images/new/paymentMethods.png", false), 2, true)),
+ new HmgServices(5, TranslationBase.of(context).online, TranslationBase.of(context).payment, "assets/images/new/paymentMethods.png", false), 2, true, projectViewModel)),
),
],
),
@@ -322,7 +323,7 @@ class _HomePageFragment2State extends State {
itemCount: hmgServices.length,
padding: EdgeInsets.zero,
itemBuilder: (BuildContext context, int index) {
- return ServicesView(hmgServices[index], index, true);
+ return ServicesView(hmgServices[index], index, true, projectViewModel);
},
),
),
@@ -341,7 +342,7 @@ class _HomePageFragment2State extends State {
itemCount: hmgServices.length,
padding: EdgeInsets.zero,
itemBuilder: (BuildContext context, int index) {
- return ServicesView(hmgServices[index], index, true);
+ return ServicesView(hmgServices[index], index, true, projectViewModel);
},
),
),
diff --git a/lib/pages/landing/widgets/services_view.dart b/lib/pages/landing/widgets/services_view.dart
index 5635a4a6..fbc3f19c 100644
--- a/lib/pages/landing/widgets/services_view.dart
+++ b/lib/pages/landing/widgets/services_view.dart
@@ -5,6 +5,7 @@ import 'package:diplomaticquarterapp/analytics/google-analytics.dart';
import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart';
+import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
import 'package:diplomaticquarterapp/models/hmg_services.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/%E2%80%8B%20health_calculators.dart';
@@ -33,6 +34,7 @@ import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/location_util.dart';
+import 'package:diplomaticquarterapp/uitl/penguin_method_channel.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/covid_consent_dialog.dart';
@@ -52,8 +54,9 @@ class ServicesView extends StatelessWidget {
PharmacyModuleViewModel pharmacyModuleViewModel = locator();
late LocationUtils locationUtils;
bool isHomePage;
+ late ProjectViewModel projectViewModel;
- ServicesView(this.hmgServices, this.index, this.isHomePage);
+ ServicesView(this.hmgServices, this.index, this.isHomePage, this.projectViewModel);
@override
Widget build(BuildContext context) {
@@ -165,6 +168,10 @@ class ServicesView extends StatelessWidget {
);
}
+ initPenguinSDK() {
+ PenguinMethodChannel.launch("penguin", projectViewModel.isArabic ? "ar" : "en", "1231755");
+ }
+
handleHomePageServices(HmgServices hmgServices, BuildContext context) {
if (hmgServices.action == 0) {
Navigator.push(context, FadePage(page: Search()));
@@ -172,8 +179,9 @@ class ServicesView extends StatelessWidget {
} else if (hmgServices.action == 1) {
openLiveCare(context);
} else if (hmgServices.action == 2) {
- Navigator.push(context, FadePage(page: ErOptions(isAppbar: true)));
- locator().hmgServices.logServiceName('emergency service');
+ initPenguinSDK();
+ // Navigator.push(context, FadePage(page: ErOptions(isAppbar: true)));
+ // locator().hmgServices.logServiceName('emergency service');
} else if (hmgServices.action == 3) {
Navigator.push(context, FadePage(page: HomeHealthCarePage()));
locator().hmgServices.logServiceName('home health care');
@@ -266,10 +274,8 @@ class ServicesView extends StatelessWidget {
} else if (hmgServices.action == 21) {
Navigator.of(context).push(
MaterialPageRoute(
- builder: (BuildContext context) => MyWebView(
- title: "HMG News",
- selectedUrl:"https://twitter.com/hmg" //"https://twitter.com/hashtag/مجموعة_د_سليمان_الحبيب_الطبية?src=hashtag_click&f=live",
- ),
+ builder: (BuildContext context) => MyWebView(title: "HMG News", selectedUrl: "https://twitter.com/hmg" //"https://twitter.com/hashtag/مجموعة_د_سليمان_الحبيب_الطبية?src=hashtag_click&f=live",
+ ),
),
);
locator().hmgServices.logServiceName('latest news');
diff --git a/lib/uitl/penguin_method_channel.dart b/lib/uitl/penguin_method_channel.dart
new file mode 100644
index 00000000..5b8acd95
--- /dev/null
+++ b/lib/uitl/penguin_method_channel.dart
@@ -0,0 +1,29 @@
+import 'package:flutter/services.dart';
+
+class PenguinMethodChannel {
+ static const MethodChannel _channel = MethodChannel('launch_penguin_ui');
+
+ static Future launch(String storyboardName, String languageCode, String username) async {
+ try {
+ await _channel.invokeMethod('launchPenguin', {
+ "storyboardName": storyboardName,
+ "baseURL": "https://hmg.nav.penguinin.com",
+ "dataURL": "https://hmg.nav.penguinin.com",
+ "positionURL": "https://hmg.nav.penguinin.com",
+ "dataServiceName": "api",
+ "positionServiceName": "pe",
+ "clientID": "HMG",
+ "username": username,
+ "isSimulationModeEnabled": false,
+ "isShowUserName": false,
+ "isUpdateUserLocationSmoothly": true,
+ "isEnableReportIssue": true,
+ "languageCode": languageCode,
+ "clientKey": "UGVuZ3VpbklOX1Blbk5hdl9QSUY=",
+ "mapBoxKey": "sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg"
+ });
+ } on PlatformException catch (e) {
+ print("Failed to launch PenguinIn: '${e.message}'.");
+ }
+ }
+}