diff --git a/.gitignore b/.gitignore index d6fa0e5..369cb6c 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,7 @@ android/**/.classpath android/**/.project android/**/.settings/*.prefs android/**/release/*.aab +android/**/.cxx/ .idea .gradle local.properties diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..b277a58 --- /dev/null +++ b/Gemfile @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version +ruby ">= 2.6.10" + +# Exclude problematic versions of cocoapods and activesupport that causes build failures. +gem 'cocoapods', '= 1.16.2' +gem 'activesupport', '>= 6.1.7.5', '!= 7.1.0' +gem 'xcodeproj', '>= 1.27.0' +gem 'concurrent-ruby', '< 1.3.4' diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..3464f8c --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,120 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.7) + base64 + nkf + rexml + activesupport (7.2.2.2) + base64 + benchmark (>= 0.3) + bigdecimal + concurrent-ruby (~> 1.0, >= 1.3.1) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + logger (>= 1.4.2) + minitest (>= 5.1) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + algoliasearch (1.27.5) + httpclient (~> 2.8, >= 2.8.3) + json (>= 1.5.1) + atomos (0.1.3) + base64 (0.3.0) + benchmark (0.4.1) + bigdecimal (3.2.3) + claide (1.1.0) + cocoapods (1.16.2) + addressable (~> 2.8) + claide (>= 1.0.2, < 2.0) + cocoapods-core (= 1.16.2) + cocoapods-deintegrate (>= 1.0.3, < 2.0) + cocoapods-downloader (>= 2.1, < 3.0) + cocoapods-plugins (>= 1.0.0, < 2.0) + cocoapods-search (>= 1.0.0, < 2.0) + cocoapods-trunk (>= 1.6.0, < 2.0) + cocoapods-try (>= 1.1.0, < 2.0) + colored2 (~> 3.1) + escape (~> 0.0.4) + fourflusher (>= 2.3.0, < 3.0) + gh_inspector (~> 1.0) + molinillo (~> 0.8.0) + nap (~> 1.0) + ruby-macho (>= 2.3.0, < 3.0) + xcodeproj (>= 1.27.0, < 2.0) + cocoapods-core (1.16.2) + activesupport (>= 5.0, < 8) + addressable (~> 2.8) + algoliasearch (~> 1.0) + concurrent-ruby (~> 1.1) + fuzzy_match (~> 2.0.4) + nap (~> 1.0) + netrc (~> 0.11) + public_suffix (~> 4.0) + typhoeus (~> 1.0) + cocoapods-deintegrate (1.0.5) + cocoapods-downloader (2.1) + cocoapods-plugins (1.0.0) + nap + cocoapods-search (1.0.1) + cocoapods-trunk (1.6.0) + nap (>= 0.8, < 2.0) + netrc (~> 0.11) + cocoapods-try (1.2.0) + colored2 (3.1.2) + concurrent-ruby (1.3.3) + connection_pool (2.5.4) + drb (2.2.3) + escape (0.0.4) + ethon (0.15.0) + ffi (>= 1.15.0) + ffi (1.17.2-arm64-darwin) + fourflusher (2.3.1) + fuzzy_match (2.0.4) + gh_inspector (1.1.3) + httpclient (2.9.0) + mutex_m + i18n (1.14.7) + concurrent-ruby (~> 1.0) + json (2.15.0) + logger (1.7.0) + minitest (5.25.5) + molinillo (0.8.0) + mutex_m (0.3.0) + nanaimo (0.4.0) + nap (1.1.0) + netrc (0.11.0) + nkf (0.2.0) + public_suffix (4.0.7) + rexml (3.4.4) + ruby-macho (2.5.1) + securerandom (0.4.1) + typhoeus (1.5.0) + ethon (>= 0.9.0, < 0.16.0) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + xcodeproj (1.27.0) + CFPropertyList (>= 2.3.3, < 4.0) + atomos (~> 0.1.3) + claide (>= 1.0.2, < 2.0) + colored2 (~> 3.1) + nanaimo (~> 0.4.0) + rexml (>= 3.3.6, < 4.0) + +PLATFORMS + arm64-darwin + +DEPENDENCIES + activesupport (>= 6.1.7.5, != 7.1.0) + cocoapods (= 1.16.2) + concurrent-ruby (< 1.3.4) + xcodeproj (>= 1.27.0) + +RUBY VERSION + ruby 3.2.7p253 + +BUNDLED WITH + 2.7.2 diff --git a/README.md b/README.md index e434780..339c4dc 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,7 @@ First things first, make sure you clone your repo and install necessary software ``` 1. Install pods: ```bash - cd ios && pod install + cd ios && bundle install && bundle exec pod install ``` ### 1.2 Switching to the Compatible Mendix Studio Pro Branch diff --git a/android/app/build.gradle b/android/app/build.gradle index 00670e5..71ce94e 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -115,9 +115,6 @@ dependencies { implementation "com.facebook.react:react-android:0.77.3" implementation("com.facebook.react:hermes-android") - // Mendix dependencies - implementation project(":mendixnative-release") - // Dev app dependencies implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion" implementation "android.arch.lifecycle:extensions:1.1.1" @@ -185,5 +182,4 @@ configurations.all { } } -apply from: file("../../node_modules/@mendix/native/androidlib/mendix.gradle"); applyMendixGradle(project) apply from: "../../node_modules/react-native-vector-icons/fonts.gradle" diff --git a/android/build.gradle b/android/build.gradle index f93241b..668b13c 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -40,8 +40,6 @@ buildscript { classpath "com.google.firebase:firebase-crashlytics-gradle:2.7.1" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.8.3" - apply from: file("../node_modules/@mendix/native/androidlib/mendix.gradle"); applyMendixClassPaths(project) - // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/android/gradle.properties b/android/gradle.properties index f9cbf49..93f3c64 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -24,7 +24,7 @@ android.suppressUnsupportedCompileSdk=33 android.defaults.buildfeatures.buildconfig=true android.nonTransitiveRClass=true # enabled by default in RN 0.76 so we need to disable it explicitly -newArchEnabled=false +newArchEnabled=true hermesEnabled=true mendixnative.cookieEncryption=true VisionCamera_enableCodeScanner=true diff --git a/android/settings.gradle b/android/settings.gradle index 68d298f..9d1fc30 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -4,7 +4,4 @@ extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autoli includeBuild('../node_modules/@react-native/gradle-plugin') -include ':mendixnative-release' -project(':mendixnative-release').projectDir = new File(rootProject.projectDir, '../node_modules/@mendix/native/androidlib') - include ':app' diff --git a/ios/DeveloperApp/AppDelegate.swift b/ios/DeveloperApp/AppDelegate.swift index 7890b48..76dc9f9 100644 --- a/ios/DeveloperApp/AppDelegate.swift +++ b/ios/DeveloperApp/AppDelegate.swift @@ -2,32 +2,105 @@ import UIKit import Firebase import GoogleMaps import UserNotifications +import React_RCTAppDelegate +import ReactAppDependencyProvider +import MendixNative import React @UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate, MessagingDelegate { - var window: UIWindow? +class AppDelegate: ReactAppProvider { + var shouldLaunchLastApp: Bool = false var previewingSampleApp: Bool = false - // By default lock orientation only portrait mode. - static var orientationLock = UIInterfaceOrientationMask.portrait + override func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + super.setUpProvider() + super.application(application, didFinishLaunchingWithOptions: launchOptions) + clearKeychainIfNecessary() + setUpDevice() + setUpGoogleMaps() + setUpPushNotifications(application) + updateRootViewController(showOnboarding() ? .launchTutorial : .openApp) + return true + } - func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { - return AppDelegate.orientationLock + override func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { + RCTLinkingManager.application(app, open: url, options: options) + guard let appUrl = AppPreferences.appUrl, !appUrl.isEmpty, !ReactAppProvider.isReactAppActive() else { + return true + } + var launchOptions: [AnyHashable: Any] = options + launchOptions[UIApplicationLaunchOptionsKey.annotation] = options[UIApplicationOpenURLOptionsKey.annotation] ?? [] + launchOptions[UIApplicationLaunchOptionsKey.url] = url + launchMendixAppWithOptions(options: launchOptions) + return true } + private func launchMendixAppWithOptions(options: [AnyHashable: Any] = [:]) { + ReactNative.shared.setup(MendixAppEntryType.deeplink.mendixApp, launchOptions: options) + ReactNative.shared.start() + } - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { - clearKeychainIfNecessary() - + static func delegateInstance() -> AppDelegate? { + return UIApplication.shared.delegate as? AppDelegate + } +} + +//Device +extension AppDelegate { + + static var orientationLock = UIInterfaceOrientationMask.portrait // By default lock orientation only portrait mode. + + override func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { + return AppDelegate.orientationLock + } + + private func setUpDevice() { UIApplication.shared.isIdleTimerDisabled = true - UIDevice.current.isBatteryMonitoringEnabled = true - - let googleApiKey = Bundle.main.object(forInfoDictionaryKey: "GoogleMapsKey") as! String - GMSServices.provideAPIKey(googleApiKey != "" ? googleApiKey : "placeholderApiKey") - + } +} + +//RootView +extension AppDelegate { + private func updateRootViewController(_ storyboard: UIStoryboard) { + window = MendixReactWindow(frame: UIScreen.main.bounds) + window.rootViewController = storyboard.instantiateInitialViewController() + window.makeKeyAndVisible() + window.overrideUserInterfaceStyle = .light // Force Light Mode + IQKeyboardManager.shared().isEnabled = false + } + + func changeRootViewToOpenApp() { + updateRootViewController(.openApp) + } +} + +//GMS +extension AppDelegate { + private func setUpGoogleMaps() { + guard let apiKey = Bundle.main.object(forInfoDictionaryKey: "GoogleMapsKey") as? String, !apiKey.isEmpty else { + GMSServices.provideAPIKey("placeholderApiKey") + return + } + GMSServices.provideAPIKey(apiKey) + } +} + +//Keychain +extension AppDelegate { + func clearKeychainIfNecessary() { + if (UserDefaults.standard.bool(forKey: "HAS_RUN_BEFORE") == false) { + UserDefaults.standard.setValue(true, forKey: "HAS_RUN_BEFORE") + KeychainHelper.clear() + } + } +} + +//Firebase + Push Notification +extension AppDelegate: UNUserNotificationCenterDelegate, MessagingDelegate { + + private func setUpPushNotifications(_ application: UIApplication) { // Required for Remote notifications if FirebaseApp.app() == nil { FirebaseApp.configure() @@ -46,76 +119,16 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil) application.registerUserNotificationSettings(settings) } - application.registerForRemoteNotifications() - - let onboardingShown = !showOnboarding() // showOnboardin return true, if onboarding has not shown up. - let storyboard: UIStoryboard? - - // If the onboarding was shown, do not show. - if (!onboardingShown) { - storyboard = UIStoryboard(name: "LaunchTutorial", bundle: nil) - } else { - storyboard = UIStoryboard(name: "OpenApp", bundle: nil) - } - - let rootViewController = storyboard!.instantiateInitialViewController() - self.window = MendixReactWindow(frame: UIScreen.main.bounds) - self.window?.rootViewController = rootViewController - self.window?.makeKeyAndVisible() - - // Force Light Mode - self.window?.overrideUserInterfaceStyle = .light - - IQKeyboardManager.shared().isEnabled = false; - - return true - } - - func changeRootViewToOpenApp(){ - let storyboard: UIStoryboard? = UIStoryboard(name: "OpenApp", bundle: nil) - - let rootViewController = storyboard!.instantiateInitialViewController() - self.window = MendixReactWindow(frame: UIScreen.main.bounds) - self.window?.rootViewController = rootViewController - self.window?.makeKeyAndVisible() - - // Force Light Mode - self.window?.overrideUserInterfaceStyle = .light - - IQKeyboardManager.shared().isEnabled = false; - } - - func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { - RCTLinkingManager.application(app, open: url, options: options) - guard let appUrl = AppPreferences.getAppUrl(), !appUrl.isEmpty, !ReactNative.instance.isActive() else { - return true - } - var launchOptions: [AnyHashable: Any] = options - launchOptions[UIApplicationLaunchOptionsKey.annotation] = options[UIApplicationOpenURLOptionsKey.annotation] ?? [] - launchOptions[UIApplicationLaunchOptionsKey.url] = url - launchMendixAppWithOptions(options: launchOptions) - return true - } - - func applicationWillResignActive(_ application: UIApplication) { - } - - func applicationDidEnterBackground(_ application: UIApplication) { - } - - func applicationWillEnterForeground(_ application: UIApplication) { - } - - func applicationDidBecomeActive(_ application: UIApplication) { - } - - func applicationWillTerminate(_ application: UIApplication) { } //Called when a notification is delivered to a foreground app. func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { - completionHandler([.sound, .alert, .badge]) + if #available(iOS 14.0, *) { + completionHandler([.sound, .badge]) + } else { + completionHandler([.sound, .alert, .badge]) + } } func userNotificationCenter( @@ -126,19 +139,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD completionHandler() } - private func launchMendixAppWithOptions(options: [AnyHashable: Any] = [:]) { - let url = AppUrl.forBundle( - AppPreferences.getAppUrl(), - port: AppPreferences.getRemoteDebuggingPackagerPort(), - isDebuggingRemotely: AppPreferences.remoteDebuggingEnabled(), - isDevModeEnabled: AppPreferences.devModeEnabled()) - let runtimeUrl: URL = AppUrl.forRuntime(AppPreferences.getAppUrl())! - let mendixApp = MendixApp(nil, bundleUrl: url!, runtimeUrl: runtimeUrl, warningsFilter: getWarningFilterValue(), isDeveloperApp: true, clearDataAtLaunch: false, reactLoading: UIStoryboard(name: "LaunchScreen", bundle: nil)) - ReactNative.instance.setup(mendixApp, launchOptions: options) - ReactNative.instance.start() - } - - func handleMendixNotification(response: UNNotificationResponse) -> Bool { let mendixAdChannelId = "MENDIX_AD_CAMPAIGN_CHANNEL" let userInfo = response.notification.request.content.userInfo @@ -154,15 +154,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD return false } - func clearKeychainIfNecessary() { - if (UserDefaults.standard.bool(forKey: "HAS_RUN_BEFORE") == false) { - UserDefaults.standard.setValue(true, forKey: "HAS_RUN_BEFORE") - ReactNative.clearKeychain() - } - } - #if DEBUG - func application(_ application: UIApplication, + override func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { print("APNs token retrieved: \(deviceToken)") Messaging.messaging().apnsToken = deviceToken diff --git a/ios/DeveloperApp/Config/DeveloperApp.debug.xcconfig b/ios/DeveloperApp/Config/DeveloperApp.debug.xcconfig index 439ba22..e27033d 100644 --- a/ios/DeveloperApp/Config/DeveloperApp.debug.xcconfig +++ b/ios/DeveloperApp/Config/DeveloperApp.debug.xcconfig @@ -1,3 +1,3 @@ -#include "Pods/Target Support Files/Pods-Mendix-DeveloperApp/Pods-Mendix-DeveloperApp.debug.xcconfig" +#include "Pods/Target Support Files/Pods-DeveloperApp/Pods-DeveloperApp.debug.xcconfig" #include "DeveloperApp.xcconfig" #include "ApiKeys.xcconfig" diff --git a/ios/DeveloperApp/Config/DeveloperApp.release.devtools.xcconfig b/ios/DeveloperApp/Config/DeveloperApp.release.devtools.xcconfig index 382663a..112e6ec 100644 --- a/ios/DeveloperApp/Config/DeveloperApp.release.devtools.xcconfig +++ b/ios/DeveloperApp/Config/DeveloperApp.release.devtools.xcconfig @@ -1,3 +1,3 @@ -#include "Pods/Target Support Files/Pods-Mendix-DeveloperApp/Pods-Mendix-DeveloperApp.releasedevtoolsenabled.xcconfig" +#include "Pods/Target Support Files/Pods-DeveloperApp/Pods-DeveloperApp.releasedevtoolsenabled.xcconfig" #include "DeveloperApp.xcconfig" #include "ApiKeys.xcconfig" diff --git a/ios/DeveloperApp/Config/DeveloperApp.release.xcconfig b/ios/DeveloperApp/Config/DeveloperApp.release.xcconfig index b67f2f3..a6ba0af 100644 --- a/ios/DeveloperApp/Config/DeveloperApp.release.xcconfig +++ b/ios/DeveloperApp/Config/DeveloperApp.release.xcconfig @@ -1,3 +1,3 @@ -#include "Pods/Target Support Files/Pods-Mendix-DeveloperApp/Pods-Mendix-DeveloperApp.release.xcconfig" +#include "Pods/Target Support Files/Pods-DeveloperApp/Pods-DeveloperApp.release.xcconfig" #include "DeveloperApp.xcconfig" #include "ApiKeys.xcconfig" diff --git a/ios/DeveloperApp/DeveloperApp-Bridging-Header.h b/ios/DeveloperApp/DeveloperApp-Bridging-Header.h index e31b045..bf2f22c 100644 --- a/ios/DeveloperApp/DeveloperApp-Bridging-Header.h +++ b/ios/DeveloperApp/DeveloperApp-Bridging-Header.h @@ -1,5 +1,4 @@ #import "React/RCTRootView.h" #import "React/RCTLinkingManager.h" -#import "MendixNative.h" #import "IQKeyboardManager/IQKeyboardManager.h" #import diff --git a/ios/DeveloperApp/MendixReactWindowExtensions.swift b/ios/DeveloperApp/Extension/MendixReactWindow+Extension.swift similarity index 61% rename from ios/DeveloperApp/MendixReactWindowExtensions.swift rename to ios/DeveloperApp/Extension/MendixReactWindow+Extension.swift index 8acb672..6506941 100644 --- a/ios/DeveloperApp/MendixReactWindowExtensions.swift +++ b/ios/DeveloperApp/Extension/MendixReactWindow+Extension.swift @@ -1,11 +1,13 @@ +import MendixNative + extension MendixReactWindow { open override var canBecomeFirstResponder: Bool { return true } open override func motionEnded(_ motion: UIEventSubtype, with event: UIEvent?) { - if (motion == .motionShake && ReactNative.instance.isActive()) { - ReactNative.instance.showAppMenu(); + if (motion == .motionShake && ReactAppProvider.isReactAppActive()) { + DevHelper.showAppMenu() } } } diff --git a/ios/DeveloperApp/RCTRootViewExtension.swift b/ios/DeveloperApp/Extension/RCTRootView+Extension.swift similarity index 100% rename from ios/DeveloperApp/RCTRootViewExtension.swift rename to ios/DeveloperApp/Extension/RCTRootView+Extension.swift diff --git a/ios/DeveloperApp/Extension/RNSplashScreen+Extension.swift b/ios/DeveloperApp/Extension/RNSplashScreen+Extension.swift new file mode 100644 index 0000000..86b9d79 --- /dev/null +++ b/ios/DeveloperApp/Extension/RNSplashScreen+Extension.swift @@ -0,0 +1,28 @@ +import Foundation + +extension RNBootSplash { + static var loadingView: UIView? = nil + + static func showStoryBoard(_ storyboard: UIStoryboard, rootView: UIView) { + if (loadingView == nil) { + if let viewController = storyboard.instantiateInitialViewController() { + loadingView = viewController.view + loadingView!.frame = UIScreen.main.bounds + } + } + if let loadingView { + rootView.addSubview(loadingView) + } + } + + static func hideStoryBoard() { + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { + UIView.animate(withDuration: 0.3, delay: 0, options: .curveEaseIn, animations: { + loadingView?.alpha = 0.0 + }, completion: {_ in + loadingView?.removeFromSuperview() + loadingView?.alpha = 1.0 + }) + } + } +} diff --git a/ios/DeveloperApp/Extension/Storyboard+Extension.swift b/ios/DeveloperApp/Extension/Storyboard+Extension.swift new file mode 100644 index 0000000..bd723ae --- /dev/null +++ b/ios/DeveloperApp/Extension/Storyboard+Extension.swift @@ -0,0 +1,7 @@ +import UIKit + +extension UIStoryboard { + static let openApp: UIStoryboard = .init(name: "OpenApp", bundle: nil) + static let launchTutorial: UIStoryboard = .init(name: "LaunchTutorial", bundle: nil) + static let launchScreen: UIStoryboard = .init(name: "LaunchScreen", bundle: nil) +} diff --git a/ios/DeveloperApp/Helpers.swift b/ios/DeveloperApp/Helpers.swift index cdd383c..e92b121 100644 --- a/ios/DeveloperApp/Helpers.swift +++ b/ios/DeveloperApp/Helpers.swift @@ -1,4 +1,5 @@ import UIKit +import MendixNative func getWarningFilterValue() -> WarningsFilter { #if DEBUG diff --git a/ios/DeveloperApp/Home/HomeViewController.swift b/ios/DeveloperApp/Home/HomeViewController.swift index b832411..b7f4cdd 100644 --- a/ios/DeveloperApp/Home/HomeViewController.swift +++ b/ios/DeveloperApp/Home/HomeViewController.swift @@ -2,19 +2,18 @@ import UIKit import AVFoundation import StoreKit import SwiftUI +import MendixNative class HomeViewController: UIViewController { private var errorShown = false - private var clearCache: Bool = false private var developerMode: Bool = false private var uiState: HomeUIState = .idle { didSet { AppState.shared.uiState = uiState - if (oldValue != uiState) { - DispatchQueue.main.async { - self.updateUIState() + DispatchQueue.main.async {[weak self] in + self?.updateUIState() } } } @@ -27,14 +26,14 @@ class HomeViewController: UIViewController { case .loading: break case .error, .deprecatedRuntime, .updateAvailable, .runtimeNotRunning, .packagerNotRunning: - self.performSegue(withIdentifier: "ConnectionError", sender: nil) + performSegue(withIdentifier: "ConnectionError", sender: nil) break } } private func setUIState(state: HomeUIState) { - DispatchQueue.main.async { - self.uiState = state + DispatchQueue.main.async {[weak self] in + self?.uiState = state } } @@ -49,10 +48,10 @@ class HomeViewController: UIViewController { // Set up Swift UI screen. let homeUI = UIHostingController(rootView: HomeView( // Pass variables to Home Swift UI View. - launchOnTap: { - self.developerMode = AppState.shared.developerMode - self.clearCache = AppState.shared.clearCache - self.textFieldReturnAction(AppState.shared.url.lowercased()) + launchOnTap: { [weak self] in + guard let self else { return } + developerMode = AppState.shared.developerMode + textFieldReturnAction(AppState.shared.url.lowercased()) } )) @@ -76,46 +75,40 @@ class HomeViewController: UIViewController { } uiState = .loading - validateMendixUrl(urlText) { (running) in + validateMendixUrl(urlText) {[weak self] running in + + guard let self else { return } + guard running, AppUrl.isValid(urlText) else { - self.uiState = .runtimeNotRunning(url: urlText) + uiState = .runtimeNotRunning(url: urlText) return } - self.isSupportedMendixVersion(urlString: urlText) { - supported in + isSupportedMendixVersion(urlString: urlText) {[weak self] supported in + guard let self else { return } if (!supported) { return } - self.uiState = .idle - self.launchApp(urlText) + uiState = .idle + launchApp(urlText) } } } private func launchApp(_ url: String) { HistoryStore().saveHistoryItem(historyItem: HistoryItem(url:url)) - DispatchQueue.main.async { - AppPreferences.setAppUrl(url) - AppPreferences.remoteDebugging(false) - AppPreferences.devMode(self.developerMode) - self.performSegue(withIdentifier: "OpenMendixApp", sender: nil) + DispatchQueue.main.async {[weak self] in + guard let self else { return } + AppPreferences.appUrl = url + AppPreferences.remoteDebuggingEnabled = false + AppPreferences.devModeEnabled = developerMode + performSegue(withIdentifier: "OpenMendixApp", sender: nil) } } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.destination is MendixAppViewController { - let url = AppUrl.forBundle( - AppPreferences.getAppUrl(), - port: AppPreferences.getRemoteDebuggingPackagerPort(), - isDebuggingRemotely: AppPreferences.remoteDebuggingEnabled(), - isDevModeEnabled: AppPreferences.devModeEnabled()) - - let runtimeUrl: URL = AppUrl.forRuntime(AppPreferences.getAppUrl())! - - let mxApp = MendixApp(nil, bundleUrl: url!, runtimeUrl: runtimeUrl, warningsFilter: getWarningFilterValue(), isDeveloperApp: true, clearDataAtLaunch: self.clearCache, reactLoading: UIStoryboard(name: "LaunchScreen", bundle: nil)) - mxApp.splashScreenPresenter = SplashScreenPresenter() - ReactNative.instance.setup(mxApp, launchOptions: nil) + ReactNative.shared.setup(MendixAppEntryType.regular.mendixApp, launchOptions: nil) } else if segue.destination is ConnectionErrorViewController { let viewController = segue.destination as! ConnectionErrorViewController switch uiState { @@ -156,40 +149,38 @@ class HomeViewController: UIViewController { let sessionConfiguration = URLSessionConfiguration.ephemeral sessionConfiguration.timeoutIntervalForRequest = 3 - URLSession(configuration: sessionConfiguration).dataTask(with: AppUrl.forPackagerStatus(urlString, port: AppPreferences.getRemoteDebuggingPackagerPort())) { (_, __, error) in + URLSession(configuration: sessionConfiguration) + .dataTask(with: AppUrl.forPackagerStatus(urlString, port: AppPreferences.remoteDebuggingPackagerPort)!) { (_, __, error) in if (error != nil) { self.uiState = .packagerNotRunning(url: runtimeUrl.absoluteString) return cb(false) } - RuntimeInfoProvider.getRuntimeInfo(runtimeUrl) { (response) in - guard let runtimeInfoResponse = response else { - self.uiState = .runtimeNotRunning(url: urlString) - return cb(false) - } - - if (runtimeInfoResponse.status == "INACCESSIBLE") { - self.uiState = .runtimeNotRunning(url: urlString) + RuntimeInfoProvider.getRuntimeInfo(runtimeUrl) { [weak self] (response) in + + guard let self else { return } + + if (response.status == "INACCESSIBLE") { + uiState = .runtimeNotRunning(url: urlString) return cb(false) } - if (runtimeInfoResponse.status == "FAILED") { - self.uiState = .deprecatedRuntime + if (response.status == "FAILED") { + uiState = .deprecatedRuntime return cb(false) } - guard let runtimeInfo = runtimeInfoResponse.runtimeInfo, let supportedNativeBinaryVersion = Bundle.main.object(forInfoDictionaryKey: "Native Binary Version") as? Int else { - self.uiState = .deprecatedRuntime + guard let runtimeInfo = response.runtimeInfo, let supportedNativeBinaryVersion = Bundle.main.object(forInfoDictionaryKey: "Native Binary Version") as? Int else { + uiState = .deprecatedRuntime return cb(false) } - let nativeBinaryVersion = runtimeInfo.nativeBinaryVersion - if (nativeBinaryVersion == supportedNativeBinaryVersion) { + if (runtimeInfo.nativeBinaryVersion == supportedNativeBinaryVersion) { return cb(true) - } else if (nativeBinaryVersion > supportedNativeBinaryVersion) { - self.uiState = .updateAvailable + } else if (runtimeInfo.nativeBinaryVersion > supportedNativeBinaryVersion) { + uiState = .updateAvailable return cb(false) } else { - self.uiState = .deprecatedRuntime + uiState = .deprecatedRuntime return cb(false) } } @@ -227,8 +218,8 @@ class HomeViewController: UIViewController { } private func getRuntimeErrorModel(url:String)->ConnectErrorModel{ - let port = AppPreferences.getRemoteDebuggingPackagerPort() - let metroUrl = AppUrl.forPackagerStatus(url, port: port).absoluteString + let port = AppPreferences.remoteDebuggingPackagerPort + let metroUrl = AppUrl.forPackagerStatus(url, port: port)?.absoluteString ?? "" let runtimeUrl = AppUrl.forRuntime(url).absoluteString return ConnectErrorModel( @@ -253,8 +244,8 @@ class HomeViewController: UIViewController { } private func getMetroErrorModel(url:String)->ConnectErrorModel{ - let port = AppPreferences.getRemoteDebuggingPackagerPort() - let metroUrl = AppUrl.forPackagerStatus(url, port: port).absoluteString + let port = AppPreferences.remoteDebuggingPackagerPort + let metroUrl = AppUrl.forPackagerStatus(url, port: port)?.absoluteString ?? "" let runtimeUrl = AppUrl.forRuntime(url).absoluteString return ConnectErrorModel( @@ -270,7 +261,7 @@ class HomeViewController: UIViewController { secondaryBtnTitle: "Retry", secondaryBtnAction: { () in self.dismiss(animated: true, completion: nil) - self.textFieldReturnAction(AppUrl.forRuntime(url)!.absoluteString) + self.textFieldReturnAction(AppUrl.forRuntime(url).absoluteString) }, uiState: .packagerNotRunning(url: url), metroUrl: metroUrl, diff --git a/ios/DeveloperApp/MendixApp/MendixAppEntryType.swift b/ios/DeveloperApp/MendixApp/MendixAppEntryType.swift new file mode 100644 index 0000000..edbdfd2 --- /dev/null +++ b/ios/DeveloperApp/MendixApp/MendixAppEntryType.swift @@ -0,0 +1,128 @@ +import MendixNative + +enum MendixAppEntryType { + case deeplink + case regular + case sampleApp(SampleApp) + + var runtimeUrl: URL { + switch self { + case .deeplink, .regular: + return AppUrl.forRuntime(AppPreferences.safeAppUrl) + case .sampleApp (let sampleApp): + return AppUrl.forRuntime(sampleApp.runtimeUrl) + } + } + + var bundleUrl: URL { + switch self { + case .deeplink: + return AppUrl.forBundle( + AppPreferences.safeAppUrl, + port: AppPreferences.remoteDebuggingPackagerPort, + isDebuggingRemotely: AppPreferences.remoteDebuggingEnabled, + isDevModeEnabled: AppPreferences.devModeEnabled + ) + case .regular: + return AppUrl.forBundle( + AppPreferences.safeAppUrl, + port: AppPreferences.remoteDebuggingPackagerPort, + isDebuggingRemotely: AppPreferences.remoteDebuggingEnabled, + isDevModeEnabled: AppPreferences.devModeEnabled + ) + case .sampleApp (let sampleApp): + if let url = Bundle.main.url(forResource: "Bundles/\(sampleApp.id)/index", withExtension: "bundle") { + return url + } + return AppUrl.forBundle( + sampleApp.runtimeUrl, + port: AppPreferences.remoteDebuggingPackagerPort, + isDebuggingRemotely: false, + isDevModeEnabled: false + ) + } + } + + var isDeveloperApp: Bool { + switch self { + case .deeplink, .regular: + return true + case .sampleApp: + return false + } + } + + var splashScreenPresenter: SplashScreenPresenter? { + switch self { + case .deeplink, .sampleApp: + return nil + case .regular: + return SplashScreenPresenter() + } + } + + var enableThreeFingerGestures: Bool { + switch self { + case .deeplink, .regular: + return false + case .sampleApp: + return true + } + } + + var reactLoadingStoryboard: UIStoryboard { + return .launchScreen + } + + var identifier: String? { + switch self { + case .deeplink, .regular: + return nil + case .sampleApp (let sampleApp): + return sampleApp.id + } + } + + var warningsFilter: WarningsFilter { + switch self { + case .deeplink, .regular: + return getWarningFilterValue() + case .sampleApp: + return .none + } + } + + var clearDataAtLaunch: Bool { + switch self { + case .regular: + return AppState.shared.clearCache + case .deeplink: + return false + case .sampleApp: + return true + } + } + + var mendixApp: MendixApp { + var entry: MendixAppEntryType + switch self { + case .deeplink: + entry = .deeplink + case .regular: + entry = .regular + case .sampleApp (let sampleApp): + entry = .sampleApp(sampleApp) + } + return MendixApp( + identifier: entry.identifier, + bundleUrl: entry.bundleUrl, + runtimeUrl: entry.runtimeUrl, + warningsFilter: entry.warningsFilter, + isDeveloperApp: entry.isDeveloperApp, + clearDataAtLaunch: entry.clearDataAtLaunch, + splashScreenPresenter: entry.splashScreenPresenter, + reactLoading: entry.reactLoadingStoryboard, + enableThreeFingerGestures: entry.enableThreeFingerGestures + ) + } +} diff --git a/ios/DeveloperApp/MendixApp/MendixAppViewController.swift b/ios/DeveloperApp/MendixApp/MendixAppViewController.swift index 6213cd2..51ec04f 100644 --- a/ios/DeveloperApp/MendixApp/MendixAppViewController.swift +++ b/ios/DeveloperApp/MendixApp/MendixAppViewController.swift @@ -1,8 +1,10 @@ import UIKit +import MendixNative +import React_RCTAppDelegate class MendixAppViewController: UIViewController, ReactNativeDelegate { override func becomeFirstResponder() -> Bool { - return true; + return true } override func viewDidLoad() { @@ -10,18 +12,14 @@ class MendixAppViewController: UIViewController, ReactNativeDelegate { // Set all orientations available while launching the mendix app. AppDelegate.orientationLock = .all - - let appDelegate = (UIApplication.shared.delegate as! AppDelegate) - appDelegate.window?.overrideUserInterfaceStyle = .unspecified - - - ReactNative.instance.delegate = self - ReactNative.instance.start() + AppDelegate.delegateInstance()?.window.overrideUserInterfaceStyle = .unspecified + ReactNative.shared.delegate = self + ReactNative.shared.start() } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) - becomeFirstResponder() + _ = becomeFirstResponder() if #available(iOS 13.0, *) { UIApplication.shared.statusBarStyle = .darkContent @@ -34,17 +32,13 @@ class MendixAppViewController: UIViewController, ReactNativeDelegate { super.viewDidDisappear(animated) // Set orientation to only portrait mode, while exiting the mendix app. AppDelegate.orientationLock = .portrait - - // Force Light Mode - let appDelegate = (UIApplication.shared.delegate as! AppDelegate) - appDelegate.window?.overrideUserInterfaceStyle = .light + AppDelegate.delegateInstance()?.window.overrideUserInterfaceStyle = .light } func onAppClosed() { - let appDelegate = UIApplication.shared.delegate as! AppDelegate - if (appDelegate.previewingSampleApp == true) { + if let appDelegate = AppDelegate.delegateInstance(), appDelegate.previewingSampleApp == true { appDelegate.previewingSampleApp = false - ReactNative.instance.clearData() + StorageHelper.clearAll() } self.navigationController?.popViewController(animated: true) } diff --git a/ios/DeveloperApp/OpenApp/TabViewController.swift b/ios/DeveloperApp/OpenApp/TabViewController.swift index f4306c1..fccc997 100644 --- a/ios/DeveloperApp/OpenApp/TabViewController.swift +++ b/ios/DeveloperApp/OpenApp/TabViewController.swift @@ -16,16 +16,10 @@ class TabViewController: UITabBarController { } func setSelectedIndex(index:Int){ - let appDelegate = UIApplication.shared.delegate as? AppDelegate - if appDelegate == nil { + guard let appDelegate = UIApplication.shared.delegate as? AppDelegate, + let tabBarController = appDelegate.window.rootViewController as? UITabBarController else { return } - let tabBarController = appDelegate!.window?.rootViewController as? UITabBarController - - if tabBarController == nil { - return - } - - tabBarController!.selectedIndex = index + tabBarController.selectedIndex = index } } diff --git a/ios/DeveloperApp/RNSplashScreenExtensions.swift b/ios/DeveloperApp/RNSplashScreenExtensions.swift deleted file mode 100644 index 5f1b00c..0000000 --- a/ios/DeveloperApp/RNSplashScreenExtensions.swift +++ /dev/null @@ -1,26 +0,0 @@ -import Foundation - -extension RNBootSplash { - static var loadingView: UIView? = nil; - - static func showStoryBoard(_ name: String, rootView: UIView) { - if (loadingView == nil) { - let board = UIStoryboard.init(name: name, bundle: Bundle.main); - let viewController = board.instantiateInitialViewController(); - loadingView = viewController!.view; - loadingView!.frame = UIScreen.main.bounds; - } - rootView.addSubview(loadingView!); - } - - static func hideStoryBoard() { - DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { - UIView.animate(withDuration: 0.3, delay: 0, options: .curveEaseIn, animations: { - loadingView?.alpha = 0.0; - }, completion: {_ in - loadingView?.removeFromSuperview(); - loadingView?.alpha = 1.0; - }); - }; - } -} diff --git a/ios/DeveloperApp/SampleApps/SampleAppCollectionViewController.swift b/ios/DeveloperApp/SampleApps/SampleAppCollectionViewController.swift index 4960d3a..2fc877f 100644 --- a/ios/DeveloperApp/SampleApps/SampleAppCollectionViewController.swift +++ b/ios/DeveloperApp/SampleApps/SampleAppCollectionViewController.swift @@ -1,5 +1,6 @@ import UIKit import SwiftUI +import MendixNative class SampleAppCollectionViewController: UIViewController { private let config = SampleAppsConfig() @@ -52,12 +53,8 @@ class SampleAppCollectionViewController: UIViewController { override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.destination is MendixAppViewController { let sampleApp = sampleApps[currentSelectedSampleAppIndex] - - AppPreferences.devMode(false) - let runtimeUrl = AppUrl.forRuntime(sampleApp.runtimeUrl)! - let bundleUrl = Bundle.main.url(forResource: "Bundles/\(sampleApp.id)/index", withExtension: "bundle") ?? AppUrl.forBundle(sampleApp.runtimeUrl, port: AppPreferences.getRemoteDebuggingPackagerPort(), isDebuggingRemotely: false, isDevModeEnabled: false) - - ReactNative.instance.setup(MendixApp(sampleApp.id, bundleUrl: bundleUrl!, runtimeUrl: runtimeUrl, warningsFilter: WarningsFilter.none, isDeveloperApp: false, clearDataAtLaunch: true, reactLoading: UIStoryboard(name: "LaunchScreen", bundle: nil), enableThreeFingerGestures: true), launchOptions: nil) + AppPreferences.devModeEnabled = false + ReactNative.shared.setup(MendixAppEntryType.sampleApp(sampleApp).mendixApp, launchOptions: nil) } } diff --git a/ios/DeveloperApp/SplashScreenPresenter.swift b/ios/DeveloperApp/SplashScreenPresenter.swift index 9e6683a..d8dd494 100644 --- a/ios/DeveloperApp/SplashScreenPresenter.swift +++ b/ios/DeveloperApp/SplashScreenPresenter.swift @@ -1,9 +1,10 @@ import Foundation +import MendixNative class SplashScreenPresenter: SplashScreenPresenterProtocol { func show(_ rootView: UIView?) { - if (rootView != nil) { - RNBootSplash.showStoryBoard("LaunchScreen", rootView: rootView!) + if let rootView { + RNBootSplash.showStoryBoard(.launchScreen, rootView: rootView) } } diff --git a/ios/DeveloperApp/Tutorial/LaunchTutorialViewController.swift b/ios/DeveloperApp/Tutorial/LaunchTutorialViewController.swift index d4d1aab..ed243de 100644 --- a/ios/DeveloperApp/Tutorial/LaunchTutorialViewController.swift +++ b/ios/DeveloperApp/Tutorial/LaunchTutorialViewController.swift @@ -22,8 +22,7 @@ class LaunchTutorialViewController: UIViewController { } private func closeOnboarding() { - let appDelegate = UIApplication.shared.delegate as? AppDelegate - appDelegate?.changeRootViewToOpenApp() + AppDelegate.delegateInstance()?.changeRootViewToOpenApp() } private func setupSwiftUIScreen(){ diff --git a/ios/Podfile b/ios/Podfile index 8c1c8a5..f05a32a 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -9,8 +9,7 @@ def node_require(script) )", __dir__]).strip end -# Explicitly disable new architecture until all dependencies are updated -ENV['RCT_NEW_ARCH_ENABLED'] = '0' +ENV['RCT_NEW_ARCH_ENABLED'] = '1' # Use it to require both react-native's and this package's scripts: node_require('react-native/scripts/react_native_pods.rb') @@ -36,11 +35,13 @@ if linkage != nil use_frameworks! :linkage => linkage.to_sym end -abstract_target "Mendix" do +target 'DeveloperApp' do config = use_native_modules! use_react_native!( :path => config[:reactNativePath], + :hermes_enabled => true, + :fabric_enabled => true, :app_path => "#{Pod::Config.instance.installation_root}/.." ) pod 'react-native-ble-plx', :path => '../node_modules/react-native-ble-plx' @@ -53,55 +54,19 @@ abstract_target "Mendix" do pod 'GoogleUtilities', :modular_headers => true pod 'IQKeyboardManager' - pod 'React-logger', :path => '../node_modules/react-native/ReactCommon/logger' pod 'SSZipArchive' - - target 'DeveloperApp' do - # Comment the next line if you're not using Swift and don't want to use dynamic frameworks - # use_frameworks! - - # Pods for DeveloperApp - pod 'QRCodeReader.swift', '~> 10.1.0' - end + pod 'RNCAsyncStorage', :path=> "../node_modules/@react-native-async-storage/async-storage", :modular_headers => true + pod 'QRCodeReader.swift', '~> 10.1.0' post_install do |installer| react_native_post_install( installer, config[:reactNativePath], - :mac_catalyst_enabled => false, - # :ccache_enabled => true + :mac_catalyst_enabled => false ) - - installer.pods_project.build_configurations.each do |config| - config.build_settings['ENABLE_BITCODE'] = 'NO' - config.build_settings['OTHER_LDFLAGS'] ||= ['$(inherited)'] - if config.name == "Debug" - config.build_settings['DEAD_CODE_STRIPPING'] = 'YES' - end - end - - installer.pods_project.targets.each do |target| - if target.name == 'Flipper' - file_path = 'Pods/Flipper/xplat/Flipper/FlipperTransportTypes.h' - contents = File.read(file_path) - unless contents.include?('#include ') - File.open(file_path, 'w') do |file| - file.puts('#include ') - file.puts(contents) - end - end - end - end - - # Enable React Native dev flags for all targets + installer.pods_project.targets.each do |target| target.build_configurations.each do |config| - config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)', '_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION'] - config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO' - if target.name.start_with?("React") || target.name == "RCTTypeSafety" - config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)', "COCOAPODS=1", "RCT_DEV=1"] - end - # Specify 'Swift Version: 5.0' for resolving archieve errors. if target.name == 'react-native-video' config.build_settings['SWIFT_VERSION'] = '5.0' diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 1631727..7460229 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -177,6 +177,32 @@ PODS: - libwebp/sharpyuv (1.5.0) - libwebp/webp (1.5.0): - libwebp/sharpyuv + - MendixNative (0.0.1): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTAppDelegate + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactAppDependencyProvider + - ReactCodegen + - ReactCommon + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - RNCAsyncStorage + - SSZipArchive + - Yoga - MultiplatformBleAdapter (0.1.9) - nanopb (2.30909.1): - nanopb/decode (= 2.30909.1) @@ -184,10 +210,29 @@ PODS: - nanopb/decode (2.30909.1) - nanopb/encode (2.30909.1) - op-sqlite (12.0.2): + - DoubleConversion + - glog + - hermes-engine - OpenSSL-Universal + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety - React - React-callinvoker - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - OpenSSL-Universal (3.3.3001) - PromisesObjC (2.4.0) - QRCodeReader.swift (10.1.0) @@ -1397,7 +1442,26 @@ PODS: - MultiplatformBleAdapter (= 0.1.9) - React-Core - react-native-blob-util (0.21.2): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - react-native-cameraroll (7.4.0): - DoubleConversion - glog @@ -1493,6 +1557,28 @@ PODS: - react-native-netinfo (11.4.1): - React-Core - react-native-pager-view (6.4.1): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - react-native-pager-view/common (= 6.4.1) + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - react-native-pager-view/common (6.4.1): - DoubleConversion - glog - hermes-engine @@ -1514,7 +1600,71 @@ PODS: - ReactCommon/turbomodule/core - Yoga - react-native-safe-area-context (5.2.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - react-native-safe-area-context/common (= 5.2.0) + - react-native-safe-area-context/fabric (= 5.2.0) + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - react-native-safe-area-context/common (5.2.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - react-native-safe-area-context/fabric (5.2.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - react-native-safe-area-context/common + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - react-native-video (6.10.0): - DoubleConversion - glog @@ -1537,6 +1687,27 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga + - react-native-video/Fabric (6.10.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - react-native-video/Video (6.10.0): - DoubleConversion - glog @@ -1550,6 +1721,7 @@ PODS: - React-featureflags - React-graphics - React-ImageManager + - react-native-video/Fabric - React-NativeModulesApple - React-RCTFabric - React-rendererdebug @@ -1911,15 +2083,91 @@ PODS: - ReactCommon/turbomodule/core - Yoga - RNBootSplash (6.3.10): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - RNCalendarEvents (2.1.0): - React - RNCAsyncStorage (2.0.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - RNCPicker (2.11.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - RNDateTimePicker (8.2.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - RNDeviceInfo (14.0.4): - React-Core - RNFastImage (8.6.3): @@ -1970,14 +2218,52 @@ PODS: - RNInAppBrowser (3.6.3): - React-Core - RNLocalize (3.2.1): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - RNNotifee (9.1.8): - React-Core - RNNotifee/NotifeeCore (= 9.1.8) - RNNotifee/NotifeeCore (9.1.8): - React-Core - RNPermissions (5.4.2): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - RNReanimated (3.16.7): - DoubleConversion - glog @@ -2066,6 +2352,29 @@ PODS: - ReactCommon/turbomodule/core - Yoga - RNScreens (4.6.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-RCTImage + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - RNScreens/common (= 4.6.0) + - Yoga + - RNScreens/common (4.6.0): - DoubleConversion - glog - hermes-engine @@ -2093,9 +2402,69 @@ PODS: - RNSound/Core (0.11.0): - React - RNSVG (15.11.1): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - RNSVG/common (= 15.11.1) + - Yoga + - RNSVG/common (15.11.1): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - RNSwanBrowser (0.4.1): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - RNVectorIcons (10.2.0): - DoubleConversion - glog @@ -2148,6 +2517,7 @@ DEPENDENCIES: - GoogleUtilities - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) - IQKeyboardManager + - MendixNative (from `../node_modules/mendix-native`) - "op-sqlite (from `../node_modules/@op-engineering/op-sqlite`)" - QRCodeReader.swift (~> 10.1.0) - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) @@ -2298,6 +2668,8 @@ EXTERNAL SOURCES: hermes-engine: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" :tag: hermes-2024-11-25-RNv0.77.0-d4f25d534ab744866448b36ca3bf3d97c08e638c + MendixNative: + :path: "../node_modules/mendix-native" op-sqlite: :path: "../node_modules/@op-engineering/op-sqlite" RCT-Folly: @@ -2501,7 +2873,7 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90 - BVLinearGradient: 880f91a7854faff2df62518f0281afb1c60d49a3 + BVLinearGradient: cb006ba232a1f3e4f341bb62c42d1098c284da70 DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb fast_float: 06eeec4fe712a76acc9376682e4808b05ce978b6 FBLazyVector: 23d8c5470c648a635893dc0956c6dbaead54b656 @@ -2523,116 +2895,117 @@ SPEC CHECKSUMS: hermes-engine: b2187dbe13edb0db8fcb2a93a69c1987a30d98a4 IQKeyboardManager: c8665b3396bd0b79402b4c573eac345a31c7d485 libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8 + MendixNative: d76c461cfe93066190b9f1c21d01a4960e1f7ce2 MultiplatformBleAdapter: 5a6a897b006764392f9cef785e4360f54fb9477d nanopb: d4d75c12cd1316f4a64e3c6963f879ecd4b5e0d5 - op-sqlite: 7c3a6a7f84f0969b96266dbd143a3793bc2bc9cf + op-sqlite: f364fb409143a1194b76909630c050c6e91245e9 OpenSSL-Universal: 6082b0bf950e5636fe0d78def171184e2b3899c2 PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 QRCodeReader.swift: 373a389fe9a22d513c879a32a6f647c58f4ef572 - RCT-Folly: 36fe2295e44b10d831836cc0d1daec5f8abcf809 + RCT-Folly: e78785aa9ba2ed998ea4151e314036f6c49e6d82 RCTDeprecation: 6ee92578d332db1d4e03267d3ae98bcf8b780863 RCTRequired: 5b3da0e0f91fddda935574b81748c3e3d3649ee7 RCTTypeSafety: 870cb072be3d3f310ecec897c3d297a931f8f7e1 React: 535fa5014fb1743f6654a980acb16dae339e1944 React-callinvoker: dd1ecd51f8d3c76a551afdf6dab6d51c1ead5501 - React-Core: cd2530a1bcf14af3e34cd7561ee36916079a8e7f - React-CoreModules: d4fec6cceab80b9e22b5a45036ee431b5a69b102 - React-cxxreact: 3d3010b4ccd33458ab12bfbbc1b05402e17e4a98 + React-Core: a3e36c059a195bd213d005db36c9e68957b78632 + React-CoreModules: 46467a2b34b053eb7262104e07bf5d835a9afe77 + React-cxxreact: 500e7b011a14eeefdcf6c0eb982fe4db055c2670 React-debug: 41315631a01cf5cc3c9498482b97be21c49f8e8d - React-defaultsnativemodule: dcb237a582ed8d46e74e4c38c90f8e29895a0812 - React-domnativemodule: 4cc53a9f19dae2514b56357c8a148601b5376c13 - React-Fabric: 2203020455994c14a6b0eed5fe206ba11c51d28b - React-FabricComponents: d1e35a9d7660cb57ec31ae7730cf30fabb07039a - React-FabricImage: 34de81a326d87d9a3a0d54c285dc518a9e896ce1 + React-defaultsnativemodule: a06364257949e77dc39bcfd08e2d801c189bb58c + React-domnativemodule: dcda8a2b62bb34ed5db94470a3a72f32a76e1e31 + React-Fabric: dc1d3aa4b6a92e4a703c02ca6c4add312754eb84 + React-FabricComponents: 451f7b72aa80001520a20747b7b1e21350d6fba8 + React-FabricImage: 15c3bfe577a60c492134519219627316fb48af05 React-featureflags: 08f06c820a37b29ed3ef9dddc6763c086339bc28 - React-featureflagsnativemodule: e4c016c273fccd39e5c0425dbf552ae3ba6f557c - React-graphics: 34008ef25e81687b5b89d6fe1ebc167c3414fd8b - React-hermes: 997737a07bc954d032ba808a85d367c1e4eee2d9 - React-idlecallbacksnativemodule: ad58b5d392ca3257511ea81c496d068face8bcee - React-ImageManager: a9e52d60226e1994b432bf7cc9d58b36a935eeb6 - React-jserrorhandler: 1e06734dfb99a87b1d9db3954e2fb680e1483a77 - React-jsi: a7f1b8eb4319e2fc664e1761ce04ab0ad4a51e2a - React-jsiexecutor: 58d404bda9a46fa8822d556942c04b3020e214c7 - React-jsinspector: 75717c9002cb6b590692ebb237ad1fce5f600aba - React-jsitracing: 62b9f496758ea6aff6fb7021b4b8e05da7e460c5 - React-logger: 094beeb633228cb5d7a1b7235e21c77f901eb1a6 - React-Mapbuffer: ac43f5b92893ee6cba15a712b211191f9dfbf089 - React-microtasksnativemodule: c32cbd3d9c334a51311ab9d717e2c72c7032a256 - react-native-ble-plx: f10240444452dfb2d2a13a0e4f58d7783e92d76e - react-native-blob-util: 64a732c0b8bb7f4928905e16ea8dc5cde6fb4832 - react-native-cameraroll: fa835a59246b90ad2fa33c5e008fc25752ba7b80 - react-native-file-viewer-turbo: bd89c9a88d2c194563d2c6c071c3e7eff4ac2273 - react-native-geocoder: 757427682892bb256f3b3745858cc90eba148a8e - react-native-geolocation: 8559551683956a104cd6953a51f53edcef7a998f - react-native-google-maps: 94df984b1647973baffe17c0b7b52828d6b69d94 - react-native-image-picker: f104798044ef2c9211c42a48025d0693b5f34981 - react-native-maps: cbf2f03bfeebfd7ec45966b066db13a075fd2af3 - react-native-netinfo: f0a9899081c185db1de5bb2fdc1c88c202a059ac - react-native-pager-view: c3b8efd9000368320e3710c01f38a83bd2170779 - react-native-safe-area-context: 849d7df29ecb2a7155c769c0b76849ba952c2aa3 - react-native-video: fcf88c7e93d7736a529f97f70ce92269684596ec - react-native-view-shot: 9aea6ab99c8d81590d6b630d62a418ced77d1ed7 - react-native-webview: 326a2163c7117fd5b21e48c857b2946f0a7af598 + React-featureflagsnativemodule: 3f6b19ac469a5d26e3a52e5198735c1799f1e324 + React-graphics: df8448a604e8fd03325e0f3d760b13e57416871c + React-hermes: 67f3ee00fdbe085e722fd89811073678ba28c10a + React-idlecallbacksnativemodule: 26de008466429c4a6feb772cde37d3eda5c1e045 + React-ImageManager: 52a8c48c4c7c5a8124e8c363693bd2908b01c5f6 + React-jserrorhandler: faa483d54dd358b11e81adcd5e6373da6030ed70 + React-jsi: d5332d79759159a0127348d9b20cc90527dd40e8 + React-jsiexecutor: 72c8df1af2c18736f6685cce4205c480f3783039 + React-jsinspector: e444c5725dbb31aa7ce556d972511f8997b38bc5 + React-jsitracing: 955646960c72c03e6e87df8706cab6bcdf960042 + React-logger: a23563f96a622637d7cce687bdf304929104effd + React-Mapbuffer: 1864935968d15b9b73d8e413d29c780f0ab50038 + React-microtasksnativemodule: 3b784cf40f7c3c9500b9a5f9e4eec5c9bbfbef8f + react-native-ble-plx: 2dd8780ee8d34c60399aaa897249ed1860ebef10 + react-native-blob-util: f82bbc6f071231ae76e1c03b77290de1781df313 + react-native-cameraroll: 4cc4ad5c832894a7729978900b3b3a75f6ed756c + react-native-file-viewer-turbo: 6f1d6e33cebe8916c2919c0e7c5b41c9309646f0 + react-native-geocoder: bc977303c9c53cce36bcdb3c6f17e6832f86beb6 + react-native-geolocation: 66ddfd59066bb9365d0899967adc0a2cf2d0e6b2 + react-native-google-maps: 992905591a0a9315b8e74faecadd72f039e41dda + react-native-image-picker: ede3b0b991aae11b3c1d61c187a833720e255277 + react-native-maps: deb2adbdf309b622f15055b72b8742054929c740 + react-native-netinfo: cec9c4e86083cb5b6aba0e0711f563e2fbbff187 + react-native-pager-view: 932eb80f9448b463b63badae42dd20c11f3e37dd + react-native-safe-area-context: 7e513d737b0b5c1d10bbe0e5fcc9f925a7be144c + react-native-video: 7122a2b9397bf722709321eac0630e8f59a404e7 + react-native-view-shot: a38d952d5c7103b79a67c8aa82da95f98be6e5c2 + react-native-webview: 449c3f27cdb926086a5eff7993421fd096cc5ae3 React-nativeconfig: f77b4627803bf7886a1f2e96b33b8af34e583cc4 - React-NativeModulesApple: 6bfb56c8a05c9181727a4375c6fce152171c038d - React-perflogger: 6820403fcb3daf843cb89772f2ba7b25cf7d5797 - React-performancetimeline: 7bcddde49ca791c27191250c4827ad1e94004b24 + React-NativeModulesApple: dfa86c79c621f2a9cdb39636570c2e1623b71367 + React-perflogger: 1f83401f01544142b32151ef6c66870455c64994 + React-performancetimeline: 514430bf73208debfb0b9981fdab0e3e67987447 React-RCTActionSheet: f8f5545f473a87a8ab124046fe58905b82c55322 - React-RCTAnimation: d00f43f3fb0be43b737eea902da35b60259ac581 - React-RCTAppDelegate: 950e65c2350e62fb5455d02e30e8656b90986963 - React-RCTBlob: 29fd1faf27ceb029229dea40214cac6f11f80160 - React-RCTFabric: b9202e58f1db84cf43091ed9fb753cf38441a0a5 - React-RCTFBReactNativeSpec: 623d837b7ba7f02c5ad5282b8de3b69ff5a3e96d - React-RCTImage: 29536152820fe9e8f6faeca4456593cbf8deef3f - React-RCTLinking: 95526e0b3561c5aa92f5cb6fb0260632aacae8b6 - React-RCTNetwork: b4d4f4e0df5ae22befbdc9803f2729586be15155 - React-RCTSettings: db763df8a5177dd99f0848abdefed604e423ee82 - React-RCTText: c9925bc59a549645fc34265631626701f208b31a - React-RCTVibration: 95fee529d0734f88d889fdb0926d8fdd2f14deb8 + React-RCTAnimation: bb5332589ee135a4b3e06f9475659ae73a36f669 + React-RCTAppDelegate: 56493d143af24c5d728880adcf7849b3deb864e4 + React-RCTBlob: 9305f10874660b7d7bd02f6567e1b97c29b5cc43 + React-RCTFabric: c116c07d3d57e7bd03d64e445f43b33cd57a1b51 + React-RCTFBReactNativeSpec: 87fc0066242c08a7b7d03297d5ea803ac0df6575 + React-RCTImage: f099c09decb34b6849518e85aa8cd6318381ed98 + React-RCTLinking: ab70f4b60e21b0abb8c2adc58ae0460cffecdd8f + React-RCTNetwork: ba84704fa893dcc090d5028b932ed049332b9e6f + React-RCTSettings: bad043f6652f2641fccf9654c3f789e970ca63c8 + React-RCTText: bed66ec05d4dedfc48d6db8d3cf60e714b2d010d + React-RCTVibration: 22179961d1aadd7996355785c490c134037de1d9 React-rendererconsistency: 9f5292176e629370402cbfe4e88c19b3c68e79a3 - React-rendererdebug: 16789da121f8bdc939d51cdc6462a34707e6af42 + React-rendererdebug: 1d63129046b7a8624f0a5d2cb4cc4a1dda41eeaf React-rncore: 8a77fbb638aab2ef0a3e4e122ddc5310a8299699 - React-RuntimeApple: 6e622ffd3f434847f97fb39215130962f84e184c - React-RuntimeCore: 30fa3ab46a71c71220605b67e22e3930be1e69b7 + React-RuntimeApple: cf68b82dc184c7f8855aa6bae298b4b24880d549 + React-RuntimeCore: 98ab2e46540d3560712334257b01d6305c0cb422 React-runtimeexecutor: 2dc71d251ce5630b11d384bc80d7fbb9d9d93623 - React-RuntimeHermes: bc562eeae932000894a072e9ab3ff5b24d04a87b - React-runtimescheduler: 1fc66730e3502512adb9ac24831938285a36f310 + React-RuntimeHermes: 7cc49896e48214abee8f2a9bf91e7a91606ff018 + React-runtimescheduler: a51c3e414e288f3ab876b8b6e50e89c805ffd704 React-timing: 7d80ad4297c57ec4cb49da4a5db1b82f93fedb2a - React-utils: 1dfda6bd64373a4bd19efa4d48ac0756a2bc8dff - ReactAppDependencyProvider: 9b3704075c2fe8fd7c739779655fb88700a1ca30 - ReactCodegen: c9645fb81bcaf5afebaebb25874bcd5224cd40f1 - ReactCommon: 271491c2343c91609d3dc18bb4b4ebe67160de03 - ReactNativeBiometrics: 004ed272552611841af17cf348846404028df91f - RNBootSplash: 2c6b226e3ad3c97d16b6d53bd75d0cd281646bfb - RNCalendarEvents: 3a79bc6e476b55920aa706c211a15a1d2c53ec17 - RNCAsyncStorage: d35c79ffba52c1013013e16b1fc295aec2feabb6 - RNCPicker: 4f6d5e8d107064be32dfc8f1bcb5a3741135db0b - RNDateTimePicker: 40ffda97d071a98a10fdca4fa97e3977102ccd14 - RNDeviceInfo: feea80a690d2bde1fe51461cf548039258bd03f2 - RNFastImage: 5c9c9fed9c076e521b3f509fe79e790418a544e8 - RNFBAnalytics: ed2ef775a5ce391ce3043b913129b07a78b64b0c - RNFBApp: 13ca8ba0feba98d4bac2057884894dcf8eedf97f - RNFBCrashlytics: aa21597d06a4c7dbaa8258b9e253c4f2818affa8 - RNFBMessaging: 0bdc8269fefad36f6820d6fc89b0bcae3f705891 - RNFBML: 8cccd332f13f2d0d74312d37867605fd144324b2 - RNGestureHandler: de78ee811b577ae76d679715e5e9298b23a8c278 - RNInAppBrowser: 3ff3a3b8f458aaf25aaee879d057352862edf357 - RNLocalize: 4f22418187ecd5ca693231093ff1d912d1b3c9bc - RNNotifee: 4a6ee5c7deaf00e005050052d73ee6315dff7ec9 - RNPermissions: 6e63e35bc999984014fa6d610c2e9b311c28c1ff - RNReanimated: 10df3198b328f8a0677fdaaa2b449db53cdbff40 - RNScreens: e9bb7c3063237983e75d01bb45ce591cc4e7afc2 - RNSound: da030221e6ac7e8290c6b43f2b5f2133a8e225b0 - RNSVG: 515a902fc18a375907eb4c3abec0b803fbfa37ef - RNSwanBrowser: af8718931e79c8077be3cf021d1bc270ae666503 - RNVectorIcons: 85ed086927e7548461d593e68b190c38a6606a05 + React-utils: 6b632afea2c4ec4b782497fb61af859a5b1b355f + ReactAppDependencyProvider: 31015410a4a53b9fd0a908ad4d6e3e2b9a25086a + ReactCodegen: eac5d74d85dff515b48a5c36f154bc4128f217e6 + ReactCommon: bf4612cba0fa356b529385029f470d5529dddde4 + ReactNativeBiometrics: 3a9a0c23f1a5158980de2474c1cfda6b19085dca + RNBootSplash: 6a83473bb3c1e6c2bfd36a51e5c6e1d343ec76b9 + RNCalendarEvents: 1a67c97e7427cf16fbf60adbb4c11c0d62082eaa + RNCAsyncStorage: 50a24d7ae3bcba70a39f600366dbb23ca9ccf81c + RNCPicker: cfb51a08c6e10357d9a65832e791825b0747b483 + RNDateTimePicker: b49449a7da91211c6fcc60acd346a0ddf0d25256 + RNDeviceInfo: d863506092aef7e7af3a1c350c913d867d795047 + RNFastImage: 462a183c4b0b6b26fdfd639e1ed6ba37536c3b87 + RNFBAnalytics: abb444ddc588edafef8dfa5c367e30b2022b1b80 + RNFBApp: 0ea118fdf9e66ce5a925f35f8005e9e397fc669e + RNFBCrashlytics: 83fd3d33655ff926e3a57008ec94815ba8c2bc94 + RNFBMessaging: 8047aaea4d0e56547715085c6d2bedee31bdcd9b + RNFBML: df509c560094cdf6fa5b8d17fde64ad504f305e9 + RNGestureHandler: 63273d6c9936df3da2461766615eade82284adac + RNInAppBrowser: 031138591f9cbf57e987d0fe97f4e73d5fc7524b + RNLocalize: 22c9512d077379783fb41a4b47761ebe7cf87265 + RNNotifee: 5e3b271e8ea7456a36eec994085543c9adca9168 + RNPermissions: 11dc7a417a841bc1312f6e2599871565c5bbb882 + RNReanimated: 8a4ea733f88a33379150eb2e73b375e14de81e84 + RNScreens: 5a1573ceb1a13b2d0663cbfb42cb4aa8803554eb + RNSound: 436aa4de81ae87b90e1781b5dd9247df3aa4622a + RNSVG: 2089e8b3a145acb2f392017279790f007f934567 + RNSwanBrowser: ddd9ff014527de377553241bb87ff2c6da6e8fa4 + RNVectorIcons: bd818296a51dc2bb8c3bd97a3ca399df1afe216d SDWebImage: a7f831e1a65eb5e285e3fb046a23fcfbf08e696d SDWebImageWebPCoder: 908b83b6adda48effe7667cd2b7f78c897e5111d SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 SSZipArchive: 8a6ee5677c8e304bebc109e39cf0da91ccef22ea - VisionCamera: 0ecfede218b2d989be3d504270b71f3d2384d95d - Yoga: 7d51419602153919f32aec72812e324d495ee49d + VisionCamera: 9a8f98ae344fe5d148f84bb45829f9e4caab9d2f + Yoga: 92f3bb322c40a86b7233b815854730442e01b8c4 -PODFILE CHECKSUM: 3fd89560df4a27778cde6447232a917ae0a204d0 +PODFILE CHECKSUM: 0a9fdf6312ec958c335fa884e2813ae0500f285a COCOAPODS: 1.16.2 diff --git a/ios/developerapp.xcodeproj/project.pbxproj b/ios/developerapp.xcodeproj/project.pbxproj index b0793ef..9473f34 100644 --- a/ios/developerapp.xcodeproj/project.pbxproj +++ b/ios/developerapp.xcodeproj/project.pbxproj @@ -8,7 +8,6 @@ /* Begin PBXBuildFile section */ 04222F8220403EC30092F0A0 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04222F8120403EC30092F0A0 /* AppDelegate.swift */; }; - 04222FB22040470B0092F0A0 /* MendixReactWindowExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04222FB12040470B0092F0A0 /* MendixReactWindowExtensions.swift */; }; 0433D0C820878BA6001EDC7B /* PaddingTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0433D0C720878BA6001EDC7B /* PaddingTextField.swift */; }; 046CD08F20406110007291F9 /* OpenAppViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 046CD08E20406110007291F9 /* OpenAppViewController.swift */; }; 047B674A22B1080200FF5FC3 /* Bundles in Resources */ = {isa = PBXBuildFile; fileRef = 047B674922B1080200FF5FC3 /* Bundles */; }; @@ -31,10 +30,8 @@ 2C887F5C24B78D640003DC53 /* SplashScreenPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C887F5B24B78D640003DC53 /* SplashScreenPresenter.swift */; }; 2CCCE91925A367F80087AD16 /* Colors.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2CCCE91825A367F80087AD16 /* Colors.xcassets */; }; 2CF2021525C30BCA00395332 /* LocalNetworkPermissionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CF2021425C30BCA00395332 /* LocalNetworkPermissionService.swift */; }; - 6D631AFF82EFB03018D699AD /* libPods-Mendix-DeveloperApp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0265C1A0BC85D1CEF83C96D0 /* libPods-Mendix-DeveloperApp.a */; }; 6E0DD47E2A4354E900A21A54 /* HistoryManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E0DD47D2A4354E900A21A54 /* HistoryManager.swift */; }; 6E1EA91C2A4AD72B00C430A4 /* LaunchScreenViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1EA91B2A4AD72B00C430A4 /* LaunchScreenViewController.swift */; }; - 6E21481C2B90B6F000430472 /* mendixnative.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E21481B2B90B6F000430472 /* mendixnative.xcframework */; }; 6E5FE7CE2A43017300B53D51 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5FE7CD2A43017300B53D51 /* HomeView.swift */; }; 6E6C9B402A406C99002F788D /* HelpListTile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9B3F2A406C99002F788D /* HelpListTile.swift */; }; 6E6C9B422A408839002F788D /* URLImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9B412A408839002F788D /* URLImage.swift */; }; @@ -45,7 +42,6 @@ 6E8442742A40499A00D6159E /* AppBarContentScaffold.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8442732A40499A00D6159E /* AppBarContentScaffold.swift */; }; 6E8442762A404C0300D6159E /* LargeLogoImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8442752A404C0300D6159E /* LargeLogoImage.swift */; }; 6E8B577F2A67FE5F0024C5A2 /* OnboardingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8B577E2A67FE5F0024C5A2 /* OnboardingView.swift */; }; - 6EA4E9172E717A87009CCFBA /* RNSplashScreenExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA4E9162E717A7C009CCFBA /* RNSplashScreenExtensions.swift */; }; 6EABAB582A41FE820030BF0D /* SampleAppCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EABAB542A41FE7E0030BF0D /* SampleAppCollectionViewController.swift */; }; 6EABAB592A41FE820030BF0D /* SampleApps.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6EABAB552A41FE820030BF0D /* SampleApps.storyboard */; }; 6EABAB5B2A41FFA10030BF0D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6EABAB5A2A41FFA10030BF0D /* LaunchScreen.storyboard */; }; @@ -59,7 +55,9 @@ 6EF5DA0D2A373F15009B4F09 /* OpenSans-Italic-VariableFont_wdth,wght.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6EF5DA0C2A373F15009B4F09 /* OpenSans-Italic-VariableFont_wdth,wght.ttf */; }; 6EF5DA862A385C72009B4F09 /* HistoryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF5DA852A385C72009B4F09 /* HistoryView.swift */; }; 6EFB6B452A3B3EFE006D8C2C /* HelpHostViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EFB6B442A3B3EFE006D8C2C /* HelpHostViewController.swift */; }; + 9EA4C6632E8D2C4D0050BB15 /* MendixAppEntryType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EA4C6622E8D2C440050BB15 /* MendixAppEntryType.swift */; }; C538FD0A2BFF285B00140B7E /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = C538FD092BFF285B00140B7E /* PrivacyInfo.xcprivacy */; }; + C85AC8F1AB549EFB65A6AF3D /* libPods-DeveloperApp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CFB6B23CED9625072661A7E8 /* libPods-DeveloperApp.a */; }; E7CA7B3A2A320CFA00F8EBF0 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7CA7B392A320CFA00F8EBF0 /* Constants.swift */; }; E7EF3D222A3346E800A04EA8 /* LaunchScreenUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7EF3D212A3346E800A04EA8 /* LaunchScreenUIView.swift */; }; E7EF3D242A33474400A04EA8 /* LaunchScreenStateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7EF3D232A33474400A04EA8 /* LaunchScreenStateManager.swift */; }; @@ -72,7 +70,6 @@ EB76E464229E88EF00E6AE5E /* NotoSansDisplay-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EB76E463229E88EF00E6AE5E /* NotoSansDisplay-Regular.ttf */; }; EBA1256821B95D7100681FC6 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = EBA1256721B95D7100681FC6 /* GoogleService-Info.plist */; }; EBAE9AEB22A9089A0045660A /* URLValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBAE9AEA22A9089A0045660A /* URLValidator.swift */; }; - EBB5240622EE2E9600557FEB /* RCTRootViewExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBB5240522EE2E9500557FEB /* RCTRootViewExtension.swift */; }; EBB5240C22EE335400557FEB /* MendixApp.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EBB5240B22EE335300557FEB /* MendixApp.storyboard */; }; EBD0933722B118F200FCA4EF /* SwipeBackNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBD0933622B118F200FCA4EF /* SwipeBackNavigationController.swift */; }; /* End PBXBuildFile section */ @@ -91,9 +88,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0265C1A0BC85D1CEF83C96D0 /* libPods-Mendix-DeveloperApp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Mendix-DeveloperApp.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 04222F8120403EC30092F0A0 /* AppDelegate.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; tabWidth = 2; wrapsLines = 1; }; - 04222FB12040470B0092F0A0 /* MendixReactWindowExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MendixReactWindowExtensions.swift; sourceTree = ""; }; 0433D0C720878BA6001EDC7B /* PaddingTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaddingTextField.swift; sourceTree = ""; }; 046CD08E20406110007291F9 /* OpenAppViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenAppViewController.swift; sourceTree = ""; }; 047B674922B1080200FF5FC3 /* Bundles */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Bundles; sourceTree = ""; }; @@ -108,7 +103,6 @@ 0AE72E1821F75362000CD8D7 /* DeveloperApp.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DeveloperApp.entitlements; sourceTree = ""; }; 0AEBC15321C1397E003E47B4 /* EventKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = EventKit.framework; path = System/Library/Frameworks/EventKit.framework; sourceTree = SDKROOT; }; 0AEBC15621C139D3003E47B4 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; - 0C893B05A3FBF4149AD5B93B /* Pods-Mendix-DeveloperApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mendix-DeveloperApp.debug.xcconfig"; path = "Target Support Files/Pods-Mendix-DeveloperApp/Pods-Mendix-DeveloperApp.debug.xcconfig"; sourceTree = ""; }; 1055849D2A8DF9950015F9E0 /* SampleApps.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleApps.swift; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* DeveloperApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DeveloperApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -120,9 +114,9 @@ 2C887F5B24B78D640003DC53 /* SplashScreenPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashScreenPresenter.swift; sourceTree = ""; }; 2CCCE91825A367F80087AD16 /* Colors.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Colors.xcassets; sourceTree = ""; }; 2CF2021425C30BCA00395332 /* LocalNetworkPermissionService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalNetworkPermissionService.swift; sourceTree = ""; }; + 58A7393DE99FFFA2C0BDFFB6 /* Pods-Mendix-DeveloperApp.releasedevtoolsenabled.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mendix-DeveloperApp.releasedevtoolsenabled.xcconfig"; path = "Target Support Files/Pods-Mendix-DeveloperApp/Pods-Mendix-DeveloperApp.releasedevtoolsenabled.xcconfig"; sourceTree = ""; }; 6E0DD47D2A4354E900A21A54 /* HistoryManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HistoryManager.swift; sourceTree = ""; }; 6E1EA91B2A4AD72B00C430A4 /* LaunchScreenViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LaunchScreenViewController.swift; sourceTree = ""; }; - 6E21481B2B90B6F000430472 /* mendixnative.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = mendixnative.xcframework; path = "../node_modules/@mendix/native/ios/mendixnative.xcframework"; sourceTree = ""; }; 6E5FE7CD2A43017300B53D51 /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = ""; }; 6E6C9B3F2A406C99002F788D /* HelpListTile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HelpListTile.swift; sourceTree = ""; }; 6E6C9B412A408839002F788D /* URLImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLImage.swift; sourceTree = ""; }; @@ -147,11 +141,15 @@ 6EF5DA0C2A373F15009B4F09 /* OpenSans-Italic-VariableFont_wdth,wght.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "OpenSans-Italic-VariableFont_wdth,wght.ttf"; sourceTree = ""; }; 6EF5DA852A385C72009B4F09 /* HistoryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HistoryView.swift; sourceTree = ""; }; 6EFB6B442A3B3EFE006D8C2C /* HelpHostViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HelpHostViewController.swift; sourceTree = ""; }; + 75BED1FC3D294D4D650B050F /* Pods-Mendix-DeveloperApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mendix-DeveloperApp.debug.xcconfig"; path = "Target Support Files/Pods-Mendix-DeveloperApp/Pods-Mendix-DeveloperApp.debug.xcconfig"; sourceTree = ""; }; + 8E968FEC64D9E22410EEED6C /* Pods-DeveloperApp.releasedevtoolsenabled.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DeveloperApp.releasedevtoolsenabled.xcconfig"; path = "Target Support Files/Pods-DeveloperApp/Pods-DeveloperApp.releasedevtoolsenabled.xcconfig"; sourceTree = ""; }; + 9EA4C6622E8D2C440050BB15 /* MendixAppEntryType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MendixAppEntryType.swift; sourceTree = ""; }; C538FD092BFF285B00140B7E /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; + CF5CABB04CACDCB078A26F19 /* Pods-DeveloperApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DeveloperApp.debug.xcconfig"; path = "Target Support Files/Pods-DeveloperApp/Pods-DeveloperApp.debug.xcconfig"; sourceTree = ""; }; + CFB6B23CED9625072661A7E8 /* libPods-DeveloperApp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-DeveloperApp.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + D32F41CCBF5785C9B67E9E34 /* Pods-DeveloperApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DeveloperApp.release.xcconfig"; path = "Target Support Files/Pods-DeveloperApp/Pods-DeveloperApp.release.xcconfig"; sourceTree = ""; }; D35B611E13EA45A9A21912F0 /* libsqlite3.0.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.0.tbd; path = usr/lib/libsqlite3.0.tbd; sourceTree = SDKROOT; }; - D661F6F1A4BB4FFEEC1DD4B6 /* Pods-Mendix-DeveloperApp.releasedevtoolsenabled.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mendix-DeveloperApp.releasedevtoolsenabled.xcconfig"; path = "Target Support Files/Pods-Mendix-DeveloperApp/Pods-Mendix-DeveloperApp.releasedevtoolsenabled.xcconfig"; sourceTree = ""; }; DF8CCDFC26E5FA0900323934 /* DeveloperApp.release.devtools.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = DeveloperApp.release.devtools.xcconfig; sourceTree = ""; }; - E78438E6E5EB345B8D260C12 /* Pods-Mendix-DeveloperApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mendix-DeveloperApp.release.xcconfig"; path = "Target Support Files/Pods-Mendix-DeveloperApp/Pods-Mendix-DeveloperApp.release.xcconfig"; sourceTree = ""; }; E7CA7B392A320CFA00F8EBF0 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; E7EF3D212A3346E800A04EA8 /* LaunchScreenUIView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LaunchScreenUIView.swift; sourceTree = ""; }; E7EF3D232A33474400A04EA8 /* LaunchScreenStateManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LaunchScreenStateManager.swift; sourceTree = ""; }; @@ -168,22 +166,25 @@ EBA1256E21B96EAB00681FC6 /* glyphicons-halflings-regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "glyphicons-halflings-regular.ttf"; sourceTree = ""; }; EBAE9AEA22A9089A0045660A /* URLValidator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLValidator.swift; sourceTree = ""; }; EBB523FE22EE124900557FEB /* DeveloperApp-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "DeveloperApp-Bridging-Header.h"; sourceTree = ""; }; - EBB5240522EE2E9500557FEB /* RCTRootViewExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RCTRootViewExtension.swift; sourceTree = ""; }; EBB5240B22EE335300557FEB /* MendixApp.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = MendixApp.storyboard; sourceTree = ""; }; EBD0933622B118F200FCA4EF /* SwipeBackNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwipeBackNavigationController.swift; sourceTree = ""; }; + EFE0BE2AFA25D99E94DAEBA2 /* Pods-Mendix-DeveloperApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mendix-DeveloperApp.release.xcconfig"; path = "Target Support Files/Pods-Mendix-DeveloperApp/Pods-Mendix-DeveloperApp.release.xcconfig"; sourceTree = ""; }; F09C33A4220B3340007FE2A7 /* ApiKeys.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ApiKeys.xcconfig; sourceTree = ""; }; /* End PBXFileReference section */ +/* Begin PBXFileSystemSynchronizedRootGroup section */ + 9EA4C6642E8D2CB20050BB15 /* Extension */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = Extension; sourceTree = ""; }; +/* End PBXFileSystemSynchronizedRootGroup section */ + /* Begin PBXFrameworksBuildPhase section */ 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6E21481C2B90B6F000430472 /* mendixnative.xcframework in Frameworks */, 0AEBC15821C139DF003E47B4 /* CoreFoundation.framework in Frameworks */, 0AEBC15421C1397E003E47B4 /* EventKit.framework in Frameworks */, - 6D631AFF82EFB03018D699AD /* libPods-Mendix-DeveloperApp.a in Frameworks */, 10BF55CC2C231533000F10AD /* CodeScanner in Frameworks */, + C85AC8F1AB549EFB65A6AF3D /* libPods-DeveloperApp.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -264,6 +265,7 @@ 13B07FAE1A68108700A75B9A /* DeveloperApp */ = { isa = PBXGroup; children = ( + 9EA4C6642E8D2CB20050BB15 /* Extension */, 6EB07C6D2A56DBDA004F74DC /* State */, 6E8442722A4047A300D6159E /* Components */, 2C6E88AD2577DFFB0006B301 /* Home */, @@ -283,9 +285,6 @@ 04222F8120403EC30092F0A0 /* AppDelegate.swift */, 2CCCE91825A367F80087AD16 /* Colors.xcassets */, 2C887F5B24B78D640003DC53 /* SplashScreenPresenter.swift */, - 04222FB12040470B0092F0A0 /* MendixReactWindowExtensions.swift */, - EBB5240522EE2E9500557FEB /* RCTRootViewExtension.swift */, - 6EA4E9162E717A7C009CCFBA /* RNSplashScreenExtensions.swift */, EB07BDA720CEA13400E0CD48 /* Images.xcassets */, 2C005A9223DF2F5000003E29 /* Helpers.swift */, EBD0933622B118F200FCA4EF /* SwipeBackNavigationController.swift */, @@ -312,6 +311,7 @@ 2CCCE90B25A365E00087AD16 /* MendixApp */ = { isa = PBXGroup; children = ( + 9EA4C6622E8D2C440050BB15 /* MendixAppEntryType.swift */, EBB5240B22EE335300557FEB /* MendixApp.storyboard */, EB3105CC22A6BD1400FF5ECF /* MendixAppViewController.swift */, ); @@ -321,12 +321,11 @@ 6D0907AA19CE4CB597BBF1D2 /* Frameworks */ = { isa = PBXGroup; children = ( - 6E21481B2B90B6F000430472 /* mendixnative.xcframework */, 0AEBC15621C139D3003E47B4 /* CoreFoundation.framework */, 0AEBC15321C1397E003E47B4 /* EventKit.framework */, EB3619B420D29A4B007A0996 /* Fonts */, D35B611E13EA45A9A21912F0 /* libsqlite3.0.tbd */, - 0265C1A0BC85D1CEF83C96D0 /* libPods-Mendix-DeveloperApp.a */, + CFB6B23CED9625072661A7E8 /* libPods-DeveloperApp.a */, ); name = Frameworks; sourceTree = ""; @@ -422,9 +421,12 @@ B7266CA697BC7EF170043D40 /* Pods */ = { isa = PBXGroup; children = ( - 0C893B05A3FBF4149AD5B93B /* Pods-Mendix-DeveloperApp.debug.xcconfig */, - E78438E6E5EB345B8D260C12 /* Pods-Mendix-DeveloperApp.release.xcconfig */, - D661F6F1A4BB4FFEEC1DD4B6 /* Pods-Mendix-DeveloperApp.releasedevtoolsenabled.xcconfig */, + 75BED1FC3D294D4D650B050F /* Pods-Mendix-DeveloperApp.debug.xcconfig */, + EFE0BE2AFA25D99E94DAEBA2 /* Pods-Mendix-DeveloperApp.release.xcconfig */, + 58A7393DE99FFFA2C0BDFFB6 /* Pods-Mendix-DeveloperApp.releasedevtoolsenabled.xcconfig */, + CF5CABB04CACDCB078A26F19 /* Pods-DeveloperApp.debug.xcconfig */, + D32F41CCBF5785C9B67E9E34 /* Pods-DeveloperApp.release.xcconfig */, + 8E968FEC64D9E22410EEED6C /* Pods-DeveloperApp.releasedevtoolsenabled.xcconfig */, ); path = Pods; sourceTree = ""; @@ -463,18 +465,23 @@ isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "DeveloperApp" */; buildPhases = ( - 393653B31220B1A8B98FB190 /* [CP] Check Pods Manifest.lock */, + 2932CD3575D75C44EAE359D5 /* [CP] Check Pods Manifest.lock */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, DF17395E25B4582800B65592 /* Embed Frameworks */, - C172FBA7B7AE84E7986F03ED /* [CP] Copy Pods Resources */, - 640967B95A03B5199E113383 /* [CP] Embed Pods Frameworks */, + 73109D77779EAA162A5D1674 /* [CP] Embed Pods Frameworks */, + E19DBCC8194D3841E98C45AB /* [CP] Copy Pods Resources */, + 669BA034366DEC1344D0B161 /* [CP-User] [RNFB] Core Configuration */, + A223FCF0D55E3AB5F6DCCF5B /* [CP-User] [RNFB] Crashlytics Configuration */, ); buildRules = ( ); dependencies = ( ); + fileSystemSynchronizedGroups = ( + 9EA4C6642E8D2CB20050BB15 /* Extension */, + ); name = DeveloperApp; packageProductDependencies = ( 10BF55CB2C231533000F10AD /* CodeScanner */, @@ -558,7 +565,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 393653B31220B1A8B98FB190 /* [CP] Check Pods Manifest.lock */ = { + 2932CD3575D75C44EAE359D5 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -573,20 +580,35 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Mendix-DeveloperApp-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-DeveloperApp-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 640967B95A03B5199E113383 /* [CP] Embed Pods Frameworks */ = { + 669BA034366DEC1344D0B161 /* [CP-User] [RNFB] Core Configuration */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", + ); + name = "[CP-User] [RNFB] Core Configuration"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -Ku -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | /usr/bin/head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -Ku -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n if ! python3 --version >/dev/null 2>&1; then echo \"python3 not found, firebase.json file processing error.\" && exit 1; fi\n _JSON_OUTPUT_BASE64=$(python3 -c 'import json,sys,base64;print(base64.b64encode(bytes(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"', '\"'rb'\"').read())['${_JSON_ROOT}']), '\"'utf-8'\"')).decode())' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.app_data_collection_default_enabled\n _APP_DATA_COLLECTION_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_data_collection_default_enabled\")\n if [[ $_APP_DATA_COLLECTION_ENABLED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseDataCollectionDefaultEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_DATA_COLLECTION_ENABLED\")\")\n fi\n\n # config.analytics_auto_collection_enabled\n _ANALYTICS_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_auto_collection_enabled\")\n if [[ $_ANALYTICS_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_COLLECTION\")\")\n fi\n\n # config.analytics_collection_deactivated\n _ANALYTICS_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_collection_deactivated\")\n if [[ $_ANALYTICS_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_DEACTIVATED\")\")\n fi\n\n # config.analytics_idfv_collection_enabled\n _ANALYTICS_IDFV_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_idfv_collection_enabled\")\n if [[ $_ANALYTICS_IDFV_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_IDFV_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_IDFV_COLLECTION\")\")\n fi\n\n # config.analytics_default_allow_ad_personalization_signals\n _ANALYTICS_PERSONALIZATION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_personalization_signals\")\n if [[ $_ANALYTICS_PERSONALIZATION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_PERSONALIZATION\")\")\n fi\n\n # config.analytics_registration_with_ad_network_enabled\n _ANALYTICS_REGISTRATION_WITH_AD_NETWORK=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_registration_with_ad_network_enabled\")\n if [[ $_ANALYTICS_REGISTRATION_WITH_AD_NETWORK ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_REGISTRATION_WITH_AD_NETWORK_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_REGISTRATION_WITH_AD_NETWORK\")\")\n fi\n\n # config.google_analytics_automatic_screen_reporting_enabled\n _ANALYTICS_AUTO_SCREEN_REPORTING=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_automatic_screen_reporting_enabled\")\n if [[ $_ANALYTICS_AUTO_SCREEN_REPORTING ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAutomaticScreenReportingEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_SCREEN_REPORTING\")\")\n fi\n\n # config.perf_auto_collection_enabled\n _PERF_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_auto_collection_enabled\")\n if [[ $_PERF_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_enabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_AUTO_COLLECTION\")\")\n fi\n\n # config.perf_collection_deactivated\n _PERF_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_collection_deactivated\")\n if [[ $_PERF_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_deactivated\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_DEACTIVATED\")\")\n fi\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.in_app_messaging_auto_colllection_enabled\n _FIAM_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"in_app_messaging_auto_collection_enabled\")\n if [[ $_FIAM_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseInAppMessagingAutomaticDataCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_FIAM_AUTO_INIT\")\")\n fi\n\n # config.app_check_token_auto_refresh\n _APP_CHECK_TOKEN_AUTO_REFRESH=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_check_token_auto_refresh\")\n if [[ $_APP_CHECK_TOKEN_AUTO_REFRESH ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAppCheckTokenAutoRefreshEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_CHECK_TOKEN_AUTO_REFRESH\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n"; + }; + 73109D77779EAA162A5D1674 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Mendix-DeveloperApp/Pods-Mendix-DeveloperApp-frameworks.sh", + "${PODS_ROOT}/Target Support Files/Pods-DeveloperApp/Pods-DeveloperApp-frameworks.sh", "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", ); @@ -597,16 +619,32 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Mendix-DeveloperApp/Pods-Mendix-DeveloperApp-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DeveloperApp/Pods-DeveloperApp-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - C172FBA7B7AE84E7986F03ED /* [CP] Copy Pods Resources */ = { + A223FCF0D55E3AB5F6DCCF5B /* [CP-User] [RNFB] Crashlytics Configuration */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}", + "$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", + ); + name = "[CP-User] [RNFB] Crashlytics Configuration"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\nif [[ ${PODS_ROOT} ]]; then\n echo \"info: Exec FirebaseCrashlytics Run from Pods\"\n \"${PODS_ROOT}/FirebaseCrashlytics/run\"\nelse\n echo \"info: Exec FirebaseCrashlytics Run from framework\"\n \"${PROJECT_DIR}/FirebaseCrashlytics.framework/run\"\nfi\n"; + }; + E19DBCC8194D3841E98C45AB /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Mendix-DeveloperApp/Pods-Mendix-DeveloperApp-resources.sh", + "${PODS_ROOT}/Target Support Files/Pods-DeveloperApp/Pods-DeveloperApp-resources.sh", "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreInternal/FirebaseCoreInternal_Privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations_Privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport_Privacy.bundle", @@ -690,7 +728,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Mendix-DeveloperApp/Pods-Mendix-DeveloperApp-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DeveloperApp/Pods-DeveloperApp-resources.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -709,17 +747,16 @@ 6E6C9B422A408839002F788D /* URLImage.swift in Sources */, 6ECFF9762A458E08005EF95D /* CameraView.swift in Sources */, 0AC7FF992296F35E0038CD63 /* SettingsBundlerHelper.swift in Sources */, + 9EA4C6632E8D2C4D0050BB15 /* MendixAppEntryType.swift in Sources */, 6E8B577F2A67FE5F0024C5A2 /* OnboardingView.swift in Sources */, 6EABAB582A41FE820030BF0D /* SampleAppCollectionViewController.swift in Sources */, 0433D0C820878BA6001EDC7B /* PaddingTextField.swift in Sources */, - EBB5240622EE2E9600557FEB /* RCTRootViewExtension.swift in Sources */, 6EFB6B452A3B3EFE006D8C2C /* HelpHostViewController.swift in Sources */, 6E8442742A40499A00D6159E /* AppBarContentScaffold.swift in Sources */, 6E5FE7CE2A43017300B53D51 /* HomeView.swift in Sources */, E7CA7B3A2A320CFA00F8EBF0 /* Constants.swift in Sources */, EBAE9AEB22A9089A0045660A /* URLValidator.swift in Sources */, 2C005A9323DF2F5000003E29 /* Helpers.swift in Sources */, - 6EA4E9172E717A87009CCFBA /* RNSplashScreenExtensions.swift in Sources */, 6E0DD47E2A4354E900A21A54 /* HistoryManager.swift in Sources */, 6EB07C6F2A56DBEA004F74DC /* AppState.swift in Sources */, 1055849E2A8DF9950015F9E0 /* SampleApps.swift in Sources */, @@ -738,7 +775,6 @@ 2C6E88BB2577E1BD0006B301 /* HomeViewController.swift in Sources */, 2CF2021525C30BCA00395332 /* LocalNetworkPermissionService.swift in Sources */, 6EF5DA862A385C72009B4F09 /* HistoryView.swift in Sources */, - 04222FB22040470B0092F0A0 /* MendixReactWindowExtensions.swift in Sources */, 6EE775812A3AF96300D80E58 /* HistoryHostViewController.swift in Sources */, 6EABAB5D2A42E0310030BF0D /* SmallLogoImage.swift in Sources */, E7EF3D222A3346E800A04EA8 /* LaunchScreenUIView.swift in Sources */, diff --git a/ios/developerapp.xcodeproj/xcshareddata/xcschemes/DeveloperApp.xcscheme b/ios/developerapp.xcodeproj/xcshareddata/xcschemes/DeveloperApp.xcscheme index d610897..549def3 100644 --- a/ios/developerapp.xcodeproj/xcshareddata/xcschemes/DeveloperApp.xcscheme +++ b/ios/developerapp.xcodeproj/xcshareddata/xcschemes/DeveloperApp.xcscheme @@ -71,12 +71,12 @@ diff --git a/ios/developerapp.xcodeproj/xcshareddata/xcschemes/MendixNative-Universal.xcscheme b/ios/developerapp.xcodeproj/xcshareddata/xcschemes/MendixNative-Universal.xcscheme deleted file mode 100644 index 29194ee..0000000 --- a/ios/developerapp.xcodeproj/xcshareddata/xcschemes/MendixNative-Universal.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ios/developerapp.xcodeproj/xcshareddata/xcschemes/MendixNative.xcscheme b/ios/developerapp.xcodeproj/xcshareddata/xcschemes/MendixNative.xcscheme deleted file mode 100644 index 7715f94..0000000 --- a/ios/developerapp.xcodeproj/xcshareddata/xcschemes/MendixNative.xcscheme +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/mendix-native-0.0.1.tgz b/mendix-native-0.0.1.tgz new file mode 100644 index 0000000..a88c503 Binary files /dev/null and b/mendix-native-0.0.1.tgz differ diff --git a/mendix-native-10.2.2.tgz b/mendix-native-10.2.2.tgz deleted file mode 100644 index ad5c7e9..0000000 Binary files a/mendix-native-10.2.2.tgz and /dev/null differ diff --git a/package-lock.json b/package-lock.json index 45a4f9e..695e941 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,6 @@ "license": "Apache-2.0", "dependencies": { "@gorhom/bottom-sheet": "^5.1.1", - "@mendix/native": "./mendix-native-10.2.2.tgz", "@notifee/react-native": "9.1.8", "@octokit/rest": "^21.1.1", "@op-engineering/op-sqlite": "12.0.2", @@ -31,13 +30,14 @@ "@react-native-picker/picker": "2.11.0", "@sbaiahmed1/react-native-biometrics": "0.4.0", "@swan-io/react-native-browser": "0.4.1", + "mendix-native": "file:./mendix-native-0.0.1.tgz", "react-native": "0.77.3", "react-native-ble-plx": "2.0.3", "react-native-blob-util": "0.21.2", "react-native-bootsplash": "6.3.10", "react-native-calendar-events": "2.1.0", "react-native-device-info": "14.0.4", - "react-native-edge-to-edge": "^1.7.0", + "react-native-edge-to-edge": "1.7.0", "react-native-fast-image": "8.6.3", "react-native-file-viewer-turbo": "0.6.0", "react-native-geocoder": "0.5.0", @@ -2072,11 +2072,6 @@ "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", "license": "MIT" }, - "node_modules/@mendix/native": { - "version": "10.2.0", - "resolved": "file:mendix-native-10.2.2.tgz", - "integrity": "sha512-zZCY/FAM8YR5k9Ohl7t6uRhTuDhSTFGVzua/E5vQHhUnyZ2U5jSdZ9RWSkk5/BX3twOciPWsiqAoJSsiXvzpmw==" - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -6841,6 +6836,22 @@ "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" }, + "node_modules/mendix-native": { + "version": "0.0.1", + "resolved": "file:mendix-native-0.0.1.tgz", + "integrity": "sha512-B6QRrCN9RAZouR/WgFQbt+HwXXmk/pF2gRUeFln76shcT3IVplHFcwxpLyUABUg3pbnbxUvc9iJpCVjw0NNwVA==", + "license": "MIT", + "workspaces": [ + "example" + ], + "peerDependencies": { + "@op-engineering/op-sqlite": "*", + "@react-native-async-storage/async-storage": "*", + "react": "*", + "react-native": "*", + "react-native-gesture-handler": "*" + } + }, "node_modules/meow": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/meow/-/meow-6.1.1.tgz", @@ -12107,10 +12118,6 @@ "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==" }, - "@mendix/native": { - "version": "file:mendix-native-10.2.2.tgz", - "integrity": "sha512-zZCY/FAM8YR5k9Ohl7t6uRhTuDhSTFGVzua/E5vQHhUnyZ2U5jSdZ9RWSkk5/BX3twOciPWsiqAoJSsiXvzpmw==" - }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -15473,6 +15480,10 @@ "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" }, + "mendix-native": { + "version": "file:mendix-native-0.0.1.tgz", + "integrity": "sha512-B6QRrCN9RAZouR/WgFQbt+HwXXmk/pF2gRUeFln76shcT3IVplHFcwxpLyUABUg3pbnbxUvc9iJpCVjw0NNwVA==" + }, "meow": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/meow/-/meow-6.1.1.tgz", diff --git a/package.json b/package.json index b75c0bc..fd590aa 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ }, "dependencies": { "@gorhom/bottom-sheet": "^5.1.1", - "@mendix/native": "./mendix-native-10.2.2.tgz", + "mendix-native": "file:./mendix-native-0.0.1.tgz", "@notifee/react-native": "9.1.8", "@octokit/rest": "^21.1.1", "@op-engineering/op-sqlite": "12.0.2", diff --git a/patches/react-native-bootsplash+6.3.10.patch b/patches/react-native-bootsplash+6.3.10.patch index 07e3a0e..76725e9 100644 --- a/patches/react-native-bootsplash+6.3.10.patch +++ b/patches/react-native-bootsplash+6.3.10.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/react-native-bootsplash/android/src/main/java/com/zoontek/rnbootsplash/RNBootSplash.kt b/node_modules/react-native-bootsplash/android/src/main/java/com/zoontek/rnbootsplash/RNBootSplash.kt -index d553256..1221a83 100644 +index d553256..f538e42 100644 --- a/node_modules/react-native-bootsplash/android/src/main/java/com/zoontek/rnbootsplash/RNBootSplash.kt +++ b/node_modules/react-native-bootsplash/android/src/main/java/com/zoontek/rnbootsplash/RNBootSplash.kt @@ -1,7 +1,8 @@ @@ -12,20 +12,17 @@ index d553256..1221a83 100644 import androidx.annotation.StyleRes object RNBootSplash { -@@ -10,4 +11,16 @@ object RNBootSplash { +@@ -10,4 +11,13 @@ object RNBootSplash { fun init(activity: Activity, @StyleRes themeResId: Int) { RNBootSplashModuleImpl.init(activity, themeResId) } + + @JvmStatic + fun hide(activity: Activity) { -+ val reactContext: ReactApplicationContext? = (activity.application as ReactApplication) -+ .reactNativeHost -+ .reactInstanceManager -+ .currentReactContext as? ReactApplicationContext -+ -+ if (reactContext != null) { -+ RNBootSplashModuleImpl.hideAndClearPromiseQueue(reactContext,false) ++ (activity.application as? ReactApplication)?.let { application -> ++ (application.reactHost?.currentReactContext as? ReactApplicationContext)?.let { ++ RNBootSplashModuleImpl.hideAndClearPromiseQueue(it, false) ++ } + } + } }