diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4fb1fdc..8b7e397 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -93,12 +93,12 @@ jobs: yarn turbo run build:android build-ios: - runs-on: macos-15 + runs-on: macos-26 steps: - name: Setup Xcode uses: maxim-lobanov/setup-xcode@v1 with: - xcode-version: 16.4 + xcode-version: '26.1.1' - name: Checkout uses: actions/checkout@v3 diff --git a/README.md b/README.md index 323fb3f..2ef99f3 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,3 @@ - - - - - - - - ![tm-developer-logo](https://github.com/user-attachments/assets/c5835fc2-f1b8-413c-af9d-4449cdf1d24b) # react-native-ticketmaster-ignite @@ -15,7 +7,8 @@ This library serves as a wrapper for the three Ticketmaster Ignite SDK's: [Accou In order to use the library, setup a developer account with Ticketmaster by contacting nexus_sdk@ticketmaster.com. When your account is activated you will receive an **API key** and **scheme** that you'll need to use to finish the setup. -## Installation +
+

Installation

Depending on your package manager you can install this library with one of the below commands: @@ -38,7 +31,10 @@ npx expo install react-native-ticketmaster-ignite If your project is an **Expo Managed Workflow** project then skip the "Setting up iOS" and "Setting up Android" sections and go straight to the [Setting up Expo](https://github.com/ticketmaster/react-native-ticketmaster-ignite?tab=readme-ov-file#setting-up-expo) section -## Setting up iOS +
+ +
+

Setting up iOS

Edit the `Podfile` and set the platform to `17.0` @@ -48,7 +44,10 @@ platform :ios, '17.0' - `cd` into the `ios` directory and run `pod install` -## Setting up Android +
+ +
+

Setting up Android

#### Set the minSdkVersion and compileSdkVersion @@ -144,11 +143,17 @@ dependencies { } ``` -## Setting up Expo +
+ +
+

Setting up Expo

If you are using an expo managed workflow you should ignore the iOS and Android setup sections above and use a config plugin to update your native files. See [here](./docs/expo.md) for an **example** config plugin written for an expo app that uses this library -## Usage +
+ +
+

Usage

`react-native-ticketmaster-ignite` exports the following modules: @@ -927,7 +932,10 @@ As the initial Accounts SDK configuration is done for your app via `IgniteProvid On any logs of `TicketmasterFoundation.ConnectionError error` see [here](https://github.com/ticketmaster/react-native-ticketmaster-ignite?tab=readme-ov-file#refresh-token) -## Running the demo apps +
+ +
+

Running the demo apps

To run the React Native example app: @@ -953,7 +961,10 @@ cd expo Then run the project with either `yarn expo:android`/`yarn expo:ios` -## Environment variables +
+ +
+

Environment variables

In order to use the library, setup a developer account with Ticketmaster by contacting nexus_sdk@ticketmaster.com. diff --git a/android/build.gradle b/android/build.gradle index 1efead8..dac62fe 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -117,12 +117,12 @@ dependencies { implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1' implementation 'com.google.code.gson:gson:2.11.0' - implementation 'com.ticketmaster.tickets:tickets:3.16.0' + implementation 'com.ticketmaster.tickets:tickets:3.17.4' implementation 'com.ticketmaster.tickets:secure-entry:1.7.0' - implementation 'com.ticketmaster.retail:purchase:3.8.14' - implementation 'com.ticketmaster.retail:prepurchase:3.8.14' - implementation 'com.ticketmaster.retail:discoveryapi:3.8.14' - implementation 'com.ticketmaster.retail:foundation:3.8.14' + implementation 'com.ticketmaster.retail:purchase:3.8.20' + implementation 'com.ticketmaster.retail:prepurchase:3.8.20' + implementation 'com.ticketmaster.retail:discoveryapi:3.8.20' + implementation 'com.ticketmaster.retail:foundation:3.8.20' implementation 'androidx.compose.material3:material3:1.4.0' testImplementation 'junit:junit:4.13.2' diff --git a/example/ios/Podfile b/example/ios/Podfile index bdd6020..81fa903 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -36,5 +36,14 @@ target 'TicketmasterIgniteExample' do :mac_catalyst_enabled => false, # :ccache_enabled => true ) + + # Force fmt 11.0.2 to compile as C++17 to dodge an Apple clang 21 (Xcode 26) + # consteval evaluation bug in that surfaces under C++20. + installer.pods_project.targets.each do |t| + next unless t.name == 'fmt' + t.build_configurations.each do |c| + c.build_settings['CLANG_CXX_LANGUAGE_STANDARD'] = 'c++17' + end + end end end \ No newline at end of file diff --git a/example/ios/TicketmasterIgniteExample.xcodeproj/project.pbxproj b/example/ios/TicketmasterIgniteExample.xcodeproj/project.pbxproj index 55cc472..241e7ab 100644 --- a/example/ios/TicketmasterIgniteExample.xcodeproj/project.pbxproj +++ b/example/ios/TicketmasterIgniteExample.xcodeproj/project.pbxproj @@ -274,14 +274,10 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-TicketmasterIgniteExample/Pods-TicketmasterIgniteExample-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-TicketmasterIgniteExample/Pods-TicketmasterIgniteExample-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); - outputPaths = ( - ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TicketmasterIgniteExample/Pods-TicketmasterIgniteExample-frameworks.sh\"\n"; @@ -339,14 +335,10 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-TicketmasterIgniteExample-TicketmasterIgniteExampleTests/Pods-TicketmasterIgniteExample-TicketmasterIgniteExampleTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-TicketmasterIgniteExample-TicketmasterIgniteExampleTests/Pods-TicketmasterIgniteExample-TicketmasterIgniteExampleTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); - outputPaths = ( - ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TicketmasterIgniteExample-TicketmasterIgniteExampleTests/Pods-TicketmasterIgniteExample-TicketmasterIgniteExampleTests-frameworks.sh\"\n"; @@ -360,14 +352,10 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-TicketmasterIgniteExample/Pods-TicketmasterIgniteExample-resources-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - ); name = "[CP] Copy Pods Resources"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-TicketmasterIgniteExample/Pods-TicketmasterIgniteExample-resources-${CONFIGURATION}-output-files.xcfilelist", ); - outputPaths = ( - ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TicketmasterIgniteExample/Pods-TicketmasterIgniteExample-resources.sh\"\n"; @@ -381,14 +369,10 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-TicketmasterIgniteExample-TicketmasterIgniteExampleTests/Pods-TicketmasterIgniteExample-TicketmasterIgniteExampleTests-resources-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - ); name = "[CP] Copy Pods Resources"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-TicketmasterIgniteExample-TicketmasterIgniteExampleTests/Pods-TicketmasterIgniteExample-TicketmasterIgniteExampleTests-resources-${CONFIGURATION}-output-files.xcfilelist", ); - outputPaths = ( - ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TicketmasterIgniteExample-TicketmasterIgniteExampleTests/Pods-TicketmasterIgniteExample-TicketmasterIgniteExampleTests-resources.sh\"\n"; @@ -601,7 +585,10 @@ "-DFOLLY_CFG_NO_COROUTINES=1", "-DFOLLY_HAVE_CLOCK_GETTIME=1", ); - OTHER_LDFLAGS = "$(inherited) "; + OTHER_LDFLAGS = ( + "$(inherited)", + " ", + ); REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG"; @@ -675,7 +662,10 @@ "-DFOLLY_CFG_NO_COROUTINES=1", "-DFOLLY_HAVE_CLOCK_GETTIME=1", ); - OTHER_LDFLAGS = "$(inherited) "; + OTHER_LDFLAGS = ( + "$(inherited)", + " ", + ); REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; USE_HERMES = true; diff --git a/example/package.json b/example/package.json index 53078c8..23682be 100644 --- a/example/package.json +++ b/example/package.json @@ -8,7 +8,7 @@ "ios": "cd ios && pod install && cd .. && react-native run-ios", "start": "react-native start", "build:android": "rm -rf ../android/build && cd android && ./gradlew assembleDebug --no-daemon --console=plain -PreactNativeArchitectures=arm64-v8a", - "build:ios": "cd ios && xcodebuild -workspace TicketmasterIgniteExample.xcworkspace -scheme TicketmasterIgniteExample -configuration Debug -sdk iphonesimulator CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ GCC_OPTIMIZATION_LEVEL=0 GCC_PRECOMPILE_PREFIX_HEADER=YES ASSETCATALOG_COMPILER_OPTIMIZATION=time DEBUG_INFORMATION_FORMAT=dwarf COMPILER_INDEX_STORE_ENABLE=NO" + "build:ios": "cd ios && xcodebuild -workspace TicketmasterIgniteExample.xcworkspace -scheme TicketmasterIgniteExample -configuration Debug -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ GCC_OPTIMIZATION_LEVEL=0 GCC_PRECOMPILE_PREFIX_HEADER=YES ASSETCATALOG_COMPILER_OPTIMIZATION=time DEBUG_INFORMATION_FORMAT=dwarf COMPILER_INDEX_STORE_ENABLE=NO" }, "dependencies": { "@react-navigation/bottom-tabs": "^7.4.4", @@ -43,7 +43,6 @@ "jest": "^29.6.3", "prettier": "2.8.8", "react-native-builder-bob": "^0.40.13", - "react-native-test-app": "^4.0.1", "react-test-renderer": "19.1.0", "typescript": "5.8.3" }, diff --git a/example/react-native.config.js b/example/react-native.config.js index 3a4bda0..ea50c70 100644 --- a/example/react-native.config.js +++ b/example/react-native.config.js @@ -1,9 +1,8 @@ const path = require('path'); const pkg = require('../package.json'); -const { configureProjects } = require('react-native-test-app'); module.exports = { - project: configureProjects({ + project: { android: { sourceDir: 'android', }, @@ -11,7 +10,7 @@ module.exports = { sourceDir: 'ios', automaticPodsInstallation: true, }, - }), + }, dependencies: { [pkg.name]: { root: path.join(__dirname, '..'), diff --git a/react-native-ticketmaster-ignite.podspec b/react-native-ticketmaster-ignite.podspec index 1615860..64c8240 100644 --- a/react-native-ticketmaster-ignite.podspec +++ b/react-native-ticketmaster-ignite.podspec @@ -19,7 +19,7 @@ Pod::Spec.new do |s| # Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0. # See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79. - s.dependency "TM-Ignite", '= 1.19.0' + s.dependency "TM-Ignite", '= 1.20.0' if respond_to?(:install_modules_dependencies, true) install_modules_dependencies(s) else diff --git a/yarn.lock b/yarn.lock index 339b78d..9868969 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5148,31 +5148,6 @@ __metadata: languageName: node linkType: hard -"@rnx-kit/react-native-host@npm:^0.5.0": - version: 0.5.1 - resolution: "@rnx-kit/react-native-host@npm:0.5.1" - peerDependencies: - react-native: ">=0.66" - checksum: e98ad62297f40b8f0326815b4a6b01bc6cf313305483300c24c0ac18f2afca7f16ee0ea6246f20b1e324c125e56f4ce1f5f9da1e3fd862f9eb439aed4a09e5d6 - languageName: node - linkType: hard - -"@rnx-kit/tools-node@npm:^3.0.0": - version: 3.0.0 - resolution: "@rnx-kit/tools-node@npm:3.0.0" - checksum: fecf7d94e1d1eed1e06ac9e172591011ed24c8babe435492c8b8cecc1a6ab5c4445630bc14468990345e8e3804ee4a1f4ad59b5ef3ae9dd0827572a5378d642b - languageName: node - linkType: hard - -"@rnx-kit/tools-react-native@npm:^2.0.0": - version: 2.0.1 - resolution: "@rnx-kit/tools-react-native@npm:2.0.1" - dependencies: - "@rnx-kit/tools-node": ^3.0.0 - checksum: aa7cf2f972210f0cd385e883e351cd8de9fd1b87ad0b8d84fb967ef0ee553211c07a81d214f06cb611707b0cafef8a8c1fdf22bb956efddabdd56e05c48e2bee - languageName: node - linkType: hard - "@sideway/address@npm:^4.1.5": version: 4.1.5 resolution: "@sideway/address@npm:4.1.5" @@ -5986,7 +5961,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^8.0.0, ajv@npm:^8.11.0": +"ajv@npm:^8.11.0": version: 8.17.1 resolution: "ajv@npm:8.17.1" dependencies: @@ -7138,7 +7113,7 @@ __metadata: languageName: node linkType: hard -"cliui@npm:^8.0.0, cliui@npm:^8.0.1": +"cliui@npm:^8.0.1": version: 8.0.1 resolution: "cliui@npm:8.0.1" dependencies: @@ -9310,7 +9285,7 @@ __metadata: languageName: node linkType: hard -"fast-xml-parser@npm:^4.0.0, fast-xml-parser@npm:^4.4.1": +"fast-xml-parser@npm:^4.4.1": version: 4.5.0 resolution: "fast-xml-parser@npm:4.5.0" dependencies: @@ -14220,7 +14195,7 @@ __metadata: languageName: node linkType: hard -"prompts@npm:^2.0.1, prompts@npm:^2.2.1, prompts@npm:^2.3.2, prompts@npm:^2.4.0, prompts@npm:^2.4.2": +"prompts@npm:^2.0.1, prompts@npm:^2.2.1, prompts@npm:^2.3.2, prompts@npm:^2.4.2": version: 2.4.2 resolution: "prompts@npm:2.4.2" dependencies: @@ -14629,43 +14604,6 @@ __metadata: languageName: node linkType: hard -"react-native-test-app@npm:^4.0.1": - version: 4.0.3 - resolution: "react-native-test-app@npm:4.0.3" - dependencies: - "@rnx-kit/react-native-host": ^0.5.0 - "@rnx-kit/tools-react-native": ^2.0.0 - ajv: ^8.0.0 - cliui: ^8.0.0 - fast-xml-parser: ^4.0.0 - prompts: ^2.4.0 - semver: ^7.3.5 - uuid: ^10.0.0 - peerDependencies: - "@callstack/react-native-visionos": 0.73 - 0.76 - "@expo/config-plugins": ">=5.0" - react: 18.1 - 19.0 - react-native: 0.70 - 0.76 || >=0.77.0-0 <0.77.0 - react-native-macos: ^0.0.0-0 || 0.71 - 0.76 - react-native-windows: ^0.0.0-0 || 0.70 - 0.76 - peerDependenciesMeta: - "@callstack/react-native-visionos": - optional: true - "@expo/config-plugins": - optional: true - react-native-macos: - optional: true - react-native-windows: - optional: true - bin: - configure-test-app: scripts/configure.mjs - init: scripts/init.mjs - init-test-app: scripts/init.mjs - install-windows-test-app: windows/test-app.mjs - checksum: 6d0ba3482ff8a76bf9134ba39fb5fe7ec9ffd55d94f6ec7411a7b346967727fc92cb67d006385c328f0ec10621d20e816e8ae8c2b9bb31b85c5b0fd2f65cc689 - languageName: node - linkType: hard - "react-native-ticketmaster-ignite-example@workspace:example": version: 0.0.0-use.local resolution: "react-native-ticketmaster-ignite-example@workspace:example" @@ -14700,7 +14638,6 @@ __metadata: react-native-safe-area-context: ^5.5.2 react-native-screens: ^4.16.0 react-native-svg: ^15.14.0 - react-native-test-app: ^4.0.1 react-test-renderer: 19.1.0 typescript: 5.8.3 languageName: unknown @@ -16787,7 +16724,7 @@ __metadata: "typescript@patch:typescript@5.8.3#~builtin": version: 5.8.3 - resolution: "typescript@patch:typescript@npm%3A5.8.3#~builtin::version=5.8.3&hash=29ae49" + resolution: "typescript@patch:typescript@npm%3A5.8.3#~builtin::version=5.8.3&hash=14eedb" bin: tsc: bin/tsc tsserver: bin/tsserver @@ -16797,7 +16734,7 @@ __metadata: "typescript@patch:typescript@^5.2.2#~builtin": version: 5.6.3 - resolution: "typescript@patch:typescript@npm%3A5.6.3#~builtin::version=5.6.3&hash=29ae49" + resolution: "typescript@patch:typescript@npm%3A5.6.3#~builtin::version=5.6.3&hash=14eedb" bin: tsc: bin/tsc tsserver: bin/tsserver @@ -16807,7 +16744,7 @@ __metadata: "typescript@patch:typescript@~5.9.2#~builtin": version: 5.9.3 - resolution: "typescript@patch:typescript@npm%3A5.9.3#~builtin::version=5.9.3&hash=29ae49" + resolution: "typescript@patch:typescript@npm%3A5.9.3#~builtin::version=5.9.3&hash=14eedb" bin: tsc: bin/tsc tsserver: bin/tsserver @@ -17097,15 +17034,6 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^10.0.0": - version: 10.0.0 - resolution: "uuid@npm:10.0.0" - bin: - uuid: dist/bin/uuid - checksum: 4b81611ade2885d2313ddd8dc865d93d8dccc13ddf901745edca8f86d99bc46d7a330d678e7532e7ebf93ce616679fb19b2e3568873ac0c14c999032acb25869 - languageName: node - linkType: hard - "uuid@npm:^7.0.3": version: 7.0.3 resolution: "uuid@npm:7.0.3"