├── 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 |
4 |
5 |
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 |
31 | );
32 | }
33 | }
34 |
35 | export default SelectionScreen;
--------------------------------------------------------------------------------
/ReactNative/ExampleSuperApp/android/app/src/main/java/com/examplesuperapp/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.examplesuperapp
2 |
3 | import com.facebook.react.ReactActivity
4 | import com.facebook.react.ReactActivityDelegate
5 | import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled
6 | import com.facebook.react.defaults.DefaultReactActivityDelegate
7 |
8 | class MainActivity : ReactActivity() {
9 |
10 | /**
11 | * Returns the name of the main component registered from JavaScript. This is used to schedule
12 | * rendering of the component.
13 | */
14 | override fun getMainComponentName(): String = "ExampleSuperApp"
15 |
16 | /**
17 | * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]
18 | * which allows you to enable New Architecture with a single boolean flags [fabricEnabled]
19 | */
20 | override fun createReactActivityDelegate(): ReactActivityDelegate =
21 | DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled)
22 | }
23 |
--------------------------------------------------------------------------------
/ReactNative/ExampleSuperApp/android/app/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
10 |
11 |
13 |
14 |
18 |
19 |
21 |
--------------------------------------------------------------------------------
/Android/MiniAppCaller/app/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
22 |
23 | -keepclassmembers class * extends com.genexus.android.core.externalapi.ExternalApi {
24 | public (...);
25 | }
26 |
27 | -dontwarn org.springframework.core.io.ClassPathResource
--------------------------------------------------------------------------------
/Flutter/example_superapp/example/android/app/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
22 |
23 | -keepclassmembers class * extends com.genexus.android.core.externalapi.ExternalApi {
24 | public (...);
25 | }
26 |
27 | -dontwarn org.springframework.core.io.ClassPathResource
--------------------------------------------------------------------------------
/Flutter/example_superapp/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/Flutter/example_superapp/example/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/Flutter/example_superapp/lib/plugin/services/payments.dart:
--------------------------------------------------------------------------------
1 | import 'package:example_superapp/plugin/services/client.dart';
2 |
3 | class PaymentsService {
4 | static const sdtPaymentInformation = "PaymentInformation";
5 | static const fieldBrand = "brand";
6 | static const fieldAffinity = "affinity";
7 | static const fieldType = "type";
8 |
9 | static String pay(double amount) {
10 | return "paymentIdForAmount$amount";
11 | }
12 |
13 | static List