diff --git a/android/CustomFlutterFirebaseMessagingService.java b/android/CustomFlutterFirebaseMessagingService.java
index 0a4d83be..113f256f 100644
--- a/android/CustomFlutterFirebaseMessagingService.java
+++ b/android/CustomFlutterFirebaseMessagingService.java
@@ -2,14 +2,33 @@ package io.flutter.plugins.firebasemessaging;
import android.content.Intent;
+import java.util.concurrent.TimeUnit;
+
import com.google.firebase.messaging.RemoteMessage;
+//public class CustomFlutterFirebaseMessagingService extends FlutterFirebaseMessagingService {
+// @Override
+// public void onMessageReceived(RemoteMessage remoteMessage) {
+// if (remoteMessage.getData().containsKey("is_call")) {
+// Intent intent = getPackageManager().getLaunchIntentForPackage(getPackageName());
+// startActivity(intent);
+// super.onMessageReceived(remoteMessage);
+// } else
+// super.onMessageReceived(remoteMessage);
+// }
+//}
+
public class CustomFlutterFirebaseMessagingService extends FlutterFirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if (remoteMessage.getData().containsKey("is_call")) {
Intent intent = getPackageManager().getLaunchIntentForPackage(getPackageName());
+ intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
+ try {
+ TimeUnit.SECONDS.sleep(5);
+ } catch (Exception e) {
+ }
super.onMessageReceived(remoteMessage);
} else
super.onMessageReceived(remoteMessage);
diff --git a/android/app/agconnect-services.json b/android/app/agconnect-services.json
index cfdaf83b..91aad2c7 100644
--- a/android/app/agconnect-services.json
+++ b/android/app/agconnect-services.json
@@ -1,6 +1,21 @@
{
+ "agcgw":{
+ "backurl":"connect-drcn.hispace.hicloud.com",
+ "url":"connect-drcn.dbankcloud.cn",
+ "websocketbackurl":"connect-ws-drcn.hispace.dbankcloud.com",
+ "websocketurl":"connect-ws-drcn.hispace.dbankcloud.cn"
+ },
+ "agcgw_all":{
+ "CN":"connect-drcn.dbankcloud.cn",
+ "CN_back":"connect-drcn.hispace.hicloud.com",
+ "DE":"connect-dre.dbankcloud.cn",
+ "DE_back":"connect-dre.hispace.hicloud.com",
+ "RU":"connect-drru.dbankcloud.cn",
+ "RU_back":"connect-drru.hispace.hicloud.com",
+ "SG":"connect-dra.dbankcloud.cn",
+ "SG_back":"connect-dra.hispace.hicloud.com"
+ },
"client":{
- "appType":"1",
"cp_id":"2640966000002322881",
"product_id":"736430079244816567",
"client_id":"563735388191982656",
@@ -10,5 +25,50 @@
"api_key":"CgB6e3x9DJzMgRCmnT6dyUEkp6UsIfddb6l3w0ZEXzeiRMHEFi3400Z5fJ5qaHneU0OrAI/JRpk+DMGVs3QpUxlI",
"package_name":"com.ejada.hmg"
},
- "configuration_version":"1.0"
-}
\ No newline at end of file
+ "oauth_client":{
+ "client_id":"102857389",
+ "client_type":1
+ },
+ "app_info":{
+ "app_id":"102857389",
+ "package_name":"com.ejada.hmg"
+ },
+ "service":{
+ "analytics":{
+ "collector_url":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn",
+ "collector_url_ru":"datacollector-drru.dt.hicloud.com,datacollector-drru.dt.dbankcloud.cn",
+ "collector_url_sg":"datacollector-dra.dt.hicloud.com,datacollector-dra.dt.dbankcloud.cn",
+ "collector_url_de":"datacollector-dre.dt.hicloud.com,datacollector-dre.dt.dbankcloud.cn",
+ "collector_url_cn":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn",
+ "resource_id":"p1",
+ "channel_id":""
+ },
+ "search":{
+ "url":"https://search-drcn.cloud.huawei.com"
+ },
+ "cloudstorage":{
+ "storage_url":"https://agc-storage-drcn.platform.dbankcloud.cn"
+ },
+ "ml":{
+ "mlservice_url":"ml-api-drcn.ai.dbankcloud.com,ml-api-drcn.ai.dbankcloud.cn"
+ }
+ },
+ "region":"CN",
+ "configuration_version":"3.0",
+ "appInfos":[
+ {
+ "package_name":"com.ejada.hmg",
+ "client":{
+ "app_id":"102857389"
+ },
+ "app_info":{
+ "package_name":"com.ejada.hmg",
+ "app_id":"102857389"
+ },
+ "oauth_client":{
+ "client_type":1,
+ "client_id":"102857389"
+ }
+ }
+ ]
+}
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 25230849..65bb55fe 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -28,7 +28,7 @@ apply plugin: 'com.google.gms.google-services'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
- compileSdkVersion 30
+ compileSdkVersion 31
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
@@ -67,6 +67,7 @@ android {
}
release {
signingConfig signingConfigs.config
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
staging {
// Specifies a sorted list of fallback build types that the
@@ -77,6 +78,15 @@ android {
matchingFallbacks = ['debug', 'qa', 'release']
}
}
+
+ packagingOptions {
+ exclude 'META-INF/proguard/androidx-annotations.pro'
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
}
flutter {
@@ -112,7 +122,7 @@ dependencies {
implementation "com.opentok.android:opentok-android-sdk:2.19.1"
- compile 'com.facebook.stetho:stetho:1.5.1'
+ implementation 'com.facebook.stetho:stetho:1.5.1'
implementation 'com.facebook.stetho:stetho-urlconnection:1.5.1'
diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro
index 4ace459d..cfab1fd6 100644
--- a/android/app/proguard-rules.pro
+++ b/android/app/proguard-rules.pro
@@ -1,4 +1,27 @@
-keep class tvi.webrtc.** { *; }
-keep class com.twilio.video.** { *; }
-keep class com.twilio.common.** { *; }
--keepattributes InnerClasses
\ No newline at end of file
+-keepattributes InnerClasses
+
+-keep class com.ejada.** { *; }
+-keep class org.webrtc.** { *; }
+
+-ignorewarnings
+-keepattributes *Annotation*
+-keepattributes Exceptions
+-keepattributes InnerClasses
+-keepattributes Signature
+-keep class com.hianalytics.android.**{*;}
+-keep class com.huawei.updatesdk.**{*;}
+-keep class com.huawei.hms.**{*;}
+
+## Flutter wrapper
+-keep class io.flutter.app.** { *; }
+-keep class io.flutter.plugin.** { *; }
+-keep class io.flutter.util.** { *; }
+-keep class io.flutter.view.** { *; }
+-keep class io.flutter.** { *; }
+-keep class io.flutter.plugins.** { *; }
+-dontwarn io.flutter.embedding.**
+-keep class com.huawei.hms.flutter.** { *; }
+-repackageclasses
\ No newline at end of file
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 61472941..ebc7cc88 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -5,7 +5,7 @@
In most cases you can leave this as-is, but you if you want to provide
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. -->
-
+
@@ -13,6 +13,7 @@
+
@@ -20,6 +21,7 @@
+
@@ -29,7 +31,7 @@
-
+
@@ -41,7 +43,11 @@
android:name=".Application"
android:icon="@mipmap/ic_launcher"
android:usesCleartextTraffic="true"
+ android:showOnLockScreen="true"
+ android:screenOrientation="sensorPortrait"
android:label="Dr. Alhabib">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -116,7 +150,7 @@
-
-
-
+
+
+
diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/Application.kt b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/Application.kt
index a9c5ea88..e179bc6a 100644
--- a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/Application.kt
+++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/Application.kt
@@ -5,12 +5,12 @@ import com.facebook.stetho.Stetho
import io.flutter.app.FlutterApplication
import io.flutter.plugin.common.PluginRegistry
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback
-import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService
+//import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService
class Application : FlutterApplication(), PluginRegistrantCallback {
override fun onCreate() {
super.onCreate()
- FlutterFirebaseMessagingService.setPluginRegistrant(this)
+ // FlutterFirebaseMessagingService.setPluginRegistrant(this)
// Stetho.initializeWithDefaults(this);
// Create an InitializerBuilder
@@ -38,7 +38,7 @@ class Application : FlutterApplication(), PluginRegistrantCallback {
}
override fun registerWith(registry: PluginRegistry) {
- io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin.registerWith(registry?.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"));
+ // io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin.registerWith(registry?.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"));
}
}
diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/FirebaseCloudMessagingPluginRegistrant.kt b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/FirebaseCloudMessagingPluginRegistrant.kt
index 9ac064cb..4e9e8ce1 100644
--- a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/FirebaseCloudMessagingPluginRegistrant.kt
+++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/FirebaseCloudMessagingPluginRegistrant.kt
@@ -2,14 +2,14 @@
package com.ejada.hmg
import io.flutter.plugin.common.PluginRegistry
-import io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin
+//import io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin
object FirebaseCloudMessagingPluginRegistrant {
fun registerWith(registry: PluginRegistry?) {
if (alreadyRegisteredWith(registry)) {
return
}
- FirebaseMessagingPlugin.registerWith(registry?.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"))
+ // FirebaseMessagingPlugin.registerWith(registry?.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"))
}
private fun alreadyRegisteredWith(registry: PluginRegistry?): Boolean {
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 e754e44c..957262c3 100644
--- a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/MainActivity.kt
+++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/MainActivity.kt
@@ -1,6 +1,8 @@
package com.ejada.hmg
import android.os.Bundle
import android.util.Log
+import android.os.Build
+import android.view.WindowManager
import androidx.annotation.NonNull;
import com.ejada.hmg.utils.*
import io.flutter.embedding.android.FlutterFragmentActivity
@@ -12,6 +14,9 @@ class MainActivity: FlutterFragmentActivity() {
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
// Create Flutter Platform Bridge
+ this.window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or
+ WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON or WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON)
+
PlatformBridge(flutterEngine, this).create()
OpenTokPlatformBridge(flutterEngine, this).create()
diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/bkp_files/CustomFlutterHmsMessageService.java b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/bkp_files/CustomFlutterHmsMessageService.java
new file mode 100644
index 00000000..c96a60af
--- /dev/null
+++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/bkp_files/CustomFlutterHmsMessageService.java
@@ -0,0 +1,56 @@
+/*
+* ---------------
+* Note: Todo
+* ---------------
+* Need to be place in huawei_push (package com.huawei.hms.flutter.push.hms) and define in huawei_push manifest.xml
+* */
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.util.Log;
+
+import com.huawei.hms.flutter.push.hms.FlutterHmsMessageService;
+import com.huawei.hms.flutter.push.utils.ApplicationUtils;
+
+import org.json.JSONObject;
+
+//package com.huawei.hms.flutter.push.hms
+//
+//
+//import android.content.Context;
+//import android.content.Intent;
+//import android.content.SharedPreferences;
+//
+//import com.huawei.hms.flutter.push.hms.FlutterHmsMessageService;
+//import com.huawei.hms.flutter.push.utils.ApplicationUtils;
+//import com.huawei.hms.push.RemoteMessage;
+//
+//import org.json.JSONObject;
+//
+//public class CustomFlutterHmsMessageService extends FlutterHmsMessageService {
+// @Override
+// public void onMessageReceived(RemoteMessage remoteMessage) {
+// super.onMessageReceived(remoteMessage);
+// try {
+// String jsonStr = remoteMessage.getData();
+// JSONObject json_data = new JSONObject(jsonStr);
+// JSONObject json_data_data = new JSONObject(json_data.getString("data"));
+// if(json_data_data.getString("is_call").equalsIgnoreCase("true")){
+// boolean isApplicationInForeground = ApplicationUtils.isApplicationInForeground(this);
+// if(!isApplicationInForeground){
+// SharedPreferences preferences = getSharedPreferences("FlutterSharedPreferences", Context.MODE_PRIVATE);
+// preferences.edit().putString("flutter.call_data", json_data.getString("data")).apply();
+//
+// Intent intent = getPackageManager().getLaunchIntentForPackage(getPackageName());
+// intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
+// startActivity(intent);
+// Log.v("onMessageReceived", "startActivity(intent) called");
+// }
+// }
+//
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// }
+//}
diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/PlatformBridge.kt b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/PlatformBridge.kt
index 003b9e24..be127a54 100644
--- a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/PlatformBridge.kt
+++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/PlatformBridge.kt
@@ -1,6 +1,14 @@
package com.ejada.hmg.utils
import android.content.Context
+import android.content.Intent
+import android.content.Intent.getIntent
+import android.net.Uri
+import android.os.Build
+import android.os.Bundle
+import android.provider.Settings
+import android.widget.Toast
+import androidx.core.app.ActivityCompat.startActivityForResult
import android.net.wifi.WifiManager
import android.util.Log
import com.ejada.hmg.MainActivity
@@ -24,48 +32,56 @@ class PlatformBridge(private var flutterEngine: FlutterEngine, private var mainA
private const val ENABLE_WIFI_IF_NOT = "enableWifiIfNot"
private const val REGISTER_HMG_GEOFENCES = "registerHmgGeofences"
private const val UN_REGISTER_HMG_GEOFENCES = "unRegisterHmgGeofences"
+ private const val IS_DRAW_OVER_APPS_PERMISSION_ALLOWED = "isDrawOverAppsPermissionAllowed"
+ private const val ASK_DRAW_OVER_APPS_PERMISSION = "askDrawOverAppsPermission"
+ private const val GET_INTENT = "getIntent"
}
- fun create(){
+ fun create() {
channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL)
HMGUtils.setPlatformChannel(channel)
channel.setMethodCallHandler { methodCall: MethodCall, result: MethodChannel.Result ->
if (methodCall.method == HMG_INTERNET_WIFI_CONNECT_METHOD) {
- connectHMGInternetWifi(methodCall,result)
-
- }else if (methodCall.method == HMG_GUEST_WIFI_CONNECT_METHOD) {
- connectHMGGuestWifi(methodCall,result)
-
- }else if (methodCall.method == ENABLE_WIFI_IF_NOT) {
- enableWifiIfNot(methodCall,result)
- }else if (methodCall.method == REGISTER_HMG_GEOFENCES) {
- registerHmgGeofences(methodCall,result)
- }else if (methodCall.method == UN_REGISTER_HMG_GEOFENCES) {
- unRegisterHmgGeofences(methodCall,result)
- }else{
-
+ connectHMGInternetWifi(methodCall, result)
+
+ } else if (methodCall.method == HMG_GUEST_WIFI_CONNECT_METHOD) {
+ connectHMGGuestWifi(methodCall, result)
+
+ } else if (methodCall.method == ENABLE_WIFI_IF_NOT) {
+ enableWifiIfNot(methodCall, result)
+ } else if (methodCall.method == REGISTER_HMG_GEOFENCES) {
+ registerHmgGeofences(methodCall, result)
+ } else if (methodCall.method == UN_REGISTER_HMG_GEOFENCES) {
+ unRegisterHmgGeofences(methodCall, result)
+ } else if (methodCall.method == IS_DRAW_OVER_APPS_PERMISSION_ALLOWED) {
+ isDrawOverAppsPermissionAllowed(methodCall, result)
+ } else if (methodCall.method == ASK_DRAW_OVER_APPS_PERMISSION) {
+ askDrawOverAppsPermission(methodCall, result)
+ } else if (methodCall.method == GET_INTENT) {
+ getIntentData(methodCall, result)
+ } else {
result.notImplemented()
}
}
- val res = channel.invokeMethod("localizedValue","errorConnectingHmgNetwork")
+ val res = channel.invokeMethod("localizedValue", "errorConnectingHmgNetwork")
}
- private fun connectHMGInternetWifi(methodCall: MethodCall, result: MethodChannel.Result){
+ private fun connectHMGInternetWifi(methodCall: MethodCall, result: MethodChannel.Result) {
(methodCall.arguments as ArrayList<*>).let {
- require(it.size > 0 && (it[0] is String),lazyMessage = {
+ require(it.size > 0 && (it[0] is String), lazyMessage = {
"Missing or invalid arguments (Must have one argument 'String at 0'"
})
val patientId = it[0].toString()
HMG_Internet(mainActivity)
- .connectToHMGGuestNetwork(patientId){ status, message ->
+ .connectToHMGGuestNetwork(patientId) { status, message ->
mainActivity.runOnUiThread {
- result.success(if(status) 1 else 0)
+ result.success(if (status) 1 else 0)
HMGUtils.popFlutterText(mainActivity, message)
Log.v(this.javaClass.simpleName, "$status | $message")
@@ -76,10 +92,10 @@ class PlatformBridge(private var flutterEngine: FlutterEngine, private var mainA
}
- private fun connectHMGGuestWifi(methodCall: MethodCall, result: MethodChannel.Result){
+ private fun connectHMGGuestWifi(methodCall: MethodCall, result: MethodChannel.Result) {
HMG_Guest(mainActivity).connectToHMGGuestNetwork { status, message ->
mainActivity.runOnUiThread {
- result.success(if(status) 1 else 0)
+ result.success(if (status) 1 else 0)
HMGUtils.popFlutterText(mainActivity, message)
Log.v(this.javaClass.simpleName, "$status | $message")
@@ -89,38 +105,76 @@ class PlatformBridge(private var flutterEngine: FlutterEngine, private var mainA
private fun enableWifiIfNot(methodCall: MethodCall, result: MethodChannel.Result) {
val wm = mainActivity.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager?
- if (wm != null){
+ if (wm != null) {
if (!wm.isWifiEnabled)
wm.isWifiEnabled = true
result.success(true)
- }else
- result.error("101","Error while opening wifi, Please try to open wifi yourself and try again","'WifiManager' service failed");
+ } else
+ result.error("101", "Error while opening wifi, Please try to open wifi yourself and try again", "'WifiManager' service failed");
}
private fun registerHmgGeofences(methodCall: MethodCall, result: MethodChannel.Result) {
- channel.invokeMethod("getGeoZones",null, object : MethodChannel.Result{
+ channel.invokeMethod("getGeoZones", null, object : MethodChannel.Result {
override fun success(result: Any?) {
- if(result is String) {
+ if (result is String) {
val geoZones = GeoZoneModel().listFrom(result)
- HMG_Geofence.shared(mainActivity).register(){ s, e -> }
+ HMG_Geofence.shared(mainActivity).register() { s, e -> }
}
}
- override fun error(errorCode: String?, errorMessage: String?, errorDetails: Any?) { }
- override fun notImplemented() { }
+ override fun error(errorCode: String?, errorMessage: String?, errorDetails: Any?) {}
+ override fun notImplemented() {}
})
}
-
+
private fun unRegisterHmgGeofences(methodCall: MethodCall, result: MethodChannel.Result) {
HMG_Geofence.shared(mainActivity).unRegisterAll { status, exception ->
- if(status)
+ if (status)
result.success(true)
else
result.error("101", exception?.localizedMessage, exception);
}
}
-
+
+ private fun isDrawOverAppsPermissionAllowed(methodCall: MethodCall, result: MethodChannel.Result) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ if (
+ Settings.canDrawOverlays(mainActivity)
+ ) {
+ result.success(true)
+ } else {
+ result.success(false)
+ }
+ } else {
+ result.success(false)
+ }
+ }
+
+ private fun askDrawOverAppsPermission(methodCall: MethodCall, result: MethodChannel.Result) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ val intent = Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION)
+ val uri = Uri.parse("package:" + mainActivity.getPackageName())
+ intent.setData(uri)
+ startActivityForResult(mainActivity, intent, 102, null)
+ result.success(true)
+ } else {
+ result.success(false)
+ }
+ }
+
+ private fun getIntentData(methodCall: MethodCall, result: MethodChannel.Result) {
+
+ val bundle: Bundle? = getIntent("").extras
+ if (bundle != null) {
+ val message = bundle.getString("notification") // 1
+ System.out.println("BundleExtra:" + message)
+ Toast.makeText(this.mainActivity, message + "", Toast.LENGTH_SHORT).show()
+ } else {
+ Toast.makeText(this.mainActivity, "Bundle Null", Toast.LENGTH_SHORT).show();
+ }
+ result.success(true);
+ }
}
diff --git a/android/build.gradle b/android/build.gradle
index ecb1ed70..e4985a55 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -1,5 +1,5 @@
buildscript {
- ext.kotlin_version = '1.3.50'
+ ext.kotlin_version = '1.6.0'
repositories {
google()
jcenter()
@@ -11,10 +11,11 @@ buildscript {
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.5.4'
+ classpath 'com.android.tools.build:gradle:7.0.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.8'
- classpath 'com.huawei.agconnect:agcp:1.4.2.301'
+ classpath 'com.huawei.agconnect:agcp:1.5.2.300'
+ classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.12'
}
}
@@ -26,7 +27,7 @@ allprojects {
maven {
url 'https://developer.huawei.com/repo/'
}
- maven{
+ maven {
url "https://artifactory.ess-dev.com/artifactory/gradle-dev-local"
}
}
diff --git a/android/gradle.properties b/android/gradle.properties
index a5965ab8..c5ccb9b6 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,4 +1,4 @@
-org.gradle.jvmargs=-Xmx1536M
+org.gradle.jvmargs=-Xmx2048m
android.enableR8=true
android.useAndroidX=true
android.enableJetifier=true
\ No newline at end of file
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index 6fdb0e44..6e8ae021 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
diff --git a/assets/images/new/add_to_cart.svg b/assets/images/new/add_to_cart.svg
new file mode 100644
index 00000000..f01f6033
--- /dev/null
+++ b/assets/images/new/add_to_cart.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/images/new/body_parts/female/abdomin.png b/assets/images/new/body_parts/female/abdomin.png
new file mode 100644
index 00000000..f4918d71
Binary files /dev/null and b/assets/images/new/body_parts/female/abdomin.png differ
diff --git a/assets/images/new/body_parts/female/abdomin.svg b/assets/images/new/body_parts/female/abdomin.svg
deleted file mode 100644
index cc1dd1d0..00000000
--- a/assets/images/new/body_parts/female/abdomin.svg
+++ /dev/null
@@ -1,345 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/anal.png b/assets/images/new/body_parts/female/anal.png
new file mode 100644
index 00000000..d96ef288
Binary files /dev/null and b/assets/images/new/body_parts/female/anal.png differ
diff --git a/assets/images/new/body_parts/female/anal.svg b/assets/images/new/body_parts/female/anal.svg
deleted file mode 100644
index 96c9734d..00000000
--- a/assets/images/new/body_parts/female/anal.svg
+++ /dev/null
@@ -1,236 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/axilla.png b/assets/images/new/body_parts/female/axilla.png
new file mode 100644
index 00000000..f38be6b3
Binary files /dev/null and b/assets/images/new/body_parts/female/axilla.png differ
diff --git a/assets/images/new/body_parts/female/axilla.svg b/assets/images/new/body_parts/female/axilla.svg
deleted file mode 100644
index 257b1c08..00000000
--- a/assets/images/new/body_parts/female/axilla.svg
+++ /dev/null
@@ -1,346 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/back.png b/assets/images/new/body_parts/female/back.png
new file mode 100644
index 00000000..65d9ef19
Binary files /dev/null and b/assets/images/new/body_parts/female/back.png differ
diff --git a/assets/images/new/body_parts/female/back.svg b/assets/images/new/body_parts/female/back.svg
deleted file mode 100644
index 96eba049..00000000
--- a/assets/images/new/body_parts/female/back.svg
+++ /dev/null
@@ -1,236 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/bikini.png b/assets/images/new/body_parts/female/bikini.png
new file mode 100644
index 00000000..a1a68423
Binary files /dev/null and b/assets/images/new/body_parts/female/bikini.png differ
diff --git a/assets/images/new/body_parts/female/bikini.svg b/assets/images/new/body_parts/female/bikini.svg
deleted file mode 100644
index 24892c80..00000000
--- a/assets/images/new/body_parts/female/bikini.svg
+++ /dev/null
@@ -1,345 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/bikini_line.png b/assets/images/new/body_parts/female/bikini_line.png
new file mode 100644
index 00000000..12fc0e6e
Binary files /dev/null and b/assets/images/new/body_parts/female/bikini_line.png differ
diff --git a/assets/images/new/body_parts/female/bikini_line.svg b/assets/images/new/body_parts/female/bikini_line.svg
deleted file mode 100644
index f1f94b7f..00000000
--- a/assets/images/new/body_parts/female/bikini_line.svg
+++ /dev/null
@@ -1,345 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/buttocks.png b/assets/images/new/body_parts/female/buttocks.png
new file mode 100644
index 00000000..b83576f3
Binary files /dev/null and b/assets/images/new/body_parts/female/buttocks.png differ
diff --git a/assets/images/new/body_parts/female/buttocks.svg b/assets/images/new/body_parts/female/buttocks.svg
deleted file mode 100644
index 59cd0071..00000000
--- a/assets/images/new/body_parts/female/buttocks.svg
+++ /dev/null
@@ -1,236 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/chest.png b/assets/images/new/body_parts/female/chest.png
new file mode 100644
index 00000000..727ebe7a
Binary files /dev/null and b/assets/images/new/body_parts/female/chest.png differ
diff --git a/assets/images/new/body_parts/female/chest.svg b/assets/images/new/body_parts/female/chest.svg
deleted file mode 100644
index 3b681f90..00000000
--- a/assets/images/new/body_parts/female/chest.svg
+++ /dev/null
@@ -1,345 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/chest_line.png b/assets/images/new/body_parts/female/chest_line.png
new file mode 100644
index 00000000..0b4fecb8
Binary files /dev/null and b/assets/images/new/body_parts/female/chest_line.png differ
diff --git a/assets/images/new/body_parts/female/chest_line.svg b/assets/images/new/body_parts/female/chest_line.svg
deleted file mode 100644
index dc4f8b25..00000000
--- a/assets/images/new/body_parts/female/chest_line.svg
+++ /dev/null
@@ -1,345 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/full_leg.svg b/assets/images/new/body_parts/female/full_leg.svg
deleted file mode 100644
index e1a5e46d..00000000
--- a/assets/images/new/body_parts/female/full_leg.svg
+++ /dev/null
@@ -1,348 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/full_legs.png b/assets/images/new/body_parts/female/full_legs.png
new file mode 100644
index 00000000..5a365a7e
Binary files /dev/null and b/assets/images/new/body_parts/female/full_legs.png differ
diff --git a/assets/images/new/body_parts/female/lower_arm.png b/assets/images/new/body_parts/female/lower_arm.png
new file mode 100644
index 00000000..717b2cde
Binary files /dev/null and b/assets/images/new/body_parts/female/lower_arm.png differ
diff --git a/assets/images/new/body_parts/female/lower_arm.svg b/assets/images/new/body_parts/female/lower_arm.svg
deleted file mode 100644
index 6d5d2f39..00000000
--- a/assets/images/new/body_parts/female/lower_arm.svg
+++ /dev/null
@@ -1,346 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/lower_leg.png b/assets/images/new/body_parts/female/lower_leg.png
new file mode 100644
index 00000000..88ccacef
Binary files /dev/null and b/assets/images/new/body_parts/female/lower_leg.png differ
diff --git a/assets/images/new/body_parts/female/lower_leg.svg b/assets/images/new/body_parts/female/lower_leg.svg
deleted file mode 100644
index 4961af4b..00000000
--- a/assets/images/new/body_parts/female/lower_leg.svg
+++ /dev/null
@@ -1,346 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/shoulder.svg b/assets/images/new/body_parts/female/shoulder.svg
deleted file mode 100644
index ce611e29..00000000
--- a/assets/images/new/body_parts/female/shoulder.svg
+++ /dev/null
@@ -1,346 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/shoulders.png b/assets/images/new/body_parts/female/shoulders.png
new file mode 100644
index 00000000..e1f253a8
Binary files /dev/null and b/assets/images/new/body_parts/female/shoulders.png differ
diff --git a/assets/images/new/body_parts/female/upper_arm.png b/assets/images/new/body_parts/female/upper_arm.png
new file mode 100644
index 00000000..1edb873c
Binary files /dev/null and b/assets/images/new/body_parts/female/upper_arm.png differ
diff --git a/assets/images/new/body_parts/female/upper_arm.svg b/assets/images/new/body_parts/female/upper_arm.svg
deleted file mode 100644
index ec126ffd..00000000
--- a/assets/images/new/body_parts/female/upper_arm.svg
+++ /dev/null
@@ -1,346 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/upper_leg.svg b/assets/images/new/body_parts/female/upper_leg.svg
deleted file mode 100644
index b1fd3a95..00000000
--- a/assets/images/new/body_parts/female/upper_leg.svg
+++ /dev/null
@@ -1,346 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/upper_legs.png b/assets/images/new/body_parts/female/upper_legs.png
new file mode 100644
index 00000000..a8aa2ec7
Binary files /dev/null and b/assets/images/new/body_parts/female/upper_legs.png differ
diff --git a/assets/images/new/body_parts/male/abdomin.png b/assets/images/new/body_parts/male/abdomin.png
new file mode 100644
index 00000000..1b180b42
Binary files /dev/null and b/assets/images/new/body_parts/male/abdomin.png differ
diff --git a/assets/images/new/body_parts/male/abdomin.svg b/assets/images/new/body_parts/male/abdomin.svg
deleted file mode 100644
index 82e2d556..00000000
--- a/assets/images/new/body_parts/male/abdomin.svg
+++ /dev/null
@@ -1,185 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/axilla.png b/assets/images/new/body_parts/male/axilla.png
new file mode 100644
index 00000000..61af9492
Binary files /dev/null and b/assets/images/new/body_parts/male/axilla.png differ
diff --git a/assets/images/new/body_parts/male/axilla.svg b/assets/images/new/body_parts/male/axilla.svg
deleted file mode 100644
index 85abbfda..00000000
--- a/assets/images/new/body_parts/male/axilla.svg
+++ /dev/null
@@ -1,186 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/bikini.png b/assets/images/new/body_parts/male/bikini.png
new file mode 100644
index 00000000..aa98ea74
Binary files /dev/null and b/assets/images/new/body_parts/male/bikini.png differ
diff --git a/assets/images/new/body_parts/male/bikini.svg b/assets/images/new/body_parts/male/bikini.svg
deleted file mode 100644
index 1c545916..00000000
--- a/assets/images/new/body_parts/male/bikini.svg
+++ /dev/null
@@ -1,185 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/bikini_line.png b/assets/images/new/body_parts/male/bikini_line.png
new file mode 100644
index 00000000..60ed64e2
Binary files /dev/null and b/assets/images/new/body_parts/male/bikini_line.png differ
diff --git a/assets/images/new/body_parts/male/bikini_line.svg b/assets/images/new/body_parts/male/bikini_line.svg
deleted file mode 100644
index 7fdc51d1..00000000
--- a/assets/images/new/body_parts/male/bikini_line.svg
+++ /dev/null
@@ -1,185 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/chest.png b/assets/images/new/body_parts/male/chest.png
new file mode 100644
index 00000000..b7cec070
Binary files /dev/null and b/assets/images/new/body_parts/male/chest.png differ
diff --git a/assets/images/new/body_parts/male/chest.svg b/assets/images/new/body_parts/male/chest.svg
deleted file mode 100644
index 85a761fe..00000000
--- a/assets/images/new/body_parts/male/chest.svg
+++ /dev/null
@@ -1,185 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/chest_line.png b/assets/images/new/body_parts/male/chest_line.png
new file mode 100644
index 00000000..41e779f3
Binary files /dev/null and b/assets/images/new/body_parts/male/chest_line.png differ
diff --git a/assets/images/new/body_parts/male/chest_line.svg b/assets/images/new/body_parts/male/chest_line.svg
deleted file mode 100644
index 806ddb0c..00000000
--- a/assets/images/new/body_parts/male/chest_line.svg
+++ /dev/null
@@ -1,185 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/full_leg.svg b/assets/images/new/body_parts/male/full_leg.svg
deleted file mode 100644
index b5755167..00000000
--- a/assets/images/new/body_parts/male/full_leg.svg
+++ /dev/null
@@ -1,230 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/full_legs.png b/assets/images/new/body_parts/male/full_legs.png
new file mode 100644
index 00000000..eee2fa07
Binary files /dev/null and b/assets/images/new/body_parts/male/full_legs.png differ
diff --git a/assets/images/new/body_parts/male/full_neck.png b/assets/images/new/body_parts/male/full_neck.png
new file mode 100644
index 00000000..a75159f6
Binary files /dev/null and b/assets/images/new/body_parts/male/full_neck.png differ
diff --git a/assets/images/new/body_parts/male/full_neck.svg b/assets/images/new/body_parts/male/full_neck.svg
deleted file mode 100644
index 43183598..00000000
--- a/assets/images/new/body_parts/male/full_neck.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/half_neck.png b/assets/images/new/body_parts/male/half_neck.png
new file mode 100644
index 00000000..5ee0249c
Binary files /dev/null and b/assets/images/new/body_parts/male/half_neck.png differ
diff --git a/assets/images/new/body_parts/male/half_neck.svg b/assets/images/new/body_parts/male/half_neck.svg
deleted file mode 100644
index 4e57b51c..00000000
--- a/assets/images/new/body_parts/male/half_neck.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/lower_arm.png b/assets/images/new/body_parts/male/lower_arm.png
new file mode 100644
index 00000000..120242ed
Binary files /dev/null and b/assets/images/new/body_parts/male/lower_arm.png differ
diff --git a/assets/images/new/body_parts/male/lower_arm.svg b/assets/images/new/body_parts/male/lower_arm.svg
deleted file mode 100644
index c8dbf48d..00000000
--- a/assets/images/new/body_parts/male/lower_arm.svg
+++ /dev/null
@@ -1,312 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/lower_leg.svg b/assets/images/new/body_parts/male/lower_leg.svg
deleted file mode 100644
index 091c29a4..00000000
--- a/assets/images/new/body_parts/male/lower_leg.svg
+++ /dev/null
@@ -1,228 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/lower_legs.png b/assets/images/new/body_parts/male/lower_legs.png
new file mode 100644
index 00000000..8367aa8c
Binary files /dev/null and b/assets/images/new/body_parts/male/lower_legs.png differ
diff --git a/assets/images/new/body_parts/male/shoulders.png b/assets/images/new/body_parts/male/shoulders.png
new file mode 100644
index 00000000..907f2dd7
Binary files /dev/null and b/assets/images/new/body_parts/male/shoulders.png differ
diff --git a/assets/images/new/body_parts/male/shoulders.svg b/assets/images/new/body_parts/male/shoulders.svg
deleted file mode 100644
index bd6cac52..00000000
--- a/assets/images/new/body_parts/male/shoulders.svg
+++ /dev/null
@@ -1,312 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/upper_arm.png b/assets/images/new/body_parts/male/upper_arm.png
new file mode 100644
index 00000000..f80a75da
Binary files /dev/null and b/assets/images/new/body_parts/male/upper_arm.png differ
diff --git a/assets/images/new/body_parts/male/upper_arm.svg b/assets/images/new/body_parts/male/upper_arm.svg
deleted file mode 100644
index 7d959a0d..00000000
--- a/assets/images/new/body_parts/male/upper_arm.svg
+++ /dev/null
@@ -1,186 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/upper_leg.svg b/assets/images/new/body_parts/male/upper_leg.svg
deleted file mode 100644
index 342cfd84..00000000
--- a/assets/images/new/body_parts/male/upper_leg.svg
+++ /dev/null
@@ -1,210 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/upper_legs.png b/assets/images/new/body_parts/male/upper_legs.png
new file mode 100644
index 00000000..e0c973b7
Binary files /dev/null and b/assets/images/new/body_parts/male/upper_legs.png differ
diff --git a/assets/images/new/cart.svg b/assets/images/new/cart.svg
new file mode 100644
index 00000000..334b86ba
--- /dev/null
+++ b/assets/images/new/cart.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/images/new/logo.png b/assets/images/new/logo.png
new file mode 100644
index 00000000..29719b35
Binary files /dev/null and b/assets/images/new/logo.png differ
diff --git a/assets/images/pharmacy/call.svg b/assets/images/pharmacy/call.svg
new file mode 100644
index 00000000..677d4123
--- /dev/null
+++ b/assets/images/pharmacy/call.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/images/pharmacy/instagram.png b/assets/images/pharmacy/instagram.png
new file mode 100644
index 00000000..a03f47bd
Binary files /dev/null and b/assets/images/pharmacy/instagram.png differ
diff --git a/assets/images/pharmacy/location.svg b/assets/images/pharmacy/location.svg
new file mode 100644
index 00000000..a52cc72e
--- /dev/null
+++ b/assets/images/pharmacy/location.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/images/pharmacy/whatsapp.svg b/assets/images/pharmacy/whatsapp.svg
new file mode 100644
index 00000000..ee18370c
--- /dev/null
+++ b/assets/images/pharmacy/whatsapp.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/images/pharmacy_module/lakum/akum_transfer.png b/assets/images/pharmacy_module/lakum/akum_transfer.png
new file mode 100644
index 00000000..30785b08
Binary files /dev/null and b/assets/images/pharmacy_module/lakum/akum_transfer.png differ
diff --git a/assets/images/pharmacy_module/payment/applePay.png b/assets/images/pharmacy_module/payment/applePay.png
new file mode 100644
index 00000000..fd167e1c
Binary files /dev/null and b/assets/images/pharmacy_module/payment/applePay.png differ
diff --git a/ios/Flutter/.last_build_id b/ios/Flutter/.last_build_id
index 53427e0c..b3315e38 100644
--- a/ios/Flutter/.last_build_id
+++ b/ios/Flutter/.last_build_id
@@ -1 +1 @@
-3f8c659591fcdd0e47e3895f74af395c
\ No newline at end of file
+8d8845c5c035b7f87f2849054cdedb69
\ No newline at end of file
diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist
index 6b4c0f78..cb6be309 100644
--- a/ios/Flutter/AppFrameworkInfo.plist
+++ b/ios/Flutter/AppFrameworkInfo.plist
@@ -2,25 +2,25 @@
- CFBundleDevelopmentRegion
- $(DEVELOPMENT_LANGUAGE)
- CFBundleExecutable
- App
- CFBundleIdentifier
- io.flutter.flutter.app
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- App
- CFBundlePackageType
- FMWK
- CFBundleShortVersionString
- 1.0
- CFBundleSignature
- ????
- CFBundleVersion
- 1.0
- MinimumOSVersion
- 8.0
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ App
+ CFBundleIdentifier
+ io.flutter.flutter.app
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ App
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1.0
+ MinimumOSVersion
+ 11.0
diff --git a/ios/Podfile b/ios/Podfile
index 46c98373..1e8c3c90 100644
--- a/ios/Podfile
+++ b/ios/Podfile
@@ -1,9 +1,8 @@
# Uncomment this line to define a global platform for your project
-# platform :ios, '10.0'
+# platform :ios, '9.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
-$FirebaseAnalyticsWithoutAdIdSupport = true
project 'Runner', {
'Debug' => :debug,
@@ -11,86 +10,32 @@ project 'Runner', {
'Release' => :release,
}
-# pod 'FBSDKCoreKit'
-# pod 'FBSDKLoginKit'
-
-def parse_KV_file(file, separator='=')
- file_abs_path = File.expand_path(file)
- if !File.exists? file_abs_path
- return [];
+def flutter_root
+ generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
+ unless File.exist?(generated_xcode_build_settings_path)
+ raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
- generated_key_values = {}
- skip_line_start_symbols = ["#", "/"]
- File.foreach(file_abs_path) do |line|
- next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
- plugin = line.split(pattern=separator)
- if plugin.length == 2
- podname = plugin[0].strip()
- path = plugin[1].strip()
- podpath = File.expand_path("#{path}", file_abs_path)
- generated_key_values[podname] = podpath
- else
- puts "Invalid plugin specification: #{line}"
- end
+
+ File.foreach(generated_xcode_build_settings_path) do |line|
+ matches = line.match(/FLUTTER_ROOT\=(.*)/)
+ return matches[1].strip if matches
end
- generated_key_values
+ raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end
+require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
+
+flutter_ios_podfile_setup
+
target 'Runner' do
use_frameworks!
use_modular_headers!
- # Native Pods
- pod 'NVActivityIndicatorView'
- pod 'OpenTok'
-
-
- # Flutter Pod
- copied_flutter_dir = File.join(__dir__, 'Flutter')
- copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework')
- copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec')
- unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path)
- # Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet.
- # That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration.
- # CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist.
-
- generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig')
- unless File.exist?(generated_xcode_build_settings_path)
- raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first"
- end
- generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path)
- cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR'];
-
- unless File.exist?(copied_framework_path)
- FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir)
- end
- unless File.exist?(copied_podspec_path)
- FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir)
- end
- end
-
- # Keep pod path relative so it can be checked into Podfile.lock.
- pod 'Flutter', :path => 'Flutter'
-
- # Plugin Pods
-
- # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
- # referring to absolute paths on developers' machines.
- system('rm -rf .symlinks')
- system('mkdir -p .symlinks/plugins')
- plugin_pods = parse_KV_file('../.flutter-plugins')
- plugin_pods.each do |name, path|
- symlink = File.join('.symlinks', 'plugins', name)
- File.symlink(path, symlink)
- pod name, :path => File.join(symlink, 'ios')
- end
+ flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end
post_install do |installer|
installer.pods_project.targets.each do |target|
- target.build_configurations.each do |config|
- config.build_settings['ENABLE_BITCODE'] = 'NO'
- end
+ flutter_additional_ios_build_settings(target)
end
end
-
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index 565b2db9..169a7b58 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -1,246 +1,16 @@
PODS:
- - abseil/algorithm (0.20200225.0):
- - abseil/algorithm/algorithm (= 0.20200225.0)
- - abseil/algorithm/container (= 0.20200225.0)
- - abseil/algorithm/algorithm (0.20200225.0):
- - abseil/base/config
- - abseil/algorithm/container (0.20200225.0):
- - abseil/algorithm/algorithm
- - abseil/base/core_headers
- - abseil/meta/type_traits
- - abseil/base (0.20200225.0):
- - abseil/base/atomic_hook (= 0.20200225.0)
- - abseil/base/base (= 0.20200225.0)
- - abseil/base/base_internal (= 0.20200225.0)
- - abseil/base/bits (= 0.20200225.0)
- - abseil/base/config (= 0.20200225.0)
- - abseil/base/core_headers (= 0.20200225.0)
- - abseil/base/dynamic_annotations (= 0.20200225.0)
- - abseil/base/endian (= 0.20200225.0)
- - abseil/base/errno_saver (= 0.20200225.0)
- - abseil/base/exponential_biased (= 0.20200225.0)
- - abseil/base/log_severity (= 0.20200225.0)
- - abseil/base/malloc_internal (= 0.20200225.0)
- - abseil/base/periodic_sampler (= 0.20200225.0)
- - abseil/base/pretty_function (= 0.20200225.0)
- - abseil/base/raw_logging_internal (= 0.20200225.0)
- - abseil/base/spinlock_wait (= 0.20200225.0)
- - abseil/base/throw_delegate (= 0.20200225.0)
- - abseil/base/atomic_hook (0.20200225.0):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/base (0.20200225.0):
- - abseil/base/atomic_hook
- - abseil/base/base_internal
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/dynamic_annotations
- - abseil/base/log_severity
- - abseil/base/raw_logging_internal
- - abseil/base/spinlock_wait
- - abseil/meta/type_traits
- - abseil/base/base_internal (0.20200225.0):
- - abseil/base/config
- - abseil/meta/type_traits
- - abseil/base/bits (0.20200225.0):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/config (0.20200225.0)
- - abseil/base/core_headers (0.20200225.0):
- - abseil/base/config
- - abseil/base/dynamic_annotations (0.20200225.0)
- - abseil/base/endian (0.20200225.0):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/errno_saver (0.20200225.0):
- - abseil/base/config
- - abseil/base/exponential_biased (0.20200225.0):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/log_severity (0.20200225.0):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/malloc_internal (0.20200225.0):
- - abseil/base/base
- - abseil/base/base_internal
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/dynamic_annotations
- - abseil/base/raw_logging_internal
- - abseil/base/periodic_sampler (0.20200225.0):
- - abseil/base/core_headers
- - abseil/base/exponential_biased
- - abseil/base/pretty_function (0.20200225.0)
- - abseil/base/raw_logging_internal (0.20200225.0):
- - abseil/base/atomic_hook
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/log_severity
- - abseil/base/spinlock_wait (0.20200225.0):
- - abseil/base/base_internal
- - abseil/base/core_headers
- - abseil/base/errno_saver
- - abseil/base/throw_delegate (0.20200225.0):
- - abseil/base/config
- - abseil/base/raw_logging_internal
- - abseil/container/compressed_tuple (0.20200225.0):
- - abseil/utility/utility
- - abseil/container/inlined_vector (0.20200225.0):
- - abseil/algorithm/algorithm
- - abseil/base/core_headers
- - abseil/base/throw_delegate
- - abseil/container/inlined_vector_internal
- - abseil/memory/memory
- - abseil/container/inlined_vector_internal (0.20200225.0):
- - abseil/base/core_headers
- - abseil/container/compressed_tuple
- - abseil/memory/memory
- - abseil/meta/type_traits
- - abseil/types/span
- - abseil/memory (0.20200225.0):
- - abseil/memory/memory (= 0.20200225.0)
- - abseil/memory/memory (0.20200225.0):
- - abseil/base/core_headers
- - abseil/meta/type_traits
- - abseil/meta (0.20200225.0):
- - abseil/meta/type_traits (= 0.20200225.0)
- - abseil/meta/type_traits (0.20200225.0):
- - abseil/base/config
- - abseil/numeric/int128 (0.20200225.0):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/strings/internal (0.20200225.0):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/endian
- - abseil/base/raw_logging_internal
- - abseil/meta/type_traits
- - abseil/strings/str_format (0.20200225.0):
- - abseil/strings/str_format_internal
- - abseil/strings/str_format_internal (0.20200225.0):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/meta/type_traits
- - abseil/numeric/int128
- - abseil/strings/strings
- - abseil/types/span
- - abseil/strings/strings (0.20200225.0):
- - abseil/base/base
- - abseil/base/bits
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/endian
- - abseil/base/raw_logging_internal
- - abseil/base/throw_delegate
- - abseil/memory/memory
- - abseil/meta/type_traits
- - abseil/numeric/int128
- - abseil/strings/internal
- - abseil/time (0.20200225.0):
- - abseil/time/internal (= 0.20200225.0)
- - abseil/time/time (= 0.20200225.0)
- - abseil/time/internal (0.20200225.0):
- - abseil/time/internal/cctz (= 0.20200225.0)
- - abseil/time/internal/cctz (0.20200225.0):
- - abseil/time/internal/cctz/civil_time (= 0.20200225.0)
- - abseil/time/internal/cctz/time_zone (= 0.20200225.0)
- - abseil/time/internal/cctz/civil_time (0.20200225.0):
- - abseil/base/config
- - abseil/time/internal/cctz/time_zone (0.20200225.0):
- - abseil/base/config
- - abseil/time/internal/cctz/civil_time
- - abseil/time/time (0.20200225.0):
- - abseil/base/base
- - abseil/base/core_headers
- - abseil/base/raw_logging_internal
- - abseil/numeric/int128
- - abseil/strings/strings
- - abseil/time/internal/cctz/civil_time
- - abseil/time/internal/cctz/time_zone
- - abseil/types (0.20200225.0):
- - abseil/types/any (= 0.20200225.0)
- - abseil/types/bad_any_cast (= 0.20200225.0)
- - abseil/types/bad_any_cast_impl (= 0.20200225.0)
- - abseil/types/bad_optional_access (= 0.20200225.0)
- - abseil/types/bad_variant_access (= 0.20200225.0)
- - abseil/types/compare (= 0.20200225.0)
- - abseil/types/optional (= 0.20200225.0)
- - abseil/types/span (= 0.20200225.0)
- - abseil/types/variant (= 0.20200225.0)
- - abseil/types/any (0.20200225.0):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/meta/type_traits
- - abseil/types/bad_any_cast
- - abseil/utility/utility
- - abseil/types/bad_any_cast (0.20200225.0):
- - abseil/base/config
- - abseil/types/bad_any_cast_impl
- - abseil/types/bad_any_cast_impl (0.20200225.0):
- - abseil/base/config
- - abseil/base/raw_logging_internal
- - abseil/types/bad_optional_access (0.20200225.0):
- - abseil/base/config
- - abseil/base/raw_logging_internal
- - abseil/types/bad_variant_access (0.20200225.0):
- - abseil/base/config
- - abseil/base/raw_logging_internal
- - abseil/types/compare (0.20200225.0):
- - abseil/base/core_headers
- - abseil/meta/type_traits
- - abseil/types/optional (0.20200225.0):
- - abseil/base/base_internal
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/memory/memory
- - abseil/meta/type_traits
- - abseil/types/bad_optional_access
- - abseil/utility/utility
- - abseil/types/span (0.20200225.0):
- - abseil/algorithm/algorithm
- - abseil/base/core_headers
- - abseil/base/throw_delegate
- - abseil/meta/type_traits
- - abseil/types/variant (0.20200225.0):
- - abseil/base/base_internal
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/meta/type_traits
- - abseil/types/bad_variant_access
- - abseil/utility/utility
- - abseil/utility/utility (0.20200225.0):
- - abseil/base/base_internal
- - abseil/base/config
- - abseil/meta/type_traits
- - android_intent (0.0.1):
+ - audio_session (0.0.1):
- Flutter
- barcode_scan_fix (0.0.1):
- Flutter
- MTBBarcodeScanner
- - BoringSSL-GRPC (0.0.7):
- - BoringSSL-GRPC/Implementation (= 0.0.7)
- - BoringSSL-GRPC/Interface (= 0.0.7)
- - BoringSSL-GRPC/Implementation (0.0.7):
- - BoringSSL-GRPC/Interface (= 0.0.7)
- - BoringSSL-GRPC/Interface (0.0.7)
- - cloud_firestore (0.14.4):
- - Firebase/CoreOnly (~> 6.33.0)
- - Firebase/Firestore (~> 6.33.0)
- - firebase_core
- - Flutter
- - cloud_firestore_web (0.1.0):
+ - camera (0.0.1):
- Flutter
- connectivity (0.0.1):
- Flutter
- Reachability
- - connectivity_for_web (0.1.0):
- - Flutter
- - connectivity_macos (0.0.1):
- - Flutter
- device_calendar (0.0.1):
- Flutter
- - device_info (0.0.1):
- - Flutter
- DKImagePickerController/Core (4.3.2):
- DKImagePickerController/ImageDataManager
- DKImagePickerController/Resource
@@ -275,188 +45,152 @@ PODS:
- file_picker (0.0.1):
- DKImagePickerController/PhotoGallery
- Flutter
- - file_picker_web (0.0.1):
- - Flutter
- - Firebase/Analytics (6.33.0):
+ - Firebase/Analytics (8.9.0):
- Firebase/Core
- - Firebase/Core (6.33.0):
+ - Firebase/Core (8.9.0):
- Firebase/CoreOnly
- - FirebaseAnalytics (= 6.8.3)
- - Firebase/CoreOnly (6.33.0):
- - FirebaseCore (= 6.10.3)
- - Firebase/Firestore (6.33.0):
+ - FirebaseAnalytics (~> 8.9.0)
+ - Firebase/CoreOnly (8.9.0):
+ - FirebaseCore (= 8.9.0)
+ - Firebase/Messaging (8.9.0):
- Firebase/CoreOnly
- - FirebaseFirestore (~> 1.18.0)
- - Firebase/Messaging (6.33.0):
- - Firebase/CoreOnly
- - FirebaseMessaging (~> 4.7.0)
- - firebase_analytics (6.3.0):
- - Firebase/Analytics (~> 6.33.0)
- - Firebase/CoreOnly (~> 6.33.0)
+ - FirebaseMessaging (~> 8.9.0)
+ - firebase_analytics (8.3.4):
+ - Firebase/Analytics (= 8.9.0)
- firebase_core
- Flutter
- - firebase_analytics_web (0.1.0):
- - Flutter
- - firebase_core (0.5.3):
- - Firebase/CoreOnly (~> 6.33.0)
+ - firebase_core (1.10.0):
+ - Firebase/CoreOnly (= 8.9.0)
- Flutter
- - firebase_core_web (0.1.0):
- - Flutter
- - firebase_messaging (7.0.3):
- - Firebase/CoreOnly (~> 6.33.0)
- - Firebase/Messaging (~> 6.33.0)
+ - firebase_messaging (11.1.0):
+ - Firebase/Messaging (= 8.9.0)
- firebase_core
- Flutter
- - FirebaseAnalytics (6.8.3):
- - FirebaseCore (~> 6.10)
- - FirebaseInstallations (~> 1.6)
- - GoogleAppMeasurement (= 6.8.3)
- - GoogleUtilities/AppDelegateSwizzler (~> 6.7)
- - GoogleUtilities/MethodSwizzler (~> 6.7)
- - GoogleUtilities/Network (~> 6.7)
- - "GoogleUtilities/NSData+zlib (~> 6.7)"
- - nanopb (~> 1.30906.0)
- - FirebaseCore (6.10.3):
- - FirebaseCoreDiagnostics (~> 1.6)
- - GoogleUtilities/Environment (~> 6.7)
- - GoogleUtilities/Logger (~> 6.7)
- - FirebaseCoreDiagnostics (1.7.0):
- - GoogleDataTransport (~> 7.4)
- - GoogleUtilities/Environment (~> 6.7)
- - GoogleUtilities/Logger (~> 6.7)
- - nanopb (~> 1.30906.0)
- - FirebaseFirestore (1.18.0):
- - abseil/algorithm (= 0.20200225.0)
- - abseil/base (= 0.20200225.0)
- - abseil/memory (= 0.20200225.0)
- - abseil/meta (= 0.20200225.0)
- - abseil/strings/strings (= 0.20200225.0)
- - abseil/time (= 0.20200225.0)
- - abseil/types (= 0.20200225.0)
- - FirebaseCore (~> 6.10)
- - "gRPC-C++ (~> 1.28.0)"
- - leveldb-library (~> 1.22)
- - nanopb (~> 1.30906.0)
- - FirebaseInstallations (1.7.0):
- - FirebaseCore (~> 6.10)
- - GoogleUtilities/Environment (~> 6.7)
- - GoogleUtilities/UserDefaults (~> 6.7)
- - PromisesObjC (~> 1.2)
- - FirebaseInstanceID (4.8.0):
- - FirebaseCore (~> 6.10)
- - FirebaseInstallations (~> 1.6)
- - GoogleUtilities/Environment (~> 6.7)
- - GoogleUtilities/UserDefaults (~> 6.7)
- - FirebaseMessaging (4.7.1):
- - FirebaseCore (~> 6.10)
- - FirebaseInstanceID (~> 4.7)
- - GoogleUtilities/AppDelegateSwizzler (~> 6.7)
- - GoogleUtilities/Environment (~> 6.7)
- - GoogleUtilities/Reachability (~> 6.7)
- - GoogleUtilities/UserDefaults (~> 6.7)
- - Protobuf (>= 3.9.2, ~> 3.9)
- - Flutter (1.0.0)
- - flutter_email_sender (0.0.1):
+ - FirebaseAnalytics (8.9.1):
+ - FirebaseAnalytics/AdIdSupport (= 8.9.1)
+ - FirebaseCore (~> 8.0)
+ - FirebaseInstallations (~> 8.0)
+ - GoogleUtilities/AppDelegateSwizzler (~> 7.6)
+ - GoogleUtilities/MethodSwizzler (~> 7.6)
+ - GoogleUtilities/Network (~> 7.6)
+ - "GoogleUtilities/NSData+zlib (~> 7.6)"
+ - nanopb (~> 2.30908.0)
+ - FirebaseAnalytics/AdIdSupport (8.9.1):
+ - FirebaseCore (~> 8.0)
+ - FirebaseInstallations (~> 8.0)
+ - GoogleAppMeasurement (= 8.9.1)
+ - GoogleUtilities/AppDelegateSwizzler (~> 7.6)
+ - GoogleUtilities/MethodSwizzler (~> 7.6)
+ - GoogleUtilities/Network (~> 7.6)
+ - "GoogleUtilities/NSData+zlib (~> 7.6)"
+ - nanopb (~> 2.30908.0)
+ - FirebaseCore (8.9.0):
+ - FirebaseCoreDiagnostics (~> 8.0)
+ - GoogleUtilities/Environment (~> 7.6)
+ - GoogleUtilities/Logger (~> 7.6)
+ - FirebaseCoreDiagnostics (8.10.0):
+ - GoogleDataTransport (~> 9.1)
+ - GoogleUtilities/Environment (~> 7.6)
+ - GoogleUtilities/Logger (~> 7.6)
+ - nanopb (~> 2.30908.0)
+ - FirebaseInstallations (8.10.0):
+ - FirebaseCore (~> 8.0)
+ - GoogleUtilities/Environment (~> 7.6)
+ - GoogleUtilities/UserDefaults (~> 7.6)
+ - PromisesObjC (< 3.0, >= 1.2)
+ - FirebaseMessaging (8.9.0):
+ - FirebaseCore (~> 8.0)
+ - FirebaseInstallations (~> 8.0)
+ - GoogleDataTransport (~> 9.1)
+ - GoogleUtilities/AppDelegateSwizzler (~> 7.6)
+ - GoogleUtilities/Environment (~> 7.6)
+ - GoogleUtilities/Reachability (~> 7.6)
+ - GoogleUtilities/UserDefaults (~> 7.6)
+ - nanopb (~> 2.30908.0)
+ - fit_kit (0.0.1):
- Flutter
+ - Flutter (1.0.0)
- flutter_flexible_toast (0.0.1):
- Flutter
- flutter_hms_gms_availability (0.0.1):
- Flutter
- flutter_inappwebview (0.0.1):
- Flutter
- - flutter_local_notifications (0.0.1):
+ - flutter_inappwebview/Core (= 0.0.1)
+ - OrderedSet (~> 5.0)
+ - flutter_inappwebview/Core (0.0.1):
- Flutter
- - flutter_plugin_android_lifecycle (0.0.1):
+ - OrderedSet (~> 5.0)
+ - flutter_local_notifications (0.0.1):
- Flutter
- flutter_tts (0.0.1):
- Flutter
- - flutter_webrtc (0.2.2):
+ - flutter_webrtc (0.7.1):
- Flutter
- - GoogleWebRTC (= 1.1.31999)
- Libyuv (= 1703)
+ - WebRTC-SDK (= 92.4515.11)
- FMDB (2.7.5):
- FMDB/standard (= 2.7.5)
- FMDB/standard (2.7.5)
- - geolocator (6.2.0):
+ - geolocator_apple (1.2.0):
- Flutter
- google_maps_flutter (0.0.1):
- Flutter
- - GoogleMaps (< 3.10)
- - GoogleAppMeasurement (6.8.3):
- - GoogleUtilities/AppDelegateSwizzler (~> 6.7)
- - GoogleUtilities/MethodSwizzler (~> 6.7)
- - GoogleUtilities/Network (~> 6.7)
- - "GoogleUtilities/NSData+zlib (~> 6.7)"
- - nanopb (~> 1.30906.0)
- - GoogleDataTransport (7.5.1):
- - nanopb (~> 1.30906.0)
- - GoogleMaps (3.9.0):
- - GoogleMaps/Maps (= 3.9.0)
- - GoogleMaps/Base (3.9.0)
- - GoogleMaps/Maps (3.9.0):
+ - GoogleMaps
+ - GoogleAppMeasurement (8.9.1):
+ - GoogleAppMeasurement/AdIdSupport (= 8.9.1)
+ - GoogleUtilities/AppDelegateSwizzler (~> 7.6)
+ - GoogleUtilities/MethodSwizzler (~> 7.6)
+ - GoogleUtilities/Network (~> 7.6)
+ - "GoogleUtilities/NSData+zlib (~> 7.6)"
+ - nanopb (~> 2.30908.0)
+ - GoogleAppMeasurement/AdIdSupport (8.9.1):
+ - GoogleAppMeasurement/WithoutAdIdSupport (= 8.9.1)
+ - GoogleUtilities/AppDelegateSwizzler (~> 7.6)
+ - GoogleUtilities/MethodSwizzler (~> 7.6)
+ - GoogleUtilities/Network (~> 7.6)
+ - "GoogleUtilities/NSData+zlib (~> 7.6)"
+ - nanopb (~> 2.30908.0)
+ - GoogleAppMeasurement/WithoutAdIdSupport (8.9.1):
+ - GoogleUtilities/AppDelegateSwizzler (~> 7.6)
+ - GoogleUtilities/MethodSwizzler (~> 7.6)
+ - GoogleUtilities/Network (~> 7.6)
+ - "GoogleUtilities/NSData+zlib (~> 7.6)"
+ - nanopb (~> 2.30908.0)
+ - GoogleDataTransport (9.1.2):
+ - GoogleUtilities/Environment (~> 7.2)
+ - nanopb (~> 2.30908.0)
+ - PromisesObjC (< 3.0, >= 1.2)
+ - GoogleMaps (5.2.0):
+ - GoogleMaps/Maps (= 5.2.0)
+ - GoogleMaps/Base (5.2.0)
+ - GoogleMaps/Maps (5.2.0):
- GoogleMaps/Base
- - GoogleUtilities/AppDelegateSwizzler (6.7.2):
+ - GoogleUtilities/AppDelegateSwizzler (7.6.0):
- GoogleUtilities/Environment
- GoogleUtilities/Logger
- GoogleUtilities/Network
- - GoogleUtilities/Environment (6.7.2):
- - PromisesObjC (~> 1.2)
- - GoogleUtilities/Logger (6.7.2):
+ - GoogleUtilities/Environment (7.6.0):
+ - PromisesObjC (< 3.0, >= 1.2)
+ - GoogleUtilities/Logger (7.6.0):
- GoogleUtilities/Environment
- - GoogleUtilities/MethodSwizzler (6.7.2):
+ - GoogleUtilities/MethodSwizzler (7.6.0):
- GoogleUtilities/Logger
- - GoogleUtilities/Network (6.7.2):
+ - GoogleUtilities/Network (7.6.0):
- GoogleUtilities/Logger
- "GoogleUtilities/NSData+zlib"
- GoogleUtilities/Reachability
- - "GoogleUtilities/NSData+zlib (6.7.2)"
- - GoogleUtilities/Reachability (6.7.2):
+ - "GoogleUtilities/NSData+zlib (7.6.0)"
+ - GoogleUtilities/Reachability (7.6.0):
- GoogleUtilities/Logger
- - GoogleUtilities/UserDefaults (6.7.2):
+ - GoogleUtilities/UserDefaults (7.6.0):
- GoogleUtilities/Logger
- - GoogleWebRTC (1.1.31999)
- - "gRPC-C++ (1.28.2)":
- - "gRPC-C++/Implementation (= 1.28.2)"
- - "gRPC-C++/Interface (= 1.28.2)"
- - "gRPC-C++/Implementation (1.28.2)":
- - abseil/container/inlined_vector (= 0.20200225.0)
- - abseil/memory/memory (= 0.20200225.0)
- - abseil/strings/str_format (= 0.20200225.0)
- - abseil/strings/strings (= 0.20200225.0)
- - abseil/types/optional (= 0.20200225.0)
- - "gRPC-C++/Interface (= 1.28.2)"
- - gRPC-Core (= 1.28.2)
- - "gRPC-C++/Interface (1.28.2)"
- - gRPC-Core (1.28.2):
- - gRPC-Core/Implementation (= 1.28.2)
- - gRPC-Core/Interface (= 1.28.2)
- - gRPC-Core/Implementation (1.28.2):
- - abseil/container/inlined_vector (= 0.20200225.0)
- - abseil/memory/memory (= 0.20200225.0)
- - abseil/strings/str_format (= 0.20200225.0)
- - abseil/strings/strings (= 0.20200225.0)
- - abseil/types/optional (= 0.20200225.0)
- - BoringSSL-GRPC (= 0.0.7)
- - gRPC-Core/Interface (= 1.28.2)
- - gRPC-Core/Interface (1.28.2)
- - hexcolor (0.0.1):
- - Flutter
- - "huawei_location (5.0.0+301)":
- - Flutter
- - "huawei_map (5.0.3+303)":
- - Flutter
- - image_cropper (0.0.3):
- - Flutter
- - TOCropViewController (~> 2.5.4)
- image_picker (0.0.1):
- Flutter
- in_app_review (0.2.0):
- Flutter
- - in_app_update (0.0.1):
- - Flutter
- just_audio (0.0.1):
- Flutter
- - leveldb-library (1.22)
- Libyuv (1703)
- local_auth (0.0.1):
- Flutter
@@ -464,53 +198,35 @@ PODS:
- Flutter
- manage_calendar_events (0.0.1):
- Flutter
- - map_launcher (0.0.1):
- - Flutter
- maps_launcher (0.0.1):
- Flutter
- MTBBarcodeScanner (5.0.11)
- - nanopb (1.30906.0):
- - nanopb/decode (= 1.30906.0)
- - nanopb/encode (= 1.30906.0)
- - nanopb/decode (1.30906.0)
- - nanopb/encode (1.30906.0)
+ - nanopb (2.30908.0):
+ - nanopb/decode (= 2.30908.0)
+ - nanopb/encode (= 2.30908.0)
+ - nanopb/decode (2.30908.0)
+ - nanopb/encode (2.30908.0)
- native_device_orientation (0.0.1):
- Flutter
- nfc_in_flutter (1.0.0):
- Flutter
- - NVActivityIndicatorView (5.1.1):
- - NVActivityIndicatorView/Base (= 5.1.1)
- - NVActivityIndicatorView/Base (5.1.1)
- - OpenTok (2.20.0)
- - path_provider (0.0.1):
- - Flutter
- - path_provider_linux (0.0.1):
+ - OrderedSet (5.0.0)
+ - package_info_plus (0.4.5):
- Flutter
- - path_provider_macos (0.0.1):
- - Flutter
- - path_provider_windows (0.0.1):
+ - path_provider_ios (0.0.1):
- Flutter
- "permission_handler (5.1.0+2)":
- Flutter
- - PromisesObjC (1.2.11)
- - Protobuf (3.13.0)
+ - PromisesObjC (2.0.0)
- Reachability (3.2)
- screen (0.0.1):
- Flutter
- - SDWebImage (5.10.4):
- - SDWebImage/Core (= 5.10.4)
- - SDWebImage/Core (5.10.4)
- - shared_preferences (0.0.1):
- - Flutter
- - shared_preferences_linux (0.0.1):
- - Flutter
- - shared_preferences_macos (0.0.1):
- - Flutter
- - shared_preferences_web (0.0.1):
- - Flutter
- - shared_preferences_windows (0.0.1):
+ - SDWebImage (5.12.1):
+ - SDWebImage/Core (= 5.12.1)
+ - SDWebImage/Core (5.12.1)
+ - searchable_dropdown (1.1.1):
- Flutter
- - sms_otp_auto_verify (0.0.1):
+ - shared_preferences_ios (0.0.1):
- Flutter
- speech_to_text (0.0.1):
- Flutter
@@ -518,185 +234,115 @@ PODS:
- sqflite (0.0.2):
- Flutter
- FMDB (>= 2.7.5)
- - SwiftyGif (5.4.0)
- - TOCropViewController (2.5.5)
+ - SwiftyGif (5.4.1)
- Try (2.1.1)
- - "twilio_programmable_video (0.6.4+1)":
- - Flutter
- - TwilioVideo (~> 3.7)
- - TwilioVideo (3.8.0)
- - url_launcher (0.0.1):
- - Flutter
- - url_launcher_linux (0.0.1):
- - Flutter
- - url_launcher_macos (0.0.1):
- - Flutter
- - url_launcher_web (0.0.1):
- - Flutter
- - url_launcher_windows (0.0.1):
+ - url_launcher_ios (0.0.1):
- Flutter
- vibration (1.7.3):
- Flutter
- - vibration_web (1.6.2):
- - Flutter
- video_player (0.0.1):
- Flutter
- - video_player_web (0.0.1):
- - Flutter
- wakelock (0.0.1):
- Flutter
- - webview_flutter (0.0.1):
+ - WebRTC-SDK (92.4515.11)
+ - webview_flutter_wkwebview (0.0.1):
- Flutter
- wifi (0.0.1):
- Flutter
DEPENDENCIES:
- - android_intent (from `.symlinks/plugins/android_intent/ios`)
+ - audio_session (from `.symlinks/plugins/audio_session/ios`)
- barcode_scan_fix (from `.symlinks/plugins/barcode_scan_fix/ios`)
- - cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`)
- - cloud_firestore_web (from `.symlinks/plugins/cloud_firestore_web/ios`)
+ - camera (from `.symlinks/plugins/camera/ios`)
- connectivity (from `.symlinks/plugins/connectivity/ios`)
- - connectivity_for_web (from `.symlinks/plugins/connectivity_for_web/ios`)
- - connectivity_macos (from `.symlinks/plugins/connectivity_macos/ios`)
- device_calendar (from `.symlinks/plugins/device_calendar/ios`)
- - device_info (from `.symlinks/plugins/device_info/ios`)
- file_picker (from `.symlinks/plugins/file_picker/ios`)
- - file_picker_web (from `.symlinks/plugins/file_picker_web/ios`)
- firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`)
- - firebase_analytics_web (from `.symlinks/plugins/firebase_analytics_web/ios`)
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
- - firebase_core_web (from `.symlinks/plugins/firebase_core_web/ios`)
- firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`)
+ - fit_kit (from `.symlinks/plugins/fit_kit/ios`)
- Flutter (from `Flutter`)
- - flutter_email_sender (from `.symlinks/plugins/flutter_email_sender/ios`)
- flutter_flexible_toast (from `.symlinks/plugins/flutter_flexible_toast/ios`)
- flutter_hms_gms_availability (from `.symlinks/plugins/flutter_hms_gms_availability/ios`)
- flutter_inappwebview (from `.symlinks/plugins/flutter_inappwebview/ios`)
- flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`)
- - flutter_plugin_android_lifecycle (from `.symlinks/plugins/flutter_plugin_android_lifecycle/ios`)
- flutter_tts (from `.symlinks/plugins/flutter_tts/ios`)
- flutter_webrtc (from `.symlinks/plugins/flutter_webrtc/ios`)
- - geolocator (from `.symlinks/plugins/geolocator/ios`)
+ - geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`)
- google_maps_flutter (from `.symlinks/plugins/google_maps_flutter/ios`)
- - hexcolor (from `.symlinks/plugins/hexcolor/ios`)
- - huawei_location (from `.symlinks/plugins/huawei_location/ios`)
- - huawei_map (from `.symlinks/plugins/huawei_map/ios`)
- - image_cropper (from `.symlinks/plugins/image_cropper/ios`)
- image_picker (from `.symlinks/plugins/image_picker/ios`)
- in_app_review (from `.symlinks/plugins/in_app_review/ios`)
- - in_app_update (from `.symlinks/plugins/in_app_update/ios`)
- just_audio (from `.symlinks/plugins/just_audio/ios`)
- local_auth (from `.symlinks/plugins/local_auth/ios`)
- location (from `.symlinks/plugins/location/ios`)
- manage_calendar_events (from `.symlinks/plugins/manage_calendar_events/ios`)
- - map_launcher (from `.symlinks/plugins/map_launcher/ios`)
- maps_launcher (from `.symlinks/plugins/maps_launcher/ios`)
- native_device_orientation (from `.symlinks/plugins/native_device_orientation/ios`)
- nfc_in_flutter (from `.symlinks/plugins/nfc_in_flutter/ios`)
- - NVActivityIndicatorView
- - OpenTok
- - path_provider (from `.symlinks/plugins/path_provider/ios`)
- - path_provider_linux (from `.symlinks/plugins/path_provider_linux/ios`)
- - path_provider_macos (from `.symlinks/plugins/path_provider_macos/ios`)
- - path_provider_windows (from `.symlinks/plugins/path_provider_windows/ios`)
+ - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
+ - path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`)
- permission_handler (from `.symlinks/plugins/permission_handler/ios`)
- screen (from `.symlinks/plugins/screen/ios`)
- - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`)
- - shared_preferences_linux (from `.symlinks/plugins/shared_preferences_linux/ios`)
- - shared_preferences_macos (from `.symlinks/plugins/shared_preferences_macos/ios`)
- - shared_preferences_web (from `.symlinks/plugins/shared_preferences_web/ios`)
- - shared_preferences_windows (from `.symlinks/plugins/shared_preferences_windows/ios`)
- - sms_otp_auto_verify (from `.symlinks/plugins/sms_otp_auto_verify/ios`)
+ - searchable_dropdown (from `.symlinks/plugins/searchable_dropdown/ios`)
+ - shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`)
- speech_to_text (from `.symlinks/plugins/speech_to_text/ios`)
- sqflite (from `.symlinks/plugins/sqflite/ios`)
- - twilio_programmable_video (from `.symlinks/plugins/twilio_programmable_video/ios`)
- - url_launcher (from `.symlinks/plugins/url_launcher/ios`)
- - url_launcher_linux (from `.symlinks/plugins/url_launcher_linux/ios`)
- - url_launcher_macos (from `.symlinks/plugins/url_launcher_macos/ios`)
- - url_launcher_web (from `.symlinks/plugins/url_launcher_web/ios`)
- - url_launcher_windows (from `.symlinks/plugins/url_launcher_windows/ios`)
+ - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
- vibration (from `.symlinks/plugins/vibration/ios`)
- - vibration_web (from `.symlinks/plugins/vibration_web/ios`)
- video_player (from `.symlinks/plugins/video_player/ios`)
- - video_player_web (from `.symlinks/plugins/video_player_web/ios`)
- wakelock (from `.symlinks/plugins/wakelock/ios`)
- - webview_flutter (from `.symlinks/plugins/webview_flutter/ios`)
+ - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`)
- wifi (from `.symlinks/plugins/wifi/ios`)
SPEC REPOS:
trunk:
- - abseil
- - BoringSSL-GRPC
- DKImagePickerController
- DKPhotoGallery
- Firebase
- FirebaseAnalytics
- FirebaseCore
- FirebaseCoreDiagnostics
- - FirebaseFirestore
- FirebaseInstallations
- - FirebaseInstanceID
- FirebaseMessaging
- FMDB
- GoogleAppMeasurement
- GoogleDataTransport
- GoogleMaps
- GoogleUtilities
- - GoogleWebRTC
- - "gRPC-C++"
- - gRPC-Core
- - leveldb-library
- Libyuv
- MTBBarcodeScanner
- nanopb
- - NVActivityIndicatorView
- - OpenTok
+ - OrderedSet
- PromisesObjC
- - Protobuf
- Reachability
- SDWebImage
- SwiftyGif
- - TOCropViewController
- Try
- - TwilioVideo
+ - WebRTC-SDK
EXTERNAL SOURCES:
- android_intent:
- :path: ".symlinks/plugins/android_intent/ios"
+ audio_session:
+ :path: ".symlinks/plugins/audio_session/ios"
barcode_scan_fix:
:path: ".symlinks/plugins/barcode_scan_fix/ios"
- cloud_firestore:
- :path: ".symlinks/plugins/cloud_firestore/ios"
- cloud_firestore_web:
- :path: ".symlinks/plugins/cloud_firestore_web/ios"
+ camera:
+ :path: ".symlinks/plugins/camera/ios"
connectivity:
:path: ".symlinks/plugins/connectivity/ios"
- connectivity_for_web:
- :path: ".symlinks/plugins/connectivity_for_web/ios"
- connectivity_macos:
- :path: ".symlinks/plugins/connectivity_macos/ios"
device_calendar:
:path: ".symlinks/plugins/device_calendar/ios"
- device_info:
- :path: ".symlinks/plugins/device_info/ios"
file_picker:
:path: ".symlinks/plugins/file_picker/ios"
- file_picker_web:
- :path: ".symlinks/plugins/file_picker_web/ios"
firebase_analytics:
:path: ".symlinks/plugins/firebase_analytics/ios"
- firebase_analytics_web:
- :path: ".symlinks/plugins/firebase_analytics_web/ios"
firebase_core:
:path: ".symlinks/plugins/firebase_core/ios"
- firebase_core_web:
- :path: ".symlinks/plugins/firebase_core_web/ios"
firebase_messaging:
:path: ".symlinks/plugins/firebase_messaging/ios"
+ fit_kit:
+ :path: ".symlinks/plugins/fit_kit/ios"
Flutter:
:path: Flutter
- flutter_email_sender:
- :path: ".symlinks/plugins/flutter_email_sender/ios"
flutter_flexible_toast:
:path: ".symlinks/plugins/flutter_flexible_toast/ios"
flutter_hms_gms_availability:
@@ -705,30 +351,18 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/flutter_inappwebview/ios"
flutter_local_notifications:
:path: ".symlinks/plugins/flutter_local_notifications/ios"
- flutter_plugin_android_lifecycle:
- :path: ".symlinks/plugins/flutter_plugin_android_lifecycle/ios"
flutter_tts:
:path: ".symlinks/plugins/flutter_tts/ios"
flutter_webrtc:
:path: ".symlinks/plugins/flutter_webrtc/ios"
- geolocator:
- :path: ".symlinks/plugins/geolocator/ios"
+ geolocator_apple:
+ :path: ".symlinks/plugins/geolocator_apple/ios"
google_maps_flutter:
:path: ".symlinks/plugins/google_maps_flutter/ios"
- hexcolor:
- :path: ".symlinks/plugins/hexcolor/ios"
- huawei_location:
- :path: ".symlinks/plugins/huawei_location/ios"
- huawei_map:
- :path: ".symlinks/plugins/huawei_map/ios"
- image_cropper:
- :path: ".symlinks/plugins/image_cropper/ios"
image_picker:
:path: ".symlinks/plugins/image_picker/ios"
in_app_review:
:path: ".symlinks/plugins/in_app_review/ios"
- in_app_update:
- :path: ".symlinks/plugins/in_app_update/ios"
just_audio:
:path: ".symlinks/plugins/just_audio/ios"
local_auth:
@@ -737,174 +371,108 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/location/ios"
manage_calendar_events:
:path: ".symlinks/plugins/manage_calendar_events/ios"
- map_launcher:
- :path: ".symlinks/plugins/map_launcher/ios"
maps_launcher:
:path: ".symlinks/plugins/maps_launcher/ios"
native_device_orientation:
:path: ".symlinks/plugins/native_device_orientation/ios"
nfc_in_flutter:
:path: ".symlinks/plugins/nfc_in_flutter/ios"
- path_provider:
- :path: ".symlinks/plugins/path_provider/ios"
- path_provider_linux:
- :path: ".symlinks/plugins/path_provider_linux/ios"
- path_provider_macos:
- :path: ".symlinks/plugins/path_provider_macos/ios"
- path_provider_windows:
- :path: ".symlinks/plugins/path_provider_windows/ios"
+ package_info_plus:
+ :path: ".symlinks/plugins/package_info_plus/ios"
+ path_provider_ios:
+ :path: ".symlinks/plugins/path_provider_ios/ios"
permission_handler:
:path: ".symlinks/plugins/permission_handler/ios"
screen:
:path: ".symlinks/plugins/screen/ios"
- shared_preferences:
- :path: ".symlinks/plugins/shared_preferences/ios"
- shared_preferences_linux:
- :path: ".symlinks/plugins/shared_preferences_linux/ios"
- shared_preferences_macos:
- :path: ".symlinks/plugins/shared_preferences_macos/ios"
- shared_preferences_web:
- :path: ".symlinks/plugins/shared_preferences_web/ios"
- shared_preferences_windows:
- :path: ".symlinks/plugins/shared_preferences_windows/ios"
- sms_otp_auto_verify:
- :path: ".symlinks/plugins/sms_otp_auto_verify/ios"
+ searchable_dropdown:
+ :path: ".symlinks/plugins/searchable_dropdown/ios"
+ shared_preferences_ios:
+ :path: ".symlinks/plugins/shared_preferences_ios/ios"
speech_to_text:
:path: ".symlinks/plugins/speech_to_text/ios"
sqflite:
:path: ".symlinks/plugins/sqflite/ios"
- twilio_programmable_video:
- :path: ".symlinks/plugins/twilio_programmable_video/ios"
- url_launcher:
- :path: ".symlinks/plugins/url_launcher/ios"
- url_launcher_linux:
- :path: ".symlinks/plugins/url_launcher_linux/ios"
- url_launcher_macos:
- :path: ".symlinks/plugins/url_launcher_macos/ios"
- url_launcher_web:
- :path: ".symlinks/plugins/url_launcher_web/ios"
- url_launcher_windows:
- :path: ".symlinks/plugins/url_launcher_windows/ios"
+ url_launcher_ios:
+ :path: ".symlinks/plugins/url_launcher_ios/ios"
vibration:
:path: ".symlinks/plugins/vibration/ios"
- vibration_web:
- :path: ".symlinks/plugins/vibration_web/ios"
video_player:
:path: ".symlinks/plugins/video_player/ios"
- video_player_web:
- :path: ".symlinks/plugins/video_player_web/ios"
wakelock:
:path: ".symlinks/plugins/wakelock/ios"
- webview_flutter:
- :path: ".symlinks/plugins/webview_flutter/ios"
+ webview_flutter_wkwebview:
+ :path: ".symlinks/plugins/webview_flutter_wkwebview/ios"
wifi:
:path: ".symlinks/plugins/wifi/ios"
SPEC CHECKSUMS:
- abseil: 6c8eb7892aefa08d929b39f9bb108e5367e3228f
- android_intent: 367df2f1277a74e4a90e14a8ab3df3112d087052
+ audio_session: 4f3e461722055d21515cf3261b64c973c062f345
barcode_scan_fix: 80dd65de55f27eec6591dd077c8b85f2b79e31f1
- BoringSSL-GRPC: 8edf627ee524575e2f8d19d56f068b448eea3879
- cloud_firestore: b8c0e15fa49dfff87c2817d288b577e5dca2df13
- cloud_firestore_web: 9ec3dc7f5f98de5129339802d491c1204462bfec
+ camera: fe33292aff715a981eb34d7ce7b35b54337ff34c
connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467
- connectivity_for_web: 2b8584556930d4bd490d82b836bcf45067ce345b
- connectivity_macos: e2e9731b6b22dda39eb1b128f6969d574460e191
device_calendar: 23b28a5f1ab3bf77e34542fb1167e1b8b29a98f5
- device_info: d7d233b645a32c40dfdc212de5cf646ca482f175
DKImagePickerController: b5eb7f7a388e4643264105d648d01f727110fc3d
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
file_picker: 3e6c3790de664ccf9b882732d9db5eaf6b8d4eb1
- file_picker_web: 37b10786e88885124fac99dc899866e78a132ef3
- Firebase: 8db6f2d1b2c5e2984efba4949a145875a8f65fe5
- firebase_analytics: 36a619088c46224900829f14f4daa71585693a6f
- firebase_analytics_web: 7d539061ea4af07563a0e21044af89cab70efec0
- firebase_core: 5d6a02f3d85acd5f8321c2d6d62877626a670659
- firebase_core_web: d501d8b946b60c8af265428ce483b0fff5ad52d1
- firebase_messaging: 0aea2cd5885b65e19ede58ee3507f485c992cc75
- FirebaseAnalytics: 5dd088bd2e67bb9d13dbf792d1164ceaf3052193
- FirebaseCore: d889d9e12535b7f36ac8bfbf1713a0836a3012cd
- FirebaseCoreDiagnostics: 770ac5958e1372ce67959ae4b4f31d8e127c3ac1
- FirebaseFirestore: adff4877869ca91a11250cc0989a6cd56bad163f
- FirebaseInstallations: 466c7b4d1f58fe16707693091da253726a731ed2
- FirebaseInstanceID: bd3ffc24367f901a43c063b36c640b345a4a5dd1
- FirebaseMessaging: 5eca4ef173de76253352511aafef774caa1cba2a
- Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
- flutter_email_sender: f787522d0e82f50e5766c1213dbffff22fdcf009
+ Firebase: 13d8d96499e2635428d5bf0ec675df21f95d9a95
+ firebase_analytics: 7a7528bb2abf4ca22cff7a57bbf909dcab73e13d
+ firebase_core: f770e033e790657b3505f04be4cb24c482912f11
+ firebase_messaging: 0c8d1a1732487db7f332fb65232053e93201e2fb
+ FirebaseAnalytics: 4ab446ce08a3fe52e8a4303dd997cf26276bf968
+ FirebaseCore: 599ee609343eaf4941bd188f85e3aa077ffe325b
+ FirebaseCoreDiagnostics: 56fb7216d87e0e6ec2feddefa9d8a392fe8b2c18
+ FirebaseInstallations: 830327b45345ffc859eaa9c17bcd5ae893fd5425
+ FirebaseMessaging: 82c4a48638f53f7b184f3cc9f6cd2cbe533ab316
+ fit_kit: 7643191161673bcd32863ae3f10baed6ce55c7c0
+ Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
flutter_flexible_toast: 0547e740cae0c33bb7c51bcd931233f4584e1143
flutter_hms_gms_availability: babc50b18670e99780270bc18d9b17d0a07cd77e
- flutter_inappwebview: 69dfbac46157b336ffbec19ca6dfd4638c7bf189
- flutter_local_notifications: 9e4738ce2471c5af910d961a6b7eadcf57c50186
- flutter_plugin_android_lifecycle: dc0b544e129eebb77a6bfb1239d4d1c673a60a35
+ flutter_inappwebview: bfd58618f49dc62f2676de690fc6dcda1d6c3721
+ flutter_local_notifications: 0c0b1ae97e741e1521e4c1629a459d04b9aec743
flutter_tts: 0f492aab6accf87059b72354fcb4ba934304771d
- flutter_webrtc: 39898454258b54ba51996850d5da8d5d53bf1524
+ flutter_webrtc: a5a79904f0bca0ea23aff49c51ca765f70a0f703
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
- geolocator: f5e3de65e241caba7ce3e8a618803387bda73384
- google_maps_flutter: c7f9c73576de1fbe152a227bfd6e6c4ae8088619
- GoogleAppMeasurement: 966e88df9d19c15715137bb2ddaf52373f111436
- GoogleDataTransport: f56af7caa4ed338dc8e138a5d7c5973e66440833
- GoogleMaps: 4b5346bddfe6911bb89155d43c903020170523ac
- GoogleUtilities: 7f2f5a07f888cdb145101d6042bc4422f57e70b3
- GoogleWebRTC: b39a78c4f5cc6b0323415b9233db03a2faa7b0f0
- "gRPC-C++": 13d8ccef97d5c3c441b7e3c529ef28ebee86fad2
- gRPC-Core: 4afa11bfbedf7cdecd04de535a9e046893404ed5
- hexcolor: fdfb9c4258ad96e949c2dbcdf790a62194b8aa89
- huawei_location: a1c3d2a029138b3d0b9a72ce910ffae3ff23c1aa
- huawei_map: 34fbad9c274ea78a4151487c9ebe27f1887777e7
- image_cropper: c8f9b4157933c7bb965a66d1c5e6c8fd408c6eb4
- image_picker: 9c3312491f862b28d21ecd8fdf0ee14e601b3f09
+ geolocator_apple: b741765c55dc21950e3e106e8b3584e55cf81ce5
+ google_maps_flutter: abdb8dee6c52d4be36ad131ee6ebfacd14417c5a
+ GoogleAppMeasurement: 837649ad3987936c232f6717c5680216f6243d24
+ GoogleDataTransport: 629c20a4d363167143f30ea78320d5a7eb8bd940
+ GoogleMaps: 025272d5876d3b32604e5c080dc25eaf68764693
+ GoogleUtilities: 684ee790a24f73ebb2d1d966e9711c203f2a4237
+ image_picker: 9aa50e1d8cdacdbed739e925b7eea16d014367e6
in_app_review: 4a97249f7a2f539a0f294c2d9196b7fe35e49541
- in_app_update: 16e877e205f4360264cb536e3a6481f0d90299e1
just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa
- leveldb-library: 55d93ee664b4007aac644a782d11da33fba316f7
Libyuv: 5f79ced0ee66e60a612ca97de1e6ccacd187a437
- local_auth: 25938960984c3a7f6e3253e3f8d962fdd16852bd
+ local_auth: ef62030a2731330b95df7ef1331bd15f6a64b8a6
location: 3a2eed4dd2fab25e7b7baf2a9efefe82b512d740
manage_calendar_events: 0338d505ea26cdfd20cd883279bc28afa11eca34
- map_launcher: e325db1261d029ff33e08e03baccffe09593ffea
- maps_launcher: eae38ee13a9c3f210fa04e04bb4c073fa4c6ed92
+ maps_launcher: 2e5b6a2d664ec6c27f82ffa81b74228d770ab203
MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb
- nanopb: 59317e09cf1f1a0af72f12af412d54edf52603fc
- native_device_orientation: e24d00be281de72996640885d80e706142707660
+ nanopb: a0ba3315591a9ae0a16a309ee504766e90db0c96
+ native_device_orientation: 3b4cfc9565a7b879cc4fde282b3e27745e852d0d
nfc_in_flutter: c656fbfb1ec5b9d021da87b0c87629d62fd5264d
- NVActivityIndicatorView: 1f6c5687f1171810aa27a3296814dc2d7dec3667
- OpenTok: 414c2c1dc6486f1897015e4d1703558d5eed48c3
- path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c
- path_provider_linux: 4d630dc393e1f20364f3e3b4a2ff41d9674a84e4
- path_provider_macos: f760a3c5b04357c380e2fddb6f9db6f3015897e0
- path_provider_windows: a2b81600c677ac1959367280991971cb9a1edb3b
+ OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
+ package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
+ path_provider_ios: 7d7ce634493af4477d156294792024ec3485acd5
permission_handler: ccb20a9fad0ee9b1314a52b70b76b473c5f8dab0
- PromisesObjC: 8c196f5a328c2cba3e74624585467a557dcb482f
- Protobuf: 3dac39b34a08151c6d949560efe3f86134a3f748
+ PromisesObjC: 68159ce6952d93e17b2dfe273b8c40907db5ba58
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
screen: abd91ca7bf3426e1cc3646d27e9b2358d6bf07b0
- SDWebImage: c666b97e1fa9c64b4909816a903322018f0a9c84
- shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d
- shared_preferences_linux: afefbfe8d921e207f01ede8b60373d9e3b566b78
- shared_preferences_macos: f3f29b71ccbb56bf40c9dd6396c9acf15e214087
- shared_preferences_web: 141cce0c3ed1a1c5bf2a0e44f52d31eeb66e5ea9
- shared_preferences_windows: 36b76d6f54e76ead957e60b49e2f124b4cd3e6ae
- sms_otp_auto_verify: 201803ac25e13feedaae96eda8b70b10c55b3338
+ SDWebImage: 4dc3e42d9ec0c1028b960a33ac6b637bb432207b
+ searchable_dropdown: 5058be32fdc5e0481d300ff2087129072e71bd62
+ shared_preferences_ios: aef470a42dc4675a1cdd50e3158b42e3d1232b32
speech_to_text: b43a7d99aef037bd758ed8e45d79bbac035d2dfe
sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904
- SwiftyGif: 5d4af95df24caf1c570dbbcb32a3b8a0763bc6d7
- TOCropViewController: da59f531f8ac8a94ef6d6c0fc34009350f9e8bfe
+ SwiftyGif: 6895c887f5551618a3c5dd3ecb512419105bacca
Try: 5ef669ae832617b3cee58cb2c6f99fb767a4ff96
- twilio_programmable_video: ce33772ea8275b413c0ab5c5aa2e35f9da2d4066
- TwilioVideo: c13a51ceca375e91620eb7578d2573c90cf53b46
- url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef
- url_launcher_linux: ac237cb7a8058736e4aae38bdbcc748a4b394cc0
- url_launcher_macos: fd7894421cd39320dce5f292fc99ea9270b2a313
- url_launcher_web: e5527357f037c87560776e36436bf2b0288b965c
- url_launcher_windows: 683d7c283894db8d1914d3ab2223b20cc1ad95d5
+ url_launcher_ios: 02f1989d4e14e998335b02b67a7590fa34f971af
vibration: b5a33e764c3f609a975b9dca73dce20fdde627dc
- vibration_web: 0ba303d92469ba34d71c612a228b315908d7fcd9
- video_player: 9cc823b1d9da7e8427ee591e8438bfbcde500e6e
- video_player_web: da8cadb8274ed4f8dbee8d7171b420dedd437ce7
- wakelock: 0d4a70faf8950410735e3f61fb15d517c8a6efc4
- webview_flutter: d2b4d6c66968ad042ad94cbb791f5b72b4678a96
+ video_player: ecd305f42e9044793efd34846e1ce64c31ea6fcb
+ wakelock: d0fc7c864128eac40eba1617cb5264d9c940b46f
+ WebRTC-SDK: 21dbc6028a68f3a89718057a2caa970a4da8ebb7
+ webview_flutter_wkwebview: 005fbd90c888a42c5690919a1527ecc6649e1162
wifi: d7d77c94109e36c4175d845f0a5964eadba71060
-PODFILE CHECKSUM: df22e8ed6009dd48559053927dc365d6dad6c11f
+PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c
-COCOAPODS: 1.10.1
+COCOAPODS: 1.11.2
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index 6c02c983..9bf7caa5 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -520,7 +520,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
- PRODUCT_BUNDLE_IDENTIFIER = com.hmg.smartphone;
+ PRODUCT_BUNDLE_IDENTIFIER = "com.HMG.HMG-Smartphone";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
@@ -659,7 +659,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
- PRODUCT_BUNDLE_IDENTIFIER = com.hmg.smartphone;
+ PRODUCT_BUNDLE_IDENTIFIER = "com.HMG.HMG-Smartphone";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@@ -692,7 +692,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
- PRODUCT_BUNDLE_IDENTIFIER = com.hmg.smartphone;
+ PRODUCT_BUNDLE_IDENTIFIER = "com.HMG.HMG-Smartphone";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16..919434a6 100644
--- a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift
index 35a3c022..8826bbdd 100644
--- a/ios/Runner/AppDelegate.swift
+++ b/ios/Runner/AppDelegate.swift
@@ -29,12 +29,12 @@ var userNotificationCenterDelegate:UNUserNotificationCenterDelegate? = nil
if let mainViewController = window.rootViewController as? MainFlutterVC{ // platform initialization suppose to be in foreground
flutterViewController = mainViewController
HMGPlatformBridge.initialize(flutterViewController: flutterViewController)
- OpenTokPlatformBridge.initialize(flutterViewController: flutterViewController, registrar: self.registrar(forPlugin: "open-tok"))
+// OpenTokPlatformBridge.initialize(flutterViewController: flutterViewController, registrar: self.registrar(forPlugin: "open-tok"))
}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"))
+// OpenTokPlatformBridge.initialize(flutterViewController: flutterViewController, registrar: self.registrar(forPlugin: "open-tok"))
}
}
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
index e83c3bf5..1eb27a20 100644
--- a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -1,128 +1,128 @@
{
- "images":[
- {
- "idiom":"iphone",
- "size":"20x20",
- "scale":"2x",
- "filename":"Icon-App-20x20@2x.png"
- },
- {
- "idiom":"iphone",
- "size":"20x20",
- "scale":"3x",
- "filename":"Icon-App-20x20@3x.png"
- },
- {
- "idiom":"iphone",
- "size":"29x29",
- "scale":"1x",
- "filename":"Icon-App-29x29@1x.png"
- },
- {
- "idiom":"iphone",
- "size":"29x29",
- "scale":"2x",
- "filename":"Icon-App-29x29@2x.png"
- },
- {
- "idiom":"iphone",
- "size":"29x29",
- "scale":"3x",
- "filename":"Icon-App-29x29@3x.png"
- },
- {
- "idiom":"iphone",
- "size":"40x40",
- "scale":"2x",
- "filename":"Icon-App-40x40@2x.png"
- },
- {
- "idiom":"iphone",
- "size":"40x40",
- "scale":"3x",
- "filename":"Icon-App-40x40@3x.png"
- },
- {
- "idiom":"iphone",
- "size":"60x60",
- "scale":"2x",
- "filename":"Icon-App-60x60@2x.png"
- },
- {
- "idiom":"iphone",
- "size":"60x60",
- "scale":"3x",
- "filename":"Icon-App-60x60@3x.png"
- },
- {
- "idiom":"iphone",
- "size":"76x76",
- "scale":"2x",
- "filename":"Icon-App-76x76@2x.png"
- },
- {
- "idiom":"ipad",
- "size":"20x20",
- "scale":"1x",
- "filename":"Icon-App-20x20@1x.png"
- },
- {
- "idiom":"ipad",
- "size":"20x20",
- "scale":"2x",
- "filename":"Icon-App-20x20@2x.png"
- },
- {
- "idiom":"ipad",
- "size":"29x29",
- "scale":"1x",
- "filename":"Icon-App-29x29@1x.png"
- },
- {
- "idiom":"ipad",
- "size":"29x29",
- "scale":"2x",
- "filename":"Icon-App-29x29@2x.png"
- },
- {
- "idiom":"ipad",
- "size":"40x40",
- "scale":"1x",
- "filename":"Icon-App-40x40@1x.png"
- },
- {
- "idiom":"ipad",
- "size":"40x40",
- "scale":"2x",
- "filename":"Icon-App-40x40@2x.png"
- },
- {
- "idiom":"ipad",
- "size":"76x76",
- "scale":"1x",
- "filename":"Icon-App-76x76@1x.png"
- },
- {
- "idiom":"ipad",
- "size":"76x76",
- "scale":"2x",
- "filename":"Icon-App-76x76@2x.png"
- },
- {
- "idiom":"ipad",
- "size":"83.5x83.5",
- "scale":"2x",
- "filename":"Icon-App-83.5x83.5@2x.png"
- },
- {
- "size" : "1024x1024",
- "idiom" : "ios-marketing",
- "scale" : "1x",
- "filename" : "ItunesArtwork@2x.png"
- }
- ],
- "info":{
- "version":1,
- "author":"easyappicon"
+ "images" : [
+ {
+ "filename" : "Icon-App-20x20@2x.png",
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "20x20"
+ },
+ {
+ "filename" : "Icon-App-20x20@3x.png",
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "20x20"
+ },
+ {
+ "filename" : "Icon-App-29x29@1x.png",
+ "idiom" : "iphone",
+ "scale" : "1x",
+ "size" : "29x29"
+ },
+ {
+ "filename" : "Icon-App-29x29@2x.png",
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "29x29"
+ },
+ {
+ "filename" : "Icon-App-29x29@3x.png",
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "29x29"
+ },
+ {
+ "filename" : "Icon-App-40x40@2x.png",
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "40x40"
+ },
+ {
+ "filename" : "Icon-App-40x40@3x.png",
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "40x40"
+ },
+ {
+ "filename" : "Icon-App-60x60@2x.png",
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "60x60"
+ },
+ {
+ "filename" : "Icon-App-60x60@3x.png",
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "60x60"
+ },
+ {
+ "filename" : "Icon-App-20x20@1x.png",
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "20x20"
+ },
+ {
+ "filename" : "Icon-App-20x20@2x.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "20x20"
+ },
+ {
+ "filename" : "Icon-App-29x29@1x.png",
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "29x29"
+ },
+ {
+ "filename" : "Icon-App-29x29@2x.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "29x29"
+ },
+ {
+ "filename" : "Icon-App-40x40@1x.png",
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "40x40"
+ },
+ {
+ "filename" : "Icon-App-40x40@2x.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "40x40"
+ },
+ {
+ "filename" : "Icon-App-76x76@1x.png",
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "76x76"
+ },
+ {
+ "filename" : "Icon-App-76x76@2x.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "76x76"
+ },
+ {
+ "filename" : "Icon-App-83.5x83.5@2x.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "83.5x83.5"
+ },
+ {
+ "filename" : "icon.jpg",
+ "idiom" : "ios-marketing",
+ "scale" : "1x",
+ "size" : "1024x1024"
+ },
+ {
+ "filename" : "Icon-App-76x76@2x.png",
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "76x76"
}
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
}
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
deleted file mode 100644
index dc9ada47..00000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and /dev/null differ
diff --git a/ios/Runner/Helper/OpenTokPlatformBridge.swift b/ios/Runner/Helper/OpenTokPlatformBridge.swift
index 38e826e1..132f1384 100644
--- a/ios/Runner/Helper/OpenTokPlatformBridge.swift
+++ b/ios/Runner/Helper/OpenTokPlatformBridge.swift
@@ -8,52 +8,51 @@
import UIKit
import NetworkExtension
import SystemConfiguration.CaptiveNetwork
-import OpenTok
fileprivate var openTok:OpenTok?
class OpenTokPlatformBridge : NSObject{
- private var methodChannel:FlutterMethodChannel? = nil
- private var mainViewController:MainFlutterVC!
- private static var shared_:OpenTokPlatformBridge?
-
- class func initialize(flutterViewController:MainFlutterVC, registrar:FlutterPluginRegistrar?){
- shared_ = OpenTokPlatformBridge()
- shared_?.mainViewController = flutterViewController
-
- shared_?.openChannel()
- openTok = OpenTok(mainViewController: flutterViewController, registrar: registrar)
- }
-
- func shared() -> OpenTokPlatformBridge{
- assert((OpenTokPlatformBridge.shared_ != nil), "OpenTokPlatformBridge is not initialized, call initialize(mainViewController:MainFlutterVC) function first.")
- return OpenTokPlatformBridge.shared_!
- }
-
- private func openChannel(){
- methodChannel = FlutterMethodChannel(name: "OpenTok-Platform-Bridge", binaryMessenger: mainViewController.binaryMessenger)
- methodChannel?.setMethodCallHandler { (call, result) in
- print("Called function \(call.method)")
-
- switch(call.method) {
- case "initSession":
- openTok?.initSession(call: call, result: result)
-
- case "swapCamera":
- openTok?.swapCamera(call: call, result: result)
-
- case "toggleAudio":
- openTok?.toggleAudio(call: call, result: result)
-
- case "toggleVideo":
- openTok?.toggleVideo(call: call, result: result)
-
- default:
- result(FlutterMethodNotImplemented)
- }
-
- print("")
- }
- }
+// private var methodChannel:FlutterMethodChannel? = nil
+// private var mainViewController:MainFlutterVC!
+// private static var shared_:OpenTokPlatformBridge?
+//
+// class func initialize(flutterViewController:MainFlutterVC, registrar:FlutterPluginRegistrar?){
+// shared_ = OpenTokPlatformBridge()
+// shared_?.mainViewController = flutterViewController
+//
+// shared_?.openChannel()
+// openTok = OpenTok(mainViewController: flutterViewController, registrar: registrar)
+// }
+//
+// func shared() -> OpenTokPlatformBridge{
+// assert((OpenTokPlatformBridge.shared_ != nil), "OpenTokPlatformBridge is not initialized, call initialize(mainViewController:MainFlutterVC) function first.")
+// return OpenTokPlatformBridge.shared_!
+// }
+//
+// private func openChannel(){
+// methodChannel = FlutterMethodChannel(name: "OpenTok-Platform-Bridge", binaryMessenger: mainViewController.binaryMessenger)
+// methodChannel?.setMethodCallHandler { (call, result) in
+// print("Called function \(call.method)")
+//
+// switch(call.method) {
+// case "initSession":
+// openTok?.initSession(call: call, result: result)
+//
+// case "swapCamera":
+// openTok?.swapCamera(call: call, result: result)
+//
+// case "toggleAudio":
+// openTok?.toggleAudio(call: call, result: result)
+//
+// case "toggleVideo":
+// openTok?.toggleVideo(call: call, result: result)
+//
+// default:
+// result(FlutterMethodNotImplemented)
+// }
+//
+// print("")
+// }
+// }
}
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index 72bd4ac9..e13174af 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -15,50 +15,73 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- $(FLUTTER_BUILD_NAME)
+ $(MARKETING_VERSION)
CFBundleSignature
????
CFBundleVersion
$(FLUTTER_BUILD_NUMBER)
LSRequiresIPhoneOS
+ MinimumOSVersion
+ 11.0
+ NSAppTransportSecurity
+
+ NSAllowsArbitraryLoads
+
+ NSAllowsArbitraryLoadsForMedia
+
+ NSAllowsArbitraryLoadsInWebContent
+
+
+ NSAppleMusicUsageDescription
+ Required by another plugin, Please let us know if you find this functionality anywhere in the app.
+ NSBluetoothAlwaysUsageDescription
+ This App requires access to Bluetooth to connect blood pressure & blood sugar devices with the app to analyze the data.
+ NSBluetoothPeripheralUsageDescription
+ This App requires access to Bluetooth to connect blood pressure & blood sugar devices with the app to analyze the data.
NSCalendarsUsageDescription
- We need access to record you event in to calender.
+ This app requires calendar access to set reminders for Virtual & Normal Appointments.
NSCameraUsageDescription
- Need camera access for uploading images
+ This app requires camera access to enable virtual consultation between patient & doctor
+ NSContactsUsageDescription
+ This app requires contacts access to show incoming virtual consultation request.
+ NSFaceIDUsageDescription
+ This app requires Face ID to allow biometric authentication for app login.
+ NSHealthShareUsageDescription
+ This App need access to HealthKit to read heart rate & other data from your smart watch.
+ NSHealthUpdateUsageDescription
+ This App need access to HealthKit to read heart rate & other data from your smart watch.
NSLocationAlwaysAndWhenInUseUsageDescription
- This app will use your location to show cool stuffs near you.
+ This App requires access to your location to show the nearest hospitals & ER Locations from your location.
NSLocationAlwaysUsageDescription
- This app will use your location to show cool stuffs near you.
- NSLocationUsageDescription
- Need location access for updating nearby friends
+ This App requires access to your location to show the nearest hospitals from your location.
NSLocationWhenInUseUsageDescription
- This app will use your location to show cool stuffs near you.
+ This App requires access to your location to show the nearest hospitals from your location.
NSMicrophoneUsageDescription
- Need microphone access for uploading videos
+ This app requires microphone access to enable virtual consultation between patient & doctor
+ NSMotionUsageDescription
+ This app requires motion detection access to function properly.
NSPhotoLibraryUsageDescription
- Need photo library access for uploading images
+ This app requires photo library access to select image as document & upload it.
+ NSRemindersUsageDescription
+ This app requires calendar access to set reminders for Virtual & Normal Appointments.
+ NSSpeechRecognitionUsageDescription
+ This app requires speech recognition access to access voice command features.
+ NSUserActivityTypes
+
UIBackgroundModes
- fetch
+ audio
location
- processing
+ remote-notification
UILaunchStoryboardName
LaunchScreen
UIMainStoryboardFile
Main
- UIRequiredDeviceCapabilities
-
- location-services
- gps
- armv7
-
UISupportedInterfaceOrientations
UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
UISupportedInterfaceOrientations~ipad
@@ -71,5 +94,13 @@
io.flutter.embedded_views_preview
+ LSApplicationQueriesSchemes
+
+ comgooglemaps
+ baidumap
+ iosamap
+
+
+
diff --git a/ios/Runner/OpenTok/OpenTok.swift b/ios/Runner/OpenTok/OpenTok.swift
index 9cc0b79a..f91d83d5 100644
--- a/ios/Runner/OpenTok/OpenTok.swift
+++ b/ios/Runner/OpenTok/OpenTok.swift
@@ -6,7 +6,7 @@
//
import Foundation
-import OpenTok
+//import OpenTok
import UIKit
enum SdkState: String {
@@ -17,163 +17,164 @@ enum SdkState: String {
}
class OpenTok : NSObject{
- private var mainViewController:MainFlutterVC!
- private var registrar:FlutterPluginRegistrar?
- var methodChannel: FlutterMethodChannel?
- init(mainViewController:MainFlutterVC, registrar:FlutterPluginRegistrar?){
- self.mainViewController = mainViewController
- self.methodChannel = FlutterMethodChannel(name: "OpenTok-Platform-Bridge", binaryMessenger: mainViewController.binaryMessenger)
- self.registrar = registrar
-
- let remoteVDOFactory = OpenTokRemoteVideoFactory(messenger: registrar!.messenger())
- registrar?.register(remoteVDOFactory, withId: "remote-video-container")
-
- let localVDOFactory = OpenTokLocalVideoFactory(messenger: registrar!.messenger())
- registrar?.register(localVDOFactory, withId: "local-video-container")
- }
-
- var otSession: OTSession?
-
- var subscriber: OTSubscriber?
- lazy var publisher: OTPublisher = {
- let settings = OTPublisherSettings()
- settings.name = UIDevice.current.name
- return OTPublisher(delegate: self, settings: settings)!
- }()
-
- func initSession(call:FlutterMethodCall, result: @escaping FlutterResult){
- if let arguments = call.arguments as? [String: String],
- let apiKey = arguments["apiKey"],
- let sessionId = arguments["sessionId"],
- let token = arguments["token"]{
-
- var error: OTError?
- defer {
- // todo
- }
-
- notifyFlutter(state: SdkState.wait)
- otSession = OTSession(apiKey: apiKey, sessionId: sessionId, delegate: self)!
- otSession?.connect(withToken: token, error: &error)
-
- result("")
- }else{
-
- }
-
- }
-
-
- func swapCamera(call:FlutterMethodCall, result: @escaping FlutterResult) {
- if publisher.cameraPosition == .front {
- publisher.cameraPosition = .back
- } else {
- publisher.cameraPosition = .front
- }
- result("")
- }
-
- func toggleAudio(call:FlutterMethodCall, result: @escaping FlutterResult) {
- if let arguments = call.arguments as? [String: Bool],
- let publishAudio = arguments["publishAudio"] {
- publisher.publishAudio = !publisher.publishAudio
- }
- result("")
- }
-
- func toggleVideo(call:FlutterMethodCall, result: @escaping FlutterResult) {
- if let arguments = call.arguments as? [String: Bool],
- let publishVideo = arguments["publishVideo"] {
- publisher.publishVideo = !publisher.publishVideo
- }
- result("")
- }
-
-
- func notifyFlutter(state: SdkState) {
- methodChannel?.invokeMethod("updateState", arguments: state.rawValue)
- }
-
-}
-
-extension OpenTok: OTSessionDelegate {
- func sessionDidConnect(_ sessionDelegate: OTSession) {
- print("The client connected to the session.")
- notifyFlutter(state: SdkState.loggedIn)
-
- var error: OTError?
- defer {
- // todo
- }
-
- self.otSession?.publish(self.publisher, error: &error)
-
- if let pubView = self.publisher.view {
- pubView.frame = CGRect(x: 0, y: 0, width: 200, height: 300)
-
- if OpenTokLocalVideoFactory.view == nil {
- OpenTokLocalVideoFactory.viewToAddPub = pubView
- } else {
- OpenTokLocalVideoFactory.view?.addPublisherView(pubView)
- }
- }
- }
-
- func sessionDidDisconnect(_ session: OTSession) {
- print("The client disconnected from the session.")
- notifyFlutter(state: SdkState.loggedOut)
- }
-
- func session(_ session: OTSession, didFailWithError error: OTError) {
- print("The client failed to connect to the session: \(error).")
- }
-
- func session(_ session: OTSession, streamCreated stream: OTStream) {
- print("A stream was created in the session.")
- var error: OTError?
- defer {
- // todo
- }
- subscriber = OTSubscriber(stream: stream, delegate: self)
-
- session.subscribe(subscriber!, error: &error)
- }
-
- func session(_ session: OTSession, streamDestroyed stream: OTStream) {
- print("A stream was destroyed in the session.")
- }
-}
-
-extension OpenTok: OTPublisherDelegate {
- func publisher(_ publisher: OTPublisherKit, streamCreated stream: OTStream) {
- }
-
- func publisher(_ publisher: OTPublisherKit, streamDestroyed stream: OTStream) {
- }
-
- func publisher(_ publisher: OTPublisherKit, didFailWithError error: OTError) {
- print("Publisher failed: \(error.localizedDescription)")
- }
-}
-
-extension OpenTok: OTSubscriberDelegate {
- func subscriberDidConnect(toStream subscriberKit: OTSubscriberKit) {
- print("Subscriber connected")
-
- if let subView = self.subscriber?.view {
- subView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
-
- if OpenTokRemoteVideoFactory.view == nil {
- OpenTokRemoteVideoFactory.viewToAddSub = subView
- } else {
- OpenTokRemoteVideoFactory.view?.addSubscriberView(subView)
- }
- }
- }
-
- func subscriber(_ subscriber: OTSubscriberKit, didFailWithError error: OTError) {
- print("Subscriber failed: \(error.localizedDescription)")
- }
+// private var mainViewController:MainFlutterVC!
+// private var registrar:FlutterPluginRegistrar?
+// var methodChannel: FlutterMethodChannel?
+//
+// init(mainViewController:MainFlutterVC, registrar:FlutterPluginRegistrar?){
+// self.mainViewController = mainViewController
+// self.methodChannel = FlutterMethodChannel(name: "OpenTok-Platform-Bridge", binaryMessenger: mainViewController.binaryMessenger)
+// self.registrar = registrar
+//
+// let remoteVDOFactory = OpenTokRemoteVideoFactory(messenger: registrar!.messenger())
+// registrar?.register(remoteVDOFactory, withId: "remote-video-container")
+//
+// let localVDOFactory = OpenTokLocalVideoFactory(messenger: registrar!.messenger())
+// registrar?.register(localVDOFactory, withId: "local-video-container")
+// }
+//
+// var otSession: OTSession?
+//
+// var subscriber: OTSubscriber?
+// lazy var publisher: OTPublisher = {
+// let settings = OTPublisherSettings()
+// settings.name = UIDevice.current.name
+// return OTPublisher(delegate: self, settings: settings)!
+// }()
+//
+// func initSession(call:FlutterMethodCall, result: @escaping FlutterResult){
+// if let arguments = call.arguments as? [String: String],
+// let apiKey = arguments["apiKey"],
+// let sessionId = arguments["sessionId"],
+// let token = arguments["token"]{
+//
+// var error: OTError?
+// defer {
+// // todo
+// }
+//
+// notifyFlutter(state: SdkState.wait)
+// otSession = OTSession(apiKey: apiKey, sessionId: sessionId, delegate: self)!
+// otSession?.connect(withToken: token, error: &error)
+//
+// result("")
+// }else{
+//
+// }
+//
+// }
+//
+//
+// func swapCamera(call:FlutterMethodCall, result: @escaping FlutterResult) {
+// if publisher.cameraPosition == .front {
+// publisher.cameraPosition = .back
+// } else {
+// publisher.cameraPosition = .front
+// }
+// result("")
+// }
+//
+// func toggleAudio(call:FlutterMethodCall, result: @escaping FlutterResult) {
+// if let arguments = call.arguments as? [String: Bool],
+// let publishAudio = arguments["publishAudio"] {
+// publisher.publishAudio = !publisher.publishAudio
+// }
+// result("")
+// }
+//
+// func toggleVideo(call:FlutterMethodCall, result: @escaping FlutterResult) {
+// if let arguments = call.arguments as? [String: Bool],
+// let publishVideo = arguments["publishVideo"] {
+// publisher.publishVideo = !publisher.publishVideo
+// }
+// result("")
+// }
+//
+//
+// func notifyFlutter(state: SdkState) {
+// methodChannel?.invokeMethod("updateState", arguments: state.rawValue)
+// }
+//
+//}
+//
+//extension OpenTok: OTSessionDelegate {
+// func sessionDidConnect(_ sessionDelegate: OTSession) {
+// print("The client connected to the session.")
+// notifyFlutter(state: SdkState.loggedIn)
+//
+// var error: OTError?
+// defer {
+// // todo
+// }
+//
+// self.otSession?.publish(self.publisher, error: &error)
+//
+// if let pubView = self.publisher.view {
+// pubView.frame = CGRect(x: 0, y: 0, width: 200, height: 300)
+//
+// if OpenTokLocalVideoFactory.view == nil {
+// OpenTokLocalVideoFactory.viewToAddPub = pubView
+// } else {
+// OpenTokLocalVideoFactory.view?.addPublisherView(pubView)
+// }
+// }
+// }
+//
+// func sessionDidDisconnect(_ session: OTSession) {
+// print("The client disconnected from the session.")
+// notifyFlutter(state: SdkState.loggedOut)
+// }
+//
+// func session(_ session: OTSession, didFailWithError error: OTError) {
+// print("The client failed to connect to the session: \(error).")
+// }
+//
+// func session(_ session: OTSession, streamCreated stream: OTStream) {
+// print("A stream was created in the session.")
+// var error: OTError?
+// defer {
+// // todo
+// }
+// subscriber = OTSubscriber(stream: stream, delegate: self)
+//
+// session.subscribe(subscriber!, error: &error)
+// }
+//
+// func session(_ session: OTSession, streamDestroyed stream: OTStream) {
+// print("A stream was destroyed in the session.")
+// }
+//}
+//
+//extension OpenTok: OTPublisherDelegate {
+// func publisher(_ publisher: OTPublisherKit, streamCreated stream: OTStream) {
+// }
+//
+// func publisher(_ publisher: OTPublisherKit, streamDestroyed stream: OTStream) {
+// }
+//
+// func publisher(_ publisher: OTPublisherKit, didFailWithError error: OTError) {
+// print("Publisher failed: \(error.localizedDescription)")
+// }
+//}
+//
+//extension OpenTok: OTSubscriberDelegate {
+// func subscriberDidConnect(toStream subscriberKit: OTSubscriberKit) {
+// print("Subscriber connected")
+//
+// if let subView = self.subscriber?.view {
+// subView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
+//
+// if OpenTokRemoteVideoFactory.view == nil {
+// OpenTokRemoteVideoFactory.viewToAddSub = subView
+// } else {
+// OpenTokRemoteVideoFactory.view?.addSubscriberView(subView)
+// }
+// }
+// }
+//
+// func subscriber(_ subscriber: OTSubscriberKit, didFailWithError error: OTError) {
+// print("Subscriber failed: \(error.localizedDescription)")
+// }
}
diff --git a/lib/config/config.dart b/lib/config/config.dart
index c4fabca6..3ed8d764 100644
--- a/lib/config/config.dart
+++ b/lib/config/config.dart
@@ -15,8 +15,8 @@ const PACKAGES_CUSTOMER = '/api/customers';
const PACKAGES_SHOPPING_CART = '/api/shopping_cart_items';
const PACKAGES_ORDERS = '/api/orders';
const PACKAGES_TAMARA_OPT = '/api/orders/paymentoptions/tamara';
-// const BASE_URL = 'https://uat.hmgwebservices.com/';
-const BASE_URL = 'https://hmgwebservices.com/';
+ const BASE_URL = 'https://uat.hmgwebservices.com/';
+// const BASE_URL = 'https://hmgwebservices.com/';
// Pharmacy UAT URLs
// const BASE_PHARMACY_URL = 'https://uat.hmgwebservices.com/epharmacy/api/';
@@ -68,7 +68,9 @@ const GET_DOCTOR_RATING_DETAILS =
const GET_DOCTOR_RATING = 'Services/Doctors.svc/REST/dr_GetAvgDoctorRating';
///Prescriptions
-const PRESCRIPTIONS = 'Services/Patients.svc/REST/GetPrescriptionApptList';
+// const PRESCRIPTIONS = 'Services/Patients.svc/REST/GetPrescriptionApptList';
+const PRESCRIPTIONS = 'Services/Patients.svc/REST/GetPrescriptionApptList_Async';
+
const GET_PRESCRIPTIONS_ALL_ORDERS =
'Services/Patients.svc/REST/PatientER_GetPatientAllPresOrders';
const GET_PRESCRIPTION_REPORT =
@@ -255,7 +257,7 @@ const GET_PATIENT_SHARE =
//URL to get patient appointment history
const GET_PATIENT_APPOINTMENT_HISTORY =
- "Services/Doctors.svc/REST/PateintHasAppoimentHistory";
+ "Services/Doctors.svc/REST/PateintHasAppoimentHistory_Async";
const DOCTOR_SCHEDULE_URL =
'Services/Doctors.svc/REST/GetDoctorWorkingHoursTable';
@@ -546,8 +548,8 @@ const SUBSCRIBE_PRODUCT = "subscribe?";
const GET_ORDER = "orders?";
const GET_ORDER_DETAILS = "orders/";
const ADD_CUSTOMER_ADDRESS = "addcustomeraddress";
-const EDIT_CUSTOMER_ADDRESS = "epharmacy/api/editcustomeraddress";
-const DELETE_CUSTOMER_ADDRESS = "epharmacy/api/deletecustomeraddress";
+const EDIT_CUSTOMER_ADDRESS = "editcustomeraddress";
+const DELETE_CUSTOMER_ADDRESS = "deletecustomeraddress";
const GET_ADDRESS = "Customers/";
const GET_Cancel_ORDER = "cancelorder/";
const WRITE_REVIEW = "Content-Type" + "text/plain; charset=utf-8";
@@ -570,7 +572,10 @@ const TRANSFER_YAHALA_LOYALITY_POINTS =
"Services/Patients.svc/REST/TransferYaHalaLoyaltyPoints";
const LAKUM_GET_USER_TERMS_AND_CONDITIONS =
"Services/ERP.svc/REST/GetUserTermsAndConditionsForEPharmcy";
-const PRESCRIPTION = 'Services/Patients.svc/REST/GetPrescriptionApptList';
+
+// const PRESCRIPTION = 'Services/Patients.svc/REST/GetPrescriptionApptList';
+const PRESCRIPTION = 'Services/Patients.svc/REST/GetPrescriptionApptList_Async';
+
const GET_RECOMMENDED_PRODUCT = 'alsoProduct/';
const GET_MOST_VIEWED_PRODUCTS = "mostview";
const GET_NEW_PRODUCTS = "newproducts";
diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart
index 56113044..83fedc90 100644
--- a/lib/config/localized_values.dart
+++ b/lib/config/localized_values.dart
@@ -50,7 +50,8 @@ const Map localizedValues = {
'searchByDocText': {'en': 'Type the name of the doctor to help you find him', 'ar': 'اكتب اسم الطبيب لمساعدتك في العثور عليه'},
'enterDocName': {'en': 'Enter Doctor name', 'ar': 'أدخل إسم الطبيب'},
'search': {'en': 'Search', 'ar': 'بحث'},
- 'noResultFound': {'en': 'No Result Found', 'ar': 'لم يتم العثور على نتائج'},
+ 'noResultFound': {'en': 'No Result Found', 'ar': 'لم يتم العثور على نتائج '},
+ 'noSearchResultFound': {'en': 'No Result Found', 'ar': 'لم يتم العثور على نتائج الرجاء تغيير لغة البحث'},
'pleaseEnterProductName': {'en': 'Please Enter Product Name', 'ar': 'ادخل اسم المنتج'},
'bookNow': {'en': 'BOOK NOW', 'ar': 'احجز الآن'},
'docInfo': {'en': 'Doctor Information', 'ar': 'معلومات الطبيب'},
@@ -171,6 +172,7 @@ const Map localizedValues = {
"minute": {"en": "Minutes", "ar": "دقيقة"},
"hour": {"en": "Hour", "ar": "ساعة"},
"reminderSuccess": {"en": "The reminder has been added successfully", "ar": "تمت إضافة التذكير بنجاح"},
+ "reminderCancelSuccess": {"en": "The reminder has been cancelled successfully", "ar": "تم إلغاء التذكير بنجاح"},
"patientShareToDo": {"en": "Amount before tax: ", "ar": "المبلغ قبل الضريبة:"},
"patientTaxToDo": {"en": "Tax amount: ", "ar": "قيمة الضريبة:"},
"patientShareTotalToDo": {"en": "Total amount Due: ", "ar": "المبلغ الإجمالي المستحق:"},
@@ -245,6 +247,7 @@ const Map localizedValues = {
"companyName": {"en": "Company Name:", "ar": "اسم الشركة: "},
"receiptOn": {"en": "Receipt on:", "ar": "تاريخ الفاتورة: "},
"expiryDate": {"en": "Expiry Date:", "ar": "تاريخ الانتهاء: "},
+ "expiryPoints": {"en": "Expired", "ar": " منتهية الصلاحية"},
"expiryOn": {"en": "Expiry on:", "ar": "تاريخ الانتهاء: "},
"procedureName": {"en": "Procedure Name:", "ar": "اسم الاجراء:"},
"procedure": {"en": "Procedure", "ar": "اسم الاجراء:"},
@@ -275,6 +278,8 @@ const Map localizedValues = {
"viewAll": {"en": "View All", 'ar': 'عرض الكل'},
"view": {"en": "View", 'ar': 'عرض'},
"ContactUs": {"en": "Contact Us", 'ar': 'الوصول إلينا'},
+ "contactUsLocation": {"en": "P.O.Box: 91877 - Riyadh 11643, King Fahad Road - Olaya - Kingdom of Saudi Arabia", 'ar': 'صندوق بريد: 91877 - الرياض 11643 ، طريق الملك فهد - العليا - المملكة العربية السعودية'},
+ "contactUsTime": {"en": "Saturday - Wednesday 8:00 AM - 10 PM, Thursday 8:00 AM- 8:00 PM, Friday 2:00 PM - 8:00 PM", 'ar': " السبت – الأربعاء 08:00 ص – 10:00 م , الخميس 08:00 ص – 08:00 م, الجمعة 02:00 م - 08:00 م"},
"ViewAllWaysReachUs": {"en": "View All Ways Reach Us", 'ar': 'جميع طرق الاتصال بنا'},
"medicalProfile": {"en": "Medical Profile", 'ar': 'الملف الطبي'},
"consultation": {"en": "Consultation", "ar": "استشارة"},
@@ -449,6 +454,7 @@ const Map localizedValues = {
"Frequency": {"en": "Frequency", "ar": "المعدل"},
"DailyQuantity": {"en": "Daily Quantity :", "ar": "جرعات يومية"},
"AddReminder": {"en": "Add Reminder", "ar": "إضافة تذكير"},
+ "CancelReminder": {"en": "Cancel Reminder", "ar": "إلغاء تذكير"},
"reminderDes": {
"en": "Please select treatment start day and time to be notified when it\'s time to take the medicine",
"ar": "يرجى تحديد يوم بدء العلاج والوقت ليتم ارسال تنبيه عندما يحين الوقت لتناول الدواء"
@@ -504,7 +510,11 @@ const Map localizedValues = {
"reachUs": {"en": "Reach Us", "ar": "الوصول لنا"},
"ourLocations": {"en": "Our Locations", "ar": "مواقعنا"},
"edit": {"en": "Edit", "ar": "تعديل"},
+ "whatsApp": {"en": "Whats App", "ar": " واتس اب"},
+ "phone": {"en": "Phone", "ar": " موبايل"},
"delete": {"en": "Delete", "ar": " حذف"},
+ "deleteAddress": {"en": "Are you sure want to delete", "ar": " هل انت متأكد تريد حذف هذا العنوان"},
+ "deletedAddres": {"en": "Address has been deleted", "ar": " تم حذف العنوان"},
"addAddress": {"en": "ADD A NEW ADDRESS", "ar": " اضافة عنوان جديد"},
"addNewAddress": {"en": "Add New Address", "ar": " اضافة عنوان جديد"},
"order": {"en": "My Order", "ar": " طلباتي"},
@@ -553,6 +563,7 @@ const Map localizedValues = {
"shipping": {"en": "Shipping", "ar": " الشحن"},
"shipBy": {"en": "SHIP BY:", "ar": "الشحن عن طريق:"},
"lakumPoints": {"en": "Lakum Points", "ar": "نقاط برنامج لكم"},
+ "useLakumPoints": {"en": "Use Lakum points", "ar": "استخدم برنامج لكم"},
"use": {"en": "USE", "ar": "استخدم"},
"proceedPay": {"en": "PROCEED TO PAY", "ar": "المتابعة للدفع"},
"vat": {"en": "VAT (15%)", "ar": "(15%) القيمة المضافة"},
@@ -798,7 +809,7 @@ const Map localizedValues = {
"HealthTipsBasedOnCurrentWeather": {"en": "Health Tips Based On Current Weather", 'ar': ' نصائح صحية بناءاً على الطقس الحالي '},
"MoreDetails": {"en": "More details", "ar": " المزيد من التفاصيل "},
"SendCopy": {"en": "Send Copy", "ar": "ارسال نسخة"},
- "ResendOrder": {"en": "Refill Order & Delivery", "ar": "إعادة طلب و توصيل"},
+ "ResendOrder": {"en": "Re-Order & Delivery", "ar": "إعادة طلب و توصيل"},
"Ports": {"en": "Ports", "ar": "المنافذ"},
"Way": {"en": "Way", "ar": "الطريقة"},
"Average": {"en": "Average", "ar": "متوسط"},
@@ -819,7 +830,7 @@ const Map localizedValues = {
"body": {"en": "Body Mass", "ar": "كتلة\nالجسم"},
"body_string": {"en": "Body", "ar": "الجسم"},
"face": {"en": "Face", "ar": "وجه"},
- "retouch": {"en": "Retouch", "ar": "تنميق"},
+ "retouch": {"en": "Retouch", "ar": "روتوش"},
"bikini": {"en": "Bikini", "ar": "بيكيني"},
"totalMinutes": {"en": "Total Minutes", "ar": "إجمالي الدقائق"},
"feedback": {"en": "Feedback", "ar": "رأيك يهمنا"},
@@ -1078,7 +1089,7 @@ const Map localizedValues = {
"removeFromWishlist": {"en": "Remove From Wishlist", "ar": "احذف للمفضلة"},
"noData": {"en": "There is no data", "ar": "لايوجد بيانات"},
"no_data": {"en": "No data", "ar": "لايوجد بيانات"},
- "buyNow": {"en": "buy now", "ar": "إشتري الان"},
+ "buyNow": {"en": "Buy Now", "ar": "إشتري الان"},
"quantityShortcut": {"en": "QTY", "ar": "كمية"},
"pharmacyServiceTermsCondition": {"en": "I agree with the terms of service and I adhere to them unconditionally", "ar": " موافق على شروط الخدمة وألتزم بها دون قيد أو شرط"},
"Year": {"en": "YEAR", "ar": "السنة"},
@@ -1352,7 +1363,7 @@ const Map localizedValues = {
"en": " This service allows you to activate your LAKUM account after registering completed.",
"ar": " تتيح لك هذه الخدمة تفعيل حساب برنامج الولاء لكم بعد اكتمال التسجيل. "
},
- "pointsToTransfer": {"en": "Point's to Transfer:", "ar": "النقاط المراد تحويلها:"},
+ "pointsToTransfer": {"en": "Points to Transfer:", "ar": "النقاط المراد تحويلها:"},
"enterBeneficiaryAccountNo": {"en": "Enter Beneficiary Account No.", "ar": "أدخل رقم حساب المستفيد"},
"confirm-prescription": {"en": "Are you sure !! you want to send this request", "ar": "تاكيد ارسال الطلب؟"},
"you-already-have-order": {"en": "You already have this order! do you want to view it?", "ar": "لديك هذا الطلب بالفعل! هل تريد مشاهدته؟"},
@@ -1528,6 +1539,7 @@ const Map localizedValues = {
"rateDoctorAppo": {"en": "Rate DR & Appointment", "ar": "تقييم الطبيب والموعد"},
"invoice": {"en": "Invoice", "ar": "الفاتورة"},
"requestedDate": {"en": "Req Date", "ar": "التاريخ "},
+ "requestedDateLiveCare": {"en": "Requested Date: ", "ar": "التاريخ: "},
"callDuration": {"en": "Call Duration", "ar": "مدة الاتصال"},
"alreadyRated": {"en": "This appointment has been previously evaluated.", "ar": "تم تقييم هذا الموعد مسبقاً"},
"insuranceCompany": {"en": "Insurance Company", "ar": "شركة تأمين"},
@@ -1691,8 +1703,7 @@ const Map localizedValues = {
"lowLimits": {"en": "Please check the value you have entered, since the body fat percentage cannot be this low.", "ar": "يرجى التحقق من القيمة التي أدخلتها ، حيث لا يمكن أن تكون نسبة الدهون في الجسم منخفضة."},
"estimates": {"en": "Estimates the total body fat based on\nthe size", "ar": "تقدير إجمالي الدهون في الجسم بناءً على \ n الحجم"},
-
- "myCart": {"en": "Cart", "ar": "عربة التسوق"},
+ "myCart": {"en": "My Cart", "ar": "عربة التسوق"},
"browseOffers": {"en": "Browse offers by clinic", "ar": "تصفح العروض حسب العيادة"},
"inactiveAct":{"en":"Almost inactive (little or no exercise)","ar":"غير نشط تقريبا (ممارسة الرياضة قليلة أو منعدمة)"},
"light":{"en":"Lightly active (1-3) days per week","ar":"خفيف النشاط (1-3 أيام في الأسبوع)"},
@@ -1721,10 +1732,18 @@ const Map localizedValues = {
"dietModerate":{"en":"Moderate Carb","ar":"حمية معتدلة الكربوهيدرات"},
"dietUSDA":{"en":"USDA Guidelines","ar":"ارشادات وزارة الزراعة الأمريكية"},
"dietZone":{"en":"Zone Diet","ar":"حمية زون"},
-
"Protein": {"en": "Protein", "ar": "بروتين"},
"Cals": {"en": "Cals", "ar": "كالس"},
"gramsPerDay": {"en": "Grams Per Day", "ar": "غرام في اليوم"},
"gr": {"en": "gr", "ar": "غرام"},
"gramsPerMeal": {"en": "Grams Per Meal", "ar": "عدد الجرامات لكل وجبة"},
+ "syncSuccess": {"en": "Data Synced Successfully", "ar": "تمت مزامنة البيانات بنجاح"},
+ "points": {"en": "Points", "ar": "نقاط"},
+ "availableBalance": {"en": "Available Balance", "ar": "الرصيد المتوفر"},
+ "ordersDashboard": {"en": "My Orders", "ar": "طلباتي"},
+ "productOutOfStock": {"en": "Out Of Stock", "ar": "إنتهى من المخزن"},
+ "productQuantity": {"en": "Quantity", "ar": "كمية"},
+
+ "yourTurn": {"en": "your turn is after", "ar": "دورك بعد"},
+ "patients": {"en": "patients", "ar": "مرضي"},
};
diff --git a/lib/config/shared_pref_kay.dart b/lib/config/shared_pref_kay.dart
index c256d0c1..723e17a0 100644
--- a/lib/config/shared_pref_kay.dart
+++ b/lib/config/shared_pref_kay.dart
@@ -21,6 +21,7 @@ const THEME_VALUE = 'is_vibration';
const MAIN_USER = 'main-user';
const PHARMACY_LAST_VISITED_PRODUCTS = 'last-visited';
const PHARMACY_CUSTOMER_ID = 'costumer-id';
+const PHARMACY_CUSTOMER_GUID = 'customer-guid';
const PHARMACY_CUSTOMER_OBJECT = 'pharmacy-customer-object';
const IS_ROBOT_VISIBLE = 'robot-visible';
const IS_ROBOT_INIT = 'robot-init';
diff --git a/lib/core/model/labs/patient_lab_special_result.dart b/lib/core/model/labs/patient_lab_special_result.dart
index 2fbcb832..8e24a04d 100644
--- a/lib/core/model/labs/patient_lab_special_result.dart
+++ b/lib/core/model/labs/patient_lab_special_result.dart
@@ -3,7 +3,7 @@ class PatientLabSpecialResult {
String moduleID;
String resultData;
String resultDataHTML;
- Null resultDataTxt;
+ dynamic resultDataTxt;
PatientLabSpecialResult(
{this.invoiceNo,
diff --git a/lib/core/model/packages_offers/requests/CreateCustomerRequestModel.dart b/lib/core/model/packages_offers/requests/CreateCustomerRequestModel.dart
index 9cc3d3b9..d5022f0f 100644
--- a/lib/core/model/packages_offers/requests/CreateCustomerRequestModel.dart
+++ b/lib/core/model/packages_offers/requests/CreateCustomerRequestModel.dart
@@ -1,4 +1,5 @@
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
+import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:flutter/cupertino.dart';
class PackagesCustomerRequestModel {
@@ -19,7 +20,9 @@ class PackagesCustomerRequestModel {
this.email = user.emailAddress;
this.phone = user.mobileNumber;
this.national_id = user.patientIdentificationNo;
- this.date_of_birth = user.dateofBirth;
+
+ String isoDateTime = DateUtil.getISODateFormat(user.dateofBirthDataTime);
+ this.date_of_birth = isoDateTime;
}
Map json() {
diff --git a/lib/core/model/packages_offers/responses/tamara_payment_option.dart b/lib/core/model/packages_offers/responses/tamara_payment_option.dart
index ad79f5f3..2b694a23 100644
--- a/lib/core/model/packages_offers/responses/tamara_payment_option.dart
+++ b/lib/core/model/packages_offers/responses/tamara_payment_option.dart
@@ -3,6 +3,7 @@ class TamaraPaymentOption {
double minLimit;
double maxLimit;
int id;
+ bool enable = true;
String fullName() => '$name Months';
diff --git a/lib/core/model/pharmacies/LakumInquiryInformationObjVersion.dart b/lib/core/model/pharmacies/LakumInquiryInformationObjVersion.dart
index c609fa0b..e7948d7d 100644
--- a/lib/core/model/pharmacies/LakumInquiryInformationObjVersion.dart
+++ b/lib/core/model/pharmacies/LakumInquiryInformationObjVersion.dart
@@ -2,35 +2,35 @@ import 'PointsAmountPerYear.dart';
import 'PointsDetails.dart';
class LakumInquiryInformationObjVersion {
- int accountNumber;
+ num accountNumber;
String accountStatus;
String barCode;
- int consumedPoints;
+ num consumedPoints;
String consumedPointsAmount;
List consumedPointsAmountPerYear;
List consumedPointsDetails;
String createdDate;
- int expiredPoints;
+ num expiredPoints;
String expiryDate;
- int gainedPoints;
+ num gainedPoints;
List gainedPointsAmountPerYear;
List gainedPointsDetails;
String lakumMessageStatus;
String memberName;
String memberUniversalId;
String mobileNumber;
- int pointsBalance;
- int pointsBalanceAmount;
- int pointsWillBeExpired;
+ num pointsBalance;
+ num pointsBalanceAmount;
+ num pointsWillBeExpired;
String prefLang;
- int statusCode;
- int transferPoints;
+ num statusCode;
+ num transferPoints;
List transferPointsAmountPerYear;
List transferPointsDetails;
dynamic waitingPoints;
dynamic loyalityAmount;
dynamic loyalityPoints;
- int purchaseRate;
+ num purchaseRate;
LakumInquiryInformationObjVersion(
{this.accountNumber,
diff --git a/lib/core/model/pharmacies/PointsAmountPerMonth.dart b/lib/core/model/pharmacies/PointsAmountPerMonth.dart
index 71cf3498..c5b96bd8 100644
--- a/lib/core/model/pharmacies/PointsAmountPerMonth.dart
+++ b/lib/core/model/pharmacies/PointsAmountPerMonth.dart
@@ -1,11 +1,11 @@
import 'PointsAmountPerday.dart';
class PointsAmountPerMonth {
- double amountPerMonth;
- String month;
+ dynamic amountPerMonth;
+ dynamic month;
int monthNumber;
List pointsAmountPerday;
- double pointsPerMonth;
+ dynamic pointsPerMonth;
PointsAmountPerMonth(
{this.amountPerMonth,
diff --git a/lib/core/model/pharmacies/PointsAmountPerYear.dart b/lib/core/model/pharmacies/PointsAmountPerYear.dart
index eef74064..2d25855f 100644
--- a/lib/core/model/pharmacies/PointsAmountPerYear.dart
+++ b/lib/core/model/pharmacies/PointsAmountPerYear.dart
@@ -1,10 +1,10 @@
import 'PointsAmountPerMonth.dart';
class PointsAmountPerYear {
- int amountPerYear;
+ num amountPerYear;
List pointsAmountPerMonth;
- int pointsPerYear;
- int year;
+ num pointsPerYear;
+ num year;
PointsAmountPerYear(
{this.amountPerYear,
diff --git a/lib/core/model/pharmacies/orders_model.dart b/lib/core/model/pharmacies/orders_model.dart
index cef20c30..ad2c533a 100644
--- a/lib/core/model/pharmacies/orders_model.dart
+++ b/lib/core/model/pharmacies/orders_model.dart
@@ -31,6 +31,7 @@ class Orders {
String orderStatusn;
bool canCancel;
bool canRefund;
+ String orderGuid;
dynamic customerId;
dynamic orderSubtotalExclTax;
dynamic orderShippingExclTax;
@@ -47,6 +48,7 @@ class Orders {
this.orderStatusn,
this.canCancel,
this.canRefund,
+ this.orderGuid,
this.customerId,
this.orderShippingExclTax,
this.orderSubtotalExclTax,
@@ -63,6 +65,7 @@ class Orders {
orderStatusn = json['order_statusn'];
canCancel = json['can_cancel'];
canRefund = json['can_refund'];
+ orderGuid = json['order_guid'];
customerId = json['customer_id'];
orderSubtotalExclTax= json["order_subtotal_excl_tax"];
orderShippingExclTax= json["order_shipping_excl_tax"];
diff --git a/lib/core/model/pharmacies/payment-checkout-data.dart b/lib/core/model/pharmacies/payment-checkout-data.dart
index 5d91c829..f6f93fa2 100644
--- a/lib/core/model/pharmacies/payment-checkout-data.dart
+++ b/lib/core/model/pharmacies/payment-checkout-data.dart
@@ -11,7 +11,7 @@ class PaymentCheckoutData {
LacumAccountInformation lacumInformation;
bool cartDataVisible;
ShippingOption shippingOption;
- int usedLakumPoints;
+ num usedLakumPoints;
PaymentCheckoutData({this.address, this.paymentOption, this.lacumInformation, this.cartDataVisible = false, this.shippingOption, this.usedLakumPoints = 0});
diff --git a/lib/core/service/AlHabibMedicalService/customer_addresses_service.dart b/lib/core/service/AlHabibMedicalService/customer_addresses_service.dart
index bd2e94e4..2f92fe5e 100644
--- a/lib/core/service/AlHabibMedicalService/customer_addresses_service.dart
+++ b/lib/core/service/AlHabibMedicalService/customer_addresses_service.dart
@@ -39,7 +39,8 @@ class CustomerAddressesService extends BaseService {
Map queryParams = {'fields': 'addresses'};
hasError = false;
var customerID = await sharedPref.getObject(PHARMACY_CUSTOMER_ID);
- await baseAppClient.getPharmacy("$BASE_PHARMACY_URL$GET_CUSTOMER_ADDRESSES$customerID", onSuccess: (dynamic response, int statusCode) {
+ var customerGUID = await sharedPref.getObject(PHARMACY_CUSTOMER_GUID);
+ await baseAppClient.getPharmacy("$BASE_PHARMACY_URL$GET_CUSTOMER_ADDRESSES$customerID/$customerGUID", onSuccess: (dynamic response, int statusCode) {
addressesList.clear();
response["customers"][0]["addresses"].forEach((data) {
addressesList.add(AddressInfo.fromJson(data));
@@ -65,12 +66,12 @@ class CustomerAddressesService extends BaseService {
class CustomerInfo {
bool isRegistered;
- String userName;
+ dynamic userName;
dynamic password;
- String email;
+ dynamic email;
dynamic errorMessage;
- String mobileNumber;
- int customerId;
+ dynamic mobileNumber;
+ dynamic customerId;
CustomerInfo({this.isRegistered, this.userName, this.password, this.email, this.errorMessage, this.mobileNumber, this.customerId});
@@ -103,7 +104,7 @@ class AddressInfo {
String lastName;
String email;
dynamic company;
- int countryId;
+ dynamic countryId;
String country;
dynamic stateProvinceId;
String city;
diff --git a/lib/core/service/PrescriptionDeliveryService.dart b/lib/core/service/PrescriptionDeliveryService.dart
index 1d849755..28e5bae4 100644
--- a/lib/core/service/PrescriptionDeliveryService.dart
+++ b/lib/core/service/PrescriptionDeliveryService.dart
@@ -28,7 +28,7 @@ class PrescriptionDeliveryService extends BaseService {
body['AppointmentNo'] = appointmentNo.toString();
// body['CreatedBy'] = createdBy;
body['DischargeID'] = dischargeID.toString();
- await baseAppClient.post(ADD_PRESCRIPTION_ORDER_RC, onSuccess: (dynamic response, int statusCode) {
+ await baseAppClient.post(ADD_PRESCRIPTION_ORDER_RC, isRCService: true, onSuccess: (dynamic response, int statusCode) {
var asd = "";
}, onFailure: (String error, int statusCode) {
hasError = true;
diff --git a/lib/core/service/client/base_app_client.dart b/lib/core/service/client/base_app_client.dart
index 1f6ca580..52def3eb 100644
--- a/lib/core/service/client/base_app_client.dart
+++ b/lib/core/service/client/base_app_client.dart
@@ -134,7 +134,7 @@ class BaseAppClient {
print(jsonBody);
if (await Utils.checkConnection()) {
- final response = await http.post(url.trim(), body: json.encode(body), headers: headers);
+ final response = await http.post(Uri.parse(url.trim()), body: json.encode(body), headers: headers);
final int statusCode = response.statusCode;
print("statusCode :$statusCode");
if (statusCode < 200 || statusCode >= 400 || json == null) {
@@ -307,7 +307,7 @@ class BaseAppClient {
print("Body : ${json.encode(body)}");
if (await Utils.checkConnection()) {
- final response = await http.post(url.trim(), body: json.encode(body), headers: headers);
+ final response = await http.post(Uri.parse(url.trim()), body: json.encode(body), headers: headers);
final int statusCode = response.statusCode;
print("statusCode :$statusCode");
if (statusCode < 200 || statusCode >= 400 || json == null) {
@@ -408,7 +408,7 @@ class BaseAppClient {
if (await Utils.checkConnection()) {
final response = await http.get(
- url.trim(),
+ Uri.parse(url.trim()),
headers: {'Content-Type': 'application/json', 'Accept': 'application/json'},
);
final int statusCode = response.statusCode;
@@ -450,7 +450,7 @@ class BaseAppClient {
var ss = json.encode(queryParams);
if (await Utils.checkConnection()) {
- final response = await http.get(url.trim(), headers: {
+ final response = await http.get(Uri.parse(url.trim()), headers: {
'Content-Type': 'text/html; charset=utf-8',
'Accept': 'application/json',
'Authorization': token ?? '',
@@ -467,7 +467,9 @@ class BaseAppClient {
onFailure(TranslationBase.of(AppGlobal.context).pharmacyRelogin, statusCode);
Navigator.of(AppGlobal.context).pushNamed(HOME);
} else {
- onFailure('Error While Fetching data', statusCode);
+ var bodyUtf = json.decode(utf8.decode(response.bodyBytes));
+ print(bodyUtf);
+ onFailure(bodyUtf['error']['ErrorEndUserMsg'], statusCode);
}
} else {
// var parsed = json.decode(response.body.toString());
@@ -488,11 +490,12 @@ class BaseAppClient {
}) async {
String url = fullUrl;
print("URL Query String: $url");
+ print("body: $body");
if (await Utils.checkConnection()) {
headers.addAll({'Content-Type': 'application/json', 'Accept': 'application/json'});
final response = await http.post(
- url.trim(),
+ Uri.parse(url.trim()),
body: json.encode(body),
headers: headers,
);
@@ -500,6 +503,8 @@ class BaseAppClient {
print("statusCode :$statusCode");
if (await handleUnauthorized(statusCode, forUrl: fullUrl)) simplePost(fullUrl, onFailure: onFailure, onSuccess: onSuccess, body: body, headers: headers);
+ print(response.body.toString());
+
if (statusCode < 200 || statusCode >= 400 || json == null) {
onFailure('Error While Fetching data', statusCode);
} else {
@@ -524,7 +529,7 @@ class BaseAppClient {
if (await Utils.checkConnection()) {
headers.addAll({'Content-Type': 'application/json', 'Accept': 'application/json'});
final response = await http.get(
- url.trim(),
+ Uri.parse(url.trim()),
headers: headers,
);
@@ -549,7 +554,7 @@ class BaseAppClient {
if (await Utils.checkConnection()) {
headers.addAll({'Content-Type': 'application/json', 'Accept': 'application/json'});
final response = await http.put(
- url.trim(),
+ Uri.parse(url.trim()),
body: json.encode(body),
headers: headers,
);
@@ -583,7 +588,7 @@ class BaseAppClient {
if (await Utils.checkConnection()) {
headers.addAll({'Content-Type': 'application/json', 'Accept': 'application/json'});
final response = await http.delete(
- url.trim(),
+ Uri.parse(url.trim()),
headers: headers,
);
@@ -724,7 +729,7 @@ class BaseAppClient {
var ss = json.encode(body);
if (await Utils.checkConnection()) {
- final response = await http.post(url.trim(), body: json.encode(body), headers: {
+ final response = await http.post(Uri.parse(url.trim()), body: json.encode(body), headers: {
// 'Content-Type': 'application/json',
// 'Accept': 'application/json',
// 'Statictoken': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9',
diff --git a/lib/core/service/medical/prescriptions_service.dart b/lib/core/service/medical/prescriptions_service.dart
index 0a7d9e68..01ea61e3 100644
--- a/lib/core/service/medical/prescriptions_service.dart
+++ b/lib/core/service/medical/prescriptions_service.dart
@@ -55,7 +55,7 @@ class PrescriptionsService extends BaseService {
prescriptionsOrderListRC.clear();
Map body = Map();
body['ID'] = orderID;
- await baseAppClient.post(GET_ALL_PRESCRIPTION_INFO_RC + "?PatientId=" + patientID.toString(), onSuccess: (dynamic response, int statusCode) {
+ await baseAppClient.post(GET_ALL_PRESCRIPTION_INFO_RC + "?PatientId=" + patientID.toString(), isRCService: true, onSuccess: (dynamic response, int statusCode) {
response['response']['report'].forEach((prescriptionsOrder) {
prescriptionsOrderListRC.add(PrescriptionInfoRCModel.fromJson(prescriptionsOrder));
});
@@ -69,7 +69,7 @@ class PrescriptionsService extends BaseService {
prescriptionsOrderList.clear();
Map body = Map();
// body['isDentalAllowedBackend'] = false;
- await baseAppClient.post(GET_ALL_PRESCRIPTION_ORDERS_RC, onSuccess: (dynamic response, int statusCode) {
+ await baseAppClient.post(GET_ALL_PRESCRIPTION_ORDERS_RC, isRCService: true, onSuccess: (dynamic response, int statusCode) {
response['response'].forEach((prescriptionsOrder) {
prescriptionsOrderList.add(GetCMCAllOrdersResponseModel.fromJson(prescriptionsOrder));
});
diff --git a/lib/core/service/packages_offers/PackagesOffersServices.dart b/lib/core/service/packages_offers/PackagesOffersServices.dart
index ae5396a7..6c4e0d24 100644
--- a/lib/core/service/packages_offers/PackagesOffersServices.dart
+++ b/lib/core/service/packages_offers/PackagesOffersServices.dart
@@ -75,6 +75,7 @@ class OffersAndPackagesServices extends BaseService {
Future> getTamaraOptions({@required BuildContext context, @required bool showLoading = true}) async {
if (tamaraPaymentOptions != null && tamaraPaymentOptions.isNotEmpty) return tamaraPaymentOptions;
+ tamaraPaymentOptions.clear();
var url = EXA_CART_API_BASE_URL + PACKAGES_TAMARA_OPT;
await baseAppClient.simpleGet(url, headers: packagesAuthHeader, onSuccess: (dynamic stringResponse, int statusCode) {
if (statusCode == 200) {
diff --git a/lib/core/service/parmacyModule/order-preview-service.dart b/lib/core/service/parmacyModule/order-preview-service.dart
index 899cc66b..b9368180 100644
--- a/lib/core/service/parmacyModule/order-preview-service.dart
+++ b/lib/core/service/parmacyModule/order-preview-service.dart
@@ -21,10 +21,11 @@ class OrderPreviewService extends BaseService {
Future getAddresses() async {
var customerId = await sharedPref.getString(PHARMACY_CUSTOMER_ID);
+ var customerGUID = await sharedPref.getString(PHARMACY_CUSTOMER_GUID);
Map queryParams = {'fields': 'addresses'};
hasError = false;
try {
- await baseAppClient.getPharmacy("$GET_CUSTOMERS_ADDRESSES$customerId", onSuccess: (dynamic response, int statusCode) {
+ await baseAppClient.getPharmacy("$GET_CUSTOMERS_ADDRESSES$customerId/$customerGUID", onSuccess: (dynamic response, int statusCode) {
addresses.clear();
response['customers'][0]['addresses'].forEach((item) {
addresses.add(Addresses.fromJson(item));
@@ -58,13 +59,15 @@ class OrderPreviewService extends BaseService {
Future