react-native-acoustic-connect 19.0.9 → 19.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +91 -0
- package/ConnectConfig.example.json +1 -1
- package/README.md +390 -1
- package/android/build.gradle +86 -3
- package/android/config.gradle +137 -13
- package/android/src/main/assets/ConnectAdvancedConfig.json +1 -1
- package/android/src/main/java/com/acousticconnectrn/HybridAcousticConnectRN.kt +407 -34
- package/app.plugin.js +2 -2
- package/ios/AcousticConnectRNConfig.json +2 -2
- package/ios/ConnectRNParsing.swift +229 -0
- package/ios/HybridAcousticConnectRN.swift +290 -30
- package/lib/commonjs/TLTRN.js +116 -3
- package/lib/commonjs/TLTRN.js.map +1 -1
- package/lib/commonjs/components/Connect.js +145 -27
- package/lib/commonjs/components/Connect.js.map +1 -1
- package/lib/commonjs/index.js +3 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/TLTRN.js +116 -3
- package/lib/module/TLTRN.js.map +1 -1
- package/lib/module/components/Connect.js +146 -28
- package/lib/module/components/Connect.js.map +1 -1
- package/lib/module/index.js +5 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/TLTRN.d.ts +85 -1
- package/lib/typescript/src/TLTRN.d.ts.map +1 -1
- package/lib/typescript/src/components/Connect.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/react-native-acoustic-connect.nitro.d.ts +178 -10
- package/lib/typescript/src/specs/react-native-acoustic-connect.nitro.d.ts.map +1 -1
- package/nitrogen/generated/android/c++/JHybridAcousticConnectRNSpec.cpp +5 -9
- package/nitrogen/generated/android/c++/JHybridAcousticConnectRNSpec.hpp +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/acousticconnectrn/HybridAcousticConnectRNSpec.kt +2 -1
- package/nitrogen/generated/ios/AcousticConnectRN-Swift-Cxx-Umbrella.hpp +1 -0
- package/nitrogen/generated/ios/c++/HybridAcousticConnectRNSpecSwift.hpp +2 -1
- package/nitrogen/generated/ios/swift/HybridAcousticConnectRNSpec.swift +1 -1
- package/nitrogen/generated/ios/swift/HybridAcousticConnectRNSpec_cxx.swift +2 -25
- package/nitrogen/generated/shared/c++/HybridAcousticConnectRNSpec.hpp +2 -1
- package/package.json +4 -7
- package/plugin/build/withConnectAndroidConfig.d.ts +2 -2
- package/plugin/build/withConnectAndroidConfig.js +2 -2
- package/plugin/build/withConnectIosSigning.d.ts +1 -1
- package/plugin/build/withConnectIosSigning.js +1 -1
- package/plugin/src/withConnectAndroidConfig.ts +2 -2
- package/plugin/src/withConnectIosSigning.ts +1 -1
- package/scripts/gradleParser.js +1 -1
- package/src/TLTRN.ts +125 -4
- package/src/components/Connect.tsx +150 -27
- package/src/index.ts +5 -0
- package/src/specs/react-native-acoustic-connect.nitro.ts +180 -10
- package/Examples/SampleUI/.bundle/config +0 -2
- package/Examples/SampleUI/.detoxrc.js +0 -83
- package/Examples/SampleUI/.eslintrc.js +0 -4
- package/Examples/SampleUI/.prettierrc.js +0 -7
- package/Examples/SampleUI/.watchmanconfig +0 -1
- package/Examples/SampleUI/App.js +0 -1
- package/Examples/SampleUI/Gemfile +0 -10
- package/Examples/SampleUI/Gemfile.lock +0 -121
- package/Examples/SampleUI/README.md +0 -79
- package/Examples/SampleUI/__tests__/App.test.tsx +0 -17
- package/Examples/SampleUI/android/app/build.gradle +0 -129
- package/Examples/SampleUI/android/app/debug.keystore +0 -0
- package/Examples/SampleUI/android/app/proguard-rules.pro +0 -10
- package/Examples/SampleUI/android/app/src/debug/AndroidManifest.xml +0 -9
- package/Examples/SampleUI/android/app/src/main/AndroidManifest.xml +0 -31
- package/Examples/SampleUI/android/app/src/main/java/com/sampleui/MainActivity.kt +0 -30
- package/Examples/SampleUI/android/app/src/main/java/com/sampleui/MainApplication.kt +0 -53
- package/Examples/SampleUI/android/app/src/main/res/drawable/rn_edit_text_material.xml +0 -37
- package/Examples/SampleUI/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/Examples/SampleUI/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
- package/Examples/SampleUI/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/Examples/SampleUI/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
- package/Examples/SampleUI/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/Examples/SampleUI/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
- package/Examples/SampleUI/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/Examples/SampleUI/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
- package/Examples/SampleUI/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/Examples/SampleUI/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
- package/Examples/SampleUI/android/app/src/main/res/values/strings.xml +0 -3
- package/Examples/SampleUI/android/app/src/main/res/values/styles.xml +0 -9
- package/Examples/SampleUI/android/build.gradle +0 -21
- package/Examples/SampleUI/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/Examples/SampleUI/android/gradle/wrapper/gradle-wrapper.properties +0 -7
- package/Examples/SampleUI/android/gradle.properties +0 -39
- package/Examples/SampleUI/android/gradlew +0 -252
- package/Examples/SampleUI/android/gradlew.bat +0 -94
- package/Examples/SampleUI/android/settings.gradle +0 -21
- package/Examples/SampleUI/app.json +0 -51
- package/Examples/SampleUI/assets/fonts/Abel-Regular.ttf +0 -0
- package/Examples/SampleUI/assets/fonts/NotoSans-Regular.ttf +0 -0
- package/Examples/SampleUI/assets/images/android-icon.png +0 -0
- package/Examples/SampleUI/assets/images/artist-1.jpg +0 -0
- package/Examples/SampleUI/assets/images/artist-2.jpg +0 -0
- package/Examples/SampleUI/assets/images/avatar.png +0 -0
- package/Examples/SampleUI/assets/images/beach.jpg +0 -0
- package/Examples/SampleUI/assets/images/bridge.jpg +0 -0
- package/Examples/SampleUI/assets/images/chameleon.jpg +0 -0
- package/Examples/SampleUI/assets/images/city.jpg +0 -0
- package/Examples/SampleUI/assets/images/email-icon.png +0 -0
- package/Examples/SampleUI/assets/images/favorite.png +0 -0
- package/Examples/SampleUI/assets/images/forest.jpg +0 -0
- package/Examples/SampleUI/assets/images/paper-icon.png +0 -0
- package/Examples/SampleUI/assets/images/players-2.jpg +0 -0
- package/Examples/SampleUI/assets/images/players.jpg +0 -0
- package/Examples/SampleUI/assets/images/restaurant-1.jpg +0 -0
- package/Examples/SampleUI/assets/images/restaurant-2.jpg +0 -0
- package/Examples/SampleUI/assets/images/song-1.jpg +0 -0
- package/Examples/SampleUI/assets/images/song-2.jpg +0 -0
- package/Examples/SampleUI/assets/images/splash.png +0 -0
- package/Examples/SampleUI/assets/images/strawberries.jpg +0 -0
- package/Examples/SampleUI/assets/images/wrecked-ship.jpg +0 -0
- package/Examples/SampleUI/assets/styles/fonts.css +0 -47
- package/Examples/SampleUI/babel.config.js +0 -22
- package/Examples/SampleUI/index.js +0 -9
- package/Examples/SampleUI/ios/.xcode.env +0 -11
- package/Examples/SampleUI/ios/Podfile +0 -71
- package/Examples/SampleUI/ios/Podfile.lock +0 -2276
- package/Examples/SampleUI/ios/SampleUI/AppDelegate.h +0 -7
- package/Examples/SampleUI/ios/SampleUI/AppDelegate.mm +0 -31
- package/Examples/SampleUI/ios/SampleUI/Images.xcassets/AppIcon.appiconset/Contents.json +0 -53
- package/Examples/SampleUI/ios/SampleUI/Images.xcassets/Contents.json +0 -6
- package/Examples/SampleUI/ios/SampleUI/Info.plist +0 -52
- package/Examples/SampleUI/ios/SampleUI/LaunchScreen.storyboard +0 -47
- package/Examples/SampleUI/ios/SampleUI/PrivacyInfo.xcprivacy +0 -48
- package/Examples/SampleUI/ios/SampleUI/main.m +0 -10
- package/Examples/SampleUI/ios/SampleUI.xcodeproj/project.pbxproj +0 -785
- package/Examples/SampleUI/ios/SampleUI.xcodeproj/xcshareddata/xcschemes/SampleUI.xcscheme +0 -105
- package/Examples/SampleUI/ios/SampleUI.xcworkspace/contents.xcworkspacedata +0 -10
- package/Examples/SampleUI/ios/SampleUITests/Info.plist +0 -24
- package/Examples/SampleUI/ios/SampleUITests/SampleUITests.m +0 -66
- package/Examples/SampleUI/jest.config.js +0 -3
- package/Examples/SampleUI/metro.config.js +0 -54
- package/Examples/SampleUI/package.json +0 -65
- package/Examples/SampleUI/scripts/integration-test-android.sh +0 -292
- package/Examples/SampleUI/src/DrawerItems.tsx +0 -322
- package/Examples/SampleUI/src/ExampleList.tsx +0 -175
- package/Examples/SampleUI/src/Examples/ActivityIndicatorExample.tsx +0 -73
- package/Examples/SampleUI/src/Examples/AnimatedFABExample/AnimatedFABExample.tsx +0 -220
- package/Examples/SampleUI/src/Examples/AnimatedFABExample/CustomFAB.tsx +0 -70
- package/Examples/SampleUI/src/Examples/AnimatedFABExample/CustomFABControls.tsx +0 -146
- package/Examples/SampleUI/src/Examples/AnimatedFABExample/index.ts +0 -1
- package/Examples/SampleUI/src/Examples/AppbarExample.tsx +0 -263
- package/Examples/SampleUI/src/Examples/AvatarExample.tsx +0 -76
- package/Examples/SampleUI/src/Examples/BadgeExample.tsx +0 -97
- package/Examples/SampleUI/src/Examples/BannerExample.tsx +0 -152
- package/Examples/SampleUI/src/Examples/BottomNavigationBarExample.tsx +0 -94
- package/Examples/SampleUI/src/Examples/BottomNavigationExample.tsx +0 -205
- package/Examples/SampleUI/src/Examples/ButtonExample.tsx +0 -405
- package/Examples/SampleUI/src/Examples/CardExample.tsx +0 -245
- package/Examples/SampleUI/src/Examples/CheckboxExample.tsx +0 -87
- package/Examples/SampleUI/src/Examples/CheckboxItemExample.tsx +0 -72
- package/Examples/SampleUI/src/Examples/ChipExample.tsx +0 -432
- package/Examples/SampleUI/src/Examples/DataTableExample.tsx +0 -128
- package/Examples/SampleUI/src/Examples/DialogExample.tsx +0 -217
- package/Examples/SampleUI/src/Examples/Dialogs/DialogTextComponent.tsx +0 -31
- package/Examples/SampleUI/src/Examples/Dialogs/DialogTrackingTest.tsx +0 -307
- package/Examples/SampleUI/src/Examples/Dialogs/DialogWithCustomColors.tsx +0 -57
- package/Examples/SampleUI/src/Examples/Dialogs/DialogWithDismissableBackButton.tsx +0 -38
- package/Examples/SampleUI/src/Examples/Dialogs/DialogWithIcon.tsx +0 -42
- package/Examples/SampleUI/src/Examples/Dialogs/DialogWithLoadingIndicator.tsx +0 -48
- package/Examples/SampleUI/src/Examples/Dialogs/DialogWithLongText.tsx +0 -81
- package/Examples/SampleUI/src/Examples/Dialogs/DialogWithRadioBtns.tsx +0 -111
- package/Examples/SampleUI/src/Examples/Dialogs/UndismissableDialog.tsx +0 -30
- package/Examples/SampleUI/src/Examples/Dialogs/index.tsx +0 -44
- package/Examples/SampleUI/src/Examples/DividerExample.tsx +0 -30
- package/Examples/SampleUI/src/Examples/FABExample.tsx +0 -226
- package/Examples/SampleUI/src/Examples/IconButtonExample.tsx +0 -230
- package/Examples/SampleUI/src/Examples/IconExample.tsx +0 -50
- package/Examples/SampleUI/src/Examples/ListAccordionExample.tsx +0 -65
- package/Examples/SampleUI/src/Examples/ListAccordionGroupExample.tsx +0 -80
- package/Examples/SampleUI/src/Examples/ListItemExample.tsx +0 -310
- package/Examples/SampleUI/src/Examples/ListSectionExample.tsx +0 -159
- package/Examples/SampleUI/src/Examples/MaterialBottomTabNavigatorExample.tsx +0 -87
- package/Examples/SampleUI/src/Examples/MenuExample.tsx +0 -211
- package/Examples/SampleUI/src/Examples/ProgressBarExample.tsx +0 -142
- package/Examples/SampleUI/src/Examples/RadioButtonExample.tsx +0 -104
- package/Examples/SampleUI/src/Examples/RadioButtonGroupExample.tsx +0 -67
- package/Examples/SampleUI/src/Examples/RadioButtonItemExample.tsx +0 -77
- package/Examples/SampleUI/src/Examples/SearchbarExample.tsx +0 -249
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonCustomColorCheck.tsx +0 -93
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonDefault.tsx +0 -49
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonDisabled.tsx +0 -47
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonMultiselect.tsx +0 -50
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonMultiselectIcons.tsx +0 -49
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonMultiselectRealCase.tsx +0 -114
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonOnlyIcons.tsx +0 -40
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonOnlyIconsWithCheck.tsx +0 -43
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonRealCase.tsx +0 -97
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonWithDensity.tsx +0 -47
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonWithSelectedCheck.tsx +0 -52
- package/Examples/SampleUI/src/Examples/SegmentedButtons/index.ts +0 -9
- package/Examples/SampleUI/src/Examples/SegmentedButtonsExample.tsx +0 -57
- package/Examples/SampleUI/src/Examples/SnackbarExample.tsx +0 -141
- package/Examples/SampleUI/src/Examples/SurfaceExample.tsx +0 -130
- package/Examples/SampleUI/src/Examples/SwitchExample.tsx +0 -105
- package/Examples/SampleUI/src/Examples/TeamDetails.tsx +0 -291
- package/Examples/SampleUI/src/Examples/TeamsList.tsx +0 -57
- package/Examples/SampleUI/src/Examples/TextExample.tsx +0 -132
- package/Examples/SampleUI/src/Examples/TextInputExample.tsx +0 -914
- package/Examples/SampleUI/src/Examples/ThemeExample.tsx +0 -41
- package/Examples/SampleUI/src/Examples/ThemingWithReactNavigation.tsx +0 -75
- package/Examples/SampleUI/src/Examples/ToggleButtonExample.tsx +0 -128
- package/Examples/SampleUI/src/Examples/TooltipExample.tsx +0 -191
- package/Examples/SampleUI/src/Examples/TouchableRippleExample.tsx +0 -37
- package/Examples/SampleUI/src/RootNavigator.tsx +0 -95
- package/Examples/SampleUI/src/ScreenWrapper.tsx +0 -67
- package/Examples/SampleUI/src/components/ActivityIndicator.tsx +0 -254
- package/Examples/SampleUI/src/components/Appbar/Appbar.tsx +0 -364
- package/Examples/SampleUI/src/components/Appbar/AppbarAction.tsx +0 -132
- package/Examples/SampleUI/src/components/Appbar/AppbarBackAction.tsx +0 -77
- package/Examples/SampleUI/src/components/Appbar/AppbarBackIcon.tsx +0 -52
- package/Examples/SampleUI/src/components/Appbar/AppbarContent.tsx +0 -249
- package/Examples/SampleUI/src/components/Appbar/AppbarHeader.tsx +0 -174
- package/Examples/SampleUI/src/components/Appbar/index.ts +0 -22
- package/Examples/SampleUI/src/components/Appbar/utils.ts +0 -188
- package/Examples/SampleUI/src/components/Avatar/Avatar.tsx +0 -8
- package/Examples/SampleUI/src/components/Avatar/AvatarIcon.tsx +0 -87
- package/Examples/SampleUI/src/components/Avatar/AvatarImage.tsx +0 -128
- package/Examples/SampleUI/src/components/Avatar/AvatarText.tsx +0 -127
- package/Examples/SampleUI/src/components/Badge.tsx +0 -138
- package/Examples/SampleUI/src/components/Banner.tsx +0 -302
- package/Examples/SampleUI/src/components/BottomNavigation/BottomNavigation.tsx +0 -643
- package/Examples/SampleUI/src/components/BottomNavigation/BottomNavigationBar.tsx +0 -1039
- package/Examples/SampleUI/src/components/BottomNavigation/BottomNavigationRouteScreen.tsx +0 -31
- package/Examples/SampleUI/src/components/BottomNavigation/utils.ts +0 -70
- package/Examples/SampleUI/src/components/Button/Button.tsx +0 -503
- package/Examples/SampleUI/src/components/Button/utils.tsx +0 -272
- package/Examples/SampleUI/src/components/Card/Card.tsx +0 -373
- package/Examples/SampleUI/src/components/Card/CardActions.tsx +0 -74
- package/Examples/SampleUI/src/components/Card/CardContent.tsx +0 -99
- package/Examples/SampleUI/src/components/Card/CardCover.tsx +0 -96
- package/Examples/SampleUI/src/components/Card/CardTitle.tsx +0 -236
- package/Examples/SampleUI/src/components/Card/utils.tsx +0 -110
- package/Examples/SampleUI/src/components/Checkbox/Checkbox.tsx +0 -78
- package/Examples/SampleUI/src/components/Checkbox/CheckboxAndroid.tsx +0 -180
- package/Examples/SampleUI/src/components/Checkbox/CheckboxIOS.tsx +0 -104
- package/Examples/SampleUI/src/components/Checkbox/CheckboxItem.tsx +0 -236
- package/Examples/SampleUI/src/components/Checkbox/index.ts +0 -19
- package/Examples/SampleUI/src/components/Checkbox/utils.ts +0 -183
- package/Examples/SampleUI/src/components/Chip/Chip.tsx +0 -513
- package/Examples/SampleUI/src/components/Chip/helpers.tsx +0 -322
- package/Examples/SampleUI/src/components/CrossFadeIcon.tsx +0 -140
- package/Examples/SampleUI/src/components/DataTable/DataTable.tsx +0 -138
- package/Examples/SampleUI/src/components/DataTable/DataTableCell.tsx +0 -132
- package/Examples/SampleUI/src/components/DataTable/DataTableHeader.tsx +0 -82
- package/Examples/SampleUI/src/components/DataTable/DataTablePagination.tsx +0 -407
- package/Examples/SampleUI/src/components/DataTable/DataTableRow.tsx +0 -107
- package/Examples/SampleUI/src/components/DataTable/DataTableTitle.tsx +0 -208
- package/Examples/SampleUI/src/components/Dialog/Dialog.tsx +0 -191
- package/Examples/SampleUI/src/components/Dialog/DialogActions.tsx +0 -94
- package/Examples/SampleUI/src/components/Dialog/DialogContent.tsx +0 -54
- package/Examples/SampleUI/src/components/Dialog/DialogIcon.tsx +0 -100
- package/Examples/SampleUI/src/components/Dialog/DialogScrollArea.tsx +0 -88
- package/Examples/SampleUI/src/components/Dialog/DialogTitle.tsx +0 -94
- package/Examples/SampleUI/src/components/Divider.tsx +0 -102
- package/Examples/SampleUI/src/components/Drawer/Drawer.tsx +0 -8
- package/Examples/SampleUI/src/components/Drawer/DrawerCollapsedItem.tsx +0 -282
- package/Examples/SampleUI/src/components/Drawer/DrawerItem.tsx +0 -209
- package/Examples/SampleUI/src/components/Drawer/DrawerSection.tsx +0 -138
- package/Examples/SampleUI/src/components/FAB/AnimatedFAB.tsx +0 -619
- package/Examples/SampleUI/src/components/FAB/FAB.tsx +0 -371
- package/Examples/SampleUI/src/components/FAB/FABGroup.tsx +0 -532
- package/Examples/SampleUI/src/components/FAB/index.ts +0 -13
- package/Examples/SampleUI/src/components/FAB/utils.ts +0 -474
- package/Examples/SampleUI/src/components/HelperText/HelperText.tsx +0 -168
- package/Examples/SampleUI/src/components/HelperText/utils.ts +0 -30
- package/Examples/SampleUI/src/components/Icon.tsx +0 -170
- package/Examples/SampleUI/src/components/IconButton/IconButton.tsx +0 -234
- package/Examples/SampleUI/src/components/IconButton/utils.ts +0 -190
- package/Examples/SampleUI/src/components/List/List.tsx +0 -20
- package/Examples/SampleUI/src/components/List/ListAccordion.tsx +0 -391
- package/Examples/SampleUI/src/components/List/ListAccordionGroup.tsx +0 -88
- package/Examples/SampleUI/src/components/List/ListIcon.tsx +0 -79
- package/Examples/SampleUI/src/components/List/ListImage.tsx +0 -89
- package/Examples/SampleUI/src/components/List/ListItem.tsx +0 -313
- package/Examples/SampleUI/src/components/List/ListSection.tsx +0 -87
- package/Examples/SampleUI/src/components/List/ListSubheader.tsx +0 -79
- package/Examples/SampleUI/src/components/List/utils.ts +0 -113
- package/Examples/SampleUI/src/components/MaterialCommunityIcon.tsx +0 -121
- package/Examples/SampleUI/src/components/Menu/Menu.tsx +0 -711
- package/Examples/SampleUI/src/components/Menu/MenuItem.tsx +0 -257
- package/Examples/SampleUI/src/components/Menu/utils.ts +0 -110
- package/Examples/SampleUI/src/components/Modal.tsx +0 -245
- package/Examples/SampleUI/src/components/Portal/Portal.tsx +0 -69
- package/Examples/SampleUI/src/components/Portal/PortalConsumer.tsx +0 -44
- package/Examples/SampleUI/src/components/Portal/PortalHost.tsx +0 -143
- package/Examples/SampleUI/src/components/Portal/PortalManager.tsx +0 -54
- package/Examples/SampleUI/src/components/ProgressBar.tsx +0 -292
- package/Examples/SampleUI/src/components/RadioButton/RadioButton.tsx +0 -86
- package/Examples/SampleUI/src/components/RadioButton/RadioButtonAndroid.tsx +0 -202
- package/Examples/SampleUI/src/components/RadioButton/RadioButtonGroup.tsx +0 -67
- package/Examples/SampleUI/src/components/RadioButton/RadioButtonIOS.tsx +0 -130
- package/Examples/SampleUI/src/components/RadioButton/RadioButtonItem.tsx +0 -268
- package/Examples/SampleUI/src/components/RadioButton/index.ts +0 -22
- package/Examples/SampleUI/src/components/RadioButton/utils.ts +0 -37
- package/Examples/SampleUI/src/components/Searchbar.tsx +0 -459
- package/Examples/SampleUI/src/components/SegmentedButtons/SegmentedButtonItem.tsx +0 -271
- package/Examples/SampleUI/src/components/SegmentedButtons/SegmentedButtons.tsx +0 -197
- package/Examples/SampleUI/src/components/SegmentedButtons/utils.ts +0 -179
- package/Examples/SampleUI/src/components/Snackbar.tsx +0 -430
- package/Examples/SampleUI/src/components/Surface.tsx +0 -376
- package/Examples/SampleUI/src/components/Switch/Switch.tsx +0 -108
- package/Examples/SampleUI/src/components/Switch/utils.ts +0 -113
- package/Examples/SampleUI/src/components/TextInput/Addons/Outline.tsx +0 -64
- package/Examples/SampleUI/src/components/TextInput/Addons/Underline.tsx +0 -78
- package/Examples/SampleUI/src/components/TextInput/Adornment/TextInputAdornment.tsx +0 -208
- package/Examples/SampleUI/src/components/TextInput/Adornment/TextInputAffix.tsx +0 -212
- package/Examples/SampleUI/src/components/TextInput/Adornment/TextInputIcon.tsx +0 -195
- package/Examples/SampleUI/src/components/TextInput/Adornment/enums.tsx +0 -12
- package/Examples/SampleUI/src/components/TextInput/Adornment/types.tsx +0 -11
- package/Examples/SampleUI/src/components/TextInput/Adornment/utils.ts +0 -48
- package/Examples/SampleUI/src/components/TextInput/Label/InputLabel.tsx +0 -217
- package/Examples/SampleUI/src/components/TextInput/Label/LabelBackground.tsx +0 -100
- package/Examples/SampleUI/src/components/TextInput/TextInput.tsx +0 -572
- package/Examples/SampleUI/src/components/TextInput/TextInputFlat.tsx +0 -475
- package/Examples/SampleUI/src/components/TextInput/TextInputOutlined.tsx +0 -450
- package/Examples/SampleUI/src/components/TextInput/constants.tsx +0 -48
- package/Examples/SampleUI/src/components/TextInput/helpers.tsx +0 -612
- package/Examples/SampleUI/src/components/TextInput/types.tsx +0 -155
- package/Examples/SampleUI/src/components/ToggleButton/ToggleButton.tsx +0 -187
- package/Examples/SampleUI/src/components/ToggleButton/ToggleButtonGroup.tsx +0 -72
- package/Examples/SampleUI/src/components/ToggleButton/ToggleButtonRow.tsx +0 -107
- package/Examples/SampleUI/src/components/ToggleButton/index.ts +0 -16
- package/Examples/SampleUI/src/components/ToggleButton/utils.ts +0 -26
- package/Examples/SampleUI/src/components/Tooltip/Tooltip.tsx +0 -249
- package/Examples/SampleUI/src/components/Tooltip/utils.ts +0 -129
- package/Examples/SampleUI/src/components/TouchableRipple/Pressable.tsx +0 -41
- package/Examples/SampleUI/src/components/TouchableRipple/TouchableRipple.native.tsx +0 -145
- package/Examples/SampleUI/src/components/TouchableRipple/TouchableRipple.tsx +0 -317
- package/Examples/SampleUI/src/components/TouchableRipple/utils.ts +0 -66
- package/Examples/SampleUI/src/components/Typography/AnimatedText.tsx +0 -107
- package/Examples/SampleUI/src/components/Typography/Text.tsx +0 -184
- package/Examples/SampleUI/src/components/Typography/types.tsx +0 -5
- package/Examples/SampleUI/src/components/Typography/v2/Caption.tsx +0 -50
- package/Examples/SampleUI/src/components/Typography/v2/Headline.tsx +0 -52
- package/Examples/SampleUI/src/components/Typography/v2/Paragraph.tsx +0 -49
- package/Examples/SampleUI/src/components/Typography/v2/StyledText.tsx +0 -56
- package/Examples/SampleUI/src/components/Typography/v2/Subheading.tsx +0 -50
- package/Examples/SampleUI/src/components/Typography/v2/Text.tsx +0 -62
- package/Examples/SampleUI/src/components/Typography/v2/Title.tsx +0 -49
- package/Examples/SampleUI/src/components/Typography/v2/index.ts +0 -5
- package/Examples/SampleUI/src/core/PaperProvider.tsx +0 -122
- package/Examples/SampleUI/src/core/SafeAreaProviderCompat.tsx +0 -65
- package/Examples/SampleUI/src/core/settings.tsx +0 -23
- package/Examples/SampleUI/src/core/theming.tsx +0 -170
- package/Examples/SampleUI/src/index.native.tsx +0 -285
- package/Examples/SampleUI/src/index.tsx +0 -226
- package/Examples/SampleUI/src/react-navigation/index.tsx +0 -19
- package/Examples/SampleUI/src/react-navigation/navigators/createMaterialBottomTabNavigator.tsx +0 -72
- package/Examples/SampleUI/src/react-navigation/types.tsx +0 -126
- package/Examples/SampleUI/src/react-navigation/views/MaterialBottomTabView.tsx +0 -140
- package/Examples/SampleUI/src/styles/__tests__/fonts.test.js +0 -290
- package/Examples/SampleUI/src/styles/fonts.tsx +0 -143
- package/Examples/SampleUI/src/styles/overlay.tsx +0 -70
- package/Examples/SampleUI/src/styles/shadow.tsx +0 -109
- package/Examples/SampleUI/src/styles/themes/index.ts +0 -4
- package/Examples/SampleUI/src/styles/themes/v2/DarkTheme.tsx +0 -30
- package/Examples/SampleUI/src/styles/themes/v2/LightTheme.tsx +0 -30
- package/Examples/SampleUI/src/styles/themes/v2/colors.tsx +0 -277
- package/Examples/SampleUI/src/styles/themes/v3/DarkTheme.tsx +0 -66
- package/Examples/SampleUI/src/styles/themes/v3/LightTheme.tsx +0 -69
- package/Examples/SampleUI/src/styles/themes/v3/tokens.tsx +0 -230
- package/Examples/SampleUI/src/utils/BackHandler/BackHandler.native.tsx +0 -3
- package/Examples/SampleUI/src/utils/BackHandler/BackHandler.tsx +0 -11
- package/Examples/SampleUI/src/utils/addEventListener.tsx +0 -56
- package/Examples/SampleUI/src/utils/forwardRef.tsx +0 -23
- package/Examples/SampleUI/src/utils/getContrastingColor.tsx +0 -15
- package/Examples/SampleUI/src/utils/hasTouchHandler.tsx +0 -23
- package/Examples/SampleUI/src/utils/roundLayoutSize.ts +0 -2
- package/Examples/SampleUI/src/utils/splitStyles.ts +0 -60
- package/Examples/SampleUI/src/utils/useAnimatedValue.tsx +0 -9
- package/Examples/SampleUI/src/utils/useAnimatedValueArray.tsx +0 -13
- package/Examples/SampleUI/src/utils/useIsKeyboardShown.tsx +0 -55
- package/Examples/SampleUI/src/utils/useLayout.tsx +0 -29
- package/Examples/SampleUI/src/utils/useLazyRef.tsx +0 -11
- package/Examples/SampleUI/tsconfig.json +0 -3
- package/Examples/SampleUI/utils/index.ts +0 -1426
- package/cli/__tests__/doctor.test.mjs +0 -88
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* prohibited.
|
|
11
11
|
********************************************************************************************/
|
|
12
12
|
import React, { useCallback, useEffect, useRef, useState } from "react";
|
|
13
|
-
import { View, StyleSheet
|
|
13
|
+
import { View, StyleSheet } from "react-native";
|
|
14
14
|
// Use type-only import for LayoutChangeEvent
|
|
15
15
|
import TLTRN from '../TLTRN';
|
|
16
16
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -56,14 +56,13 @@ const Connect = ({
|
|
|
56
56
|
// ref is usable, then flip `navReady` to subscribe. The direct-child case
|
|
57
57
|
// resolves on the first synchronous check (no polling, no warning). If the
|
|
58
58
|
// ref never attaches within the grace window we warn once, as before.
|
|
59
|
-
// See CA-144314.
|
|
60
59
|
useEffect(() => {
|
|
61
60
|
// Reset readiness whenever the resolved ref changes. Without this, a
|
|
62
61
|
// `navigationRef` prop swap leaves `navReady` stale-true, so the
|
|
63
62
|
// subscription effect below re-runs and attaches `addListener` to the
|
|
64
63
|
// old container (whose `.current` is still non-null mid-transition)
|
|
65
64
|
// before the new ref is validated. Resetting forces re-validation
|
|
66
|
-
// through `isUsable()` before tracking re-enables.
|
|
65
|
+
// through `isUsable()` before tracking re-enables.
|
|
67
66
|
setNavReady(false);
|
|
68
67
|
const isUsable = () => !!navigation && !!navigation.current && typeof navigation.current.addListener === "function" && typeof navigation.current.getCurrentRoute === "function";
|
|
69
68
|
if (isUsable()) {
|
|
@@ -99,13 +98,28 @@ const Connect = ({
|
|
|
99
98
|
|
|
100
99
|
// Listen for the 'state' event to track navigation state changes
|
|
101
100
|
const unsubscribeState = navigation.current.addListener("state", () => {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
101
|
+
// extractName resolves the focused route through the nested
|
|
102
|
+
// navigators itself, so there is no outer-level fallback to chain
|
|
103
|
+
// here — one used to be appended, which reported the tab name for
|
|
104
|
+
// every push inside that tab.
|
|
105
|
+
currentRoute.current = extractName(navigation);
|
|
106
|
+
|
|
107
|
+
// Both platforms take the same path. iOS used to be excluded from
|
|
108
|
+
// the layout call, which left the wrapper with no layout trigger
|
|
109
|
+
// at all there: the one remaining bridge caller was TLTRN's
|
|
110
|
+
// render-settle timer, so a plain navigation captured nothing.
|
|
111
|
+
if (!currentRoute.current) {
|
|
112
|
+
return;
|
|
108
113
|
}
|
|
114
|
+
TLTRN.logScreenViewPageName(currentRoute.current);
|
|
115
|
+
// Deliberately no delay argument. TLTRN then sends its
|
|
116
|
+
// "use the configured CaptureLayoutDelay" sentinel, so the capture
|
|
117
|
+
// is deferred past the transition. Passing 0 would select the
|
|
118
|
+
// native synchronous overload instead, which captures on the
|
|
119
|
+
// calling thread at the *start* of the transition — React
|
|
120
|
+
// Navigation fires 'state' before the animation runs — and makes
|
|
121
|
+
// CaptureLayoutDelay inert.
|
|
122
|
+
TLTRN.logScreenLayout(currentRoute.current);
|
|
109
123
|
});
|
|
110
124
|
|
|
111
125
|
// Cleanup listeners when the component unmounts or dependencies change
|
|
@@ -114,11 +128,9 @@ const Connect = ({
|
|
|
114
128
|
};
|
|
115
129
|
}, [navReady, navigation]);
|
|
116
130
|
const onStartShouldSetResponderCapture = useCallback(event => {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
TLTRN.logScreenViewPageName(currentRoute.current);
|
|
121
|
-
}
|
|
131
|
+
currentRoute.current = extractName(navigation);
|
|
132
|
+
if (currentRoute.current) {
|
|
133
|
+
TLTRN.logScreenViewPageName(currentRoute.current);
|
|
122
134
|
}
|
|
123
135
|
TLTRN.logClickEvent(event);
|
|
124
136
|
return false; // Must remain false so events bubble to the host app's handlers
|
|
@@ -128,13 +140,19 @@ const Connect = ({
|
|
|
128
140
|
return false;
|
|
129
141
|
}
|
|
130
142
|
initial.current = true;
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
143
|
+
|
|
144
|
+
// Resolved through extractName like the other two triggers. This site
|
|
145
|
+
// used to read `getCurrentRoute()?.name` directly, so a `params.name`
|
|
146
|
+
// override was honoured on navigation but silently ignored for the
|
|
147
|
+
// first-paint screen — the same screen reported under two names.
|
|
148
|
+
currentRoute.current = extractName(navigation);
|
|
149
|
+
// Same unification as the 'state' listener above: the split sent
|
|
150
|
+
// only a screenview on iOS and only a layout on Android, so
|
|
151
|
+
// neither platform got both from the first-paint trigger. No delay
|
|
152
|
+
// argument, for the reason given there.
|
|
153
|
+
if (currentRoute.current) {
|
|
154
|
+
TLTRN.logScreenViewPageName(currentRoute.current);
|
|
155
|
+
TLTRN.logScreenLayout(currentRoute.current);
|
|
138
156
|
}
|
|
139
157
|
return true;
|
|
140
158
|
}, [navigation]);
|
|
@@ -147,15 +165,115 @@ const Connect = ({
|
|
|
147
165
|
}) : children
|
|
148
166
|
});
|
|
149
167
|
};
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Walks a React Navigation state down to the deepest **focused** route.
|
|
171
|
+
*
|
|
172
|
+
* Nested navigators are the default architecture of production RN apps: a tab
|
|
173
|
+
* navigator whose tabs each hold a stack. The container's root state then
|
|
174
|
+
* describes only the outer level, and the route that the user is actually
|
|
175
|
+
* looking at lives in `routes[index].state`, recursively. Reading the outer
|
|
176
|
+
* level alone reports the *tab* name for every push inside that tab, so screen
|
|
177
|
+
* changes below the first level are invisible to analytics and replay.
|
|
178
|
+
*
|
|
179
|
+
* `index` can legitimately be absent on a partial/rehydrated state, in which
|
|
180
|
+
* case React Navigation treats the last route as focused — matched here.
|
|
181
|
+
*
|
|
182
|
+
* A depth cap guards against a malformed state whose nesting cycles; 32 is far
|
|
183
|
+
* past any real navigator tree.
|
|
184
|
+
*/
|
|
185
|
+
function findFocusedRoute(state) {
|
|
186
|
+
let current = state;
|
|
187
|
+
let depth = 0;
|
|
188
|
+
while (current?.routes?.length && depth++ < 32) {
|
|
189
|
+
const index = current.index ?? current.routes.length - 1;
|
|
190
|
+
const route = current.routes[index];
|
|
191
|
+
if (!route?.state?.routes?.length) {
|
|
192
|
+
return route;
|
|
193
|
+
}
|
|
194
|
+
current = route.state;
|
|
195
|
+
}
|
|
196
|
+
return undefined;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Containers already reported by {@link warnExtractNameFailed}.
|
|
201
|
+
*
|
|
202
|
+
* Keyed by the container itself, so a ref that throws on every navigation
|
|
203
|
+
* produces one line rather than one per transition, while a genuinely
|
|
204
|
+
* different container still gets its own. A `WeakSet` holds no strong
|
|
205
|
+
* reference, so remembering a container cannot keep it alive.
|
|
206
|
+
*/
|
|
207
|
+
const extractNameErrorReported = new WeakSet();
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Reports, once per container, that resolving the current route threw.
|
|
211
|
+
*
|
|
212
|
+
* A throw here is expected and harmless during teardown, which is why
|
|
213
|
+
* ``extractName`` swallows it. A ref that keeps throwing is a different
|
|
214
|
+
* matter: every screen view goes unnamed, and without a line here that looks
|
|
215
|
+
* exactly like a ref that never attached. One warning separates the two
|
|
216
|
+
* without flooding a listener that fires per navigation.
|
|
217
|
+
*/
|
|
218
|
+
function warnExtractNameFailed(container, error) {
|
|
219
|
+
if (typeof container === "object" && container !== null) {
|
|
220
|
+
if (extractNameErrorReported.has(container)) {
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
extractNameErrorReported.add(container);
|
|
224
|
+
}
|
|
225
|
+
console.warn("Connect: could not resolve the current route — the navigation container ref threw. " + "Screen views stay unnamed while this persists (harmless if the container is unmounting). " + "Cause:", error);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* The screen name to report for the navigation container's current position.
|
|
230
|
+
*
|
|
231
|
+
* Resolution order:
|
|
232
|
+
*
|
|
233
|
+
* 1. The focused route resolved from `getRootState()` by ``findFocusedRoute``.
|
|
234
|
+
* Taking the state and walking it here — rather than trusting a single
|
|
235
|
+
* accessor — keeps the wrapper correct regardless of whether the host app's
|
|
236
|
+
* navigation library resolves nesting inside `getCurrentRoute()`, and works
|
|
237
|
+
* for a custom container ref that exposes state but not that helper.
|
|
238
|
+
* 2. `getCurrentRoute()`, for refs that expose no `getRootState`.
|
|
239
|
+
*
|
|
240
|
+
* Either way `params.name` wins over the route's own `name` when the host app
|
|
241
|
+
* supplies it — the documented override for giving a route a human-readable
|
|
242
|
+
* analytics name. Only a non-empty string counts, so `params: { name: '' }`
|
|
243
|
+
* falls through to the route name instead of blanking the screenview.
|
|
244
|
+
*
|
|
245
|
+
* Returns `""` when nothing resolves, which both callers treat as "skip".
|
|
246
|
+
*/
|
|
150
247
|
function extractName(navigation) {
|
|
151
|
-
const
|
|
152
|
-
if (
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
248
|
+
const container = navigation?.current;
|
|
249
|
+
if (!container) {
|
|
250
|
+
return "";
|
|
251
|
+
}
|
|
252
|
+
let route;
|
|
253
|
+
try {
|
|
254
|
+
route = findFocusedRoute(container.getRootState?.());
|
|
255
|
+
} catch (error) {
|
|
256
|
+
// A container mid-teardown can throw out of getRootState(). Screen
|
|
257
|
+
// naming is not worth taking the host app's navigation down for.
|
|
258
|
+
warnExtractNameFailed(container, error);
|
|
259
|
+
route = undefined;
|
|
260
|
+
}
|
|
261
|
+
if (!route) {
|
|
262
|
+
try {
|
|
263
|
+
route = container.getCurrentRoute?.();
|
|
264
|
+
} catch (error) {
|
|
265
|
+
warnExtractNameFailed(container, error);
|
|
266
|
+
route = undefined;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
if (!route) {
|
|
270
|
+
return "";
|
|
271
|
+
}
|
|
272
|
+
const overridden = route.params?.name;
|
|
273
|
+
if (typeof overridden === "string" && overridden.length > 0) {
|
|
274
|
+
return overridden;
|
|
157
275
|
}
|
|
158
|
-
return "";
|
|
276
|
+
return typeof route.name === "string" ? route.name : "";
|
|
159
277
|
}
|
|
160
278
|
export default Connect;
|
|
161
279
|
const styles = StyleSheet.create({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useRef","useState","View","StyleSheet","
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useRef","useState","View","StyleSheet","TLTRN","jsx","_jsx","Connect","children","captureKeyboardEvents","captureDialogEvents","navigationRef","child","childProvidedRef","props","ref","internalRef","navigation","shouldInjectRef","isValidElement","currentRoute","undefined","initial","navReady","setNavReady","interceptKeyboardEvents","interceptDialogEvents","isUsable","current","addListener","getCurrentRoute","attempts","POLL_INTERVAL_MS","MAX_ATTEMPTS","timer","poll","console","warn","setTimeout","clearTimeout","unsubscribeState","extractName","logScreenViewPageName","logScreenLayout","onStartShouldSetResponderCapture","event","logClickEvent","onLayout","_event","style","styles","connect_main","cloneElement","findFocusedRoute","state","depth","routes","length","index","route","extractNameErrorReported","WeakSet","warnExtractNameFailed","container","error","has","add","getRootState","overridden","params","name","create","flex"],"sourceRoot":"../../../src","sources":["components/Connect.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -35,5 +35,10 @@ try {
|
|
|
35
35
|
throw new Error('[AcousticConnectRN] Failed to load the native HybridObject. This almost ' + 'always means a `react-native-nitro-modules` version mismatch: this SDK is ' + 'built against the exact version declared in its peerDependencies, so your ' + 'app must resolve that same version (check `npm ls react-native-nitro-modules`). ' + `Original error: ${String(error)}`);
|
|
36
36
|
}
|
|
37
37
|
export { Connect, TLTRN, KeyboardListener, DialogListener, useDialogTracking, DialogDebugger, withAcousticAutoDialog };
|
|
38
|
+
|
|
39
|
+
// Re-exported so callers can name a `logSignal` payload without importing
|
|
40
|
+
// from `react-native-nitro-modules` — the spec aliases nitro's AnyMap only
|
|
41
|
+
// because that is the one type nitrogen accepts for arbitrary JSON.
|
|
42
|
+
|
|
38
43
|
export default AcousticConnectRN;
|
|
39
44
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NitroModules","Connect","KeyboardListener","DialogListener","useDialogTracking","withAcousticAutoDialog","DialogDebugger","TLTRN","AcousticConnectRN","createHybridObject","error","Error","String"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,YAAY,QAAQ,4BAA4B;AAEzD,OAAOC,OAAO,MAAM,sBAAsB;AAC1C,OAAOC,gBAAgB,MAAM,0BAA0B;AACvD,OAAOC,cAAc,MAAM,wBAAwB;AACnD,OAAOC,iBAAiB,MAAM,2BAA2B;AACzD,SAASC,sBAAsB,QAAQ,gCAAgC;AACvE,OAAOC,cAAc,MAAM,wBAAwB;AACnD,OAAOC,KAAK,MAAM,SAAS;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA,IAAIC,iBAAwC;AAC5C,IAAI;EACFA,iBAAiB,GAAGR,YAAY,CAACS,kBAAkB,CAAwB,mBAAmB,CAAC;AACjG,CAAC,CAAC,OAAOC,KAAK,EAAE;EACd,MAAM,IAAIC,KAAK,CACb,0EAA0E,GACxE,4EAA4E,GAC5E,4EAA4E,GAC5E,kFAAkF,GAClF,mBAAmBC,MAAM,CAACF,KAAK,CAAC,EACpC,CAAC;AACH;AAEA,SAAST,OAAO,EAAEM,KAAK,EAAEL,gBAAgB,EAAEC,cAAc,EAAEC,iBAAiB,EAAEE,cAAc,EAAED,sBAAsB;
|
|
1
|
+
{"version":3,"names":["NitroModules","Connect","KeyboardListener","DialogListener","useDialogTracking","withAcousticAutoDialog","DialogDebugger","TLTRN","AcousticConnectRN","createHybridObject","error","Error","String"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,YAAY,QAAQ,4BAA4B;AAEzD,OAAOC,OAAO,MAAM,sBAAsB;AAC1C,OAAOC,gBAAgB,MAAM,0BAA0B;AACvD,OAAOC,cAAc,MAAM,wBAAwB;AACnD,OAAOC,iBAAiB,MAAM,2BAA2B;AACzD,SAASC,sBAAsB,QAAQ,gCAAgC;AACvE,OAAOC,cAAc,MAAM,wBAAwB;AACnD,OAAOC,KAAK,MAAM,SAAS;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA,IAAIC,iBAAwC;AAC5C,IAAI;EACFA,iBAAiB,GAAGR,YAAY,CAACS,kBAAkB,CAAwB,mBAAmB,CAAC;AACjG,CAAC,CAAC,OAAOC,KAAK,EAAE;EACd,MAAM,IAAIC,KAAK,CACb,0EAA0E,GACxE,4EAA4E,GAC5E,4EAA4E,GAC5E,kFAAkF,GAClF,mBAAmBC,MAAM,CAACF,KAAK,CAAC,EACpC,CAAC;AACH;AAEA,SAAST,OAAO,EAAEM,KAAK,EAAEL,gBAAgB,EAAEC,cAAc,EAAEC,iBAAiB,EAAEE,cAAc,EAAED,sBAAsB;;AAEpH;AACA;AACA;;AAEA,eAAeG,iBAAiB","ignoreList":[]}
|
|
@@ -35,13 +35,97 @@ declare class TLTRN {
|
|
|
35
35
|
static interceptKeyboardEvents: (enable: boolean) => void;
|
|
36
36
|
static logScreenViewPageName: (name: string | undefined) => boolean;
|
|
37
37
|
static logScreenViewContextLoad: (name: string, prevName: string) => boolean;
|
|
38
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Sentinel for the native `delay` argument meaning "use the
|
|
40
|
+
* `CaptureLayoutDelay` configured for this screen". Both bridges resolve it
|
|
41
|
+
* from the layout config; anything >= 0 is an explicit delay in
|
|
42
|
+
* milliseconds.
|
|
43
|
+
*/
|
|
44
|
+
static USE_CONFIGURED_CAPTURE_DELAY: number;
|
|
45
|
+
/**
|
|
46
|
+
* Captures the layout of the current screen.
|
|
47
|
+
*
|
|
48
|
+
* @param name Screen name to associate with the capture.
|
|
49
|
+
* @param delayMs Milliseconds to wait before capturing. Omit it to use the
|
|
50
|
+
* `CaptureLayoutDelay` from `ConnectConfig.json` — that is the setting to
|
|
51
|
+
* reach for when a screen transition animation is still running and the
|
|
52
|
+
* capture would otherwise catch a half-rendered screen. Pass `0` to
|
|
53
|
+
* capture immediately.
|
|
54
|
+
*
|
|
55
|
+
* Passing no delay used to send a hardcoded `0`, which made
|
|
56
|
+
* `CaptureLayoutDelay` inert for React Native apps and fired the capture at
|
|
57
|
+
* the *start* of the transition rather than after it.
|
|
58
|
+
*
|
|
59
|
+
* @returns With no `delayMs` — the normal case — only that the capture was
|
|
60
|
+
* **scheduled**, not that it produced a layout message. The native
|
|
61
|
+
* deferred overload dispatches and returns immediately, so anything that
|
|
62
|
+
* goes wrong once it runs (no view controller resolved, layout capture
|
|
63
|
+
* gated off by config) cannot be reflected here; those surface in logcat
|
|
64
|
+
* / os_log instead. Pass `0` and the value describes the capture itself,
|
|
65
|
+
* at the cost of capturing mid-transition.
|
|
66
|
+
*/
|
|
67
|
+
static logScreenLayout: (name: string | undefined, delayMs?: number) => boolean;
|
|
39
68
|
static logClickEvent: (event: any) => Promise<boolean>;
|
|
40
69
|
static logTextChangeEvent: (target: number, controlId: string, text: string, _ariaLabel: string) => Promise<boolean>;
|
|
70
|
+
/**
|
|
71
|
+
* Keys already warned about, so a call site inside a render or a list loop
|
|
72
|
+
* warns once rather than on every pass.
|
|
73
|
+
*/
|
|
74
|
+
static warnedNestedValueSites: Set<string>;
|
|
75
|
+
/**
|
|
76
|
+
* Cap on {@link warnedNestedValueSites}.
|
|
77
|
+
*
|
|
78
|
+
* The site key includes the nested keys' names, so a payload built from an
|
|
79
|
+
* API response — per-record ids, timestamps — makes every call a distinct
|
|
80
|
+
* site, and the set would then grow for the life of the session. By the
|
|
81
|
+
* hundredth distinct shape the warning has made its point, so it stops
|
|
82
|
+
* instead of accumulating: bounded memory matters more than warning about
|
|
83
|
+
* shape 101.
|
|
84
|
+
*/
|
|
85
|
+
static WARNED_NESTED_VALUE_SITES_MAX: number;
|
|
86
|
+
/**
|
|
87
|
+
* Warns when a flat-values payload carries a nested object or array.
|
|
88
|
+
*
|
|
89
|
+
* `logCustomEvent`/`logDialogCustomEvent` are typed for flat scalars, but
|
|
90
|
+
* TypeScript types are erased at runtime: a payload built from an API
|
|
91
|
+
* response, widened through `any`, or passed from untyped JS reaches the
|
|
92
|
+
* bridge with its nesting intact. Both platforms then reshape it silently —
|
|
93
|
+
* Android's SDK chain is typed `HashMap<String, String>` end to end, so a
|
|
94
|
+
* nested value is stringified into whatever its `toString()` yields — and
|
|
95
|
+
* the call still returns `true`. `logSignal` is the API that carries nested
|
|
96
|
+
* JSON on both platforms.
|
|
97
|
+
*
|
|
98
|
+
* Warning only: the payload is passed through untouched, so this changes no
|
|
99
|
+
* behaviour and cannot break a caller who is relying on today's reshaping.
|
|
100
|
+
*
|
|
101
|
+
* @param api Name of the calling API, for the message.
|
|
102
|
+
* @param values The payload about to cross the bridge.
|
|
103
|
+
*/
|
|
104
|
+
static warnOnNestedValues: (api: string, values: Record<string, unknown>) => void;
|
|
105
|
+
/**
|
|
106
|
+
* Logs a custom event.
|
|
107
|
+
*
|
|
108
|
+
* @param eventName Event name, as it appears in the posted JSON.
|
|
109
|
+
* @param values Flat key/value pairs. Nested objects and arrays are NOT
|
|
110
|
+
* supported here and are reshaped by the native SDKs — use `logSignal`
|
|
111
|
+
* for nested JSON.
|
|
112
|
+
* @param level Monitoring level for this event.
|
|
113
|
+
* @returns Whether the native SDK **accepted the event for delivery** —
|
|
114
|
+
* not whether the collector received it. The event is queued locally and
|
|
115
|
+
* posted later, so no return value from this call can attest to delivery;
|
|
116
|
+
* a `true` here means only that the SDK took the event. A `false` is also
|
|
117
|
+
* logged natively (logcat / os_log) so the rejection is visible.
|
|
118
|
+
*/
|
|
41
119
|
static logCustomEvent: (eventName: string, values: Record<string, string | number | boolean>, level: number) => Promise<boolean>;
|
|
42
120
|
static logDialogShowEvent: (dialogId: string, dialogTitle: string, dialogType: string) => Promise<boolean>;
|
|
43
121
|
static logDialogDismissEvent: (dialogId: string, dismissReason: string) => Promise<boolean>;
|
|
44
122
|
static logDialogButtonClickEvent: (dialogId: string, buttonText: string, buttonIndex: number) => Promise<boolean>;
|
|
123
|
+
/**
|
|
124
|
+
* Logs a custom event tied to a dialog.
|
|
125
|
+
*
|
|
126
|
+
* Same flat-values contract and same return-value meaning as
|
|
127
|
+
* {@link logCustomEvent} — it routes to the same native API.
|
|
128
|
+
*/
|
|
45
129
|
static logDialogCustomEvent: (dialogId: string, eventName: string, values: Record<string, string | number | boolean>) => Promise<boolean>;
|
|
46
130
|
static eventListenerRegistered: boolean;
|
|
47
131
|
static eventListenerUnsubscribe: (() => void) | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TLTRN.d.ts","sourceRoot":"","sources":["../../../src/TLTRN.ts"],"names":[],"mappings":"AAAA;;;;;;;;6FAQ6F;;AAmC7F,cAAM,KAAK;IACT,MAAM,CAAC,aAAa,SACgD;IACpE,MAAM,CAAC,uBAAuB,SAAK;IACnC,MAAM,CAAC,eAAe,SAAK;IAC3B,MAAM,CAAC,iBAAiB,SAAK;IAC7B,MAAM,CAAC,SAAS,SAAK;IACrB,MAAM,CAAC,cAAc,SAAK;IAC1B,MAAM,CAAC,kBAAkB,SAAK;IAC9B,MAAM,CAAC,aAAa,SAAK;IACzB,MAAM,CAAC,YAAY,UAAS;IAE5B,MAAM,CAAC,OAAO;;;;QAIZ;;WAEG;;QAKH;;WAEG;;MAQH;IAEF,MAAM,CAAC,IAAI,yBAA0B,MAAM,4BAA4B,OAAO,UAQ5E;IAEF,MAAM,CAAC,uBAAuB,WAAY,OAAO,UAE/C;IAEF,MAAM,CAAC,qBAAqB,SAAU,MAAM,GAAG,SAAS,aAQtD;IAEF,MAAM,CAAC,wBAAwB,SAAU,MAAM,YAAY,MAAM,aAQ/D;IAEF,MAAM,CAAC,eAAe,SAAU,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"TLTRN.d.ts","sourceRoot":"","sources":["../../../src/TLTRN.ts"],"names":[],"mappings":"AAAA;;;;;;;;6FAQ6F;;AAmC7F,cAAM,KAAK;IACT,MAAM,CAAC,aAAa,SACgD;IACpE,MAAM,CAAC,uBAAuB,SAAK;IACnC,MAAM,CAAC,eAAe,SAAK;IAC3B,MAAM,CAAC,iBAAiB,SAAK;IAC7B,MAAM,CAAC,SAAS,SAAK;IACrB,MAAM,CAAC,cAAc,SAAK;IAC1B,MAAM,CAAC,kBAAkB,SAAK;IAC9B,MAAM,CAAC,aAAa,SAAK;IACzB,MAAM,CAAC,YAAY,UAAS;IAE5B,MAAM,CAAC,OAAO;;;;QAIZ;;WAEG;;QAKH;;WAEG;;MAQH;IAEF,MAAM,CAAC,IAAI,yBAA0B,MAAM,4BAA4B,OAAO,UAQ5E;IAEF,MAAM,CAAC,uBAAuB,WAAY,OAAO,UAE/C;IAEF,MAAM,CAAC,qBAAqB,SAAU,MAAM,GAAG,SAAS,aAQtD;IAEF,MAAM,CAAC,wBAAwB,SAAU,MAAM,YAAY,MAAM,aAQ/D;IAEF;;;;;OAKG;IACH,MAAM,CAAC,4BAA4B,SAAM;IAEzC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,CAAC,eAAe,SAAU,MAAM,GAAG,SAAS,YAAY,MAAM,aAYlE;IAEF,MAAM,CAAC,aAAa,UAAiB,GAAG,sBA+BtC;IAEF,MAAM,CAAC,kBAAkB,WAAkB,MAAM,aAAa,MAAM,QAAQ,MAAM,cAAc,MAAM,sBAYpG;IAEF;;;OAGG;IACH,MAAM,CAAC,sBAAsB,cAAqB;IAElD;;;;;;;;;OASG;IACH,MAAM,CAAC,6BAA6B,SAAO;IAE3C;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,kBAAkB,QAAS,MAAM,UAAU,OAAO,MAAM,EAAE,OAAO,CAAC,UAyBvE;IAEF;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,cAAc,cAAqB,MAAM,UAAU,OAAO,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,SAAS,MAAM,sBAShH;IAGF,MAAM,CAAC,kBAAkB,aAAoB,MAAM,eAAe,MAAM,cAAc,MAAM,sBAQ1F;IAEF,MAAM,CAAC,qBAAqB,aAAoB,MAAM,iBAAiB,MAAM,sBAQ3E;IAEF,MAAM,CAAC,yBAAyB,aAAoB,MAAM,cAAc,MAAM,eAAe,MAAM,sBAQjG;IAEF;;;;;OAKG;IACH,MAAM,CAAC,oBAAoB,aAAoB,MAAM,aAAa,MAAM,UAAU,OAAO,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,sBASzH;IAGF,MAAM,CAAC,uBAAuB,UAAS;IACvC,MAAM,CAAC,wBAAwB,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAQ;IAE5D,MAAM,CAAC,qBAAqB,WAAY,OAAO,UA0B7C;IAEF,MAAM,CAAC,cAAc,YAAa,GAAG,UAqEnC;IAEF,MAAM,CAAC,SAAS,aA6Bd;IAEF,MAAM,CAAC,OAAO,sBAyBZ;CACH;AAGD,eAAe,KAAK,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Connect.d.ts","sourceRoot":"","sources":["../../../../src/components/Connect.tsx"],"names":[],"mappings":"AAAA;;;;;;;;6FAQ6F;AAC7F,OAAO,KAAmD,MAAM,OAAO,CAAC;AAKxE,UAAU,YAAY;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;CACxC;AAED,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"Connect.d.ts","sourceRoot":"","sources":["../../../../src/components/Connect.tsx"],"names":[],"mappings":"AAAA;;;;;;;;6FAQ6F;AAC7F,OAAO,KAAmD,MAAM,OAAO,CAAC;AAKxE,UAAU,YAAY;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;CACxC;AAED,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CA6KnC,CAAC;AAuHF,eAAe,OAAO,CAAC"}
|
|
@@ -20,5 +20,6 @@ import DialogDebugger from './utils/DialogDebugger';
|
|
|
20
20
|
import TLTRN from './TLTRN';
|
|
21
21
|
declare let AcousticConnectRN: AcousticConnectRNSpec;
|
|
22
22
|
export { Connect, TLTRN, KeyboardListener, DialogListener, useDialogTracking, DialogDebugger, withAcousticAutoDialog };
|
|
23
|
+
export type { SignalValues } from './specs/react-native-acoustic-connect.nitro';
|
|
23
24
|
export default AcousticConnectRN;
|
|
24
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;6FAW6F;AAG7F,OAAO,KAAK,EAAE,iBAAiB,IAAI,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;AAC7G,OAAO,OAAO,MAAM,sBAAsB,CAAA;AAC1C,OAAO,gBAAgB,MAAM,0BAA0B,CAAA;AACvD,OAAO,cAAc,MAAM,wBAAwB,CAAA;AACnD,OAAO,iBAAiB,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,cAAc,MAAM,wBAAwB,CAAA;AACnD,OAAO,KAAK,MAAM,SAAS,CAAA;AAQ3B,QAAA,IAAI,iBAAiB,EAAE,qBAAqB,CAAA;AAa5C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,sBAAsB,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;6FAW6F;AAG7F,OAAO,KAAK,EAAE,iBAAiB,IAAI,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;AAC7G,OAAO,OAAO,MAAM,sBAAsB,CAAA;AAC1C,OAAO,gBAAgB,MAAM,0BAA0B,CAAA;AACvD,OAAO,cAAc,MAAM,wBAAwB,CAAA;AACnD,OAAO,iBAAiB,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,cAAc,MAAM,wBAAwB,CAAA;AACnD,OAAO,KAAK,MAAM,SAAS,CAAA;AAQ3B,QAAA,IAAI,iBAAiB,EAAE,qBAAqB,CAAA;AAa5C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,sBAAsB,EAAE,CAAA;AAKtH,YAAY,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAA;AAC/E,eAAe,iBAAiB,CAAA"}
|
|
@@ -1,8 +1,33 @@
|
|
|
1
|
-
import { type HybridObject } from 'react-native-nitro-modules';
|
|
1
|
+
import { type AnyMap, type HybridObject } from 'react-native-nitro-modules';
|
|
2
2
|
export type KeyValueObject = {
|
|
3
3
|
placeholder: string;
|
|
4
4
|
[key: string]: unknown;
|
|
5
5
|
};
|
|
6
|
+
/**
|
|
7
|
+
* Payload accepted by {@link AcousticConnectRN.logSignal} — any JSON-shaped
|
|
8
|
+
* object. Nested objects and arrays are allowed, so this is a superset of a
|
|
9
|
+
* flat `Record<string, string | number | boolean>`.
|
|
10
|
+
*
|
|
11
|
+
* You do not need this type to call `logSignal`: an object literal is enough.
|
|
12
|
+
* It exists for the times you want to name the payload — a helper parameter, a
|
|
13
|
+
* shared constant — and is re-exported from the package root so you never have
|
|
14
|
+
* to reach into `react-native-nitro-modules` for it:
|
|
15
|
+
*
|
|
16
|
+
* ```ts
|
|
17
|
+
* import AcousticConnectRN, { type SignalValues } from 'react-native-acoustic-connect-beta'
|
|
18
|
+
*
|
|
19
|
+
* const payload: SignalValues = { signalContent: { signalType: 'pageview' } }
|
|
20
|
+
* AcousticConnectRN.logSignal(payload, 1)
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @remarks
|
|
24
|
+
* Aliases nitro's `AnyMap`, which is the only way to express arbitrary JSON in
|
|
25
|
+
* a Nitro spec — a hand-rolled recursive type is rejected by nitrogen, which
|
|
26
|
+
* tries to generate a struct for it. Nitrogen resolves the alias, so the
|
|
27
|
+
* generated native bindings are identical either way; the indirection exists
|
|
28
|
+
* purely to keep a third-party type name off our public API.
|
|
29
|
+
*/
|
|
30
|
+
export type SignalValues = AnyMap;
|
|
6
31
|
export type ConnectMonitoringLevelType = 'Ignore' | 'CellularAndWiFi' | 'WiFi';
|
|
7
32
|
/**
|
|
8
33
|
* Structured error describing an APNs / permission failure.
|
|
@@ -107,8 +132,86 @@ export interface AcousticConnectRN extends HybridObject<{
|
|
|
107
132
|
getBooleanConfigItemForKey(theDefault: boolean, key: string, moduleName: string): boolean;
|
|
108
133
|
getStringItemForKey(theDefault: string, key: string, moduleName: string): string | null | undefined;
|
|
109
134
|
getNumberItemForKey(theDefault: number, key: string, moduleName: string): number;
|
|
135
|
+
/**
|
|
136
|
+
* Logs a named custom event with a flat set of key/value pairs.
|
|
137
|
+
*
|
|
138
|
+
* `values` is deliberately **flat** (scalars only), unlike
|
|
139
|
+
* {@link logSignal}. The Android SDK's custom-event path is typed
|
|
140
|
+
* `HashMap<String, String>` end to end (`Connect.logCustomEvent` →
|
|
141
|
+
* `Tealeaf.logCustomEvent`), so there is no native route for nested
|
|
142
|
+
* JSON. Widening this signature would compile but silently drop the
|
|
143
|
+
* nesting on Android while preserving it on iOS — a cross-platform
|
|
144
|
+
* divergence worse than the restriction. Use {@link logSignal} when the
|
|
145
|
+
* payload needs structure.
|
|
146
|
+
*
|
|
147
|
+
* @param eventName Event name; appears in the posted JSON.
|
|
148
|
+
* @param values Flat key/value pairs to attach to the event.
|
|
149
|
+
* @param level Monitoring level for this event.
|
|
150
|
+
* @returns `true` if the SDK **accepted the event for delivery** — not
|
|
151
|
+
* that the collector received it. Events are queued on device and posted
|
|
152
|
+
* in batches later, so nothing this call can return attests to delivery
|
|
153
|
+
* or to server-side acceptance. A `false` means the SDK rejected the
|
|
154
|
+
* event outright and nothing was queued; the bridge also logs that to
|
|
155
|
+
* logcat / os_log so it is visible without inspecting the return value.
|
|
156
|
+
*/
|
|
110
157
|
logCustomEvent(eventName: string, values: Record<string, string | number | boolean>, level: number): boolean;
|
|
111
|
-
|
|
158
|
+
/**
|
|
159
|
+
* Logs a signal payload.
|
|
160
|
+
*
|
|
161
|
+
* `values` accepts **arbitrary JSON** — nested objects and arrays, not
|
|
162
|
+
* just scalars — because both native SDKs embed the payload verbatim:
|
|
163
|
+
* iOS `CTSignalMessage` gates only on `NSJSONSerialization
|
|
164
|
+
* isValidJSONObject:`, and Android `Connect.logSignal` takes an untyped
|
|
165
|
+
* `HashMap<String, Any?>`. The bridge converts the map to each
|
|
166
|
+
* platform's JSON representation without flattening or reshaping it.
|
|
167
|
+
*
|
|
168
|
+
* Scalar-only callers are unaffected: {@link SignalValues} is a superset
|
|
169
|
+
* of `Record<string, string | number | boolean>`.
|
|
170
|
+
*
|
|
171
|
+
* @param values Signal payload. Objects, arrays, strings, numbers,
|
|
172
|
+
* booleans and `null` are all carried through.
|
|
173
|
+
* @param level Monitoring level for this signal.
|
|
174
|
+
* @returns `true` if the SDK **accepted the signal for delivery** — not
|
|
175
|
+
* that the collector received it, and not that it passed server-side
|
|
176
|
+
* schema validation. Signals are queued on device and posted later, so
|
|
177
|
+
* nothing this call can return attests to delivery. A `false` means the
|
|
178
|
+
* SDK rejected it and nothing was queued; the bridge logs that to
|
|
179
|
+
* logcat / os_log.
|
|
180
|
+
*
|
|
181
|
+
* @remarks
|
|
182
|
+
* **Android version boundary — top-level numbers.** The Android SDK's
|
|
183
|
+
* `JsonUtil.getHashValues` gained a `Number` branch in Connect Android
|
|
184
|
+
* **11.0.24-beta**, so from that version a top-level numeric value is
|
|
185
|
+
* carried. Earlier versions serialised only `String`, `Boolean`,
|
|
186
|
+
* `JSONObject`, `JSONArray` and `byte[]` at the top level of the signal
|
|
187
|
+
* map and dropped a top-level number. Numbers nested *inside* an object
|
|
188
|
+
* or array were never affected, because the bridge builds those
|
|
189
|
+
* `JSONObject`/`JSONArray` values itself, and iOS has always carried
|
|
190
|
+
* top-level numbers normally. Both versions sit inside the
|
|
191
|
+
* `[11.0.11, 12.0.0)` range this package accepts, so nest the number if
|
|
192
|
+
* your integration pins a Connect Android version below 11.0.24-beta.
|
|
193
|
+
*
|
|
194
|
+
* @example Nested payload
|
|
195
|
+
* ```ts
|
|
196
|
+
* import AcousticConnectRN from 'react-native-acoustic-connect-beta'
|
|
197
|
+
*
|
|
198
|
+
* AcousticConnectRN.logSignal(
|
|
199
|
+
* {
|
|
200
|
+
* signalContent: {
|
|
201
|
+
* signalType: 'pageview',
|
|
202
|
+
* url: 'https://app.example.com/dashboard',
|
|
203
|
+
* pageCategory: 'dashboard',
|
|
204
|
+
* },
|
|
205
|
+
* audience: [
|
|
206
|
+
* { name: 'Account Name', value: 'Acme Corp' },
|
|
207
|
+
* { name: 'Account ID', value: '4815162342' },
|
|
208
|
+
* ],
|
|
209
|
+
* },
|
|
210
|
+
* 1
|
|
211
|
+
* )
|
|
212
|
+
* ```
|
|
213
|
+
*/
|
|
214
|
+
logSignal(values: SignalValues, level: number): boolean;
|
|
112
215
|
logExceptionEvent(message: string, stackInfo: string, unhandled: boolean): boolean;
|
|
113
216
|
logLocation(): boolean;
|
|
114
217
|
logLocationWithLatitudeLongitude(latitude: number, longitude: number, level: number): boolean;
|
|
@@ -117,10 +220,36 @@ export interface AcousticConnectRN extends HybridObject<{
|
|
|
117
220
|
setCurrentScreenName(logicalPageName: string): boolean;
|
|
118
221
|
logScreenViewContextLoad(logicalPageName: string | null | undefined, referrer: string | null | undefined): boolean;
|
|
119
222
|
logScreenViewContextUnload(logicalPageName: string | null | undefined, referrer: string | null | undefined): boolean;
|
|
223
|
+
/**
|
|
224
|
+
* Captures the layout of the current screen.
|
|
225
|
+
*
|
|
226
|
+
* @param name Screen name to associate with the capture.
|
|
227
|
+
* @param delay Milliseconds to wait before capturing — the same unit as
|
|
228
|
+
* `CaptureLayoutDelay` in the layout config, on both platforms. A
|
|
229
|
+
* negative value means "use the `CaptureLayoutDelay` configured for this
|
|
230
|
+
* screen"; `0` captures immediately.
|
|
231
|
+
*
|
|
232
|
+
* Prefer `TLTRN.logScreenLayout`, which defaults to the configured delay.
|
|
233
|
+
*
|
|
234
|
+
* @returns For a `delay` of `0`, whether the capture itself succeeded. For
|
|
235
|
+
* any positive or configured delay, only that the capture was
|
|
236
|
+
* **scheduled** — the native deferred overload dispatches and returns
|
|
237
|
+
* immediately, so a `true` says nothing about what the capture found
|
|
238
|
+
* when it eventually ran. Failures after that point (no view controller
|
|
239
|
+
* resolved, config gating the capture off) surface in logcat / os_log,
|
|
240
|
+
* not here.
|
|
241
|
+
*/
|
|
120
242
|
logScreenLayout(name: string, delay: number): boolean;
|
|
121
243
|
logDialogShowEvent(dialogId: string, dialogTitle: string, dialogType: string): boolean;
|
|
122
244
|
logDialogDismissEvent(dialogId: string, dismissReason: string): boolean;
|
|
123
245
|
logDialogButtonClickEvent(dialogId: string, buttonText: string, buttonIndex: number): boolean;
|
|
246
|
+
/**
|
|
247
|
+
* Logs a custom event against a tracked dialog.
|
|
248
|
+
*
|
|
249
|
+
* `values` is flat for the same reason as {@link logCustomEvent} — this
|
|
250
|
+
* routes to the native custom-event API, whose Android path carries string
|
|
251
|
+
* values only.
|
|
252
|
+
*/
|
|
124
253
|
logDialogCustomEvent(dialogId: string, eventName: string, values: Record<string, string | number | boolean>): boolean;
|
|
125
254
|
/**
|
|
126
255
|
* Logs a user identity so the current device/session can be associated with
|
|
@@ -143,23 +272,62 @@ export interface AcousticConnectRN extends HybridObject<{
|
|
|
143
272
|
* `'loggedIn'` when omitted (identity logging typically marks a sign-in),
|
|
144
273
|
* overriding the native SDKs' own `'pageView'` default.
|
|
145
274
|
* @param additionalParameters Optional extra key/value pairs merged into the
|
|
146
|
-
* signal payload. Only when omitted (`undefined`) does the bridge supply
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
* API expects it).
|
|
275
|
+
* signal payload. Only when omitted (`undefined`) does the bridge supply a
|
|
276
|
+
* default, and that default follows the resolved `signalType` — see
|
|
277
|
+
* **Required method attribute** below. An explicitly-provided map is used
|
|
278
|
+
* as-is, so passing an empty `{}` sends no extra parameters (the default is
|
|
279
|
+
* not merged in). A `'url'` entry is honoured uniformly on both platforms:
|
|
280
|
+
* on Android it is routed to the SDK's explicit `url` parameter, on iOS it
|
|
281
|
+
* rides inside the parameter map (where the native API expects it).
|
|
153
282
|
* @returns A promise resolving to `true` if the identity signal was
|
|
154
283
|
* dispatched, `false` otherwise (including the blank-identifier case).
|
|
155
284
|
* Never rejects.
|
|
156
285
|
*
|
|
157
|
-
*
|
|
286
|
+
* ### Required method attribute
|
|
287
|
+
*
|
|
288
|
+
* Identity signals must carry a *method* attribute, and the key Connect
|
|
289
|
+
* requires depends on the signal type:
|
|
290
|
+
*
|
|
291
|
+
* | `signalType` | Required attribute |
|
|
292
|
+
* | -------------------- | -------------------- |
|
|
293
|
+
* | `'loggedIn'` | `loginMethod` |
|
|
294
|
+
* | `'accountRegistered'`| `registrationMethod` |
|
|
295
|
+
*
|
|
296
|
+
* Send the wrong key and the signal fails schema validation and is
|
|
297
|
+
* discarded server-side — while this promise still resolves `true`, because
|
|
298
|
+
* the native SDKs report only that the signal was queued. If you pass
|
|
299
|
+
* `additionalParameters` explicitly, you own supplying the right key.
|
|
300
|
+
*
|
|
301
|
+
* @example Sign-in — `loginMethod` is required
|
|
158
302
|
* ```ts
|
|
159
303
|
* import AcousticConnectRN from 'react-native-acoustic-connect-beta'
|
|
160
304
|
*
|
|
305
|
+
* await AcousticConnectRN.logIdentity('Email', 'user@example.com', 'loggedIn', {
|
|
306
|
+
* loginMethod: 'sso',
|
|
307
|
+
* })
|
|
308
|
+
*
|
|
309
|
+
* // Omitting both arguments is equivalent to the above with
|
|
310
|
+
* // `{ loginMethod: 'email' }` — the bridge defaults to a `loggedIn` signal.
|
|
161
311
|
* await AcousticConnectRN.logIdentity('Email', 'user@example.com')
|
|
162
312
|
* ```
|
|
313
|
+
*
|
|
314
|
+
* @example Registration — `registrationMethod` is required
|
|
315
|
+
* ```ts
|
|
316
|
+
* await AcousticConnectRN.logIdentity(
|
|
317
|
+
* 'Email',
|
|
318
|
+
* 'user@example.com',
|
|
319
|
+
* 'accountRegistered',
|
|
320
|
+
* { registrationMethod: 'email' }
|
|
321
|
+
* )
|
|
322
|
+
* ```
|
|
323
|
+
*
|
|
324
|
+
* @returns `true` if the SDK **accepted the identity signal for
|
|
325
|
+
* delivery**. It does not mean the signal reached the collector, and it
|
|
326
|
+
* does not mean the collector kept it — a schema-invalid signal (the
|
|
327
|
+
* wrong method key above) is discarded server-side after resolving
|
|
328
|
+
* `true` here. Never rejects. A `false` means the SDK rejected the call
|
|
329
|
+
* locally, e.g. a blank identifier; the bridge logs that to logcat /
|
|
330
|
+
* os_log.
|
|
163
331
|
*/
|
|
164
332
|
logIdentity(identifierName: string, identifierValue: string, signalType?: string, additionalParameters?: Record<string, string>): Promise<boolean>;
|
|
165
333
|
/**
|