├── Android ├── MiniAppCaller │ ├── app │ │ ├── .gitignore │ │ ├── src │ │ │ ├── main │ │ │ │ ├── res │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ │ ├── ic_launcher.webp │ │ │ │ │ │ └── ic_launcher_round.webp │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ │ ├── ic_launcher.webp │ │ │ │ │ │ └── ic_launcher_round.webp │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ │ ├── ic_launcher.webp │ │ │ │ │ │ └── ic_launcher_round.webp │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ │ ├── ic_launcher.webp │ │ │ │ │ │ └── ic_launcher_round.webp │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ │ ├── ic_launcher.webp │ │ │ │ │ │ └── ic_launcher_round.webp │ │ │ │ │ ├── raw │ │ │ │ │ │ ├── superapp_json │ │ │ │ │ │ └── superapp_crt │ │ │ │ │ ├── mipmap-anydpi-v26 │ │ │ │ │ │ ├── ic_launcher.xml │ │ │ │ │ │ └── ic_launcher_round.xml │ │ │ │ │ ├── values │ │ │ │ │ │ ├── strings.xml │ │ │ │ │ │ ├── colors.xml │ │ │ │ │ │ └── themes.xml │ │ │ │ │ ├── xml │ │ │ │ │ │ ├── network_security_config.xml │ │ │ │ │ │ ├── backup_rules.xml │ │ │ │ │ │ └── data_extraction_rules.xml │ │ │ │ │ ├── drawable-v24 │ │ │ │ │ │ └── ic_launcher_foreground.xml │ │ │ │ │ └── values-night │ │ │ │ │ │ └── themes.xml │ │ │ │ ├── java │ │ │ │ │ └── com │ │ │ │ │ │ └── genexus │ │ │ │ │ │ └── superapps │ │ │ │ │ │ └── bankx │ │ │ │ │ │ ├── Flavor.kt │ │ │ │ │ │ ├── application │ │ │ │ │ │ ├── AppEntityService.kt │ │ │ │ │ │ ├── AppEntityDataProvider.kt │ │ │ │ │ │ ├── MiniAppLifecycleListener.kt │ │ │ │ │ │ ├── OnMiniAppStoppedListener.kt │ │ │ │ │ │ └── BankingApplication.kt │ │ │ │ │ │ ├── ui │ │ │ │ │ │ ├── theme │ │ │ │ │ │ │ ├── Color.kt │ │ │ │ │ │ │ ├── Shape.kt │ │ │ │ │ │ │ ├── Type.kt │ │ │ │ │ │ │ └── Theme.kt │ │ │ │ │ │ └── screens │ │ │ │ │ │ │ ├── Screen.kt │ │ │ │ │ │ │ ├── scopes │ │ │ │ │ │ │ ├── RequestScopesContract.kt │ │ │ │ │ │ │ └── RequestScopesActivity.kt │ │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ │ │ └── viewmodel │ │ │ │ │ │ └── caching │ │ │ │ │ │ └── CacheViewModel.kt │ │ │ │ └── AndroidManifest.xml │ │ │ ├── test │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── genexus │ │ │ │ │ └── superapps │ │ │ │ │ └── bankx │ │ │ │ │ └── ExampleUnitTest.kt │ │ │ └── androidTest │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── genexus │ │ │ │ └── superapps │ │ │ │ └── bankx │ │ │ │ └── ExampleInstrumentedTest.kt │ │ └── proguard-rules.pro │ ├── payments │ │ ├── .gitignore │ │ ├── consumer-rules.pro │ │ ├── src │ │ │ ├── main │ │ │ │ ├── res │ │ │ │ │ └── values │ │ │ │ │ │ ├── strings.xml │ │ │ │ │ │ └── themes.xml │ │ │ │ ├── java │ │ │ │ │ └── com │ │ │ │ │ │ └── genexus │ │ │ │ │ │ └── superapps │ │ │ │ │ │ └── bankx │ │ │ │ │ │ └── payments │ │ │ │ │ │ ├── ui │ │ │ │ │ │ ├── theme │ │ │ │ │ │ │ ├── Color.kt │ │ │ │ │ │ │ └── Type.kt │ │ │ │ │ │ └── PaymentActivity.kt │ │ │ │ │ │ ├── PaymentsModule.kt │ │ │ │ │ │ └── services │ │ │ │ │ │ └── ClientsService.kt │ │ │ │ └── AndroidManifest.xml │ │ │ ├── test │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── genexus │ │ │ │ │ └── superapps │ │ │ │ │ └── bankx │ │ │ │ │ └── payments │ │ │ │ │ └── ExampleUnitTest.kt │ │ │ └── androidTest │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── genexus │ │ │ │ └── superapps │ │ │ │ └── bankx │ │ │ │ └── payments │ │ │ │ └── ExampleInstrumentedTest.kt │ │ └── proguard-rules.pro │ ├── .gitignore │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── build.gradle │ ├── settings.gradle │ └── gradle.properties ├── Logging.md └── Crashlytics.md ├── Flutter └── example_superapp │ ├── ios │ ├── Assets │ │ └── .gitkeep │ ├── Load_iOS.png │ ├── Provisioning_iOS.png │ ├── .gitignore │ └── example_superapp.podspec │ ├── LICENSE │ ├── example │ ├── ios │ │ ├── Runner │ │ │ ├── Runner-Bridging-Header.h │ │ │ ├── Assets.xcassets │ │ │ │ ├── LaunchImage.imageset │ │ │ │ │ ├── LaunchImage.png │ │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ │ ├── README.md │ │ │ │ │ └── Contents.json │ │ │ │ └── AppIcon.appiconset │ │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ ├── superapp.crt │ │ │ ├── SampleExternalObject │ │ │ │ └── SampleExObjLibrary.swift │ │ │ ├── SuperAppAPI.swift │ │ │ ├── Base.lproj │ │ │ │ └── Main.storyboard │ │ │ ├── AppDelegate.swift │ │ │ └── Info.plist │ │ ├── Flutter │ │ │ ├── Debug.xcconfig │ │ │ ├── Release.xcconfig │ │ │ └── AppFrameworkInfo.plist │ │ ├── Multi-Instance_iOS.png │ │ ├── AccessInformation_iOS.png │ │ ├── Runner.xcodeproj │ │ │ └── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ │ └── IDEWorkspaceChecks.plist │ │ ├── Runner.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ │ └── IDEWorkspaceChecks.plist │ │ ├── Podfile.lock │ │ ├── .gitignore │ │ ├── RunnerTests │ │ │ └── RunnerTests.swift │ │ └── Podfile │ ├── android │ │ ├── gradle.properties │ │ ├── Multi-Instance_Android.png │ │ ├── AccessInformation_Android.png │ │ ├── app │ │ │ ├── src │ │ │ │ ├── main │ │ │ │ │ ├── res │ │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── raw │ │ │ │ │ │ │ ├── superapp_json │ │ │ │ │ │ │ └── superapp_crt │ │ │ │ │ │ ├── drawable │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ ├── drawable-v21 │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ ├── values-night │ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ │ └── values │ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ └── kotlin │ │ │ │ │ │ └── com │ │ │ │ │ │ └── genexus │ │ │ │ │ │ └── example_superapp_example │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ ├── debug │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ └── profile │ │ │ │ │ └── AndroidManifest.xml │ │ │ └── proguard-rules.pro │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── settings.gradle │ ├── lib │ │ ├── ui │ │ │ ├── constants.dart │ │ │ ├── skeleton.dart │ │ │ ├── miniapps_skeleton.dart │ │ │ └── main_screen.dart │ │ ├── main.dart │ │ └── routes.dart │ ├── .gitignore │ └── analysis_options.yaml │ ├── android │ ├── settings.gradle │ ├── Load_Android.png │ ├── Provisioning_Android.png │ ├── app │ │ └── src │ │ │ ├── main │ │ │ ├── res │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── xml │ │ │ │ │ └── network_security_config.xml │ │ │ │ ├── drawable │ │ │ │ │ └── launch_background.xml │ │ │ │ ├── drawable-v21 │ │ │ │ │ └── launch_background.xml │ │ │ │ └── values-night │ │ │ │ │ └── styles.xml │ │ │ └── kotlin │ │ │ │ └── com │ │ │ │ └── genexus │ │ │ │ └── example_superapp_example │ │ │ │ └── MainActivity.kt │ │ │ ├── profile │ │ │ └── AndroidManifest.xml │ │ │ └── debug │ │ │ └── AndroidManifest.xml │ ├── .gitignore │ ├── src │ │ └── main │ │ │ ├── kotlin │ │ │ └── com │ │ │ │ └── genexus │ │ │ │ └── example_superapp │ │ │ │ ├── application │ │ │ │ ├── AppEntityService.kt │ │ │ │ └── AppEntityDataProvider.kt │ │ │ │ ├── EngineBindingsDelegate.kt │ │ │ │ ├── IFlutterCallHandlerSetup.kt │ │ │ │ ├── IProvisioning.kt │ │ │ │ ├── api │ │ │ │ ├── PaymentsModule.kt │ │ │ │ └── services │ │ │ │ │ ├── ClientsService.kt │ │ │ │ │ └── PaymentsService.kt │ │ │ │ ├── ISuperApp.kt │ │ │ │ └── FlutterEngineManager.kt │ │ │ ├── res │ │ │ └── values │ │ │ │ └── styles.xml │ │ │ └── AndroidManifest.xml │ └── build.gradle │ ├── analysis_options.yaml │ ├── lib │ └── plugin │ │ ├── services │ │ ├── client.dart │ │ └── payments.dart │ │ ├── native │ │ ├── invoker │ │ │ ├── example_superapp.dart │ │ │ ├── example_superapp_platform_interface.dart │ │ │ └── example_superapp_method_channel.dart │ │ └── receiver │ │ │ └── payments_flow_method_channel.dart │ │ ├── ui │ │ └── selection_screen.dart │ │ └── flutter │ │ └── flutter_method_handler_interface.dart │ ├── .gitignore │ ├── .metadata │ └── README.md ├── ReactNative └── ExampleSuperApp │ ├── .node-version │ ├── .watchmanconfig │ ├── jest.config.js │ ├── ios │ ├── link-assets-manifest.json │ ├── ExampleSuperApp │ │ ├── Images.xcassets │ │ │ ├── Contents.json │ │ │ └── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ └── PrivacyInfo.xcprivacy │ ├── ExampleSuperApp.xcodeproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ ├── ExampleSuperApp-Bridging-Header.h │ ├── SampleExObjHandler+ReactNative.swift │ ├── ExampleSuperApp.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ ├── SampleExObjHandler.h │ ├── SampleExObjLibrary.swift │ ├── ProvisioningAPIBridge.m │ ├── superapp.crt │ ├── .xcode.env │ ├── SampleExObjHandlerBridge.m │ └── Podfile │ ├── .bundle │ └── config │ ├── android │ ├── link-assets-manifest.json │ ├── app │ │ ├── debug.keystore │ │ ├── src │ │ │ ├── main │ │ │ │ ├── res │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ │ ├── values │ │ │ │ │ │ ├── strings.xml │ │ │ │ │ │ └── themes.xml │ │ │ │ │ ├── raw │ │ │ │ │ │ ├── superapp_json │ │ │ │ │ │ └── superapp_crt │ │ │ │ │ ├── drawable-mdpi │ │ │ │ │ │ ├── node_modules_reactnative_libraries_logbox_ui_logboximages_close.png │ │ │ │ │ │ ├── node_modules_reactnative_libraries_logbox_ui_logboximages_loader.png │ │ │ │ │ │ ├── node_modules_reactnative_libraries_newappscreen_components_logo.png │ │ │ │ │ │ ├── node_modules_reactnative_libraries_logbox_ui_logboximages_chevronleft.png │ │ │ │ │ │ ├── node_modules_reactnative_libraries_logbox_ui_logboximages_alerttriangle.png │ │ │ │ │ │ └── node_modules_reactnative_libraries_logbox_ui_logboximages_chevronright.png │ │ │ │ │ ├── drawable │ │ │ │ │ │ ├── launch_background.xml │ │ │ │ │ │ └── rn_edit_text_material.xml │ │ │ │ │ ├── values-night │ │ │ │ │ │ └── themes.xml │ │ │ │ │ └── xml │ │ │ │ │ │ └── data_extraction_rules.xml │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── examplesuperapp │ │ │ │ │ ├── application │ │ │ │ │ ├── AppEntityService.kt │ │ │ │ │ └── AppEntityDataProvider.kt │ │ │ │ │ ├── payment │ │ │ │ │ ├── ui │ │ │ │ │ │ ├── theme │ │ │ │ │ │ │ ├── Color.kt │ │ │ │ │ │ │ └── Type.kt │ │ │ │ │ │ └── PaymentActivity.kt │ │ │ │ │ ├── PaymentsModule.kt │ │ │ │ │ └── services │ │ │ │ │ │ ├── ClientsService.kt │ │ │ │ │ │ └── PaymentsService.kt │ │ │ │ │ ├── utils │ │ │ │ │ └── NativePackages.kt │ │ │ │ │ └── MainActivity.kt │ │ │ └── debug │ │ │ │ └── AndroidManifest.xml │ │ └── proguard-rules.pro │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── README.md │ ├── settings.gradle │ ├── build.gradle │ └── gradle.properties │ ├── .yarnrc.yml │ ├── app.json │ ├── tsconfig.json │ ├── babel.config.js │ ├── react-native.config.js │ ├── .prettierrc.js │ ├── lib │ ├── ui │ │ ├── constants.tsx │ │ └── selection_screen.tsx │ ├── services │ │ ├── client.tsx │ │ └── payments.tsx │ ├── routes.tsx │ └── APIs │ │ └── SupperAppAPI.tsx │ ├── index.js │ ├── __tests__ │ └── App-test.tsx │ ├── metro.config.js │ ├── Gemfile │ ├── package.json │ ├── .gitignore │ ├── App.tsx │ └── README.md ├── CODEOWNERS ├── docs ├── LoadMiniAppWithSSO.png ├── Provisioning.md └── SuperAppRender.md ├── iOS ├── ExampleSuperApp │ ├── Assets.xcassets │ │ ├── Contents.json │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── superapp.crt │ ├── Base.lproj │ │ └── LaunchScreen.storyboard │ └── Info.plist ├── ExampleSuperApp.xcodeproj │ └── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── SampleExternalObject │ └── SampleExObjLibrary.swift ├── Logging.md ├── CrashAnalytics │ ├── Crashlytics.md │ └── GXFirebaseCrashAnalyticsService.swift ├── GeneXus Frameworks │ └── README.md └── Sandbox-Info.plist └── .gitignore /Android/MiniAppCaller/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /Android/MiniAppCaller/payments/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /Flutter/example_superapp/ios/Assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/.node-version: -------------------------------------------------------------------------------- 1 | 18 2 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /Android/MiniAppCaller/payments/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | *.md @genexus-books/documentation-team 2 | -------------------------------------------------------------------------------- /Flutter/example_superapp/LICENSE: -------------------------------------------------------------------------------- 1 | TODO: Add your license here. 2 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Flutter/example_superapp/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'example_superapp' 2 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: 'react-native', 3 | }; 4 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/ios/link-assets-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "migIndex": 1, 3 | "data": [] 4 | } 5 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/.bundle/config: -------------------------------------------------------------------------------- 1 | BUNDLE_PATH: "vendor/bundle" 2 | BUNDLE_FORCE_RUBY_PLATFORM: 1 3 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/link-assets-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "migIndex": 1, 3 | "data": [] 4 | } 5 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/.yarnrc.yml: -------------------------------------------------------------------------------- 1 | nodeLinker: node-modules 2 | 3 | yarnPath: .yarn/releases/yarn-3.6.4.cjs 4 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ExampleSuperApp", 3 | "displayName": "ExampleSuperApp" 4 | } -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@react-native/typescript-config/tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /docs/LoadMiniAppWithSSO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/docs/LoadMiniAppWithSSO.png -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ['module:@react-native/babel-preset'], 3 | }; 4 | -------------------------------------------------------------------------------- /iOS/ExampleSuperApp/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Flutter/example_superapp/ios/Load_iOS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/ios/Load_iOS.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /Flutter/example_superapp/android/Load_Android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/android/Load_Android.png -------------------------------------------------------------------------------- /Flutter/example_superapp/ios/Provisioning_iOS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/ios/Provisioning_iOS.png -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/ios/ExampleSuperApp/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/react-native.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | project: { 3 | ios: { 4 | automaticPodsInstallation: true 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/ReactNative/ExampleSuperApp/android/app/debug.keystore -------------------------------------------------------------------------------- /Android/MiniAppCaller/payments/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | PaymentsComposeActivity 3 | -------------------------------------------------------------------------------- /Flutter/example_superapp/android/Provisioning_Android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/android/Provisioning_Android.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Multi-Instance_iOS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/ios/Multi-Instance_iOS.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | xcuserdata/ 2 | iOS/GeneXus Frameworks/*.xcframework/ 3 | **/*.xcworkspace/xcshareddata/swiftpm/Package.resolved 4 | ReactNative/package-lock.json 5 | .DS_Store 6 | **/.vscode/ -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/AccessInformation_iOS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/ios/AccessInformation_iOS.png -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/res/mipmap-hdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Android/MiniAppCaller/app/src/main/res/mipmap-hdpi/ic_launcher.webp -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/res/mipmap-mdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Android/MiniAppCaller/app/src/main/res/mipmap-mdpi/ic_launcher.webp -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/res/mipmap-xhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Android/MiniAppCaller/app/src/main/res/mipmap-xhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /Flutter/example_superapp/example/android/Multi-Instance_Android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/android/Multi-Instance_Android.png -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Android/MiniAppCaller/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Android/MiniAppCaller/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /Flutter/example_superapp/example/android/AccessInformation_Android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/android/AccessInformation_Android.png -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/ReactNative/ExampleSuperApp/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/ios/ExampleSuperApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Android/MiniAppCaller/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Android/MiniAppCaller/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Android/MiniAppCaller/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Android/MiniAppCaller/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | arrowParens: 'avoid', 3 | bracketSameLine: true, 4 | bracketSpacing: false, 5 | singleQuote: true, 6 | trailingComma: 'all', 7 | }; 8 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/lib/ui/constants.tsx: -------------------------------------------------------------------------------- 1 | export const Colors = { 2 | primaryColor: "#2967FF", 3 | grayColor: "#8D8D8E", 4 | black: " #000000" 5 | }; 6 | 7 | export const defaultPadding = 16; -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/java/com/genexus/superapps/bankx/Flavor.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.superapps.bankx 2 | 3 | object Flavor { 4 | const val NORMAL = "normal" 5 | const val SANDBOX = "sandbox" 6 | } 7 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Android/MiniAppCaller/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /Flutter/example_superapp/analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:flutter_lints/flutter.yaml 2 | 3 | # Additional information about this file can be found at 4 | # https://dart.dev/guides/language/analysis-options 5 | -------------------------------------------------------------------------------- /Flutter/example_superapp/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /Flutter/example_superapp/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /Flutter/example_superapp/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/lib/ui/constants.dart: -------------------------------------------------------------------------------- 1 | import 'dart:ui'; 2 | 3 | const Color primaryColor = Color(0xFF2967FF); 4 | const Color grayColor = Color(0xFF8D8D8E); 5 | 6 | const double defaultPadding = 16.0; -------------------------------------------------------------------------------- /Flutter/example_superapp/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Flutter/example_superapp/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/ReactNative/ExampleSuperApp/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/ReactNative/ExampleSuperApp/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/ReactNative/ExampleSuperApp/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/ReactNative/ExampleSuperApp/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/ReactNative/ExampleSuperApp/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /Flutter/example_superapp/android/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /gradle 4 | /local.properties 5 | /.idea/workspace.xml 6 | /.idea/libraries 7 | .DS_Store 8 | /build 9 | /captures 10 | .cxx 11 | /gradlew 12 | /gradlew.bat 13 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/ReactNative/ExampleSuperApp/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/ReactNative/ExampleSuperApp/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/ReactNative/ExampleSuperApp/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/ReactNative/ExampleSuperApp/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /iOS/ExampleSuperApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/ReactNative/ExampleSuperApp/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | ExampleSuperApp 3 | PaymentsComposeActivity 4 | -------------------------------------------------------------------------------- /iOS/ExampleSuperApp/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/java/com/examplesuperapp/application/AppEntityService.kt: -------------------------------------------------------------------------------- 1 | package com.examplesuperapp.application 2 | 3 | import com.genexus.android.core.services.EntityService 4 | 5 | class AppEntityService: EntityService() -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/java/com/genexus/superapps/bankx/application/AppEntityService.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.superapps.bankx.application 2 | 3 | import com.genexus.android.core.services.EntityService 4 | 5 | class AppEntityService: EntityService() -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /Android/MiniAppCaller/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /.idea/ 4 | /.gradle/ 5 | /GenexusTestMiniApps/build/ 6 | /workspace.xml 7 | /local.properties 8 | .DS_Store 9 | /gradle/wrapper/gradle-wrapper.jar 10 | /gradlew 11 | /gradlew.bat 12 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @format 3 | */ 4 | 5 | import {AppRegistry} from 'react-native'; 6 | import App from './App'; 7 | import {name as appName} from './app.json'; 8 | 9 | AppRegistry.registerComponent(appName, () => App); 10 | -------------------------------------------------------------------------------- /Flutter/example_superapp/android/app/src/main/kotlin/com/genexus/example_superapp_example/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.example_superapp_example 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/Flutter/example_superapp/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /Flutter/example_superapp/android/src/main/kotlin/com/genexus/example_superapp/application/AppEntityService.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.example_superapp.application 2 | 3 | import com.genexus.android.core.services.EntityService 4 | 5 | class AppEntityService: EntityService() 6 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/res/raw/superapp_json: -------------------------------------------------------------------------------- 1 | {"GXSuperAppId":"com.genexus.bankx","GXSuperAppVersion":"1","GXSuperAppProvisioningURL":"https://sandbox-api.miniappcenter.com/api","GXMiniAppCacheMaxCount":0,"GXMiniAppCacheMaxDays":1,"GXSuperAppAllowWebMiniApps":"true"} 2 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip 3 | distributionPath=wrapper/dists 4 | zipStorePath=wrapper/dists 5 | zipStoreBase=GRADLE_USER_HOME 6 | -------------------------------------------------------------------------------- /Flutter/example_superapp/android/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/android/app/src/main/res/raw/superapp_json: -------------------------------------------------------------------------------- 1 | {"GXSuperAppId":"com.genexus.bankx","GXSuperAppVersion":"1","GXSuperAppProvisioningURL":"https://sandbox-api.miniappcenter.com/api","GXMiniAppCacheMaxCount":0,"GXMiniAppCacheMaxDays":1,"GXSuperAppAllowWebMiniApps":"true"} -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/res/raw/superapp_json: -------------------------------------------------------------------------------- 1 | {"GXSuperAppId":"com.genexus.bankx","GXSuperAppVersion":"1","GXSuperAppProvisioningURL":"https://sandbox-api.miniappcenter.com/api","GXMiniAppCacheMaxCount":0,"GXMiniAppCacheMaxDays":1,"GXSuperAppAllowWebMiniApps":"true"} 2 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/ios/ExampleSuperApp-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | 5 | #import 6 | #import 7 | #import 8 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/README.md: -------------------------------------------------------------------------------- 1 | # React Native Super App Example 2 | 3 | To explore the implementation details and integration steps for accessing the Mini App Center API and managing its cache, please refer the `MiniAppCaller` example at [General Android Document](../../../Android/README.md). 4 | -------------------------------------------------------------------------------- /Flutter/example_superapp/android/src/main/kotlin/com/genexus/example_superapp/EngineBindingsDelegate.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.example_superapp 2 | 3 | interface EngineBindingsDelegate { 4 | fun onConfirm(args: String?) 5 | fun onCancel() 6 | suspend fun onGetInformation(args: String?): String? 7 | } 8 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_logbox_ui_logboximages_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/ReactNative/ExampleSuperApp/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_logbox_ui_logboximages_close.png -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_logbox_ui_logboximages_loader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/ReactNative/ExampleSuperApp/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_logbox_ui_logboximages_loader.png -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_newappscreen_components_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/ReactNative/ExampleSuperApp/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_newappscreen_components_logo.png -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/java/com/genexus/superapps/bankx/ui/theme/Color.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.superapps.bankx.ui.theme 2 | 3 | import androidx.compose.ui.graphics.Color 4 | 5 | val Purple200 = Color(0xFF5E83BD) 6 | val Purple500 = Color(0xFF6200EE) 7 | val Purple700 = Color(0xFF5E83BD) 8 | val Teal200 = Color(0xFF5E83BD) -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/ios/SampleExObjHandler+ReactNative.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SampleExObjHandler+ReactNative.swift 3 | // ExampleSuperApp 4 | // 5 | 6 | import Foundation 7 | 8 | extension SampleExObjHandler { 9 | @objc public static func moduleName() -> String { 10 | return "SampleExObjHandler" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_logbox_ui_logboximages_chevronleft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/ReactNative/ExampleSuperApp/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_logbox_ui_logboximages_chevronleft.png -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_logbox_ui_logboximages_alerttriangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/ReactNative/ExampleSuperApp/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_logbox_ui_logboximages_alerttriangle.png -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_logbox_ui_logboximages_chevronright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/genexus-books/gx-super-app/HEAD/ReactNative/ExampleSuperApp/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_logbox_ui_logboximages_chevronright.png -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /iOS/ExampleSuperApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/ios/ExampleSuperApp.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/ios/ExampleSuperApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/__tests__/App-test.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * @format 3 | */ 4 | 5 | import React from 'react'; 6 | import ReactTestRenderer from 'react-test-renderer'; 7 | import App from '../App'; 8 | 9 | 10 | test('renders correctly', async () => { 11 | await ReactTestRenderer.act(() => { 12 | ReactTestRenderer.create(); 13 | }); 14 | }); -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Android/Logging.md: -------------------------------------------------------------------------------- 1 | # Enable Mini App Logging for Android 2 | 3 | The Super App may display Mini App logging messages. 4 | To do this, enable Mini-Apps login in the Super App, as shown in [Banking app example](/Android/MiniAppCaller/app/src/main/java/com/genexus/superapps/bankx/application/BankingApplication.kt#L39) 5 | 6 | ```kotlin 7 | Services.Log.setLevel(LogLevel.DEBUG) 8 | ``` 9 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/metro.config.js: -------------------------------------------------------------------------------- 1 | const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config'); 2 | 3 | /** 4 | * Metro configuration 5 | * https://reactnative.dev/docs/metro 6 | * 7 | * @type {import('@react-native/metro-config').MetroConfig} 8 | */ 9 | const config = {}; 10 | 11 | module.exports = mergeConfig(getDefaultConfig(__dirname), config); 12 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | BankingSuperApp 3 | MainActivity2 4 | CacheActivity 5 | Home 6 | Cache 7 | -------------------------------------------------------------------------------- /Flutter/example_superapp/android/src/main/kotlin/com/genexus/example_superapp/IFlutterCallHandlerSetup.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.example_superapp 2 | 3 | import io.flutter.embedding.engine.plugins.FlutterPlugin 4 | 5 | interface IFlutterCallHandlerSetup { 6 | fun setupChannel(flutterBinding: FlutterPlugin.FlutterPluginBinding) 7 | fun destroyChannel(flutterBinding: FlutterPlugin.FlutterPluginBinding) 8 | } 9 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /gradle 4 | /captures/ 5 | /gradlew 6 | /gradlew.bat 7 | /local.properties 8 | GeneratedPluginRegistrant.java 9 | 10 | # Remember to never publicly share your keystore. 11 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 12 | key.properties 13 | **/*.keystore 14 | **/*.jks 15 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") } 2 | plugins { id("com.facebook.react.settings") } 3 | extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand() } 4 | rootProject.name = 'ExampleSuperApp' 5 | include ':app' 6 | includeBuild('../node_modules/@react-native/gradle-plugin') 7 | -------------------------------------------------------------------------------- /Flutter/example_superapp/android/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 10 | -------------------------------------------------------------------------------- /Flutter/example_superapp/android/src/main/kotlin/com/genexus/example_superapp/application/AppEntityDataProvider.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.example_superapp.application 2 | 3 | import com.genexus.android.core.providers.EntityDataProvider 4 | 5 | class AppEntityDataProvider: EntityDataProvider() { 6 | init { 7 | AUTHORITY = "com.genexus.superapps.bankx.appentityprovider" 8 | URI_MATCHER = buildUriMatcher() 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/java/com/examplesuperapp/application/AppEntityDataProvider.kt: -------------------------------------------------------------------------------- 1 | package com.examplesuperapp.application 2 | 3 | import com.genexus.android.core.providers.EntityDataProvider 4 | 5 | class AppEntityDataProvider: EntityDataProvider() { 6 | init { 7 | AUTHORITY = "com.genexus.superapps.bankx.appentityprovider" 8 | URI_MATCHER = buildUriMatcher() 9 | } 10 | } -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/java/com/genexus/superapps/bankx/application/AppEntityDataProvider.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.superapps.bankx.application 2 | 3 | import com.genexus.android.core.providers.EntityDataProvider 4 | 5 | class AppEntityDataProvider: EntityDataProvider() { 6 | init { 7 | AUTHORITY = "com.genexus.superapps.bankx.appentityprovider" 8 | URI_MATCHER = buildUriMatcher() 9 | } 10 | } -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/java/com/examplesuperapp/payment/ui/theme/Color.kt: -------------------------------------------------------------------------------- 1 | package com.examplesuperapp.payment.ui.theme 2 | 3 | import androidx.compose.ui.graphics.Color 4 | 5 | val Purple80 = Color(0xFFD0BCFF) 6 | val PurpleGrey80 = Color(0xFFCCC2DC) 7 | val Pink80 = Color(0xFFEFB8C8) 8 | 9 | val Purple40 = Color(0xFF6650a4) 10 | val PurpleGrey40 = Color(0xFF625b71) 11 | val Pink40 = Color(0xFF7D5260) -------------------------------------------------------------------------------- /Android/MiniAppCaller/payments/src/main/java/com/genexus/superapps/bankx/payments/ui/theme/Color.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.superapps.bankx.payments.ui.theme 2 | 3 | import androidx.compose.ui.graphics.Color 4 | 5 | val Purple80 = Color(0xFFD0BCFF) 6 | val PurpleGrey80 = Color(0xFFCCC2DC) 7 | val Pink80 = Color(0xFFEFB8C8) 8 | 9 | val Purple40 = Color(0xFF6650a4) 10 | val PurpleGrey40 = Color(0xFF625b71) 11 | val Pink40 = Color(0xFF7D5260) -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/java/com/genexus/superapps/bankx/ui/theme/Shape.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.superapps.bankx.ui.theme 2 | 3 | import androidx.compose.foundation.shape.RoundedCornerShape 4 | import androidx.compose.material.Shapes 5 | import androidx.compose.ui.unit.dp 6 | 7 | val Shapes = Shapes( 8 | small = RoundedCornerShape(4.dp), 9 | medium = RoundedCornerShape(4.dp), 10 | large = RoundedCornerShape(0.dp) 11 | ) -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/ios/SampleExObjHandler.h: -------------------------------------------------------------------------------- 1 | // 2 | // SampleExObjHandler.h 3 | // ExampleSuperApp 4 | // 5 | // Created by Cinthya Cristina Riveros on 13/6/23. 6 | // 7 | 8 | #ifndef SampleExObjHandler_h 9 | #define SampleExObjHandler_h 10 | 11 | #import 12 | 13 | @interface SampleExObjHandler : NSObject 14 | 15 | + (NSString *)moduleName; 16 | 17 | @end 18 | 19 | #endif /* SampleExObjHandler_h */ 20 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version 4 | ruby ">= 2.6.10" 5 | 6 | 7 | # Exclude problematic versions of cocoapods and activesupport that causes build failures. 8 | gem 'cocoapods', '>= 1.13', '!= 1.15.0', '!= 1.15.1' 9 | gem 'activesupport', '>= 6.1.7.5', '!= 7.1.0' 10 | gem 'xcodeproj', '< 1.26.0' 11 | gem 'concurrent-ruby', '< 1.3.4' -------------------------------------------------------------------------------- /iOS/SampleExternalObject/SampleExObjLibrary.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SampleExObjLibrary.swift 3 | // ExampleSuperApp 4 | // 5 | 6 | import GXCoreBL 7 | import GXSuperApp 8 | 9 | class SampleExObjLibrary: NSObject, GXExtensionLibraryProtocol { 10 | func initializeExtensionLibrary(withContext context: GXExtensionLibraryContext) { 11 | GXMiniAppsManager.registerSuperAppAPI(SampleExObjHandler.self, forExternalObjectName: "Payments") 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFBB86FC 4 | #FF6200EE 5 | #FF3700B3 6 | #FF03DAC5 7 | #FF018786 8 | #FF000000 9 | #FFFFFFFF 10 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/ios/SampleExObjLibrary.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SampleExObjLibrary.swift 3 | // ExampleSuperApp 4 | // 5 | 6 | import GXCoreBL 7 | import GXSuperApp 8 | 9 | class SampleExObjLibrary: NSObject, GXExtensionLibraryProtocol { 10 | func initializeExtensionLibrary(withContext context: GXExtensionLibraryContext) { 11 | GXMiniAppsManager.registerSuperAppAPI(SampleExObjHandler.self, forExternalObjectName: "Payments") 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/ios/ProvisioningAPIBridge.m: -------------------------------------------------------------------------------- 1 | // 2 | // ProvisioningAPIBridge.h 3 | // ExampleSuperApp 4 | // 5 | 6 | #import 7 | #import 8 | 9 | 10 | @interface RCT_EXTERN_MODULE(ProvisioningAPI, NSObject) 11 | 12 | RCT_EXTERN_METHOD(handleMethodCall:(NSDictionary *)call result:(RCTResponseSenderBlock)result) 13 | 14 | + (BOOL)requiresMainQueueSetup 15 | { 16 | return NO; 17 | } 18 | 19 | @end 20 | 21 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 172.16.2.135 10 | 11 | 12 | -------------------------------------------------------------------------------- /Flutter/example_superapp/android/app/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 172.16.2.135 10 | 11 | 12 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/test/java/com/genexus/superapps/bankx/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.superapps.bankx 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } -------------------------------------------------------------------------------- /Android/MiniAppCaller/payments/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Flutter/example_superapp/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /iOS/ExampleSuperApp/superapp.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz3koNK/BlMuIOTnrqYRg 3 | EmeOsliEvV31VePWc8ViGypa+/6UR6IRFPIf2/FUXKPa79fr2pX+2HNK4pDcGV5G 4 | FCbln7sBDjiGeWWg9fLk0QH96+RxtKQJZTQFWP1rqoZ8yhAVZDd3TdNYbZCqrFdY 5 | AB5q/KaVcu71TfrZ2PMeGKQMRECadT2yMVBjp0WssOXqoSIOENPMA6uu3qGBZnDS 6 | VI5pm1XM9BAsGIFvUecs7ZzqxQ2ktc8XZ6PwNUTxZC4DmfJqM9tyU4pS4jy/1RQw 7 | 80zaRGTkmTjqGgSAbN/E6NsoxpE9oxWNgow5YW+HQYDsq9Iqt+mhDJ2JXIqug2EQ 8 | 6QIDAQAB 9 | -----END PUBLIC KEY----- 10 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/payments/src/test/java/com/genexus/superapps/bankx/payments/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.superapps.bankx.payments 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/ios/superapp.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz3koNK/BlMuIOTnrqYRg 3 | EmeOsliEvV31VePWc8ViGypa+/6UR6IRFPIf2/FUXKPa79fr2pX+2HNK4pDcGV5G 4 | FCbln7sBDjiGeWWg9fLk0QH96+RxtKQJZTQFWP1rqoZ8yhAVZDd3TdNYbZCqrFdY 5 | AB5q/KaVcu71TfrZ2PMeGKQMRECadT2yMVBjp0WssOXqoSIOENPMA6uu3qGBZnDS 6 | VI5pm1XM9BAsGIFvUecs7ZzqxQ2ktc8XZ6PwNUTxZC4DmfJqM9tyU4pS4jy/1RQw 7 | 80zaRGTkmTjqGgSAbN/E6NsoxpE9oxWNgow5YW+HQYDsq9Iqt+mhDJ2JXIqug2EQ 8 | 6QIDAQAB 9 | -----END PUBLIC KEY----- 10 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/res/raw/superapp_crt: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu1m9Ta81lNmQcGP6Qq0t 3 | 9vaoxDSTVM6TXc64XM5tsW6nHbJW/NI3L6atXWYM9LOaPOdowI3QEjxoTzjfbpTy 4 | Fa2bChM7yQDpiXf7Wnk5Qk3nidCCHGl+8+0N4rXccbf0sfLLTfowOakXJHNHQVOG 5 | BGtwoomk1O+GHU/L+1/Mgf0Y8uUxlD26h4E3S9cHZFxa07wOIvFDWbAmbqid9m1b 6 | QAeAeDQyrOn/ACSr4b/9vYzMzlUn6tPx81D1BbCcNnsNZduwhGUK07toVn0kC40z 7 | uutt3WhSiaM585Y3iHTM572KpLSVSF/eyFr1IEF/PctitMObXEf8RqFcOnpps9Cb 8 | PQIDAQAB 9 | -----END PUBLIC KEY----- 10 | -------------------------------------------------------------------------------- /Flutter/example_superapp/android/src/main/kotlin/com/genexus/example_superapp/IProvisioning.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.example_superapp 2 | 3 | import com.genexus.android.core.superapps.MiniApp 4 | import io.flutter.plugin.common.MethodChannel 5 | 6 | interface IProvisioning { 7 | fun getMiniApps(tag: String, result: MethodChannel.Result) 8 | fun getCachedMiniApps(result: MethodChannel.Result) 9 | fun load(miniApp: MiniApp, result: MethodChannel.Result) 10 | fun remove(id: String, version: Int, result: MethodChannel.Result) 11 | } 12 | -------------------------------------------------------------------------------- /Flutter/example_superapp/lib/plugin/services/client.dart: -------------------------------------------------------------------------------- 1 | class ClientsService { 2 | static const sdtClient = "Client"; 3 | static const fieldName = "name"; 4 | static const fieldLastName = "lastName"; 5 | static const fieldEmail = "email"; 6 | static const fieldId = "clientId"; 7 | 8 | static Map getClient(String clientId) { 9 | return { 10 | fieldName: "Juan", 11 | fieldLastName: "Perez", 12 | fieldEmail: "jperez@example.com", 13 | fieldId: clientId 14 | }; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/android/app/src/main/res/raw/superapp_crt: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu1m9Ta81lNmQcGP6Qq0t 3 | 9vaoxDSTVM6TXc64XM5tsW6nHbJW/NI3L6atXWYM9LOaPOdowI3QEjxoTzjfbpTy 4 | Fa2bChM7yQDpiXf7Wnk5Qk3nidCCHGl+8+0N4rXccbf0sfLLTfowOakXJHNHQVOG 5 | BGtwoomk1O+GHU/L+1/Mgf0Y8uUxlD26h4E3S9cHZFxa07wOIvFDWbAmbqid9m1b 6 | QAeAeDQyrOn/ACSr4b/9vYzMzlUn6tPx81D1BbCcNnsNZduwhGUK07toVn0kC40z 7 | uutt3WhSiaM585Y3iHTM572KpLSVSF/eyFr1IEF/PctitMObXEf8RqFcOnpps9Cb 8 | PQIDAQAB 9 | -----END PUBLIC KEY----- -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/superapp.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz3koNK/BlMuIOTnrqYRg 3 | EmeOsliEvV31VePWc8ViGypa+/6UR6IRFPIf2/FUXKPa79fr2pX+2HNK4pDcGV5G 4 | FCbln7sBDjiGeWWg9fLk0QH96+RxtKQJZTQFWP1rqoZ8yhAVZDd3TdNYbZCqrFdY 5 | AB5q/KaVcu71TfrZ2PMeGKQMRECadT2yMVBjp0WssOXqoSIOENPMA6uu3qGBZnDS 6 | VI5pm1XM9BAsGIFvUecs7ZzqxQ2ktc8XZ6PwNUTxZC4DmfJqM9tyU4pS4jy/1RQw 7 | 80zaRGTkmTjqGgSAbN/E6NsoxpE9oxWNgow5YW+HQYDsq9Iqt+mhDJ2JXIqug2EQ 8 | 6QIDAQAB 9 | -----END PUBLIC KEY----- 10 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | dependencies { 3 | classpath 'com.android.tools.build:gradle:8.7.3' 4 | } 5 | ext { 6 | compose_version = '1.3.1' 7 | fc_version = "2.5.+" 8 | } 9 | } 10 | 11 | plugins { 12 | id 'com.android.application' version '8.7.3' apply false 13 | id 'com.android.library' version '8.7.3' apply false 14 | id 'org.jetbrains.kotlin.android' version '1.7.10' apply false 15 | } 16 | 17 | task clean(type: Delete) { 18 | delete rootProject.buildDir 19 | } 20 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/res/raw/superapp_crt: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu1m9Ta81lNmQcGP6Qq0t 3 | 9vaoxDSTVM6TXc64XM5tsW6nHbJW/NI3L6atXWYM9LOaPOdowI3QEjxoTzjfbpTy 4 | Fa2bChM7yQDpiXf7Wnk5Qk3nidCCHGl+8+0N4rXccbf0sfLLTfowOakXJHNHQVOG 5 | BGtwoomk1O+GHU/L+1/Mgf0Y8uUxlD26h4E3S9cHZFxa07wOIvFDWbAmbqid9m1b 6 | QAeAeDQyrOn/ACSr4b/9vYzMzlUn6tPx81D1BbCcNnsNZduwhGUK07toVn0kC40z 7 | uutt3WhSiaM585Y3iHTM572KpLSVSF/eyFr1IEF/PctitMObXEf8RqFcOnpps9Cb 8 | PQIDAQAB 9 | -----END PUBLIC KEY----- 10 | -------------------------------------------------------------------------------- /Flutter/example_superapp/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /Flutter/example_superapp/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/ios/.xcode.env: -------------------------------------------------------------------------------- 1 | # This `.xcode.env` file is versioned and is used to source the environment 2 | # used when running script phases inside Xcode. 3 | # To customize your local environment, you can create an `.xcode.env.local` 4 | # file that is not versioned. 5 | 6 | # NODE_BINARY variable contains the PATH to the node executable. 7 | # 8 | # Customize the NODE_BINARY variable here. 9 | # For example, to use nvm with brew, add the following line 10 | # . "$(brew --prefix nvm)/nvm.sh" --no-use 11 | export NODE_BINARY=$(command -v node) 12 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/res/xml/backup_rules.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 13 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/lib/services/client.tsx: -------------------------------------------------------------------------------- 1 | class ClientsService { 2 | static sdtClient = "Client"; 3 | static fieldName = "name"; 4 | static fieldLastName = "lastName"; 5 | static fieldEmail = "email"; 6 | static fieldId = "clientId"; 7 | 8 | static getClient(clientId: string) { 9 | return { 10 | [ClientsService.fieldName]: "Juan", 11 | [ClientsService.fieldLastName]: "Perez", 12 | [ClientsService.fieldEmail]: "jperez@example.com", 13 | [ClientsService.fieldId]: clientId 14 | }; 15 | } 16 | } 17 | 18 | export default ClientsService; -------------------------------------------------------------------------------- /Flutter/example_superapp/ios/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .vagrant/ 3 | .sconsign.dblite 4 | .svn/ 5 | 6 | .DS_Store 7 | *.swp 8 | profile 9 | 10 | DerivedData/ 11 | build/ 12 | GeneratedPluginRegistrant.h 13 | GeneratedPluginRegistrant.m 14 | 15 | .generated/ 16 | 17 | *.pbxuser 18 | *.mode1v3 19 | *.mode2v3 20 | *.perspectivev3 21 | 22 | !default.pbxuser 23 | !default.mode1v3 24 | !default.mode2v3 25 | !default.perspectivev3 26 | 27 | xcuserdata 28 | 29 | *.moved-aside 30 | 31 | *.pyc 32 | *sync/ 33 | Icon? 34 | .tags* 35 | 36 | /Flutter/Generated.xcconfig 37 | /Flutter/ephemeral/ 38 | /Flutter/flutter_export_environment.sh -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:example_superapp_example/ui/main_screen.dart'; 2 | import 'package:example_superapp/plugin/ui/payment_confirm.dart'; 3 | import 'package:flutter/material.dart'; 4 | 5 | void main() => runApp(const MaterialApp(home: MainScreen())); 6 | 7 | @pragma("vm:entry-point") 8 | void showPayWithUI() { 9 | WidgetsFlutterBinding.ensureInitialized(); 10 | runApp(PaymentApp()); 11 | } 12 | 13 | class PaymentApp extends StatelessWidget { 14 | @override 15 | Widget build(BuildContext context) { 16 | return MaterialApp( 17 | home: PaymentConfirm(), 18 | ); 19 | } 20 | } -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - example_superapp (0.0.1): 3 | - Flutter 4 | - Flutter (1.0.0) 5 | 6 | DEPENDENCIES: 7 | - example_superapp (from `.symlinks/plugins/example_superapp/ios`) 8 | - Flutter (from `Flutter`) 9 | 10 | EXTERNAL SOURCES: 11 | example_superapp: 12 | :path: ".symlinks/plugins/example_superapp/ios" 13 | Flutter: 14 | :path: Flutter 15 | 16 | SPEC CHECKSUMS: 17 | example_superapp: d9ca54a588db9274c88659c78de7f7434e839404 18 | Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 19 | 20 | PODFILE CHECKSUM: 4e8f8b2be68aeea4c0d5beb6ff1e79fface1d048 21 | 22 | COCOAPODS: 1.16.2 23 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/res/xml/data_extraction_rules.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 12 | 13 | 19 | -------------------------------------------------------------------------------- /Flutter/example_superapp/android/src/main/kotlin/com/genexus/example_superapp/api/PaymentsModule.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.example_superapp.api 2 | 3 | import android.content.Context 4 | import com.genexus.android.core.base.metadata.superapp.api.SuperAppApi 5 | import com.genexus.android.core.base.services.Services 6 | import com.genexus.android.core.externalapi.ExternalApiDefinition 7 | import com.genexus.android.core.framework.GenexusModule 8 | 9 | class PaymentsModule: GenexusModule { 10 | override fun initialize(appContext: Context?) { 11 | val def = ExternalApiDefinition(PaymentsApi.NAME, PaymentsApi::class.java, false) 12 | Services.SuperApps.Api = SuperAppApi(def) 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/java/com/examplesuperapp/payment/PaymentsModule.kt: -------------------------------------------------------------------------------- 1 | package com.examplesuperapp.payment 2 | 3 | import android.content.Context 4 | import com.genexus.android.core.base.metadata.superapp.api.SuperAppApi 5 | import com.genexus.android.core.base.services.Services 6 | import com.genexus.android.core.framework.GenexusModule 7 | import com.genexus.android.core.externalapi.ExternalApiDefinition 8 | 9 | class PaymentsModule : GenexusModule { 10 | override fun initialize(context: Context) { 11 | val def = ExternalApiDefinition(PaymentsApi.NAME, PaymentsApi::class.java, false) 12 | Services.SuperApps.Api = SuperAppApi(def) 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/java/com/genexus/superapps/bankx/ui/screens/Screen.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.superapps.bankx.ui.screens 2 | 3 | import androidx.annotation.StringRes 4 | import androidx.compose.material.icons.Icons 5 | import androidx.compose.material.icons.filled.Favorite 6 | import androidx.compose.material.icons.filled.Home 7 | import androidx.compose.ui.graphics.vector.ImageVector 8 | import com.genexus.superapps.bankx.R 9 | 10 | sealed class Screen(val route: String, @StringRes val resourceId: Int, val icon: ImageVector) { 11 | object Main : Screen("Home", R.string.id_main, Icons.Filled.Home) 12 | object Cache : Screen("Cache", R.string.id_cache, Icons.Filled.Favorite) 13 | } 14 | -------------------------------------------------------------------------------- /Flutter/example_superapp/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | migrate_working_dir/ 12 | 13 | # IntelliJ related 14 | *.iml 15 | *.ipr 16 | *.iws 17 | .idea/ 18 | 19 | # The .vscode folder contains launch configuration and tasks you configure in 20 | # VS Code which you may wish to be included in version control, so this line 21 | # is commented out by default. 22 | #.vscode/ 23 | 24 | # Flutter/Dart/Pub related 25 | # Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. 26 | /pubspec.lock 27 | **/doc/api/ 28 | .dart_tool/ 29 | .packages 30 | build/ 31 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/payments/src/main/java/com/genexus/superapps/bankx/payments/PaymentsModule.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.superapps.bankx.payments 2 | 3 | import android.content.Context 4 | import com.genexus.android.core.base.metadata.superapp.api.SuperAppApi 5 | import com.genexus.android.core.base.services.Services 6 | import com.genexus.android.core.framework.GenexusModule 7 | import com.genexus.android.core.externalapi.ExternalApiDefinition 8 | 9 | class PaymentsModule : GenexusModule { 10 | override fun initialize(context: Context) { 11 | val def = ExternalApiDefinition(PaymentsApi.NAME, PaymentsApi::class.java, false) 12 | Services.SuperApps.Api = SuperAppApi(def) 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/java/com/genexus/superapps/bankx/application/MiniAppLifecycleListener.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.superapps.bankx.application 2 | 3 | import android.content.Context 4 | import android.widget.Toast 5 | import com.genexus.android.core.superapps.MiniApp 6 | import com.genexus.android.core.superapps.MiniAppStopReason 7 | 8 | class MiniAppLifecycleListener(private val context: Context): OnMiniAppStoppedListener() { 9 | override fun onMiniAppStopped(miniApp: MiniApp, reason: MiniAppStopReason) { 10 | if (reason == MiniAppStopReason.AUTHORIZATION_TOKEN) 11 | Toast.makeText(context, "Mini App access token is no longer valid", Toast.LENGTH_LONG).show() 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/lib/routes.dart: -------------------------------------------------------------------------------- 1 | import 'package:example_superapp_example/ui/cache/cached_screen.dart'; 2 | import 'package:example_superapp_example/ui/network/network_screen.dart'; 3 | import 'package:flutter/cupertino.dart'; 4 | 5 | class TabItem { 6 | String label; 7 | String route; 8 | IconData icon; 9 | Widget widget; 10 | TabItem(this.label, this.route, this.icon, this.widget); 11 | } 12 | 13 | final List tabItems = [ 14 | TabItem(NetworkMiniAppsList.label, NetworkMiniAppsList.routeName, NetworkMiniAppsList.icon, const NetworkMiniAppsList()), 15 | TabItem(CachedMiniAppsList.label, CachedMiniAppsList.routeName, CachedMiniAppsList.icon, const CachedMiniAppsList()), 16 | ]; 17 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/android/build.gradle: -------------------------------------------------------------------------------- 1 | allprojects { 2 | repositories { 3 | maven { url 'https://pkgs.dev.azure.com/genexuslabs/155eaada-eb3c-418f-9c98-dcbcffffae50/_packaging/android-releases/maven/v1' } // Release 4 | maven { url 'https://pkgs.dev.azure.com/genexuslabs/3361ab3b-96bc-4a69-a37a-f2b255ff2f35/_packaging/releases/maven/v1' } 5 | google() 6 | mavenCentral() 7 | } 8 | } 9 | 10 | rootProject.buildDir = '../build' 11 | subprojects { 12 | project.buildDir = "${rootProject.buildDir}/${project.name}" 13 | } 14 | subprojects { 15 | project.evaluationDependsOn(':app') 16 | } 17 | 18 | tasks.register("clean", Delete) { 19 | delete rootProject.buildDir 20 | } 21 | -------------------------------------------------------------------------------- /Flutter/example_superapp/lib/plugin/native/invoker/example_superapp.dart: -------------------------------------------------------------------------------- 1 | import 'package:example_superapp/model/miniapp.dart'; 2 | import 'example_superapp_platform_interface.dart'; 3 | 4 | class ExampleSuperApp { 5 | Future?> getMiniApps(String tag) { 6 | return ExampleSuperappPlatform.instance.getMiniApps(tag); 7 | } 8 | 9 | Future?> getCachedMiniApps() { 10 | return ExampleSuperappPlatform.instance.getCachedMiniApps(); 11 | } 12 | 13 | Future loadMiniApp(MiniApp miniApp) { 14 | return ExampleSuperappPlatform.instance.loadMiniApp(miniApp); 15 | } 16 | 17 | Future remove(MiniApp miniApp) { 18 | return ExampleSuperappPlatform.instance.remove(miniApp); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/payments/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 13 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/.gitignore: -------------------------------------------------------------------------------- 1 | **/dgph 2 | *.mode1v3 3 | *.mode2v3 4 | *.moved-aside 5 | *.pbxuser 6 | *.perspectivev3 7 | **/*sync/ 8 | .sconsign.dblite 9 | .tags* 10 | **/.vagrant/ 11 | **/DerivedData/ 12 | Icon? 13 | **/Pods/ 14 | **/.symlinks/ 15 | profile 16 | xcuserdata 17 | **/.generated/ 18 | Flutter/App.framework 19 | Flutter/Flutter.framework 20 | Flutter/Flutter.podspec 21 | Flutter/Generated.xcconfig 22 | Flutter/ephemeral/ 23 | Flutter/app.flx 24 | Flutter/app.zip 25 | Flutter/flutter_assets/ 26 | Flutter/flutter_export_environment.sh 27 | ServiceDefinitions.json 28 | Runner/GeneratedPluginRegistrant.* 29 | 30 | # Exceptions to above rules. 31 | !default.mode1v3 32 | !default.mode2v3 33 | !default.pbxuser 34 | !default.perspectivev3 35 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/java/com/genexus/superapps/bankx/application/OnMiniAppStoppedListener.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.superapps.bankx.application 2 | 3 | import com.genexus.android.core.application.LifecycleListeners 4 | import com.genexus.android.core.base.metadata.GenexusApplication 5 | import com.genexus.android.core.superapps.MiniApp 6 | 7 | abstract class OnMiniAppStoppedListener: LifecycleListeners.MiniApp { 8 | override fun onMiniAppCreated(miniApp: MiniApp) {} 9 | override fun onMiniAppStarted(miniApp: MiniApp) {} 10 | override fun onMiniAppResumed(miniApp: MiniApp) {} 11 | override fun onMiniAppPaused(miniApp: MiniApp, superApp: GenexusApplication) {} 12 | override fun onMiniAppException(miniApp: MiniApp, t: Throwable) {} 13 | } 14 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Runner/SampleExternalObject/SampleExObjLibrary.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SampleExObjLibrary.swift 3 | // ExampleSuperApp 4 | // 5 | 6 | import Flutter 7 | import GXCoreBL 8 | import GXSuperApp 9 | 10 | class SampleExObjLibrary: NSObject, GXExtensionLibraryProtocol { 11 | 12 | let binaryMessenger: FlutterBinaryMessenger 13 | 14 | required init(binaryMessenger: FlutterBinaryMessenger) { 15 | self.binaryMessenger = binaryMessenger 16 | } 17 | 18 | func initializeExtensionLibrary(withContext context: GXExtensionLibraryContext) { 19 | SuperAppAPI.setup(binaryMessenger: self.binaryMessenger) 20 | GXMiniAppsManager.registerSuperAppAPI(SampleExObjHandler.self, forExternalObjectName: "Payments") 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | google() 5 | mavenCentral() 6 | } 7 | } 8 | dependencyResolutionManagement { 9 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 10 | repositories { 11 | google() 12 | mavenCentral() 13 | maven { url 'https://pkgs.dev.azure.com/genexuslabs/155eaada-eb3c-418f-9c98-dcbcffffae50/_packaging/android-releases/maven/v1' } 14 | maven { url 'https://pkgs.dev.azure.com/genexuslabs/3361ab3b-96bc-4a69-a37a-f2b255ff2f35/_packaging/releases/maven/v1' } 15 | maven { url 'https://jitpack.io' } 16 | } 17 | } 18 | rootProject.name = "BankingSuperApp" 19 | include ':app' 20 | include ':payments' 21 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/android/app/src/main/kotlin/com/genexus/example_superapp_example/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.example_superapp_example 2 | 3 | import android.os.Bundle 4 | import com.genexus.example_superapp.FlutterEngineManager 5 | import io.flutter.embedding.android.FlutterActivity 6 | 7 | class MainActivity: FlutterActivity() { 8 | 9 | private var engineManager: FlutterEngineManager? = null 10 | 11 | override fun onCreate(savedInstanceState: Bundle?) { 12 | super.onCreate(savedInstanceState) 13 | engineManager = FlutterEngineManager(context).apply { createPaymentsRoute() } 14 | } 15 | 16 | override fun onDestroy() { 17 | super.onDestroy() 18 | engineManager?.destroyPaymentsRoute() 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Flutter/example_superapp/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 9 | 10 | 11 | 15 | 16 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/app/src/main/java/com/examplesuperapp/utils/NativePackages.kt: -------------------------------------------------------------------------------- 1 | package com.examplesuperapp.utils 2 | 3 | import com.facebook.react.ReactPackage 4 | import com.facebook.react.bridge.ReactApplicationContext 5 | import com.facebook.react.uimanager.ViewManager 6 | import com.examplesuperapp.ProvisioningAPI 7 | class NativePackages : ReactPackage { 8 | override fun createNativeModules(reactContext: ReactApplicationContext): List { 9 | return listOf( 10 | //list here all the native modules present in this project 11 | ProvisioningAPI(reactContext) 12 | ) 13 | } 14 | 15 | override fun createViewManagers(reactContext: ReactApplicationContext): List> { 16 | return emptyList() 17 | } 18 | } -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/ios/SampleExObjHandlerBridge.m: -------------------------------------------------------------------------------- 1 | // 2 | // SampleExObjHandlerBridge.m 3 | // ExampleSuperApp 4 | // 5 | 6 | #import 7 | #import 8 | #import 9 | 10 | @interface RCT_EXTERN_MODULE(SampleExObjHandler, GXActionExternalObjectHandler) 11 | 12 | RCT_EXTERN_METHOD(gxActionExObjMethodHandler_PayWithUI:(NSArray *)) 13 | RCT_EXTERN_METHOD(gxActionExObjMethodHandler_PayWithoutUI:(NSArray *)) 14 | RCT_EXTERN_METHOD(gxActionExObjMethodHandler_GetClientInformation:(NSArray *)) 15 | RCT_EXTERN_METHOD(gxActionExObjMethodHandler_GetPaymentInformation:(NSArray *)) 16 | RCT_EXTERN_METHOD(gxActionExObjMethodHandler_GetPaymentInfoAffinity) 17 | 18 | + (BOOL)requiresMainQueueSetup; 19 | { 20 | return NO; 21 | } 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/androidTest/java/com/genexus/superapps/bankx/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.superapps.bankx 2 | 3 | import androidx.test.platform.app.InstrumentationRegistry 4 | import androidx.test.ext.junit.runners.AndroidJUnit4 5 | 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | import org.junit.Assert.* 10 | 11 | /** 12 | * Instrumented test, which will execute on an Android device. 13 | * 14 | * See [testing documentation](http://d.android.com/tools/testing). 15 | */ 16 | @RunWith(AndroidJUnit4::class) 17 | class ExampleInstrumentedTest { 18 | @Test 19 | fun useAppContext() { 20 | // Context of the app under test. 21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 22 | assertEquals("com.genexus.superapps.bankx", appContext.packageName) 23 | } 24 | } -------------------------------------------------------------------------------- /Android/MiniAppCaller/payments/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /Flutter/example_superapp/example/android/settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | def flutterSdkPath = { 3 | def properties = new Properties() 4 | file("local.properties").withInputStream { properties.load(it) } 5 | def flutterSdkPath = properties.getProperty("flutter.sdk") 6 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 7 | return flutterSdkPath 8 | }() 9 | 10 | includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") 11 | 12 | repositories { 13 | google() 14 | mavenCentral() 15 | gradlePluginPortal() 16 | } 17 | } 18 | 19 | plugins { 20 | id "dev.flutter.flutter-plugin-loader" version "1.0.0" 21 | id "com.android.application" version "8.7.3" apply false 22 | id "org.jetbrains.kotlin.android" version "1.9.24" apply false 23 | } 24 | 25 | include ':app' -------------------------------------------------------------------------------- /Android/MiniAppCaller/payments/src/androidTest/java/com/genexus/superapps/bankx/payments/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.superapps.bankx.payments 2 | 3 | import androidx.test.platform.app.InstrumentationRegistry 4 | import androidx.test.ext.junit.runners.AndroidJUnit4 5 | 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | import org.junit.Assert.* 10 | 11 | /** 12 | * Instrumented test, which will execute on an Android device. 13 | * 14 | * See [testing documentation](http://d.android.com/tools/testing). 15 | */ 16 | @RunWith(AndroidJUnit4::class) 17 | class ExampleInstrumentedTest { 18 | @Test 19 | fun useAppContext() { 20 | // Context of the app under test. 21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 22 | assertEquals("com.genexus.superapps.bankx.payments.test", appContext.packageName) 23 | } 24 | } -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/RunnerTests/RunnerTests.swift: -------------------------------------------------------------------------------- 1 | import Flutter 2 | import UIKit 3 | import XCTest 4 | 5 | @testable import example_superapp 6 | 7 | // This demonstrates a simple unit test of the Swift portion of this plugin's implementation. 8 | // 9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest. 10 | 11 | class RunnerTests: XCTestCase { 12 | 13 | func testGetPlatformVersion() { 14 | let plugin = ExampleSuperappPlugin() 15 | 16 | let call = FlutterMethodCall(methodName: "getPlatformVersion", arguments: []) 17 | 18 | let resultExpectation = expectation(description: "result block must be called.") 19 | plugin.handle(call) { result in 20 | XCTAssertEqual(result as! String, "iOS " + UIDevice.current.systemVersion) 21 | resultExpectation.fulfill() 22 | } 23 | waitForExpectations(timeout: 1) 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext { 3 | buildToolsVersion = "35.0.0" 4 | minSdkVersion = 24 5 | compileSdkVersion = 35 6 | targetSdkVersion = 34 7 | ndkVersion = "27.1.12297006" 8 | kotlinVersion = "2.0.21" 9 | 10 | compose_version = '1.3.1' 11 | fc_version = "2.5.+" 12 | } 13 | repositories { 14 | google() 15 | mavenCentral() 16 | } 17 | dependencies { 18 | classpath('com.android.tools.build:gradle:8.8.0') 19 | classpath("com.facebook.react:react-native-gradle-plugin") 20 | classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") 21 | classpath "androidx.compose.compiler:compiler:$compose_version" 22 | classpath "org.jetbrains.kotlin:compose-compiler-gradle-plugin:$kotlinVersion" 23 | } 24 | } 25 | 26 | apply plugin: "com.facebook.react.rootproject" 27 | -------------------------------------------------------------------------------- /iOS/Logging.md: -------------------------------------------------------------------------------- 1 | # Enable Mini App Logging for iOS 2 | 3 | The Super App may store Mini App logging messages. 4 | To do this, enable Mini-Apps login in the Super App, as shown in the [App example](ExampleSuperApp/AppDelegate.swift#L19) 5 | 6 | ```swift 7 | GXMiniAppsManager.logEnabled = true 8 | /// Adjust log level 9 | GXMiniAppsManager.setLogLevel(.debug, for: .general) 10 | ``` 11 | 12 | Note this settings are persistent across app lunches, so you have to manually disable it to stop logging. 13 | Log files (.log) are created under 'GXData' directory in the NSDocumentDirectory user directory (excluded from backup). 14 | 15 | If log is enabled / disabled after GXUIApplicationExecutionEnvironment initialization, log should be started / ended manually by calling: 16 | ```swift 17 | GXFoundationServices.loggerService()?.startLogging() 18 | ``` 19 | or 20 | ```swift 21 | GXFoundationServices.loggerService()?.endLogging() 22 | ``` 23 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | migrate_working_dir/ 12 | 13 | # IntelliJ related 14 | *.iml 15 | *.ipr 16 | *.iws 17 | .idea/ 18 | 19 | # The .vscode folder contains launch configuration and tasks you configure in 20 | # VS Code which you may wish to be included in version control, so this line 21 | # is commented out by default. 22 | #.vscode/ 23 | 24 | # Flutter/Dart/Pub related 25 | **/doc/api/ 26 | **/ios/Flutter/.last_build_id 27 | .dart_tool/ 28 | .flutter-plugins 29 | .flutter-plugins-dependencies 30 | .packages 31 | .pub-cache/ 32 | .pub/ 33 | /build/ 34 | 35 | # Symbolication related 36 | app.*.symbols 37 | 38 | # Obfuscation related 39 | app.*.map.json 40 | 41 | # Android Studio will place build artifacts here 42 | /android/app/debug 43 | /android/app/profile 44 | /android/app/release 45 | -------------------------------------------------------------------------------- /Flutter/example_superapp/example/ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 12.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /Flutter/example_superapp/android/src/main/kotlin/com/genexus/example_superapp/ISuperApp.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.example_superapp 2 | 3 | import android.app.Activity 4 | import com.genexus.android.core.base.model.Entity 5 | import io.flutter.plugin.common.MethodChannel 6 | 7 | interface ISuperApp { 8 | fun payWithoutUI(amount: Double, resultHandler: MethodChannel.Result? = null) 9 | fun payWithUI(amount: Double, from: Activity) 10 | fun getClientInformation(clientId: String, resultHandler: MethodChannel.Result? = null) 11 | fun getPaymentInformation(clientInformation: Entity, resultHandler: MethodChannel.Result? = null) 12 | fun getPaymentInformation(clientInformation: HashMap, resultHandler: MethodChannel.Result? = null) 13 | fun getPaymentInfoAffinity(paymentInformation: Entity, resultHandler: MethodChannel.Result? = null) 14 | fun getPaymentInfoAffinity(paymentInformation: HashMap, resultHandler: MethodChannel.Result? = null) 15 | } 16 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/lib/routes.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import CachedMiniAppsList from './ui/cache/cached_screen'; 3 | import NetworkMiniAppsList from './ui/network/network_screen'; 4 | 5 | class TabItem { 6 | label: string; 7 | route: string; 8 | icon: string; 9 | widget: JSX.Element; 10 | 11 | constructor(label: string, route: string, icon: string, widget: JSX.Element) { 12 | this.label = label; 13 | this.route = route; 14 | this.icon = icon; 15 | this.widget = widget; 16 | } 17 | } 18 | 19 | const tabItems: TabItem[] = [ 20 | new TabItem(NetworkMiniAppsList.label, 21 | NetworkMiniAppsList.routeName, 22 | NetworkMiniAppsList.icon, 23 | ), 24 | new TabItem(CachedMiniAppsList.label, 25 | CachedMiniAppsList.routeName, 26 | CachedMiniAppsList.icon, 27 | ), 28 | ]; 29 | 30 | export { TabItem, tabItems }; 31 | -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/java/com/genexus/superapps/bankx/ui/screens/scopes/RequestScopesContract.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.superapps.bankx.ui.screens.scopes 2 | 3 | import android.app.Activity 4 | import android.content.Context 5 | import android.content.Intent 6 | import androidx.activity.result.contract.ActivityResultContract 7 | 8 | class RequestScopesContract: ActivityResultContract() { 9 | override fun createIntent(context: Context, input: Input): Intent { 10 | return Intent(context, RequestScopesActivity::class.java).apply { 11 | putExtra(RequestScopesActivity.KEY_MINIAPP_ID, input.miniAppId) 12 | putExtra(RequestScopesActivity.KEY_SCOPES_STRING, input.scopes) 13 | } 14 | } 15 | 16 | override fun parseResult(resultCode: Int, intent: Intent?): Boolean { 17 | return resultCode == Activity.RESULT_OK 18 | } 19 | 20 | data class Input(val miniAppId: String, val scopes: String) 21 | } -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/java/com/genexus/superapps/bankx/ui/theme/Type.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.superapps.bankx.ui.theme 2 | 3 | import androidx.compose.material.Typography 4 | import androidx.compose.ui.text.TextStyle 5 | import androidx.compose.ui.text.font.FontFamily 6 | import androidx.compose.ui.text.font.FontWeight 7 | import androidx.compose.ui.unit.sp 8 | 9 | // Set of Material typography styles to start with 10 | val Typography = Typography( 11 | body1 = TextStyle( 12 | fontFamily = FontFamily.Default, 13 | fontWeight = FontWeight.Normal, 14 | fontSize = 16.sp 15 | ) 16 | /* Other default text styles to override 17 | button = TextStyle( 18 | fontFamily = FontFamily.Default, 19 | fontWeight = FontWeight.W500, 20 | fontSize = 14.sp 21 | ), 22 | caption = TextStyle( 23 | fontFamily = FontFamily.Default, 24 | fontWeight = FontWeight.Normal, 25 | fontSize = 12.sp 26 | ) 27 | */ 28 | ) -------------------------------------------------------------------------------- /Android/MiniAppCaller/app/src/main/java/com/genexus/superapps/bankx/ui/screens/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.genexus.superapps.bankx.ui.screens 2 | 3 | import android.os.Bundle 4 | import androidx.activity.ComponentActivity 5 | import androidx.activity.compose.setContent 6 | import com.genexus.android.core.base.services.Services 7 | import com.genexus.superapps.bankx.application.MiniAppLifecycleListener 8 | import com.genexus.superapps.bankx.ui.BottomNavController 9 | import com.genexus.superapps.bankx.ui.theme.BankingSuperAppTheme 10 | 11 | class MainActivity : ComponentActivity() { 12 | override fun onCreate(savedInstanceState: Bundle?) { 13 | super.onCreate(savedInstanceState) 14 | val listener = MiniAppLifecycleListener(this) 15 | Services.Application.lifecycle.registerMiniApplicationLifecycleListener(listener) 16 | setContent { 17 | BankingSuperAppTheme { 18 | BottomNavController() 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Flutter/example_superapp/ios/example_superapp.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. 3 | # Run `pod lib lint example_superapp.podspec` to validate before publishing. 4 | # 5 | Pod::Spec.new do |s| 6 | s.name = 'example_superapp' 7 | s.version = '0.0.1' 8 | s.summary = 'A new Flutter plugin project.' 9 | s.description = <<-DESC 10 | A new Flutter plugin project. 11 | DESC 12 | s.homepage = 'http://example.com' 13 | s.license = { :file => '../LICENSE' } 14 | s.author = { 'Your Company' => 'email@example.com' } 15 | s.source = { :path => '.' } 16 | s.source_files = 'Classes/**/*' 17 | s.dependency 'Flutter' 18 | s.platform = :ios, '9.0' 19 | 20 | # Flutter.framework does not contain a i386 slice. 21 | s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } 22 | s.swift_version = '5.0' 23 | end 24 | -------------------------------------------------------------------------------- /ReactNative/ExampleSuperApp/lib/ui/selection_screen.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Text, View, Button } from 'react-native'; 3 | 4 | interface SelectionScreenProps { 5 | navigation: any; 6 | totalAmount: number; 7 | } 8 | 9 | class SelectionScreen extends React.Component { 10 | constructor(props: SelectionScreenProps) { 11 | super(props); 12 | } 13 | 14 | render() { 15 | return ( 16 | 17 | Confirm payment? 18 |