diff --git a/.gitignore b/.gitignore index d8e8e804c..397437478 100644 --- a/.gitignore +++ b/.gitignore @@ -75,3 +75,6 @@ android/\.settings/org\.eclipse\.buildship\.core\.prefs android/mendixnative-release/\.project android/mendixnative-release/\.settings/org\.eclipse\.buildship\.core\.prefs + +android/**/.cxx/ +android/.kotlin/ diff --git a/Gemfile b/Gemfile index bc6f886a0..5f7ce74fb 100644 --- a/Gemfile +++ b/Gemfile @@ -1,10 +1,10 @@ source 'https://rubygems.org' # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version -ruby ">= 2.7.8" +ruby ">= 2.6.10" # Exclude problematic versions of cocoapods and activesupport that causes build failures. -gem 'cocoapods', '>= 1.13', '!= 1.15.0', '!= 1.15.1' +gem 'cocoapods', '= 1.16.2' gem 'activesupport', '>= 6.1.7.5', '!= 7.1.0' -gem 'xcodeproj', '< 1.26.0' +gem 'xcodeproj', '>= 1.27.0' gem 'concurrent-ruby', '< 1.3.4' \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 000000000..1be6889df --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,140 @@ +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.5.0) + bigdecimal (3.3.1) + 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) + ffi (1.17.2-aarch64-linux-gnu) + ffi (1.17.2-aarch64-linux-musl) + ffi (1.17.2-arm-linux-gnu) + ffi (1.17.2-arm-linux-musl) + ffi (1.17.2-arm64-darwin) + ffi (1.17.2-x86-linux-gnu) + ffi (1.17.2-x86-linux-musl) + ffi (1.17.2-x86_64-darwin) + ffi (1.17.2-x86_64-linux-gnu) + ffi (1.17.2-x86_64-linux-musl) + 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.1) + logger (1.7.0) + minitest (5.26.0) + 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 + aarch64-linux-gnu + aarch64-linux-musl + arm-linux-gnu + arm-linux-musl + arm64-darwin + ruby + x86-linux-gnu + x86-linux-musl + x86_64-darwin + x86_64-linux-gnu + x86_64-linux-musl + +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/android/app/build.gradle b/android/app/build.gradle index e37a974ac..cf7b8bdcc 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -122,7 +122,6 @@ dependencies { implementation("com.facebook.react:hermes-android") implementation project(':react-native-localize') - implementation project(":mendixnative-release") // Explicit add okhttp implementation("com.squareup.okhttp3:okhttp:4.9.1") @@ -160,5 +159,5 @@ task copyDownloadableDepsToLibs(type: Copy) { into "libs" } -apply from: file("../../node_modules/@mendix/native/androidlib/mendix.gradle"); applyMendixGradle(project) +apply from: file("../../node_modules/mendix-native/android/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 4ae18437c..9d03844c2 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -29,7 +29,7 @@ buildscript { classpath "com.facebook.react:react-native-gradle-plugin" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" classpath 'org.jetbrains.kotlin:compose-compiler-gradle-plugin:2.0.21' - apply from: file("../node_modules/@mendix/native/androidlib/mendix.gradle"); applyMendixClassPaths(project) + apply from: file("../node_modules/mendix-native/android/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 5242dcc44..c61f97dcc 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -22,8 +22,7 @@ org.gradle.configureondemand=true android.disableResourceValidation=true android.nonTransitiveRClass=true android.suppressUnsupportedCompileSdk=33 -# enabled by default in RN 0.76 so we need to disable it explicitly -newArchEnabled=false +newArchEnabled=true hermesEnabled=true mendixnative.cookieEncryption=false VisionCamera_enableCodeScanner=true diff --git a/android/settings.gradle b/android/settings.gradle index 8925436bb..e2f594bd8 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -6,7 +6,4 @@ rootProject.name = 'nativeTemplate' 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/AppDelegate.h b/ios/AppDelegate.h deleted file mode 100644 index 4abc56d3d..000000000 --- a/ios/AppDelegate.h +++ /dev/null @@ -1,10 +0,0 @@ -#import -#import -#import - -@interface AppDelegate : UIResponder - -@property (nonatomic, strong) UIWindow *window; -@property BOOL shouldOpenInLastApp; -@property BOOL hasHandledLaunchAppWithOptions; -@end diff --git a/ios/AppDelegate.m b/ios/AppDelegate.m deleted file mode 100644 index 54327796a..000000000 --- a/ios/AppDelegate.m +++ /dev/null @@ -1,96 +0,0 @@ -#import "AppDelegate.h" -#import "MendixAppDelegate.h" -#import "MendixNative.h" -#import "IQKeyboardManager/IQKeyboardManager.h" -#import "SplashScreenPresenter.h" - -@implementation AppDelegate - -@synthesize shouldOpenInLastApp; -@synthesize hasHandledLaunchAppWithOptions; - -- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - [self clearKeychain]; - MendixAppDelegate.delegate = self; - [MendixAppDelegate application:application didFinishLaunchingWithOptions:launchOptions]; - [self setupUI]; - - NSBundle *mainBundle = [NSBundle mainBundle]; - - self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; - self.window.rootViewController = [UIViewController new]; - [self.window makeKeyAndVisible]; - - NSString *url = [mainBundle objectForInfoDictionaryKey:@"Runtime url"]; - if (url == nil || [url length] == 0) { - [self showUnrecoverableDialogWithTitle:@"The runtime URL is missing" message:@"Missing the 'Runtime url' configuration within the Info.plist file. The app will close."]; - return NO; - } - NSURL *runtimeUrl = [AppUrl forRuntime:[url stringByReplacingOccurrencesOfString:@"\\" withString:@""]]; - NSURL *bundleUrl = [MendixAppDelegate getJSBundleFile]; - - if (bundleUrl != nil) { - [ReactNative.instance setup:[[MendixApp alloc] init:nil bundleUrl:bundleUrl runtimeUrl:runtimeUrl warningsFilter:none isDeveloperApp:NO clearDataAtLaunch:NO splashScreenPresenter:[SplashScreenPresenter new]] launchOptions:launchOptions]; - [ReactNative.instance start]; - } else { - [self showUnrecoverableDialogWithTitle:@"No Mendix bundle found" message:@"Missing the Mendix app bundle. Make sure that the index.ios.bundle file is available in ios/NativeTemplate/Bundle folder. If building locally consult the documentation on how to generate a bundle from your project."]; - } - - return YES; -} - -- (void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { - [MendixAppDelegate application:application didReceiveLocalNotification:notification]; -} - -- (void) application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo -fetchCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler{ - [MendixAppDelegate application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; -} - -- (void) application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings { - [MendixAppDelegate application:application didRegisterUserNotificationSettings:notificationSettings]; -} - -- (BOOL) application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { - return [MendixAppDelegate application:app openURL:url options:options]; -} - -- (WarningsFilter) getWarningFilterValue { - return none; -} - -- (void) showUnrecoverableDialogWithTitle:(NSString *)title message:(NSString *) message { - UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; - [alertController addAction:[UIAlertAction actionWithTitle:@"Close" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { - [NSException raise:@"UnrecoverableError" format:message]; - }]]; - [self.window.rootViewController presentViewController:alertController animated:YES completion:nil]; -} - -- (void) setupUI { - if (@available(iOS 13.4, *)) { - [UIDatePicker appearance].preferredDatePickerStyle = UIDatePickerStyleWheels; - } -} - -- (void) userNotificationCenter:(UNUserNotificationCenter *)center - willPresentNotification:(UNNotification *)notification - withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler { - [MendixAppDelegate userNotificationCenter:center willPresentNotification:notification withCompletionHandler:completionHandler]; -} - -- (void) userNotificationCenter:(UNUserNotificationCenter *)center - didReceiveNotificationResponse:(UNNotificationResponse *)response - withCompletionHandler:(void (^)(void))completionHandler { - [MendixAppDelegate userNotificationCenter:center didReceiveNotificationResponse:response withCompletionHandler:completionHandler]; -} - -- (void) clearKeychain { - if ([NSUserDefaults.standardUserDefaults boolForKey:@"HAS_RUN_BEFORE"] == NO) { - [NSUserDefaults.standardUserDefaults setBool:YES forKey:@"HAS_RUN_BEFORE"]; - [ReactNative clearKeychain]; - } -} - -@end diff --git a/ios/AppDelegate.swift b/ios/AppDelegate.swift new file mode 100644 index 000000000..9e8abf9bf --- /dev/null +++ b/ios/AppDelegate.swift @@ -0,0 +1,65 @@ +import MendixNative + +@UIApplicationMain +class AppDelegate: ReactAppProvider, UNUserNotificationCenterDelegate { + + var shouldOpenInLastApp = false + var hasHandledLaunchAppWithOptions = false + + override func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool { + + setupApp(application: application, launchOptions: launchOptions) + MendixAppDelegate.delegate = self + UNUserNotificationCenter.current().delegate = self + MendixAppDelegate.application(application, didFinishLaunchingWithOptions: launchOptions) + + changeRoot(to: UIViewController()) + + guard let url = Bundle.main.object(forInfoDictionaryKey: "Runtime url") as? String, !url.isEmpty else { + showUnrecoverableDialog( + title: "The runtime URL is missing", + message: "Missing the 'Runtime url' configuration within the Info.plist file. The app will close." + ) + return false + } + + if let bundleUrl = MendixAppDelegate.getJSBundleFile() { + + let runtimeUrl = AppUrl.forRuntime((url).replacingOccurrences(of: "\\", with: "")) + + let mendixApp = MendixApp( + identifier: nil, + bundleUrl: bundleUrl, + runtimeUrl: runtimeUrl, + warningsFilter: .none, + isDeveloperApp: false, + clearDataAtLaunch: false, + splashScreenPresenter: SplashScreenPresenter(), + reactLoading: nil, + enableThreeFingerGestures: false + ) + + ReactNative.shared.setup(mendixApp, launchOptions: launchOptions) + ReactNative.shared.start() + } else { + showUnrecoverableDialog( + title: "No Mendix bundle found", + message: "Missing the Mendix app bundle. Make sure that the index.ios.bundle file is available in ios/NativeTemplate/Bundle folder. If building locally consult the documentation on how to generate a bundle from your project." + ) + } + + return true + } + + override func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { + return MendixAppDelegate.application(app, openURL: url, options: options) + } + + func getWarningFilterValue() -> WarningsFilter { + return .none + } + + func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { + MendixAppDelegate.userNotificationCenter(center, willPresentNotification: notification, withCompletionHandler: completionHandler) + } +} diff --git a/ios/Dev/AppDelegate.m b/ios/Dev/AppDelegate.m deleted file mode 100644 index c86cd2475..000000000 --- a/ios/Dev/AppDelegate.m +++ /dev/null @@ -1,104 +0,0 @@ -#import "AppDelegate.h" -#import "MendixAppDelegate.h" -#import -#import "IQKeyboardManager/IQKeyboardManager.h" -#import "SplashScreenPresenter.h" - -@implementation AppDelegate - -@synthesize shouldOpenInLastApp; -@synthesize hasHandledLaunchAppWithOptions; - -- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - [self clearKeychain]; - MendixAppDelegate.delegate = self; - [MendixAppDelegate application:application didFinishLaunchingWithOptions:launchOptions]; - [self setupUI]; - - IQKeyboardManager.sharedManager.enable = NO; - self.window = [[MendixReactWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"LaunchApp" bundle:nil]; - self.window.rootViewController = [storyboard instantiateInitialViewController]; - [self.window makeKeyAndVisible]; - [self.window setUserInteractionEnabled:YES]; - - return YES; -} - -- (void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { - [MendixAppDelegate application:application didReceiveLocalNotification:notification]; -} - -- (void) application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo -fetchCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler{ - [MendixAppDelegate application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; -} - -- (void) application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings { - [MendixAppDelegate application:application didRegisterUserNotificationSettings:notificationSettings]; -} - -- (BOOL) application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options { - BOOL isHandled = [MendixAppDelegate application:application openURL:url options:options]; - - NSString *appUrl = [AppPreferences getAppUrl]; - if (!isHandled || appUrl == nil || [appUrl length] == 0 || [ReactNative.instance isActive]) { - return NO; - } - - NSURL *bundleUrl = [AppUrl forBundle:appUrl port:[AppPreferences getRemoteDebuggingPackagerPort] isDebuggingRemotely:[AppPreferences remoteDebuggingEnabled] isDevModeEnabled:[AppPreferences devModeEnabled]]; - NSURL *runtimeUrl = [AppUrl forRuntime:appUrl]; - NSMutableDictionary *launchOptions = [options mutableCopy]; - [launchOptions setValue:[options valueForKey:UIApplicationOpenURLOptionsAnnotationKey] forKey:UIApplicationOpenURLOptionsAnnotationKey]; - [launchOptions setValue:url forKey:UIApplicationLaunchOptionsURLKey]; - MendixApp *mendixApp = [[MendixApp alloc] init:nil bundleUrl:bundleUrl runtimeUrl:runtimeUrl warningsFilter:[self getWarningFilterValue] isDeveloperApp:YES clearDataAtLaunch:NO]; - [ReactNative.instance setup:mendixApp launchOptions:launchOptions]; - dispatch_after(2.0, dispatch_get_main_queue(), ^(void){ - [ReactNative.instance start]; - }); - - return isHandled; -} - -- (WarningsFilter) getWarningFilterValue { -#if DEBUG - return all; -#else - return [AppPreferences devModeEnabled] ? partial : none; -#endif -} - -- (void) showUnrecoverableDialogWithTitle:(NSString *)title message:(NSString *) message { - UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; - [alertController addAction:[UIAlertAction actionWithTitle:@"Close" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { - [NSException raise:@"UnrecoverableError" format:message]; - }]]; - [self.window.rootViewController presentViewController:alertController animated:YES completion:nil]; -} - -- (void) setupUI { - if (@available(iOS 13.4, *)) { - [UIDatePicker appearance].preferredDatePickerStyle = UIDatePickerStyleWheels; - } -} - -- (void) userNotificationCenter:(UNUserNotificationCenter *)center - willPresentNotification:(UNNotification *)notification - withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler { - [MendixAppDelegate userNotificationCenter:center willPresentNotification:notification withCompletionHandler:completionHandler]; -} - -- (void) userNotificationCenter:(UNUserNotificationCenter *)center - didReceiveNotificationResponse:(UNNotificationResponse *)response - withCompletionHandler:(void (^)(void))completionHandler { - [MendixAppDelegate userNotificationCenter:center didReceiveNotificationResponse:response withCompletionHandler:completionHandler]; -} - -- (void) clearKeychain { - if ([NSUserDefaults.standardUserDefaults boolForKey:@"HAS_RUN_BEFORE"] == NO) { - [NSUserDefaults.standardUserDefaults setBool:YES forKey:@"HAS_RUN_BEFORE"]; - [ReactNative clearKeychain]; - } -} - -@end diff --git a/ios/Dev/AppDelegate.swift b/ios/Dev/AppDelegate.swift new file mode 100644 index 000000000..c0ba97f7c --- /dev/null +++ b/ios/Dev/AppDelegate.swift @@ -0,0 +1,75 @@ +import Foundation +import MendixNative + +@UIApplicationMain +class AppDelegate: ReactAppProvider, UNUserNotificationCenterDelegate { + + var shouldOpenInLastApp = false + var hasHandledLaunchAppWithOptions = false + + override func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool { + setupApp(application: application, launchOptions: launchOptions) + MendixAppDelegate.delegate = self + UNUserNotificationCenter.current().delegate = self + MendixAppDelegate.application(application, didFinishLaunchingWithOptions: launchOptions) + + IQKeyboardManager.shared().isEnabled = false + + let controller = UIStoryboard.launchApp.instantiateInitialViewController() ?? UIViewController() + changeRoot(to: controller) + window.isUserInteractionEnabled = true + + return true + } + + func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { + MendixAppDelegate.userNotificationCenter(center, willPresentNotification: notification, withCompletionHandler: completionHandler) + } + + func getWarningFilterValue() -> WarningsFilter { + #if DEBUG + return .all + #else + return AppPreferences.devModeEnabled ? .partial : .none + #endif + } + + override func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { + + let handled = MendixAppDelegate.application(app, openURL: url, options: options) + + let appUrl = AppPreferences.safeAppUrl + + if (!handled || appUrl.isEmpty || ReactAppProvider.isReactAppActive()) { + return false + } + + let bundleUrl = AppUrl.forBundle( + appUrl, + port: AppPreferences.remoteDebuggingPackagerPort, + isDebuggingRemotely: AppPreferences.remoteDebuggingEnabled, + isDevModeEnabled: AppPreferences.devModeEnabled + ) + + let launchOptions = NSMutableDictionary(dictionary: options) + launchOptions[UIApplicationLaunchOptionsKey.url] = url + launchOptions[UIApplicationOpenURLOptionsKey.annotation] = options[UIApplicationOpenURLOptionsKey.annotation] + + let mxApp = MendixApp.init( + identifier: nil, + bundleUrl: bundleUrl, + runtimeUrl: AppUrl.forRuntime(appUrl), + warningsFilter: getWarningFilterValue(), + isDeveloperApp: true, + clearDataAtLaunch: false, + splashScreenPresenter: nil, + reactLoading: nil, + enableThreeFingerGestures: false + ) + + ReactNative.shared.setup(mxApp, launchOptions: launchOptions as? [AnyHashable : Any]) + ReactNative.shared.start() + + return handled + } +} diff --git a/ios/Dev/LaunchApp/LaunchAppViewController.swift b/ios/Dev/LaunchApp/LaunchAppViewController.swift index 52cc7278f..40e60fa94 100644 --- a/ios/Dev/LaunchApp/LaunchAppViewController.swift +++ b/ios/Dev/LaunchApp/LaunchAppViewController.swift @@ -1,4 +1,5 @@ import UIKit +import MendixNative class LaunchAppViewController: UIViewController, QRViewDelegate { @IBOutlet weak var textField: UITextField! @@ -18,9 +19,9 @@ class LaunchAppViewController: UIViewController, QRViewDelegate { func launchApp(_ url: String) { uiState = .idle qrView.stopScanning() - AppPreferences.setAppUrl(url) - AppPreferences.remoteDebugging(false) - AppPreferences.devMode(enableDevModeSwitch.isOn) + AppPreferences.appUrl = url + AppPreferences.remoteDebuggingEnabled = false + AppPreferences.devModeEnabled = enableDevModeSwitch.isOn self.performSegue(withIdentifier: "MendixApp", sender: nil) } @@ -82,8 +83,8 @@ class LaunchAppViewController: UIViewController, QRViewDelegate { super.viewWillAppear(animated) uiState = .idle qrView.startScanning() - textField.text = AppPreferences.getAppUrl() - enableDevModeSwitch.setOn(AppPreferences.devModeEnabled(), animated: false) + textField.text = AppPreferences.safeAppUrl + enableDevModeSwitch.setOn(AppPreferences.devModeEnabled, animated: false) registerNotificationObservers() } @@ -115,19 +116,25 @@ class LaunchAppViewController: UIViewController, QRViewDelegate { } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - let devModeEnabled = AppPreferences.devModeEnabled() let url = AppUrl.forBundle( - AppPreferences.getAppUrl(), - port: AppPreferences.getRemoteDebuggingPackagerPort(), - isDebuggingRemotely: AppPreferences.remoteDebuggingEnabled(), - isDevModeEnabled: devModeEnabled) + AppPreferences.safeAppUrl, + port: AppPreferences.remoteDebuggingPackagerPort, + isDebuggingRemotely: AppPreferences.remoteDebuggingEnabled, + isDevModeEnabled: AppPreferences.devModeEnabled + ) - let runtimeUrl: URL = AppUrl.forRuntime(AppPreferences.getAppUrl())! - - let mxApp = MendixApp.init(nil, bundleUrl: url!, runtimeUrl: runtimeUrl, warningsFilter: devModeEnabled ? WarningsFilter.partial : WarningsFilter.none, isDeveloperApp: true, clearDataAtLaunch: clearDataSwitch.isOn, reactLoading: UIStoryboard(name: "LaunchScreen", bundle: nil)) - mxApp.splashScreenPresenter = SplashScreenPresenter() - - ReactNative.instance.setup(mxApp) + let mxApp = MendixApp.init( + identifier: nil, + bundleUrl: url, + runtimeUrl: AppUrl.forRuntime(AppPreferences.safeAppUrl), + warningsFilter: AppPreferences.devModeEnabled ? WarningsFilter.partial : WarningsFilter.none, + isDeveloperApp: true, + clearDataAtLaunch: clearDataSwitch.isOn, + splashScreenPresenter: SplashScreenPresenter(), + reactLoading: UIStoryboard.launchScreen, + enableThreeFingerGestures: false + ) + ReactNative.shared.setup(mxApp) } } diff --git a/ios/Dev/MendixApp/MendixAppViewController.swift b/ios/Dev/MendixApp/MendixAppViewController.swift index d99332742..1ed1621a0 100644 --- a/ios/Dev/MendixApp/MendixAppViewController.swift +++ b/ios/Dev/MendixApp/MendixAppViewController.swift @@ -1,11 +1,12 @@ import UIKit +import MendixNative class MendixAppViewController: UIViewController, ReactNativeDelegate { override func viewDidLoad() { super.viewDidLoad() - ReactNative.instance.delegate = self - ReactNative.instance.start() + ReactNative.shared.delegate = self + ReactNative.shared.start() } override func viewDidAppear(_ animated: Bool) { diff --git a/ios/Dev/MendixApp/MendixReactWindowExtensions.swift b/ios/Dev/MendixApp/MendixReactWindowExtensions.swift index 73e7737ff..3d5de1317 100644 --- a/ios/Dev/MendixApp/MendixReactWindowExtensions.swift +++ b/ios/Dev/MendixApp/MendixReactWindowExtensions.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/Extensions/AppDelegate+Extension.swift b/ios/Extensions/AppDelegate+Extension.swift new file mode 100644 index 000000000..e10285645 --- /dev/null +++ b/ios/Extensions/AppDelegate+Extension.swift @@ -0,0 +1,32 @@ +import Foundation +import MendixNative + +extension AppDelegate { + + func clearKeychain() { + let KEY_HAS_RUN_BEFORE = "HAS_RUN_BEFORE" + if UserDefaults.standard.bool(forKey: KEY_HAS_RUN_BEFORE) == false { + UserDefaults.standard.set(true, forKey: KEY_HAS_RUN_BEFORE) + KeychainHelper.clear() + } + } + + func setupUI() { + UIDatePicker.appearance().preferredDatePickerStyle = .wheels + } + + func showUnrecoverableDialog(title: String, message: String) { + let controller = UIAlertController(title: title, message: message, preferredStyle: .alert) + controller.addAction(.init(title: "Close", style: .default, handler: {_ in + fatalError(message) + })) + window.rootViewController?.present(controller, animated: true, completion: nil) + } + + func setupApp(application: UIApplication, launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) { + setUpProvider() + super.application(application, didFinishLaunchingWithOptions: launchOptions) + clearKeychain() + setupUI() + } +} diff --git a/ios/MendixAppDelegate.h b/ios/MendixAppDelegate.h deleted file mode 100644 index d3e6e5016..000000000 --- a/ios/MendixAppDelegate.h +++ /dev/null @@ -1,28 +0,0 @@ -#import -#import - -@interface MendixAppDelegate : NSObject - -+ (void) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; - -+ (void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification; - -+ (void) application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo -fetchCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler; - -+ (void) application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings; - -+ (BOOL) application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options; - -+ (void) application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation; - -+ (void) userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler; - -+ (void) userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler; - -+ (UIResponder *_Nullable) delegate; - -+ (void) setDelegate:(UIResponder *_Nonnull)value; - -+ (NSURL *) getJSBundleFile; -@end diff --git a/ios/MendixAppDelegate.swift b/ios/MendixAppDelegate.swift new file mode 100644 index 000000000..e98ce7743 --- /dev/null +++ b/ios/MendixAppDelegate.swift @@ -0,0 +1,42 @@ +import Foundation +import UIKit +import UserNotifications +import React +import MendixNative + +class MendixAppDelegate: NSObject { + + static var delegate: (UIResponder & UIApplicationDelegate & UNUserNotificationCenterDelegate)? + + static func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) { + + } + + static func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { + + } + + static func application(_ application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) { + + } + + static func application(_ application: UIApplication, openURL url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool { + return true + } + + static func application(_ application: UIApplication, openURL url: URL, sourceApplication: String?, annotation: Any) { + + } + + static func userNotificationCenter(_ center: UNUserNotificationCenter, willPresentNotification notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { + + } + + static func userNotificationCenter(_ center: UNUserNotificationCenter, didReceiveNotificationResponse response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) { + + } + + static func getJSBundleFile() -> URL? { + return BundleHelper.getJSBundleFile() + } +} diff --git a/ios/Podfile b/ios/Podfile index cc5bb7abc..66ccdc779 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -9,8 +9,8 @@ def node_require(script) )", __dir__]).strip end -# Explicitly disable new architecture until all dependencies are updated -ENV['RCT_NEW_ARCH_ENABLED'] = '0' +# Explicitly enable new architecture +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') @@ -47,6 +47,8 @@ def common_pods use_react_native!( :path => config[:reactNativePath], + :hermes_enabled => true, + :fabric_enabled => true, # An absolute path to your application root. :app_path => "#{Pod::Config.instance.installation_root}/.." ) @@ -64,6 +66,7 @@ def common_pods # Required MendixNative dependency pod 'SSZipArchive' + pod 'RNCAsyncStorage', :path=> "../node_modules/@react-native-async-storage/async-storage", :modular_headers => true # REQUIRED PODS END end @@ -91,24 +94,8 @@ post_install do |installer| # :ccache_enabled => true ) - - 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| target.build_configurations.each do |config| - if target.name == "React" - if config.name == "ReleaseDevApp" - config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)'] - config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] << "DEBUG=1" - end - end - config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)', '_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION'] # Specify 'Swift Version: 5.0' for resolving archieve errors. if target.name == 'react-native-video' config.build_settings['SWIFT_VERSION'] = '5.0' @@ -118,15 +105,4 @@ post_install do |installer| end end end - # Ensure deployment_target is set correctly for all projects - installer.generated_projects.each do |project| - project.targets.each do |target| - target.build_configurations.each do |config| - config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = deployment_target - end - end - project.build_configurations.each do |bc| - bc.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = deployment_target - end - end end diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 3f75b4e41..a0cbf0115 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -26,6 +26,32 @@ PODS: - libwebp/sharpyuv (1.5.0) - libwebp/webp (1.5.0): - libwebp/sharpyuv + - MendixNative (0.1.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-RCTAppDelegate + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactAppDependencyProvider + - ReactCodegen + - ReactCommon + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - RNCAsyncStorage + - SSZipArchive + - Yoga - op-sqlite (15.0.7): - DoubleConversion - glog @@ -1252,7 +1278,26 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon/turbomodule/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 @@ -1296,6 +1341,28 @@ PODS: - ReactCommon/turbomodule/core - Yoga - 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 @@ -1317,7 +1384,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 @@ -1340,6 +1471,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 @@ -1353,6 +1505,7 @@ PODS: - React-featureflags - React-graphics - React-ImageManager + - react-native-video/Fabric - React-NativeModulesApple - React-RCTFabric - React-rendererdebug @@ -1651,22 +1804,117 @@ PODS: - React-perflogger (= 0.77.3) - React-utils (= 0.77.3) - 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 - 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.11.1): + - DoubleConversion + - glog + - hermes-engine - libavif/core (~> 0.11.1) - libavif/libdav1d (~> 0.11.1) + - 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 - SDWebImage (>= 5.19.1) - SDWebImageAVIFCoder (~> 0.11.0) - SDWebImageWebPCoder (~> 0.14) + - Yoga - RNGestureHandler (2.23.1): - DoubleConversion - glog @@ -1689,14 +1937,52 @@ PODS: - ReactCommon/turbomodule/core - Yoga - 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 @@ -1785,6 +2071,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 @@ -1807,7 +2116,48 @@ PODS: - ReactCommon/turbomodule/core - Yoga - 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 - RNVectorIcons (10.2.0): - DoubleConversion - glog @@ -1851,6 +2201,7 @@ DEPENDENCIES: - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - 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`)" - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) @@ -1964,6 +2315,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: @@ -2137,86 +2490,87 @@ SPEC CHECKSUMS: libavif: 84bbb62fb232c3018d6f1bab79beea87e35de7b7 libdav1d: 23581a4d8ec811ff171ed5e2e05cd27bad64c39f libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8 - op-sqlite: bd4cc931ab939b14434fb7a1981a3fd82f5b4bb6 + MendixNative: 0405210432ee514e2d7906fe5714f719eb6d7c75 + op-sqlite: 12554de3e1a0cb86cbad3cf1f0c50450f57d3855 OpenSSL-Universal: 6082b0bf950e5636fe0d78def171184e2b3899c2 - 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-blob-util: 64a732c0b8bb7f4928905e16ea8dc5cde6fb4832 - react-native-cameraroll: fa835a59246b90ad2fa33c5e008fc25752ba7b80 - react-native-image-picker: f104798044ef2c9211c42a48025d0693b5f34981 - react-native-pager-view: c3b8efd9000368320e3710c01f38a83bd2170779 - react-native-safe-area-context: 849d7df29ecb2a7155c769c0b76849ba952c2aa3 - react-native-video: fcf88c7e93d7736a529f97f70ce92269684596ec + 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-blob-util: f82bbc6f071231ae76e1c03b77290de1781df313 + react-native-cameraroll: 4cc4ad5c832894a7729978900b3b3a75f6ed756c + react-native-image-picker: ede3b0b991aae11b3c1d61c187a833720e255277 + react-native-pager-view: 932eb80f9448b463b63badae42dd20c11f3e37dd + react-native-safe-area-context: 7e513d737b0b5c1d10bbe0e5fcc9f925a7be144c + react-native-video: 7122a2b9397bf722709321eac0630e8f59a404e7 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 - RNBootSplash: 2c6b226e3ad3c97d16b6d53bd75d0cd281646bfb - RNCAsyncStorage: d35c79ffba52c1013013e16b1fc295aec2feabb6 - RNCPicker: 4f6d5e8d107064be32dfc8f1bcb5a3741135db0b - RNDateTimePicker: 40ffda97d071a98a10fdca4fa97e3977102ccd14 - RNDeviceInfo: feea80a690d2bde1fe51461cf548039258bd03f2 - RNFastImage: 1e4df4dcbe3b0804dba6a276de8bb78eaae344cf - RNGestureHandler: de78ee811b577ae76d679715e5e9298b23a8c278 - RNLocalize: 4f22418187ecd5ca693231093ff1d912d1b3c9bc - RNNotifee: 4a6ee5c7deaf00e005050052d73ee6315dff7ec9 - RNPermissions: 32d5d0e1c56f6321c59a2780bfeef20fc728cfc6 - RNReanimated: 10df3198b328f8a0677fdaaa2b449db53cdbff40 - RNScreens: e9bb7c3063237983e75d01bb45ce591cc4e7afc2 - RNSVG: 515a902fc18a375907eb4c3abec0b803fbfa37ef - RNVectorIcons: 85ed086927e7548461d593e68b190c38a6606a05 + React-utils: 6b632afea2c4ec4b782497fb61af859a5b1b355f + ReactAppDependencyProvider: 31015410a4a53b9fd0a908ad4d6e3e2b9a25086a + ReactCodegen: eac5d74d85dff515b48a5c36f154bc4128f217e6 + ReactCommon: bf4612cba0fa356b529385029f470d5529dddde4 + RNBootSplash: 6a83473bb3c1e6c2bfd36a51e5c6e1d343ec76b9 + RNCAsyncStorage: 50a24d7ae3bcba70a39f600366dbb23ca9ccf81c + RNCPicker: cfb51a08c6e10357d9a65832e791825b0747b483 + RNDateTimePicker: b49449a7da91211c6fcc60acd346a0ddf0d25256 + RNDeviceInfo: d863506092aef7e7af3a1c350c913d867d795047 + RNFastImage: f24b249b591b90e1a302527bb4ff2ed18ba5a8c8 + RNGestureHandler: 63273d6c9936df3da2461766615eade82284adac + RNLocalize: 22c9512d077379783fb41a4b47761ebe7cf87265 + RNNotifee: 5e3b271e8ea7456a36eec994085543c9adca9168 + RNPermissions: 0c74e6a59d8bce3f80d1c70b0cb311b96eeea6b5 + RNReanimated: 8a4ea733f88a33379150eb2e73b375e14de81e84 + RNScreens: 5a1573ceb1a13b2d0663cbfb42cb4aa8803554eb + RNSVG: 2089e8b3a145acb2f392017279790f007f934567 + RNVectorIcons: bd818296a51dc2bb8c3bd97a3ca399df1afe216d SDWebImage: 9f177d83116802728e122410fb25ad88f5c7608a SDWebImageAVIFCoder: afe194a084e851f70228e4be35ef651df0fc5c57 SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380 @@ -2224,6 +2578,6 @@ SPEC CHECKSUMS: SSZipArchive: 8a6ee5677c8e304bebc109e39cf0da91ccef22ea Yoga: 92f3bb322c40a86b7233b815854730442e01b8c4 -PODFILE CHECKSUM: db7be98fae80b54b4f99987282d8e88ba12b8124 +PODFILE CHECKSUM: f83815b440871ddc4d9bac375e7dc5aef13dcf51 COCOAPODS: 1.16.2 diff --git a/ios/RNSplashScreen+StoryBoardSplash.h b/ios/RNSplashScreen+StoryBoardSplash.h deleted file mode 100644 index c79ae147f..000000000 --- a/ios/RNSplashScreen+StoryBoardSplash.h +++ /dev/null @@ -1,7 +0,0 @@ -#import -#import "RNBootSplash.h" - -@interface RNBootSplash (StoryBoardSplash) -+ (void)showStoryBoard:(NSString *)name inRootView:(UIView *)rootView; -+ (void)hideStoryBoard; -@end diff --git a/ios/SplashScreenPresenter.h b/ios/SplashScreenPresenter.h deleted file mode 100644 index bbd37cb15..000000000 --- a/ios/SplashScreenPresenter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import -#import - -@interface SplashScreenPresenter : NSObject -@end diff --git a/ios/SplashScreenPresenter.m b/ios/SplashScreenPresenter.m deleted file mode 100644 index 3c6c96aeb..000000000 --- a/ios/SplashScreenPresenter.m +++ /dev/null @@ -1,18 +0,0 @@ -#import -#import "SplashScreenPresenter.h" -#import "RNBootSplash.h" -#import "StoryBoardSplash.m" - -@implementation SplashScreenPresenter - -- (void) show:(UIView * _Nullable)rootView { - if (rootView != nil) { - [RNBootSplash showStoryBoard:@"LaunchScreen" inRootView:rootView]; - } -} - -- (void) hide { - [RNBootSplash hideStoryBoard]; -} - -@end diff --git a/ios/SplashScreenPresenter.swift b/ios/SplashScreenPresenter.swift new file mode 100644 index 000000000..62cb6cdd2 --- /dev/null +++ b/ios/SplashScreenPresenter.swift @@ -0,0 +1,50 @@ +import UIKit +import MendixNative +import RNBootSplash + +class SplashScreenPresenter: SplashScreenPresenterProtocol { + func show(_ rootView: UIView?) { + if let rootView { + RNBootSplash.showStoryBoard(.launchScreen, rootView: rootView) + } + } + + func hide() { + RNBootSplash.hideStoryBoard() + } +} + +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) + static let launchApp: UIStoryboard = .init(name: "LaunchApp", bundle: nil) +} + + +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/StoryBoardSplash.m b/ios/StoryBoardSplash.m deleted file mode 100644 index 3ae55f5d1..000000000 --- a/ios/StoryBoardSplash.m +++ /dev/null @@ -1,33 +0,0 @@ -#import -#import "RNSplashScreen+StoryBoardSplash.h" - -static UIView *loadingView = nil; - -@implementation RNBootSplash (StoryBoardSplash) - -+ (void)showStoryBoard:(NSString *)name inRootView:(UIView *)rootView { - if (!loadingView) { - UIStoryboard *board = [UIStoryboard storyboardWithName:name bundle:[NSBundle mainBundle]]; - UIViewController *viewController = [board instantiateInitialViewController]; - loadingView = viewController.view; - loadingView.frame = [[UIScreen mainScreen] bounds]; - } - [rootView addSubview:loadingView]; -} - -+ (void)hideStoryBoard { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [UIView animateWithDuration:0.3 - delay:0 - options:UIViewAnimationOptionCurveEaseIn - animations:^{ - loadingView.alpha = 0.0; - } - completion:^(BOOL finished){ - [loadingView removeFromSuperview]; - loadingView.alpha = 1.0; - }]; - }); -} - -@end diff --git a/ios/SwiftInterop.swift b/ios/SwiftInterop.swift deleted file mode 100644 index aaa00250e..000000000 --- a/ios/SwiftInterop.swift +++ /dev/null @@ -1,5 +0,0 @@ -// DO NOT DELETE -// -// This file was created to enable Swift interop for the Swift-based libraries - -import Foundation diff --git a/ios/main.m b/ios/main.m deleted file mode 100644 index b1df44b95..000000000 --- a/ios/main.m +++ /dev/null @@ -1,9 +0,0 @@ -#import - -#import "AppDelegate.h" - -int main(int argc, char * argv[]) { - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/ios/nativeTemplate-Bridging-Header.h b/ios/nativeTemplate-Bridging-Header.h index ee9f437df..1e9b70778 100644 --- a/ios/nativeTemplate-Bridging-Header.h +++ b/ios/nativeTemplate-Bridging-Header.h @@ -2,7 +2,6 @@ // Use this file to import your target's public headers that you would like to expose to Swift. // -#import "AppDelegate.h" -#import -#import "SplashScreenPresenter.h" +#import "RNBootSplash.h" +#import "IQKeyboardManager.h" diff --git a/ios/nativeTemplate.xcodeproj/project.pbxproj b/ios/nativeTemplate.xcodeproj/project.pbxproj index 063e5e18f..9b0ca4597 100644 --- a/ios/nativeTemplate.xcodeproj/project.pbxproj +++ b/ios/nativeTemplate.xcodeproj/project.pbxproj @@ -25,26 +25,19 @@ 1A0B3AF323990C2400388BF7 /* config.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 1A0B3AF223990C2400388BF7 /* config.xcconfig */; }; 1A0B3AFD23992F8200388BF7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 1A0B83DB22E09B2600EA1E51 /* Bundle in Resources */ = {isa = PBXBuildFile; fileRef = 1A0B83DA22E09B2500EA1E51 /* Bundle */; }; - 1AAE158923C5FEFC00F855F4 /* SwiftInterop.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AAE158823C5FEFC00F855F4 /* SwiftInterop.swift */; }; - 2C4991D124C593C3008403BB /* MendixAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C4991D024C593C3008403BB /* MendixAppDelegate.m */; }; - 2C4991D224C593C3008403BB /* MendixAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C4991D024C593C3008403BB /* MendixAppDelegate.m */; }; - 2C887F7224B7BFFE0003DC53 /* SplashScreenPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C887F7124B7BFFE0003DC53 /* SplashScreenPresenter.m */; }; - 2C887F7324B7BFFE0003DC53 /* SplashScreenPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C887F7124B7BFFE0003DC53 /* SplashScreenPresenter.m */; }; 2C887FDA24B88A0E0003DC53 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2C887FD924B88A0E0003DC53 /* LaunchScreen.storyboard */; }; 2C887FDB24B88A0E0003DC53 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2C887FD924B88A0E0003DC53 /* LaunchScreen.storyboard */; }; - 2C887FE224B8948F0003DC53 /* StoryBoardSplash.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C887FE124B8948F0003DC53 /* StoryBoardSplash.m */; }; - 2C887FE324B8948F0003DC53 /* StoryBoardSplash.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C887FE124B8948F0003DC53 /* StoryBoardSplash.m */; }; 572D87C4D9F46E7564D1FE09 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = DBB22F41E3AF5D95F9759402 /* PrivacyInfo.xcprivacy */; }; 9DF4091425A46A56E2A9A405 /* libPods-nativeTemplate.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 73F36AC2CCD37CCD4E7B1BB8 /* libPods-nativeTemplate.a */; }; + 9E9B12F82EAB8BA500714B41 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E9B12F62EAB8BA500714B41 /* AppDelegate.swift */; }; + 9E9B12FA2EAB8C2800714B41 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E9B12F92EAB8C2800714B41 /* AppDelegate.swift */; }; + 9E9B13002EAB8D2600714B41 /* MendixAppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E9B12FF2EAB8D2600714B41 /* MendixAppDelegate.swift */; }; + 9E9B13012EAB8D2600714B41 /* MendixAppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E9B12FF2EAB8D2600714B41 /* MendixAppDelegate.swift */; }; + 9E9B13032EAB8EB700714B41 /* SplashScreenPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E9B13022EAB8EB700714B41 /* SplashScreenPresenter.swift */; }; + 9E9B13042EAB8EB700714B41 /* SplashScreenPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E9B13022EAB8EB700714B41 /* SplashScreenPresenter.swift */; }; B28D6DAD97033B55832E5853 /* libPods-dev.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 11502903429AC2E6E69E6482 /* libPods-dev.a */; }; C5A009082BE291FE00F10EC1 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = C5A009072BE291FE00F10EC1 /* PrivacyInfo.xcprivacy */; }; - DF6591BE26650DF3006E3A5E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DF6591BD26650DF3006E3A5E /* AppDelegate.m */; }; - E8FF139E28C8D4510066AC98 /* mendixnative.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = E8B1254D2869E1AF000161E3 /* mendixnative.xcframework */; }; - E8FF139F28C8D4520066AC98 /* mendixnative.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = E8B1254D2869E1AF000161E3 /* mendixnative.xcframework */; }; EB55620C22E0755000E19C26 /* glyphicons-halflings-regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EB55620B22E0755000E19C26 /* glyphicons-halflings-regular.ttf */; }; - EB55E08A23BF7FF700E3FB34 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = EB78BDD823BF47FE00E56827 /* AppDelegate.m */; }; - EB59215B23BFA1F5001D6155 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = EB59215A23BFA1F5001D6155 /* main.m */; }; - EB59215C23BFA1F5001D6155 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = EB59215A23BFA1F5001D6155 /* main.m */; }; ED297163215061F000B7C4FE /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED297162215061F000B7C4FE /* JavaScriptCore.framework */; }; /* End PBXBuildFile section */ @@ -68,16 +61,9 @@ 1A0B3AF02399095C00388BF7 /* config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = config.xcconfig; sourceTree = ""; }; 1A0B3AF223990C2400388BF7 /* config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = config.xcconfig; sourceTree = ""; }; 1A0B83DA22E09B2500EA1E51 /* Bundle */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Bundle; sourceTree = ""; }; - 1AAE158823C5FEFC00F855F4 /* SwiftInterop.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftInterop.swift; sourceTree = ""; }; 24E659414C7D37BED2C1EE79 /* Pods-dev.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dev.debug.xcconfig"; path = "Target Support Files/Pods-dev/Pods-dev.debug.xcconfig"; sourceTree = ""; }; 2C005A7823D5B1E200003E29 /* nativeTemplate.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = nativeTemplate.entitlements; path = nativeTemplate/nativeTemplate.entitlements; sourceTree = ""; }; - 2C4991D024C593C3008403BB /* MendixAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MendixAppDelegate.m; sourceTree = ""; }; - 2C4991D324C595F0008403BB /* MendixAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MendixAppDelegate.h; sourceTree = ""; }; - 2C887F7124B7BFFE0003DC53 /* SplashScreenPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SplashScreenPresenter.m; sourceTree = ""; }; - 2C887F7424B7C0440003DC53 /* SplashScreenPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SplashScreenPresenter.h; sourceTree = ""; }; 2C887FD924B88A0E0003DC53 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = nativeTemplate/Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 2C887FE024B893FC0003DC53 /* RNSplashScreen+StoryBoardSplash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "RNSplashScreen+StoryBoardSplash.h"; sourceTree = ""; }; - 2C887FE124B8948F0003DC53 /* StoryBoardSplash.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StoryBoardSplash.m; sourceTree = ""; }; 2E683DD88AD2190EB6610BB7 /* Pods-nativeTemplate.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-nativeTemplate.debug.xcconfig"; path = "Target Support Files/Pods-nativeTemplate/Pods-nativeTemplate.debug.xcconfig"; sourceTree = ""; }; 3A1AE629EDD2EFAEE88E17A6 /* Pods-dev.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dev.release.xcconfig"; path = "Target Support Files/Pods-dev/Pods-dev.release.xcconfig"; sourceTree = ""; }; 3A50E1C430A9EB98E247701D /* Pods-nativeTemplate.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-nativeTemplate.debug.xcconfig"; path = "Target Support Files/Pods-nativeTemplate/Pods-nativeTemplate.debug.xcconfig"; sourceTree = ""; }; @@ -87,29 +73,41 @@ 73F36AC2CCD37CCD4E7B1BB8 /* libPods-nativeTemplate.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-nativeTemplate.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 7EEDF4024CB6865C31DBA5BB /* Pods-nativeTemplate.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-nativeTemplate.release.xcconfig"; path = "Target Support Files/Pods-nativeTemplate/Pods-nativeTemplate.release.xcconfig"; sourceTree = ""; }; 9A27E05F0AD54B417B79E303 /* Pods-dev.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dev.debug.xcconfig"; path = "Target Support Files/Pods-dev/Pods-dev.debug.xcconfig"; sourceTree = ""; }; + 9E9B12F62EAB8BA500714B41 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 9E9B12F92EAB8C2800714B41 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 9E9B12FF2EAB8D2600714B41 /* MendixAppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MendixAppDelegate.swift; sourceTree = ""; }; + 9E9B13022EAB8EB700714B41 /* SplashScreenPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashScreenPresenter.swift; sourceTree = ""; }; BFF2B70938A7895ADAB4177A /* Pods-dev.releasedevapp.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dev.releasedevapp.xcconfig"; path = "Target Support Files/Pods-dev/Pods-dev.releasedevapp.xcconfig"; sourceTree = ""; }; C5A009072BE291FE00F10EC1 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; CBB85EF00DCBBB622B4C25E7 /* Pods-nativeTemplate.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-nativeTemplate.release.xcconfig"; path = "Target Support Files/Pods-nativeTemplate/Pods-nativeTemplate.release.xcconfig"; sourceTree = ""; }; DBB22F41E3AF5D95F9759402 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; DDC51A1160C5ED4D3C396705 /* Pods-dev.releasedevapp.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dev.releasedevapp.xcconfig"; path = "Target Support Files/Pods-dev/Pods-dev.releasedevapp.xcconfig"; sourceTree = ""; }; - DF6591BD26650DF3006E3A5E /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - E8B1254D2869E1AF000161E3 /* mendixnative.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = mendixnative.xcframework; path = "../node_modules/@mendix/native/ios/mendixnative.xcframework"; sourceTree = ""; }; EB55620B22E0755000E19C26 /* glyphicons-halflings-regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "glyphicons-halflings-regular.ttf"; sourceTree = ""; }; - EB59215A23BFA1F5001D6155 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; EB78BDD623BF47FD00E56827 /* nativeTemplate-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "nativeTemplate-Bridging-Header.h"; sourceTree = ""; }; - EB78BDD823BF47FE00E56827 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - EB78BDDB23BF483700E56827 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; EBC80A6022DF4205007E5F3D /* config.debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = config.debug.xcconfig; sourceTree = ""; }; EBC80A6122DF42DF007E5F3D /* config.release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = config.release.xcconfig; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ +/* Begin PBXFileSystemSynchronizedRootGroup section */ + 9E9B12FB2EAB8C9300714B41 /* Extensions */ = { + isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + ); + explicitFileTypes = { + }; + explicitFolders = ( + ); + path = Extensions; + sourceTree = ""; + }; +/* End PBXFileSystemSynchronizedRootGroup section */ + /* Begin PBXFrameworksBuildPhase section */ 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E8FF139E28C8D4510066AC98 /* mendixnative.xcframework in Frameworks */, ED297163215061F000B7C4FE /* JavaScriptCore.framework in Frameworks */, 9DF4091425A46A56E2A9A405 /* libPods-nativeTemplate.a in Frameworks */, ); @@ -121,7 +119,6 @@ files = ( 1A0B3AB92397DA6800388BF7 /* JavaScriptCore.framework in Frameworks */, B28D6DAD97033B55832E5853 /* libPods-dev.a in Frameworks */, - E8FF139F28C8D4520066AC98 /* mendixnative.xcframework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -131,22 +128,16 @@ 13B07FAE1A68108700A75B9A /* NativeTemplate */ = { isa = PBXGroup; children = ( + 9E9B12FB2EAB8C9300714B41 /* Extensions */, 1A0B83DA22E09B2500EA1E51 /* Bundle */, EBC80A5F22DF41DD007E5F3D /* Config */, 13B07FB51A68108700A75B9A /* Images.xcassets */, - EB59215A23BFA1F5001D6155 /* main.m */, - EB78BDDB23BF483700E56827 /* AppDelegate.h */, - EB78BDD823BF47FE00E56827 /* AppDelegate.m */, - 2C887F7424B7C0440003DC53 /* SplashScreenPresenter.h */, - 2C887F7124B7BFFE0003DC53 /* SplashScreenPresenter.m */, - 2C887FE024B893FC0003DC53 /* RNSplashScreen+StoryBoardSplash.h */, - 2C887FE124B8948F0003DC53 /* StoryBoardSplash.m */, - 2C4991D024C593C3008403BB /* MendixAppDelegate.m */, - 2C4991D324C595F0008403BB /* MendixAppDelegate.h */, 13B07FB61A68108700A75B9A /* Info.plist */, - 1AAE158823C5FEFC00F855F4 /* SwiftInterop.swift */, 2C887FD924B88A0E0003DC53 /* LaunchScreen.storyboard */, 2C005A7823D5B1E200003E29 /* nativeTemplate.entitlements */, + 9E9B12F62EAB8BA500714B41 /* AppDelegate.swift */, + 9E9B12FF2EAB8D2600714B41 /* MendixAppDelegate.swift */, + 9E9B13022EAB8EB700714B41 /* SplashScreenPresenter.swift */, ); name = NativeTemplate; sourceTree = ""; @@ -157,7 +148,7 @@ 1A0B3AE82398183900388BF7 /* Config */, 1A0B3AD12397E14800388BF7 /* MendixApp */, 1A0B3ACD2397E06900388BF7 /* LaunchApp */, - DF6591BD26650DF3006E3A5E /* AppDelegate.m */, + 9E9B12F92EAB8C2800714B41 /* AppDelegate.swift */, ); path = Dev; sourceTree = ""; @@ -198,7 +189,6 @@ 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { isa = PBXGroup; children = ( - E8B1254D2869E1AF000161E3 /* mendixnative.xcframework */, ED297162215061F000B7C4FE /* JavaScriptCore.framework */, 11502903429AC2E6E69E6482 /* libPods-dev.a */, 73F36AC2CCD37CCD4E7B1BB8 /* libPods-nativeTemplate.a */, @@ -296,6 +286,9 @@ ); dependencies = ( ); + fileSystemSynchronizedGroups = ( + 9E9B12FB2EAB8C9300714B41 /* Extensions */, + ); name = nativeTemplate; productName = "Hello World"; productReference = 13B07F961A680F5B00A75B9A /* nativeTemplate.app */; @@ -316,6 +309,9 @@ ); dependencies = ( ); + fileSystemSynchronizedGroups = ( + 9E9B12FB2EAB8C9300714B41 /* Extensions */, + ); name = dev; productName = Dev; productReference = 1A0B3A922397DA2300388BF7 /* NativeTemplateDev.app */; @@ -648,12 +644,9 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2C887FE224B8948F0003DC53 /* StoryBoardSplash.m in Sources */, - EB59215B23BFA1F5001D6155 /* main.m in Sources */, - 2C887F7224B7BFFE0003DC53 /* SplashScreenPresenter.m in Sources */, - 2C4991D124C593C3008403BB /* MendixAppDelegate.m in Sources */, - 1AAE158923C5FEFC00F855F4 /* SwiftInterop.swift in Sources */, - EB55E08A23BF7FF700E3FB34 /* AppDelegate.m in Sources */, + 9E9B12F82EAB8BA500714B41 /* AppDelegate.swift in Sources */, + 9E9B13002EAB8D2600714B41 /* MendixAppDelegate.swift in Sources */, + 9E9B13042EAB8EB700714B41 /* SplashScreenPresenter.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -661,17 +654,15 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 9E9B12FA2EAB8C2800714B41 /* AppDelegate.swift in Sources */, 1A0B3AE22397FBF600388BF7 /* MendixReactWindowExtensions.swift in Sources */, - 2C887FE324B8948F0003DC53 /* StoryBoardSplash.m in Sources */, + 9E9B13012EAB8D2600714B41 /* MendixAppDelegate.swift in Sources */, 1A0B3AD52397E16900388BF7 /* MendixAppViewController.swift in Sources */, + 9E9B13032EAB8EB700714B41 /* SplashScreenPresenter.swift in Sources */, 1A0B3ADE2397F36300388BF7 /* QRView.swift in Sources */, - 2C887F7324B7BFFE0003DC53 /* SplashScreenPresenter.m in Sources */, 1A0B3AE02397F38300388BF7 /* QRMaskView.swift in Sources */, - DF6591BE26650DF3006E3A5E /* AppDelegate.m in Sources */, 1A0B3A992397DA2300388BF7 /* LaunchAppViewController.swift in Sources */, 1A0B3ADC2397F1FF00388BF7 /* URLValidator.swift in Sources */, - 2C4991D224C593C3008403BB /* MendixAppDelegate.m in Sources */, - EB59215C23BFA1F5001D6155 /* main.m in Sources */, 1A0B3AD82397EB4000388BF7 /* RoundedButton.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -698,7 +689,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = nativeTemplate/nativeTemplate.entitlements; CURRENT_PROJECT_VERSION = 1; - DEAD_CODE_STRIPPING = NO; + DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = BC32QNM6AD; ENABLE_BITCODE = "$(inherited)"; FRAMEWORK_SEARCH_PATHS = ( @@ -743,7 +734,7 @@ "$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase/**", ); INFOPLIST_FILE = nativeTemplate/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -823,7 +814,7 @@ "$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase/**", ); INFOPLIST_FILE = nativeTemplate/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -879,7 +870,7 @@ "${SRCROOT}/../node_modules/@mendix/native/ios/**", ); INFOPLIST_FILE = NativeTemplate/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -935,7 +926,7 @@ "${SRCROOT}/../node_modules/@mendix/native/ios/**", ); INFOPLIST_FILE = NativeTemplate/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1080,7 +1071,7 @@ "$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase/**", ); INFOPLIST_FILE = nativeTemplate/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1137,7 +1128,7 @@ "${SRCROOT}/../node_modules/@mendix/native/ios/**", ); INFOPLIST_FILE = NativeTemplate/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/package-lock.json b/package-lock.json index 81de6cfd4..2cf6213b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,6 @@ "dependencies": { "@d11/react-native-fast-image": "8.11.1", "@gorhom/bottom-sheet": "^5.1.1", - "@mendix/native": "10.3.1", "@notifee/react-native": "9.1.8", "@op-engineering/op-sqlite": "15.0.7", "@react-native-async-storage/async-storage": "2.0.0", @@ -22,6 +21,7 @@ "@react-native-community/datetimepicker": "8.2.0", "@react-native-picker/picker": "2.11.0", "@react-navigation/native": "7.0.14", + "mendix-native": "github:mendix/mendix-native.git#release/mx-11.5", "react-native": "0.77.3", "react-native-blob-util": "0.21.2", "react-native-bootsplash": "6.3.10", @@ -2008,11 +2008,6 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@mendix/native": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/@mendix/native/-/native-10.3.1.tgz", - "integrity": "sha512-2c5o54qQoCGkqDu7z1uvvvRUNe4Pq6XrIaBb+pLWQCVnoUXCkKcr9QZQvou9DrGuEml+45+xDKVx4eS0ZfOBUQ==" - }, "node_modules/@mendix/native-mobile-toolkit": { "version": "1.0.127", "resolved": "https://registry.npmjs.org/@mendix/native-mobile-toolkit/-/native-mobile-toolkit-1.0.127.tgz", @@ -6711,6 +6706,21 @@ "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.1.2", + "resolved": "git+ssh://git@github.com/mendix/mendix-native.git#03e82ba5140b6816cea4c040f764a59af9b6282a", + "license": "MIT", + "workspaces": [ + "example" + ], + "peerDependencies": { + "@op-engineering/op-sqlite": "*", + "@react-native-async-storage/async-storage": "*", + "react": "*", + "react-native": "*", + "react-native-gesture-handler": "*" + } + }, "node_modules/merge-options": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", diff --git a/package.json b/package.json index abff7b79c..288c75c2d 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "dependencies": { "@d11/react-native-fast-image": "8.11.1", "@gorhom/bottom-sheet": "^5.1.1", - "@mendix/native": "10.3.1", + "mendix-native": "github:mendix/mendix-native.git#release/mx-11.5", "@notifee/react-native": "9.1.8", "@op-engineering/op-sqlite": "15.0.7", "@react-native-async-storage/async-storage": "2.0.0", diff --git a/patches/react-native-bootsplash+6.3.10.patch b/patches/react-native-bootsplash+6.3.10.patch index 07e3a0e9d..76725e970 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) ++ } + } + } }