diff --git a/android/.gradle/8.12/checksums/checksums.lock b/android/.gradle/8.12/checksums/checksums.lock index 3a781f34..0713cfa7 100644 Binary files a/android/.gradle/8.12/checksums/checksums.lock and b/android/.gradle/8.12/checksums/checksums.lock differ diff --git a/android/.gradle/8.12/checksums/md5-checksums.bin b/android/.gradle/8.12/checksums/md5-checksums.bin index ead8505f..87edac72 100644 Binary files a/android/.gradle/8.12/checksums/md5-checksums.bin and b/android/.gradle/8.12/checksums/md5-checksums.bin differ diff --git a/android/.gradle/8.12/checksums/sha1-checksums.bin b/android/.gradle/8.12/checksums/sha1-checksums.bin index 05ef92f8..aa1289f0 100644 Binary files a/android/.gradle/8.12/checksums/sha1-checksums.bin and b/android/.gradle/8.12/checksums/sha1-checksums.bin differ diff --git a/android/.gradle/8.12/executionHistory/executionHistory.bin b/android/.gradle/8.12/executionHistory/executionHistory.bin index 029f802f..ba37806b 100644 Binary files a/android/.gradle/8.12/executionHistory/executionHistory.bin and b/android/.gradle/8.12/executionHistory/executionHistory.bin differ diff --git a/android/.gradle/8.12/executionHistory/executionHistory.lock b/android/.gradle/8.12/executionHistory/executionHistory.lock index 2c96ea77..7517916b 100644 Binary files a/android/.gradle/8.12/executionHistory/executionHistory.lock and b/android/.gradle/8.12/executionHistory/executionHistory.lock differ diff --git a/android/.gradle/8.12/fileHashes/fileHashes.bin b/android/.gradle/8.12/fileHashes/fileHashes.bin index bf720d91..e9b6e1d1 100644 Binary files a/android/.gradle/8.12/fileHashes/fileHashes.bin and b/android/.gradle/8.12/fileHashes/fileHashes.bin differ diff --git a/android/.gradle/8.12/fileHashes/fileHashes.lock b/android/.gradle/8.12/fileHashes/fileHashes.lock index b76ee359..e8fb2e32 100644 Binary files a/android/.gradle/8.12/fileHashes/fileHashes.lock and b/android/.gradle/8.12/fileHashes/fileHashes.lock differ diff --git a/android/.gradle/8.12/fileHashes/resourceHashesCache.bin b/android/.gradle/8.12/fileHashes/resourceHashesCache.bin index 76dd4f6a..16f94652 100644 Binary files a/android/.gradle/8.12/fileHashes/resourceHashesCache.bin and b/android/.gradle/8.12/fileHashes/resourceHashesCache.bin differ diff --git a/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock index e5a2e42e..1e881cb1 100644 Binary files a/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/android/.gradle/buildOutputCleanup/outputFiles.bin b/android/.gradle/buildOutputCleanup/outputFiles.bin index 19c56cdb..8a9e3f90 100644 Binary files a/android/.gradle/buildOutputCleanup/outputFiles.bin and b/android/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/android/.gradle/file-system.probe b/android/.gradle/file-system.probe index 9b0448ee..1e0186e7 100644 Binary files a/android/.gradle/file-system.probe and b/android/.gradle/file-system.probe differ diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index c70123d4..86f646e8 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -42,6 +42,11 @@ android { versionCode = flutter.versionCode versionName = flutter.versionName multiDexEnabled = true + + // Force application label to override plugin labels + manifestPlaceholders["appLabel"] = "Dr. Alhabib" + resValue("string", "app_name", "Dr. Alhabib") + resValue("string", "application_name", "Dr. Alhabib") // Filter to arm64-v8a for better native library compatibility ndk { @@ -241,6 +246,102 @@ tasks.whenTaskAdded { } } +// DISABLED: This was causing packaging conflicts +// Instead relying on manifest merger rules and resource priorities +/* +// CRITICAL: Fix CallKit plugin conflict at compile time +tasks.register("fixCallKitPluginConflict") { + doLast { + println("🔧 Fixing CallKit plugin conflicts with payment services...") + + // Fix merged manifests + val manifestFiles = listOf( + File(project.layout.buildDirectory.asFile.get(), "intermediates/merged_manifests"), + File(project.layout.buildDirectory.asFile.get(), "intermediates/packaged_manifests") + ) + + manifestFiles.forEach { manifestDir -> + if (manifestDir.exists()) { + manifestDir.walkTopDown().forEach { file -> + if (file.isFile && file.name == "AndroidManifest.xml") { + var content = file.readText() + var modified = false + + // Remove any CallKit application labels + if (content.contains("android:label=\"CallKit\"")) { + content = content.replace("android:label=\"CallKit\"", "android:label=\"@string/app_name\"") + modified = true + println(" ✓ Removed CallKit label from: ${file.path}") + } + + // Ensure tools namespace is declared if we need to use it + if (content.contains(" + if (resDir.exists()) { + resDir.walkTopDown().forEach { file -> + if (file.isFile && file.name == "strings.xml") { + var content = file.readText() + var modified = false + + // Replace any "CallKit" string resources + if (content.contains(">CallKit<")) { + content = content.replace(">CallKit<", ">Dr. Alhabib<") + modified = true + println(" ✓ Replaced CallKit string in: ${file.path}") + } + + if (modified) { + file.writeText(content) + } + } + } + } + } + + println("✅ CallKit plugin conflict fix completed!") + } +} + +// Run the fix after manifest and resource merging +tasks.whenTaskAdded { + if (name.contains("merge") && (name.contains("Manifest") || name.contains("Resources"))) { + finalizedBy("fixCallKitPluginConflict") + } +} +*/ + //tasks.whenTaskAdded { // if (name.contains("merge") && name.contains("NativeLibs")) { // doLast { diff --git a/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java b/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java index 350a5b9a..59ce5107 100644 --- a/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java +++ b/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java @@ -30,6 +30,11 @@ public final class GeneratedPluginRegistrant { } catch (Exception e) { Log.e(TAG, "Error registering plugin barcode_scan2, de.mintware.barcode_scan.BarcodeScanPlugin", e); } + try { + flutterEngine.getPlugins().add(new com.microsoft.clarity.ClarityFlutterPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin clarity_flutter, com.microsoft.clarity.ClarityFlutterPlugin", e); + } try { flutterEngine.getPlugins().add(new dev.fluttercommunity.plus.connectivity.ConnectivityPlugin()); } catch (Exception e) { @@ -65,16 +70,31 @@ public final class GeneratedPluginRegistrant { } catch (Exception e) { Log.e(TAG, "Error registering plugin firebase_core, io.flutter.plugins.firebase.core.FlutterFirebaseCorePlugin", e); } + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.crashlytics.FlutterFirebaseCrashlyticsPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin firebase_crashlytics, io.flutter.plugins.firebase.crashlytics.FlutterFirebaseCrashlyticsPlugin", e); + } try { flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.messaging.FlutterFirebaseMessagingPlugin()); } catch (Exception e) { Log.e(TAG, "Error registering plugin firebase_messaging, io.flutter.plugins.firebase.messaging.FlutterFirebaseMessagingPlugin", e); } + try { + flutterEngine.getPlugins().add(new com.amazon.flutter_amazonpaymentservices.FlutterAmazonpaymentservicesPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin flutter_amazonpaymentservices, com.amazon.flutter_amazonpaymentservices.FlutterAmazonpaymentservicesPlugin", e); + } try { flutterEngine.getPlugins().add(new com.hiennv.flutter_callkit_incoming.FlutterCallkitIncomingPlugin()); } catch (Exception e) { Log.e(TAG, "Error registering plugin flutter_callkit_incoming, com.hiennv.flutter_callkit_incoming.FlutterCallkitIncomingPlugin", e); } + try { + flutterEngine.getPlugins().add(new com.fluttercandies.flutter_image_compress.ImageCompressPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin flutter_image_compress_common, com.fluttercandies.flutter_image_compress.ImageCompressPlugin", e); + } try { flutterEngine.getPlugins().add(new com.pichillilorenzo.flutter_inappwebview_android.InAppWebViewFlutterPlugin()); } catch (Exception e) { @@ -90,11 +110,21 @@ public final class GeneratedPluginRegistrant { } catch (Exception e) { Log.e(TAG, "Error registering plugin flutter_nfc_kit, im.nfc.flutter_nfc_kit.FlutterNfcKitPlugin", e); } + try { + flutterEngine.getPlugins().add(new com.paymentsdk.flutter_paymentsdk_bridge.FlutterPaytabsBridgePlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin flutter_paytabs_bridge, com.paymentsdk.flutter_paymentsdk_bridge.FlutterPaytabsBridgePlugin", e); + } try { flutterEngine.getPlugins().add(new io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin()); } catch (Exception e) { Log.e(TAG, "Error registering plugin flutter_plugin_android_lifecycle, io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin", e); } + try { + flutterEngine.getPlugins().add(new com.flutter_screenshot_blocker.flutter_screenshot_blocker.FlutterScreenshotBlockerPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin flutter_screenshot_blocker, com.flutter_screenshot_blocker.flutter_screenshot_blocker.FlutterScreenshotBlockerPlugin", e); + } try { flutterEngine.getPlugins().add(new com.flutterzoom.videosdk.FlutterZoomVideoSdkPlugin()); } catch (Exception e) { @@ -150,6 +180,16 @@ public final class GeneratedPluginRegistrant { } catch (Exception e) { Log.e(TAG, "Error registering plugin image_picker_android, io.flutter.plugins.imagepicker.ImagePickerPlugin", e); } + try { + flutterEngine.getPlugins().add(new dev.britannio.in_app_review.InAppReviewPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin in_app_review, dev.britannio.in_app_review.InAppReviewPlugin", e); + } + try { + flutterEngine.getPlugins().add(new de.ffuf.in_app_update.InAppUpdatePlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin in_app_update, de.ffuf.in_app_update.InAppUpdatePlugin", e); + } try { flutterEngine.getPlugins().add(new com.ryanheise.just_audio.JustAudioPlugin()); } catch (Exception e) { @@ -176,9 +216,9 @@ public final class GeneratedPluginRegistrant { Log.e(TAG, "Error registering plugin manage_calendar_events, com.fantastic.manage_calendar_events.ManageCalendarEventsPlugin", e); } try { - flutterEngine.getPlugins().add(new com.example.maps_launcher.MapsLauncherPlugin()); + flutterEngine.getPlugins().add(new dev.fluttered.map_launcher.MapLauncherPlugin()); } catch (Exception e) { - Log.e(TAG, "Error registering plugin maps_launcher, com.example.maps_launcher.MapsLauncherPlugin", e); + Log.e(TAG, "Error registering plugin map_launcher, dev.fluttered.map_launcher.MapLauncherPlugin", e); } try { flutterEngine.getPlugins().add(new dev.fluttercommunity.plus.network_info.NetworkInfoPlusPlugin()); @@ -205,6 +245,11 @@ public final class GeneratedPluginRegistrant { } catch (Exception e) { Log.e(TAG, "Error registering plugin permission_handler_android, com.baseflow.permissionhandler.PermissionHandlerPlugin", e); } + try { + flutterEngine.getPlugins().add(new com.aaassseee.screen_brightness_android.ScreenBrightnessAndroidPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin screen_brightness_android, com.aaassseee.screen_brightness_android.ScreenBrightnessAndroidPlugin", e); + } try { flutterEngine.getPlugins().add(new dev.fluttercommunity.plus.share.SharePlusPlugin()); } catch (Exception e) { diff --git a/android/local.properties b/android/local.properties index 7bed2a07..ae10dcd1 100644 --- a/android/local.properties +++ b/android/local.properties @@ -1,5 +1,5 @@ flutter.buildMode=debug -flutter.sdk=/Users/cloud/sdk/flutter -flutter.versionCode=1 -flutter.versionName=1.0.0 -sdk.dir=/Users/cloud/Library/Android/sdk \ No newline at end of file +flutter.sdk=/Users/mohamedmekawy/Documents/Flutter_SDKs/flutter_3.35.3 +flutter.versionCode=38 +flutter.versionName=0.0.39 +sdk.dir=/Users/mohamedmekawy/Library/Android/sdk \ No newline at end of file diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 47494678..f10a0930 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -4,6 +4,11 @@ PODS: - PayFortSDK - audio_session (0.0.1): - Flutter + - barcode_scan2 (0.0.1): + - Flutter + - SwiftProtobuf (~> 1.33) + - clarity_flutter (1.0.0): + - Flutter - connectivity_plus (0.0.1): - Flutter - CryptoSwift (1.8.4) @@ -54,6 +59,9 @@ PODS: - FirebaseAnalytics (~> 11.15.0) - Firebase/CoreOnly (11.15.0): - FirebaseCore (~> 11.15.0) + - Firebase/Crashlytics (11.15.0): + - Firebase/CoreOnly + - FirebaseCrashlytics (~> 11.15.0) - Firebase/Messaging (11.15.0): - Firebase/CoreOnly - FirebaseMessaging (~> 11.15.0) @@ -64,6 +72,10 @@ PODS: - firebase_core (3.15.2): - Firebase/CoreOnly (= 11.15.0) - Flutter + - firebase_crashlytics (4.3.10): + - Firebase/Crashlytics (= 11.15.0) + - firebase_core + - Flutter - firebase_messaging (15.2.10): - Firebase/Messaging (= 11.15.0) - firebase_core @@ -90,8 +102,19 @@ PODS: - FirebaseCoreInternal (~> 11.15.0) - GoogleUtilities/Environment (~> 8.1) - GoogleUtilities/Logger (~> 8.1) + - FirebaseCoreExtension (11.15.0): + - FirebaseCore (~> 11.15.0) - FirebaseCoreInternal (11.15.0): - "GoogleUtilities/NSData+zlib (~> 8.1)" + - FirebaseCrashlytics (11.15.0): + - FirebaseCore (~> 11.15.0) + - FirebaseInstallations (~> 11.0) + - FirebaseRemoteConfigInterop (~> 11.0) + - FirebaseSessions (~> 11.0) + - GoogleDataTransport (~> 10.0) + - GoogleUtilities/Environment (~> 8.1) + - nanopb (~> 3.30910.0) + - PromisesObjC (~> 2.4) - FirebaseInstallations (11.15.0): - FirebaseCore (~> 11.15.0) - GoogleUtilities/Environment (~> 8.1) @@ -106,13 +129,31 @@ PODS: - GoogleUtilities/Reachability (~> 8.1) - GoogleUtilities/UserDefaults (~> 8.1) - nanopb (~> 3.30910.0) + - FirebaseRemoteConfigInterop (11.15.0) + - FirebaseSessions (11.15.0): + - FirebaseCore (~> 11.15.0) + - FirebaseCoreExtension (~> 11.15.0) + - FirebaseInstallations (~> 11.0) + - GoogleDataTransport (~> 10.0) + - GoogleUtilities/Environment (~> 8.1) + - GoogleUtilities/UserDefaults (~> 8.1) + - nanopb (~> 3.30910.0) + - PromisesSwift (~> 2.1) - FLAnimatedImage (1.0.17) - Flutter (1.0.0) + - flutter_amazonpaymentservices (0.0.1): + - Flutter + - PayFortSDK - flutter_app_group_directory (0.0.1): - Flutter - flutter_callkit_incoming (0.0.1): - CryptoSwift - Flutter + - flutter_image_compress_common (1.0.0): + - Flutter + - Mantle + - SDWebImage + - SDWebImageWebPCoder - flutter_inappwebview_ios (0.0.1): - Flutter - flutter_inappwebview_ios/Core (= 0.0.1) @@ -126,6 +167,19 @@ PODS: - Flutter - flutter_nfc_kit (3.6.0): - Flutter + - flutter_paytabs_bridge (2.7.12): + - Flutter + - PayTabsSDK (= 6.6.54) + - flutter_screenshot_blocker (0.0.1): + - Flutter + - flutter_zoom_videosdk (0.0.1): + - Flutter + - ZoomVideoSDK/CptShare (= 2.4.0) + - ZoomVideoSDK/Whiteboard (= 2.4.0) + - ZoomVideoSDK/zm_annoter_dynamic (= 2.4.0) + - ZoomVideoSDK/zoomcml (= 2.4.0) + - ZoomVideoSDK/ZoomTask (= 2.4.0) + - ZoomVideoSDK/ZoomVideoSDK (= 2.4.0) - fluttertoast (0.0.2): - Flutter - geolocator_apple (1.2.0): @@ -202,9 +256,23 @@ PODS: - Flutter - image_picker_ios (0.0.1): - Flutter + - in_app_review (2.0.0): + - Flutter - just_audio (0.0.1): - Flutter - FlutterMacOS + - libwebp (1.5.0): + - libwebp/demux (= 1.5.0) + - libwebp/mux (= 1.5.0) + - libwebp/sharpyuv (= 1.5.0) + - libwebp/webp (= 1.5.0) + - libwebp/demux (1.5.0): + - libwebp/webp + - libwebp/mux (1.5.0): + - libwebp/demux + - libwebp/sharpyuv (1.5.0) + - libwebp/webp (1.5.0): + - libwebp/sharpyuv - live_activities (0.0.1): - Flutter - local_auth_darwin (0.0.1): @@ -214,6 +282,11 @@ PODS: - Flutter - manage_calendar_events (0.0.1): - Flutter + - Mantle (2.2.0): + - Mantle/extobjc (= 2.2.0) + - Mantle/extobjc (2.2.0) + - map_launcher (0.0.1): + - Flutter - MapboxCommon (23.11.0) - MapboxCoreMaps (10.19.1): - MapboxCommon (~> 23.11) @@ -237,8 +310,6 @@ PODS: - MapboxNavigationNative (206.2.2): - MapboxCommon (~> 23.10) - MapboxSpeech (2.1.1) - - maps_launcher (0.0.1): - - Flutter - nanopb (3.30910.0): - nanopb/decode (= 3.30910.0) - nanopb/encode (= 3.30910.0) @@ -255,13 +326,21 @@ PODS: - Flutter - FlutterMacOS - PayFortSDK (3.2.1) + - PayTabsSDK (6.6.54) - permission_handler_apple (9.3.0): - Flutter - Polyline (5.1.0) - PromisesObjC (2.4.0) + - PromisesSwift (2.4.0): + - PromisesObjC (= 2.4.0) + - screen_brightness_ios (0.1.0): + - Flutter - SDWebImage (5.21.2): - SDWebImage/Core (= 5.21.2) - SDWebImage/Core (5.21.2) + - SDWebImageWebPCoder (0.15.0): + - libwebp (~> 1.0) + - SDWebImage/Core (~> 5.17) - share_plus (0.0.1): - Flutter - shared_preferences_foundation (0.0.1): @@ -271,6 +350,7 @@ PODS: - sqflite_darwin (0.0.4): - Flutter - FlutterMacOS + - SwiftProtobuf (1.38.1) - SwiftyGif (5.4.5) - Turf (2.8.0) - url_launcher_ios (0.0.1): @@ -283,10 +363,18 @@ PODS: - webview_flutter_wkwebview (0.0.1): - Flutter - FlutterMacOS + - ZoomVideoSDK/CptShare (2.4.0) + - ZoomVideoSDK/Whiteboard (2.4.0) + - ZoomVideoSDK/zm_annoter_dynamic (2.4.0) + - ZoomVideoSDK/zoomcml (2.4.0) + - ZoomVideoSDK/ZoomTask (2.4.0) + - ZoomVideoSDK/ZoomVideoSDK (2.4.0) DEPENDENCIES: - amazon_payfort (from `.symlinks/plugins/amazon_payfort/ios`) - audio_session (from `.symlinks/plugins/audio_session/ios`) + - barcode_scan2 (from `.symlinks/plugins/barcode_scan2/ios`) + - clarity_flutter (from `.symlinks/plugins/clarity_flutter/ios`) - connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`) - device_calendar (from `.symlinks/plugins/device_calendar/ios`) - device_calendar_plus_ios (from `.symlinks/plugins/device_calendar_plus_ios/ios`) @@ -294,33 +382,41 @@ DEPENDENCIES: - file_picker (from `.symlinks/plugins/file_picker/ios`) - firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`) - firebase_core (from `.symlinks/plugins/firebase_core/ios`) + - firebase_crashlytics (from `.symlinks/plugins/firebase_crashlytics/ios`) - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`) - FLAnimatedImage - Flutter (from `Flutter`) + - flutter_amazonpaymentservices (from `.symlinks/plugins/flutter_amazonpaymentservices/ios`) - flutter_app_group_directory (from `.symlinks/plugins/flutter_app_group_directory/ios`) - flutter_callkit_incoming (from `.symlinks/plugins/flutter_callkit_incoming/ios`) + - flutter_image_compress_common (from `.symlinks/plugins/flutter_image_compress_common/ios`) - flutter_inappwebview_ios (from `.symlinks/plugins/flutter_inappwebview_ios/ios`) - flutter_ios_voip_kit_karmm (from `.symlinks/plugins/flutter_ios_voip_kit_karmm/ios`) - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) - flutter_nfc_kit (from `.symlinks/plugins/flutter_nfc_kit/ios`) + - flutter_paytabs_bridge (from `.symlinks/plugins/flutter_paytabs_bridge/ios`) + - flutter_screenshot_blocker (from `.symlinks/plugins/flutter_screenshot_blocker/ios`) + - flutter_zoom_videosdk (from `.symlinks/plugins/flutter_zoom_videosdk/ios`) - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) - geolocator_apple (from `.symlinks/plugins/geolocator_apple/darwin`) - google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`) - health (from `.symlinks/plugins/health/ios`) - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) + - in_app_review (from `.symlinks/plugins/in_app_review/ios`) - just_audio (from `.symlinks/plugins/just_audio/darwin`) - live_activities (from `.symlinks/plugins/live_activities/ios`) - local_auth_darwin (from `.symlinks/plugins/local_auth_darwin/darwin`) - location (from `.symlinks/plugins/location/ios`) - manage_calendar_events (from `.symlinks/plugins/manage_calendar_events/ios`) + - map_launcher (from `.symlinks/plugins/map_launcher/ios`) - MapboxMaps (= 10.19.0) - MapboxNavigation (= 2.19.0) - - maps_launcher (from `.symlinks/plugins/maps_launcher/ios`) - network_info_plus (from `.symlinks/plugins/network_info_plus/ios`) - open_filex (from `.symlinks/plugins/open_filex/ios`) - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) + - screen_brightness_ios (from `.symlinks/plugins/screen_brightness_ios/ios`) - share_plus (from `.symlinks/plugins/share_plus/ios`) - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) - sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`) @@ -337,9 +433,13 @@ SPEC REPOS: - Firebase - FirebaseAnalytics - FirebaseCore + - FirebaseCoreExtension - FirebaseCoreInternal + - FirebaseCrashlytics - FirebaseInstallations - FirebaseMessaging + - FirebaseRemoteConfigInterop + - FirebaseSessions - FLAnimatedImage - Google-Maps-iOS-Utils - GoogleAdsOnDeviceConversion @@ -347,6 +447,8 @@ SPEC REPOS: - GoogleDataTransport - GoogleMaps - GoogleUtilities + - libwebp + - Mantle - MapboxCommon - MapboxCoreMaps - MapboxCoreNavigation @@ -359,18 +461,27 @@ SPEC REPOS: - nanopb - OrderedSet - PayFortSDK + - PayTabsSDK - Polyline - PromisesObjC + - PromisesSwift - SDWebImage + - SDWebImageWebPCoder - Solar-dev + - SwiftProtobuf - SwiftyGif - Turf + - ZoomVideoSDK EXTERNAL SOURCES: amazon_payfort: :path: ".symlinks/plugins/amazon_payfort/ios" audio_session: :path: ".symlinks/plugins/audio_session/ios" + barcode_scan2: + :path: ".symlinks/plugins/barcode_scan2/ios" + clarity_flutter: + :path: ".symlinks/plugins/clarity_flutter/ios" connectivity_plus: :path: ".symlinks/plugins/connectivity_plus/ios" device_calendar: @@ -385,14 +496,20 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/firebase_analytics/ios" firebase_core: :path: ".symlinks/plugins/firebase_core/ios" + firebase_crashlytics: + :path: ".symlinks/plugins/firebase_crashlytics/ios" firebase_messaging: :path: ".symlinks/plugins/firebase_messaging/ios" Flutter: :path: Flutter + flutter_amazonpaymentservices: + :path: ".symlinks/plugins/flutter_amazonpaymentservices/ios" flutter_app_group_directory: :path: ".symlinks/plugins/flutter_app_group_directory/ios" flutter_callkit_incoming: :path: ".symlinks/plugins/flutter_callkit_incoming/ios" + flutter_image_compress_common: + :path: ".symlinks/plugins/flutter_image_compress_common/ios" flutter_inappwebview_ios: :path: ".symlinks/plugins/flutter_inappwebview_ios/ios" flutter_ios_voip_kit_karmm: @@ -401,6 +518,12 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/flutter_local_notifications/ios" flutter_nfc_kit: :path: ".symlinks/plugins/flutter_nfc_kit/ios" + flutter_paytabs_bridge: + :path: ".symlinks/plugins/flutter_paytabs_bridge/ios" + flutter_screenshot_blocker: + :path: ".symlinks/plugins/flutter_screenshot_blocker/ios" + flutter_zoom_videosdk: + :path: ".symlinks/plugins/flutter_zoom_videosdk/ios" fluttertoast: :path: ".symlinks/plugins/fluttertoast/ios" geolocator_apple: @@ -411,6 +534,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/health/ios" image_picker_ios: :path: ".symlinks/plugins/image_picker_ios/ios" + in_app_review: + :path: ".symlinks/plugins/in_app_review/ios" just_audio: :path: ".symlinks/plugins/just_audio/darwin" live_activities: @@ -421,8 +546,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/location/ios" manage_calendar_events: :path: ".symlinks/plugins/manage_calendar_events/ios" - maps_launcher: - :path: ".symlinks/plugins/maps_launcher/ios" + map_launcher: + :path: ".symlinks/plugins/map_launcher/ios" network_info_plus: :path: ".symlinks/plugins/network_info_plus/ios" open_filex: @@ -433,6 +558,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/path_provider_foundation/darwin" permission_handler_apple: :path: ".symlinks/plugins/permission_handler_apple/ios" + screen_brightness_ios: + :path: ".symlinks/plugins/screen_brightness_ios/ios" share_plus: :path: ".symlinks/plugins/share_plus/ios" shared_preferences_foundation: @@ -449,49 +576,65 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/webview_flutter_wkwebview/darwin" SPEC CHECKSUMS: - amazon_payfort: 4ad7a3413acc1c4c4022117a80d18fee23c572d3 - audio_session: 9bb7f6c970f21241b19f5a3658097ae459681ba0 - connectivity_plus: cb623214f4e1f6ef8fe7403d580fdad517d2f7dd + amazon_payfort: 782d287860ac8962baf4e0a2a0fb2f81fdf27204 + audio_session: 19e9480dbdd4e5f6c4543826b2e8b0e4ab6145fe + barcode_scan2: 050b7b327e85954c8918715d42e83c5a35c3ed89 + clarity_flutter: e4e49caa906b833300b7dabc0a9f60d0e91ccbc0 + connectivity_plus: 2a701ffec2c0ae28a48cf7540e279787e77c447d CryptoSwift: e64e11850ede528a02a0f3e768cec8e9d92ecb90 - device_calendar: b55b2c5406cfba45c95a59f9059156daee1f74ed - device_calendar_plus_ios: 2c04ad7643c6e697438216e33693b84e8ca45ded - device_info_plus: 21fcca2080fbcd348be798aa36c3e5ed849eefbe + device_calendar: 9cb33f88a02e19652ec7b8b122ca778f751b1f7b + device_calendar_plus_ios: 34dca387f44fad29b840096a840f94edc55af858 + device_info_plus: bf2e3232933866d73fe290f2942f2156cdd10342 DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60 - file_picker: a0560bc09d61de87f12d246fc47d2119e6ef37be + file_picker: b159e0c068aef54932bb15dc9fd1571818edaf49 Firebase: d99ac19b909cd2c548339c2241ecd0d1599ab02e - firebase_analytics: 0e25ca1d4001ccedd40b4e5b74c0ec34e18f6425 - firebase_core: 995454a784ff288be5689b796deb9e9fa3601818 - firebase_messaging: f4a41dd102ac18b840eba3f39d67e77922d3f707 + firebase_analytics: bf93e20703c95030404d6ddbb1adf05bf5c3885b + firebase_core: 99a37263b3c27536063a7b601d9e2a49400a433c + firebase_crashlytics: 986773c0c7ea4c3f5a4ead141b58522fcd9dfdb1 + firebase_messaging: bf6697c61f31c7cc0f654131212ff04c0115c2c7 FirebaseAnalytics: 6433dfd311ba78084fc93bdfc145e8cb75740eae FirebaseCore: efb3893e5b94f32b86e331e3bd6dadf18b66568e + FirebaseCoreExtension: edbd30474b5ccf04e5f001470bdf6ea616af2435 FirebaseCoreInternal: 9afa45b1159304c963da48addb78275ef701c6b4 + FirebaseCrashlytics: e09d0bc19aa54a51e45b8039c836ef73f32c039a FirebaseInstallations: 317270fec08a5d418fdbc8429282238cab3ac843 FirebaseMessaging: 3b26e2cee503815e01c3701236b020aa9b576f09 + FirebaseRemoteConfigInterop: 1c6135e8a094cc6368949f5faeeca7ee8948b8aa + FirebaseSessions: b9a92c1c51bbb81e78fc3142cda6d925d700f8e7 FLAnimatedImage: bbf914596368867157cc71b38a8ec834b3eeb32b Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467 - flutter_app_group_directory: 55b5362007d1c0cb45dc1dd1e94f67d615f45a6b - flutter_callkit_incoming: cb8138af67cda6dd981f7101a5d709003af21502 - flutter_inappwebview_ios: b89ba3482b96fb25e00c967aae065701b66e9b99 - flutter_ios_voip_kit_karmm: 371663476722afb631d5a13a39dee74c56c1abd0 - flutter_local_notifications: a5a732f069baa862e728d839dd2ebb904737effb - flutter_nfc_kit: e1b71583eafd2c9650bc86844a7f2d185fb414f6 - fluttertoast: 2c67e14dce98bbdb200df9e1acf610d7a6264ea1 - geolocator_apple: ab36aa0e8b7d7a2d7639b3b4e48308394e8cef5e + flutter_amazonpaymentservices: 65a823f0cde190eaa78f1441c73b6c766ac2b899 + flutter_app_group_directory: d2c3337f424828558953172f9378d00df9b7756d + flutter_callkit_incoming: 417dd1b46541cdd5d855ad795ccbe97d1c18155e + flutter_image_compress_common: ec1d45c362c9d30a3f6a0426c297f47c52007e3e + flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4 + flutter_ios_voip_kit_karmm: 7ea37381a8841c92d186edf1f4604df5cc437579 + flutter_local_notifications: ff50f8405aaa0ccdc7dcfb9022ca192e8ad9688f + flutter_nfc_kit: 3985c93f749b9cb4747479205c2f10bd2f877a11 + flutter_paytabs_bridge: 6398a23e4c217f46a87d041d50d814cd1bf901f8 + flutter_screenshot_blocker: af896cc18564521a9bcf34e8ba09ff481ec87148 + flutter_zoom_videosdk: 9d59a78c3e426bcf4723c7e14ac469bde1d0566b + fluttertoast: 21eecd6935e7064cc1fcb733a4c5a428f3f24f0f + geolocator_apple: 66b711889fd333205763b83c9dcf0a57a28c7afd Google-Maps-iOS-Utils: 66d6de12be1ce6d3742a54661e7a79cb317a9321 - google_maps_flutter_ios: 3213e1e5f5588b6134935cb8fc59acb4e6d88377 + google_maps_flutter_ios: ffdd933832966673a1f57f5effd014dc8d4d43a2 GoogleAdsOnDeviceConversion: 2be6297a4f048459e0ae17fad9bfd2844e10cf64 GoogleAppMeasurement: 700dce7541804bec33db590a5c496b663fbe2539 GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 GoogleMaps: 8939898920281c649150e0af74aa291c60f2e77d GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1 - health: 32d2fbc7f26f9a2388d1a514ce168adbfa5bda65 - image_picker_ios: e0ece4aa2a75771a7de3fa735d26d90817041326 - just_audio: 4e391f57b79cad2b0674030a00453ca5ce817eed - live_activities: 4dfa736d0736e1c77866a2f9c056a76513cc9e7b - local_auth_darwin: c3ee6cce0a8d56be34c8ccb66ba31f7f180aaebb - location: 155caecf9da4f280ab5fe4a55f94ceccfab838f8 - manage_calendar_events: fe1541069431af035ced925ebd9def8b4b271254 + health: 9cd70a5c9d9ec559a12d639a1471091c0cbb6b48 + image_picker_ios: 4f2f91b01abdb52842a8e277617df877e40f905b + in_app_review: 436034b18594851a7328d7f1c2ed5ec235b79cfc + just_audio: a42c63806f16995daf5b219ae1d679deb76e6a79 + libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8 + live_activities: 5a5313d5bf801bbbbe80d51eab80aed6d6df376b + local_auth_darwin: 63c73d6d28cc3e239be2b6aa460ea6e317cd5100 + location: d5cf8598915965547c3f36761ae9cc4f4e87d22e + manage_calendar_events: 9b2889799340398027b3e3f5c4891d41599ec257 + Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d + map_launcher: 8a4e484aaddff55680a7da9bc9e25f512067fb87 MapboxCommon: 119f3759f7dc9457f0695848108ab323eb643cb4 MapboxCoreMaps: ca17f67baced23f8c952166ac6314c35bad3f66c MapboxCoreNavigation: 3be9990fae3ed732a101001746d0e3b4234ec023 @@ -501,29 +644,34 @@ SPEC CHECKSUMS: MapboxNavigation: da9cf3d773ed5b0fa0fb388fccdaa117ee681f31 MapboxNavigationNative: 629e359f3d2590acd1ebbacaaf99e1a80ee57e42 MapboxSpeech: cd25ef99c3a3d2e0da72620ff558276ea5991a77 - maps_launcher: edf829809ba9e894d70e569bab11c16352dedb45 nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 - network_info_plus: cf61925ab5205dce05a4f0895989afdb6aade5fc - open_filex: 432f3cd11432da3e39f47fcc0df2b1603854eff1 + network_info_plus: 6613d9d7cdeb0e6f366ed4dbe4b3c51c52d567a9 + open_filex: 6e26e659846ec990262224a12ef1c528bb4edbe4 OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94 - package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499 - path_provider_foundation: bb55f6dbba17d0dccd6737fe6f7f34fbd0376880 + package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4 + path_provider_foundation: 0b743cbb62d8e47eab856f09262bb8c1ddcfe6ba PayFortSDK: 233eabe9a45601fdbeac67fa6e5aae46ed8faf82 - permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d + PayTabsSDK: 51d21d0174679d08ee816583266aa5f557ebf5ed + permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 Polyline: 2a1f29f87f8d9b7de868940f4f76deb8c678a5b1 PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 + PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851 + screen_brightness_ios: 7437207a2a9bc56553aa10f782afecf830b4c4e2 SDWebImage: 9f177d83116802728e122410fb25ad88f5c7608a - share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a - shared_preferences_foundation: 7036424c3d8ec98dfe75ff1667cb0cd531ec82bb + SDWebImageWebPCoder: 0e06e365080397465cc73a7a9b472d8a3bd0f377 + share_plus: 8b6f8b3447e494cca5317c8c3073de39b3600d1f + shared_preferences_foundation: 5086985c1d43c5ba4d5e69a4e8083a389e2909e6 Solar-dev: 4612dc9878b9fed2667d23b327f1d4e54e16e8d0 - sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0 + sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d + SwiftProtobuf: 409d3aaec90e51b1705b1dd8065b56893450e77c SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4 Turf: aa2ede4298009639d10db36aba1a7ebaad072a5e - url_launcher_ios: 7a95fa5b60cc718a708b8f2966718e93db0cef1b - video_player_avfoundation: dd410b52df6d2466a42d28550e33e4146928280a - wakelock_plus: e29112ab3ef0b318e58cfa5c32326458be66b556 - webview_flutter_wkwebview: 8ebf4fded22593026f7dbff1fbff31ea98573c8d + url_launcher_ios: bb13df5870e8c4234ca12609d04010a21be43dfa + video_player_avfoundation: 7993f492ae0bd77edaea24d9dc051d8bb2cd7c86 + wakelock_plus: 76957ab028e12bfa4e66813c99e46637f367fc7e + webview_flutter_wkwebview: 29eb20d43355b48fe7d07113835b9128f84e3af4 + ZoomVideoSDK: c3ac797074847382d9b539044d77f5971d6b62cd -PODFILE CHECKSUM: 5df9d8aa8f2c105eacd5ad7a310503d93c68c86b +PODFILE CHECKSUM: b2fdde559476ac2931f2a7ceec6cf5a78743c72b COCOAPODS: 1.16.2 diff --git a/ios/live_notification/AppIntent.swift b/ios/live_notification/AppIntent.swift index 57710894..e27be965 100644 --- a/ios/live_notification/AppIntent.swift +++ b/ios/live_notification/AppIntent.swift @@ -2,7 +2,7 @@ // AppIntent.swift // live_notification // -// Created by Cloud Solutions on 27/01/2026. +// Created by Haroon Amjad on 20/07/2026. // import WidgetKit diff --git a/ios/live_notification/Info.plist b/ios/live_notification/Info.plist index 04f07b5f..0f118fb7 100644 --- a/ios/live_notification/Info.plist +++ b/ios/live_notification/Info.plist @@ -2,8 +2,6 @@ - NSSupportsLiveActivities - NSExtension NSExtensionPointIdentifier diff --git a/ios/live_notification/live_notificationBundle.swift b/ios/live_notification/live_notificationBundle.swift index 0cf31149..56d9f70c 100644 --- a/ios/live_notification/live_notificationBundle.swift +++ b/ios/live_notification/live_notificationBundle.swift @@ -2,7 +2,7 @@ // live_notificationBundle.swift // live_notification // -// Created by Cloud Solutions on 27/01/2026. +// Created by Haroon Amjad on 20/07/2026. // import WidgetKit diff --git a/ios/live_notification/live_notificationLiveActivity.swift b/ios/live_notification/live_notificationLiveActivity.swift index 26521533..1f52f70e 100644 --- a/ios/live_notification/live_notificationLiveActivity.swift +++ b/ios/live_notification/live_notificationLiveActivity.swift @@ -29,7 +29,7 @@ extension Color { static let inactiveColor = Color(hex: "#ED1C2B") static let textColor = Color(hex: "#A2A2A2") static let colorWhite = Color(hex: "#FFFFFF") - + // Helper initializer for hex colors init(hex: String) { let hex = hex.trimmingCharacters(in: CharacterSet.alphanumerics.inverted) @@ -61,7 +61,7 @@ struct WidgetColorConfig { let nextStepBackground: Color let nextStepTextColor: Color let containerBorderColor: Color - + static func config(for value: Int) -> WidgetColorConfig { switch value { case 0: @@ -109,8 +109,8 @@ struct NotificationWidgetView: View { print("it is being loaded") self.data = data } - - + + var body : some View{ // ZStack(){ body2 @@ -119,7 +119,7 @@ struct NotificationWidgetView: View { // .cornerRadius(20) // }.background(data.colorConfig.containerBorderColor) // .cornerRadius(20) - + } // var body2 : some View { // Text(data.currentTicket) @@ -169,15 +169,15 @@ struct NotificationWidgetView: View { .frame(maxWidth: .infinity, alignment: .leading) // Status badge - Text(data.status) - .font(.custom("Poppins-Medium", size: 12)) - .foregroundColor(data.colorConfig.nextStepTextColor) - .padding(.horizontal, 12) - .padding(.vertical, 8) - .background( - RoundedRectangle(cornerRadius: 8) - .fill(Color.inactiveColor.opacity(0.2)) - ) +// Text(data.status) +// .font(.custom("Poppins-Medium", size: 12)) +// .foregroundColor(data.colorConfig.nextStepTextColor) +// .padding(.horizontal, 12) +// .padding(.vertical, 8) +// .background( +// RoundedRectangle(cornerRadius: 8) +// .fill(Color.inactiveColor.opacity(0.2)) +// ) } .padding(.horizontal, 16) Spacer() @@ -209,18 +209,18 @@ struct NotificationWidgetView: View { // MARK: - Live Activity Widget struct live_notificationLiveActivity: Widget { - + var body: some WidgetConfiguration { ActivityConfiguration(for: LiveActivitiesAppAttributes.self) { context in // Extract parameters from Flut // print("the queno is \(context.attributes.prefixedKey("title")) ===== \(sharedDefault.string(forKey: context.attributes.prefixedKey("queueNo")) )") let title = sharedDefault.string(forKey: context.attributes.prefixedKey("title")) ?? "testes" let contentText = sharedDefault.string(forKey: context.attributes.prefixedKey("contentText")) ?? "tested" - let currentTicket = sharedDefault.string(forKey: context.attributes.prefixedKey("queueNo")) ?? "test1234" - let status = sharedDefault.string(forKey: context.attributes.prefixedKey("callType")) ?? "test3345" - let currentlyServing = sharedDefault.string(forKey: context.attributes.prefixedKey("currentlyServingTitle")) ?? "tes" + let currentTicket = sharedDefault.string(forKey: context.attributes.prefixedKey("queueNo")) ?? "IMD A-89" + let status = sharedDefault.string(forKey: context.attributes.prefixedKey("callType")) ?? "0" + let currentlyServing = sharedDefault.string(forKey: context.attributes.prefixedKey("currentlyServingTitle")) ?? "IMD A-86" let nextStep = sharedDefault.string(forKey: context.attributes.prefixedKey("currentlyServingStatus")) ?? - "test111" + "Please wait! you will be called for vital signs" let nextStepBackground = sharedDefault.integer(forKey: context.attributes.prefixedKey("currentlyServingCallType")) // Get color configuration based on nextStepBackground @@ -229,7 +229,7 @@ struct live_notificationLiveActivity: Widget { // Create widget data let widgetData = NotificationWidgetData( currentTicket: currentTicket, - currentlyServingHeader: "Currently Servingsssssssss:", + currentlyServingHeader: "Currently Serving:", currentlyServing: currentlyServing, status: status, nextStep: nextStep, @@ -344,7 +344,7 @@ struct live_notificationLiveActivity: Widget { .frame(width: 4, height: 4) .foregroundColor(colorConfig.containerBorderColor) }.padding(2) - + } .contentMargins(.all, 20,for: .expanded) } @@ -374,7 +374,7 @@ struct NotificationWidgetView_Previews: PreviewProvider { ) ) .previewDisplayName("Yellow Border (0)") - + // Preview with nextStepBackground = 1 (Red border) NotificationWidgetView( data: NotificationWidgetData( @@ -388,7 +388,7 @@ struct NotificationWidgetView_Previews: PreviewProvider { ) ) .previewDisplayName("Red Border (1)") - + // Preview with nextStepBackground = 2 (Green border) NotificationWidgetView( data: NotificationWidgetData( @@ -407,4 +407,3 @@ struct NotificationWidgetView_Previews: PreviewProvider { .previewLayout(.sizeThatFits) } } -