react-native-audio-browser 0.2.0-next.10 → 0.2.0-next.12
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/README.md +4 -4
- package/android/build.gradle +6 -5
- package/android/gradle.properties +1 -1
- package/android/src/main/java/com/audiobrowser/AudioBrowser.kt +110 -25
- package/android/src/main/java/com/audiobrowser/browser/BrowserManager.kt +254 -188
- package/android/src/main/java/com/audiobrowser/browser/BrowserUrlResolution.kt +23 -3
- package/android/src/main/java/com/audiobrowser/browser/JsonModels.kt +77 -58
- package/android/src/main/java/com/audiobrowser/browser/SectionScope.kt +68 -26
- package/android/src/main/java/com/audiobrowser/browser/StyleResolver.kt +49 -0
- package/android/src/main/java/com/audiobrowser/extension/ResolvedTrackExt.kt +9 -7
- package/android/src/main/java/com/audiobrowser/extension/TappedTrack.kt +20 -0
- package/android/src/main/java/com/audiobrowser/extension/TrackIdentity.kt +15 -0
- package/android/src/main/java/com/audiobrowser/player/MediaSessionCallback.kt +120 -67
- package/android/src/main/java/com/audiobrowser/player/NowPlayingUpdater.kt +21 -24
- package/android/src/main/java/com/audiobrowser/player/PlaybackStateStore.kt +93 -73
- package/android/src/main/java/com/audiobrowser/player/Player.kt +48 -30
- package/android/src/main/java/com/audiobrowser/player/PlayerCapabilitiesExt.kt +2 -15
- package/android/src/main/java/com/audiobrowser/tls/AiaCertChaser.kt +46 -5
- package/android/src/main/java/com/audiobrowser/tls/AiaChasingExtendedTrustManager.kt +86 -27
- package/android/src/main/java/com/audiobrowser/tls/AiaChasingTrustManager.kt +58 -14
- package/android/src/main/java/com/audiobrowser/tls/AiaTls.kt +20 -6
- package/android/src/main/java/com/audiobrowser/tls/CachingCertificateFetcher.kt +249 -86
- package/android/src/main/java/com/audiobrowser/util/BrowserPathHelper.kt +44 -40
- package/android/src/main/java/com/audiobrowser/util/MediaExtrasBuilder.kt +28 -23
- package/android/src/main/java/com/audiobrowser/util/StyleWire.kt +35 -0
- package/android/src/main/java/com/audiobrowser/util/TrackFactory.kt +45 -53
- package/android/src/test/java/com/audiobrowser/TestFixtures.kt +69 -30
- package/android/src/test/java/com/audiobrowser/browser/BrowserManagerFavoritesTest.kt +153 -0
- package/android/src/test/java/com/audiobrowser/browser/BrowserManagerLayerResolutionTest.kt +6 -0
- package/android/src/test/java/com/audiobrowser/browser/BrowserManagerTest.kt +345 -8
- package/android/src/test/java/com/audiobrowser/browser/BrowserUrlResolutionTest.kt +38 -0
- package/android/src/test/java/com/audiobrowser/browser/JsonArtworkTest.kt +1 -1
- package/android/src/test/java/com/audiobrowser/browser/JsonStyleTest.kt +91 -0
- package/android/src/test/java/com/audiobrowser/browser/SectionScopeTest.kt +128 -53
- package/android/src/test/java/com/audiobrowser/browser/StyleResolverTest.kt +87 -0
- package/android/src/test/java/com/audiobrowser/extension/TappedTrackTest.kt +43 -0
- package/android/src/test/java/com/audiobrowser/extension/TrackIdentityTest.kt +41 -0
- package/android/src/test/java/com/audiobrowser/player/CapabilityControlsTest.kt +1 -2
- package/android/src/test/java/com/audiobrowser/player/NowPlayingUpdaterTest.kt +42 -2
- package/android/src/test/java/com/audiobrowser/player/PlaybackStateStoreTrackJsonTest.kt +55 -0
- package/android/src/test/java/com/audiobrowser/tls/AiaCertChaserTest.kt +152 -8
- package/android/src/test/java/com/audiobrowser/tls/AiaChasingTrustManagerTest.kt +218 -10
- package/android/src/test/java/com/audiobrowser/tls/CachingCertificateFetcherCallSiteTest.kt +322 -0
- package/android/src/test/java/com/audiobrowser/util/BrowserPathHelperTest.kt +41 -16
- package/android/src/test/java/com/audiobrowser/util/MediaExtrasBuilderTest.kt +161 -0
- package/android/src/test/java/com/audiobrowser/util/TrackFactoryMediaIdTest.kt +7 -7
- package/ios/Browser/BrowserConfig.swift +102 -5
- package/ios/Browser/BrowserManager+URLResolution.swift +18 -14
- package/ios/Browser/BrowserManager.swift +131 -143
- package/ios/Browser/BrowserPathHelper.swift +44 -44
- package/ios/Browser/JsonModels.swift +187 -106
- package/ios/Browser/SearchDrillIn.swift +6 -6
- package/ios/Browser/SectionPresentation.swift +34 -0
- package/ios/Browser/SectionScope.swift +58 -24
- package/ios/Browser/StyleResolver.swift +47 -0
- package/ios/Browser/TabBarEntries.swift +2 -2
- package/ios/Browser/TrackIdTemplate.swift +37 -0
- package/ios/CarPlay/CarPlayArtworkResolver.swift +8 -7
- package/ios/CarPlay/CarPlayController.swift +105 -67
- package/ios/CarPlay/CarPlayImageLoader.swift +38 -18
- package/ios/CarPlay/CarPlayListItemFactory.swift +217 -84
- package/ios/CarPlay/CarPlayNowPlayingManager.swift +15 -12
- package/ios/Extension/Capability+RemoteCommand.swift +1 -1
- package/ios/Extension/PlayerCapabilities+Favorite.swift +1 -15
- package/ios/Extension/ResolvedTrack+Copying.swift +11 -15
- package/ios/Extension/Section+Copying.swift +31 -0
- package/ios/Extension/Track+Copying.swift +6 -12
- package/ios/Extension/Track+Identity.swift +18 -0
- package/ios/HybridAudioBrowser.swift +113 -35
- package/ios/Model/NitroTypeStubs.swift +64 -23
- package/ios/Model/PlayerUpdateOptions.swift +7 -0
- package/ios/Player/NowPlayingUpdater.swift +1 -1
- package/ios/Player/PlaybackCoordinator.swift +2 -2
- package/ios/Player/RetryManager.swift +4 -3
- package/ios/Tests/BrowserPathHelperTests.swift +50 -20
- package/ios/Tests/CarPlayArtworkResolverTests.swift +24 -41
- package/ios/Tests/JsonModelsTests.swift +75 -1
- package/ios/Tests/PlaybackStateStoreTests.swift +4 -3
- package/ios/Tests/QueueManagerTests.swift +4 -4
- package/ios/Tests/ResolvedTrackCopyingTests.swift +37 -35
- package/ios/Tests/SearchDrillInTests.swift +16 -16
- package/ios/Tests/SectionPresentationTests.swift +61 -0
- package/ios/Tests/SectionScopeTests.swift +87 -55
- package/ios/Tests/StyleResolverTests.swift +67 -0
- package/ios/Tests/TabBarEntriesTests.swift +18 -18
- package/ios/Tests/TrackIdTemplateTests.swift +67 -0
- package/ios/Tests/TrackIdentityTests.swift +20 -0
- package/ios/Tests/TrackSelectorTests.swift +168 -33
- package/ios/TrackSelector.swift +45 -30
- package/ios/Util/ArtworkImageFetcher.swift +16 -1
- package/lib/commonjs/AudioBrowser.js +11 -0
- package/lib/commonjs/AudioBrowser.js.map +1 -1
- package/lib/commonjs/features/browser-config.js +11 -8
- package/lib/commonjs/features/browser-config.js.map +1 -1
- package/lib/commonjs/features/browser.js +2 -2
- package/lib/commonjs/features/favorites.js +13 -10
- package/lib/commonjs/features/favorites.js.map +1 -1
- package/lib/commonjs/features/playback/controls.js +4 -2
- package/lib/commonjs/features/playback/controls.js.map +1 -1
- package/lib/commonjs/features/playback/state.js +2 -3
- package/lib/commonjs/features/playback/state.js.map +1 -1
- package/lib/commonjs/features/player/options.js.map +1 -1
- package/lib/commonjs/features/player/setup.js +3 -1
- package/lib/commonjs/features/player/setup.js.map +1 -1
- package/lib/commonjs/features/player/validateOptions.js +2 -0
- package/lib/commonjs/features/player/validateOptions.js.map +1 -1
- package/lib/commonjs/features/queue/activeTrack.js +14 -3
- package/lib/commonjs/features/queue/activeTrack.js.map +1 -1
- package/lib/commonjs/features/queue/queue.js +11 -4
- package/lib/commonjs/features/queue/queue.js.map +1 -1
- package/lib/commonjs/utils/LazyNativeEmitter.js +21 -10
- package/lib/commonjs/utils/LazyNativeEmitter.js.map +1 -1
- package/lib/commonjs/utils/NativeUpdatedValue.js +31 -13
- package/lib/commonjs/utils/NativeUpdatedValue.js.map +1 -1
- package/lib/commonjs/utils/getTrackIdentity.js +24 -0
- package/lib/commonjs/utils/getTrackIdentity.js.map +1 -0
- package/lib/commonjs/utils/useNativeValueRefreshedBy.js +33 -0
- package/lib/commonjs/utils/useNativeValueRefreshedBy.js.map +1 -0
- package/lib/commonjs/web/NativeAudioBrowser.js +32 -24
- package/lib/commonjs/web/NativeAudioBrowser.js.map +1 -1
- package/lib/commonjs/web/browser/BrowserManager.js +144 -87
- package/lib/commonjs/web/browser/BrowserManager.js.map +1 -1
- package/lib/commonjs/web/browser/FavoriteManager.js +30 -21
- package/lib/commonjs/web/browser/FavoriteManager.js.map +1 -1
- package/lib/commonjs/web/browser/assertBrowsePageShape.js +2 -2
- package/lib/commonjs/web/browser/assertBrowsePageShape.js.map +1 -1
- package/lib/commonjs/web/browser/classifyTrackNavigation.js +9 -9
- package/lib/commonjs/web/browser/classifyTrackNavigation.js.map +1 -1
- package/lib/commonjs/web/browser/sections.js +89 -0
- package/lib/commonjs/web/browser/sections.js.map +1 -0
- package/lib/commonjs/web/player/NowPlayingManager.js +4 -3
- package/lib/commonjs/web/player/NowPlayingManager.js.map +1 -1
- package/lib/commonjs/web/util/BrowserPathHelper.js +56 -11
- package/lib/commonjs/web/util/BrowserPathHelper.js.map +1 -1
- package/lib/module/AudioBrowser.js +1 -0
- package/lib/module/AudioBrowser.js.map +1 -1
- package/lib/module/features/browser-config.js +11 -8
- package/lib/module/features/browser-config.js.map +1 -1
- package/lib/module/features/browser.js +2 -2
- package/lib/module/features/favorites.js +13 -10
- package/lib/module/features/favorites.js.map +1 -1
- package/lib/module/features/playback/controls.js +4 -2
- package/lib/module/features/playback/controls.js.map +1 -1
- package/lib/module/features/playback/state.js +2 -3
- package/lib/module/features/playback/state.js.map +1 -1
- package/lib/module/features/player/options.js.map +1 -1
- package/lib/module/features/player/setup.js +3 -1
- package/lib/module/features/player/setup.js.map +1 -1
- package/lib/module/features/player/validateOptions.js +2 -0
- package/lib/module/features/player/validateOptions.js.map +1 -1
- package/lib/module/features/queue/activeTrack.js +14 -3
- package/lib/module/features/queue/activeTrack.js.map +1 -1
- package/lib/module/features/queue/queue.js +11 -4
- package/lib/module/features/queue/queue.js.map +1 -1
- package/lib/module/utils/LazyNativeEmitter.js +21 -10
- package/lib/module/utils/LazyNativeEmitter.js.map +1 -1
- package/lib/module/utils/NativeUpdatedValue.js +31 -13
- package/lib/module/utils/NativeUpdatedValue.js.map +1 -1
- package/lib/module/utils/getTrackIdentity.js +20 -0
- package/lib/module/utils/getTrackIdentity.js.map +1 -0
- package/lib/module/utils/useNativeValueRefreshedBy.js +29 -0
- package/lib/module/utils/useNativeValueRefreshedBy.js.map +1 -0
- package/lib/module/web/NativeAudioBrowser.js +32 -24
- package/lib/module/web/NativeAudioBrowser.js.map +1 -1
- package/lib/module/web/browser/BrowserManager.js +144 -87
- package/lib/module/web/browser/BrowserManager.js.map +1 -1
- package/lib/module/web/browser/FavoriteManager.js +31 -21
- package/lib/module/web/browser/FavoriteManager.js.map +1 -1
- package/lib/module/web/browser/assertBrowsePageShape.js +2 -2
- package/lib/module/web/browser/assertBrowsePageShape.js.map +1 -1
- package/lib/module/web/browser/classifyTrackNavigation.js +9 -9
- package/lib/module/web/browser/classifyTrackNavigation.js.map +1 -1
- package/lib/module/web/browser/sections.js +83 -0
- package/lib/module/web/browser/sections.js.map +1 -0
- package/lib/module/web/player/NowPlayingManager.js +4 -3
- package/lib/module/web/player/NowPlayingManager.js.map +1 -1
- package/lib/module/web/util/BrowserPathHelper.js +56 -11
- package/lib/module/web/util/BrowserPathHelper.js.map +1 -1
- package/lib/typescript/src/AudioBrowser.d.ts +1 -0
- package/lib/typescript/src/AudioBrowser.d.ts.map +1 -1
- package/lib/typescript/src/features/browser-config.d.ts.map +1 -1
- package/lib/typescript/src/features/browser.d.ts +2 -2
- package/lib/typescript/src/features/favorites.d.ts +13 -10
- package/lib/typescript/src/features/favorites.d.ts.map +1 -1
- package/lib/typescript/src/features/playback/controls.d.ts +4 -2
- package/lib/typescript/src/features/playback/controls.d.ts.map +1 -1
- package/lib/typescript/src/features/playback/state.d.ts +2 -3
- package/lib/typescript/src/features/playback/state.d.ts.map +1 -1
- package/lib/typescript/src/features/playback/trackPlaybackTime.d.ts +1 -1
- package/lib/typescript/src/features/playback/trackPlaybackTime.d.ts.map +1 -1
- package/lib/typescript/src/features/player/options.d.ts +21 -19
- package/lib/typescript/src/features/player/options.d.ts.map +1 -1
- package/lib/typescript/src/features/player/setup.d.ts.map +1 -1
- package/lib/typescript/src/features/player/validateOptions.d.ts +1 -8
- package/lib/typescript/src/features/player/validateOptions.d.ts.map +1 -1
- package/lib/typescript/src/features/queue/activeTrack.d.ts +8 -1
- package/lib/typescript/src/features/queue/activeTrack.d.ts.map +1 -1
- package/lib/typescript/src/features/queue/queue.d.ts +5 -2
- package/lib/typescript/src/features/queue/queue.d.ts.map +1 -1
- package/lib/typescript/src/types/browser-native.d.ts +2 -2
- package/lib/typescript/src/types/browser-native.d.ts.map +1 -1
- package/lib/typescript/src/types/browser-nodes.d.ts +260 -127
- package/lib/typescript/src/types/browser-nodes.d.ts.map +1 -1
- package/lib/typescript/src/types/browser.d.ts +33 -53
- package/lib/typescript/src/types/browser.d.ts.map +1 -1
- package/lib/typescript/src/utils/LazyNativeEmitter.d.ts +16 -17
- package/lib/typescript/src/utils/LazyNativeEmitter.d.ts.map +1 -1
- package/lib/typescript/src/utils/NativeUpdatedValue.d.ts +24 -19
- package/lib/typescript/src/utils/NativeUpdatedValue.d.ts.map +1 -1
- package/lib/typescript/src/utils/getTrackIdentity.d.ts +18 -0
- package/lib/typescript/src/utils/getTrackIdentity.d.ts.map +1 -0
- package/lib/typescript/src/utils/useNativeValueRefreshedBy.d.ts +21 -0
- package/lib/typescript/src/utils/useNativeValueRefreshedBy.d.ts.map +1 -0
- package/nitrogen/generated/android/AudioBrowser+autolinking.cmake +0 -1
- package/nitrogen/generated/android/c++/{JFavoritesMatchMode.hpp → JArtworkRendering.hpp} +15 -15
- package/nitrogen/generated/android/c++/JArtworkRequestConfig.hpp +4 -3
- package/nitrogen/generated/android/c++/JBrowseResult.hpp +10 -4
- package/nitrogen/generated/android/c++/JCarPlayPlayingIndicatorLocation.hpp +58 -0
- package/nitrogen/generated/android/c++/JFavoriteChangedEvent.hpp +4 -3
- package/nitrogen/generated/android/c++/JFormatNowPlayingParams.hpp +4 -3
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_RequestConfig___Track.hpp +4 -3
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_NowPlayingUpdate____FormatNowPlayingParams.hpp +4 -3
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_std__string____Track.hpp +4 -3
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____Track.hpp +4 -3
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_Track______SearchParams.hpp +4 -2
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_void_____TrackLoadEvent.hpp +4 -2
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError__std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError_______BrowserSourceCallbackParam.hpp +10 -4
- package/nitrogen/generated/android/c++/JFunc_void_FavoriteChangedEvent.hpp +4 -3
- package/nitrogen/generated/android/c++/JFunc_void_Options.hpp +2 -5
- package/nitrogen/generated/android/c++/JFunc_void_PlaybackActiveTrackChangedEvent.hpp +4 -3
- package/nitrogen/generated/android/c++/JFunc_void_std__optional_ResolvedTrack_.hpp +9 -3
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_Track_.hpp +4 -2
- package/nitrogen/generated/android/c++/JHybridAudioBrowserSpec.cpp +21 -14
- package/nitrogen/generated/android/c++/JIOSOptions.hpp +9 -3
- package/nitrogen/generated/android/c++/JMediaRequestConfig.hpp +4 -3
- package/nitrogen/generated/android/c++/JNativeBrowserConfiguration.hpp +16 -10
- package/nitrogen/generated/android/c++/JNativeRouteEntry.hpp +8 -2
- package/nitrogen/generated/android/c++/JNativeSetupPlayerOptions.hpp +6 -7
- package/nitrogen/generated/android/c++/JNativeUpdateOptions.hpp +2 -5
- package/nitrogen/generated/android/c++/JNitroIOSUpdateOptions.hpp +9 -3
- package/nitrogen/generated/android/c++/JOptions.hpp +2 -5
- package/nitrogen/generated/android/c++/JPlaybackActiveTrackChangedEvent.hpp +4 -3
- package/nitrogen/generated/android/c++/JPlayerCapabilities.hpp +5 -11
- package/nitrogen/generated/android/c++/JResolvedTrack.hpp +49 -51
- package/nitrogen/generated/android/c++/JSection.hpp +114 -0
- package/nitrogen/generated/android/c++/JSectionStyle.hpp +69 -0
- package/nitrogen/generated/android/c++/JStyleDisplay.hpp +58 -0
- package/nitrogen/generated/android/c++/JTrack.hpp +19 -48
- package/nitrogen/generated/android/c++/JTrackLoadEvent.hpp +4 -2
- package/nitrogen/generated/android/c++/JTrackStyle.hpp +25 -18
- package/nitrogen/generated/android/c++/JVariant_ResolvedTrack_BrowseError_Promise_BrowseResult_.hpp +10 -4
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{FavoritesMatchMode.kt → ArtworkRendering.kt} +5 -5
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/CarPlayPlayingIndicatorLocation.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IOSOptions.kt +6 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeBrowserConfiguration.kt +5 -5
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NitroIOSUpdateOptions.kt +6 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlayerCapabilities.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ResolvedTrack.kt +12 -18
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Section.kt +50 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{FavoriteConfig.kt → SectionStyle.kt} +12 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/StyleDisplay.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Track.kt +6 -15
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TrackStyle.kt +23 -5
- package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Bridge.hpp +104 -82
- package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Umbrella.hpp +16 -10
- package/nitrogen/generated/ios/c++/HybridAudioBrowserSpecSwift.hpp +16 -10
- package/nitrogen/generated/ios/swift/ArtworkRendering.swift +40 -0
- package/nitrogen/generated/ios/swift/CarPlayPlayingIndicatorLocation.swift +40 -0
- package/nitrogen/generated/ios/swift/IOSOptions.swift +7 -2
- package/nitrogen/generated/ios/swift/NativeBrowserConfiguration.swift +5 -5
- package/nitrogen/generated/ios/swift/NitroIOSUpdateOptions.swift +12 -1
- package/nitrogen/generated/ios/swift/PlayerCapabilities.swift +8 -27
- package/nitrogen/generated/ios/swift/ResolvedTrack.swift +54 -83
- package/nitrogen/generated/ios/swift/Section.swift +100 -0
- package/nitrogen/generated/ios/swift/SectionStyle.swift +64 -0
- package/nitrogen/generated/ios/swift/StyleDisplay.swift +40 -0
- package/nitrogen/generated/ios/swift/Track.swift +20 -73
- package/nitrogen/generated/ios/swift/TrackStyle.swift +28 -22
- package/nitrogen/generated/shared/c++/{FavoritesMatchMode.hpp → ArtworkRendering.hpp} +17 -17
- package/nitrogen/generated/shared/c++/CarPlayPlayingIndicatorLocation.hpp +76 -0
- package/nitrogen/generated/shared/c++/IOSOptions.hpp +9 -2
- package/nitrogen/generated/shared/c++/NativeBrowserConfiguration.hpp +6 -6
- package/nitrogen/generated/shared/c++/NitroIOSUpdateOptions.hpp +9 -2
- package/nitrogen/generated/shared/c++/PlayerCapabilities.hpp +6 -9
- package/nitrogen/generated/shared/c++/ResolvedTrack.hpp +30 -38
- package/nitrogen/generated/shared/c++/Section.hpp +106 -0
- package/nitrogen/generated/shared/c++/SectionStyle.hpp +96 -0
- package/nitrogen/generated/shared/c++/StyleDisplay.hpp +76 -0
- package/nitrogen/generated/shared/c++/Track.hpp +15 -31
- package/nitrogen/generated/shared/c++/TrackStyle.hpp +50 -34
- package/package.json +3 -2
- package/src/AudioBrowser.ts +1 -0
- package/src/features/browser-config.test.ts +21 -6
- package/src/features/browser-config.ts +11 -8
- package/src/features/browser.test.ts +1 -1
- package/src/features/browser.ts +2 -2
- package/src/features/favorites.ts +13 -10
- package/src/features/hook-wiring.test.ts +63 -15
- package/src/features/playback/controls.ts +4 -2
- package/src/features/playback/state.ts +2 -3
- package/src/features/playback/trackPlaybackTime.ts +1 -1
- package/src/features/player/options.ts +27 -19
- package/src/features/player/setup.test.ts +12 -3
- package/src/features/player/setup.ts +3 -1
- package/src/features/player/validateOptions.ts +2 -0
- package/src/features/queue/activeTrack.ts +14 -3
- package/src/features/queue/queue.ts +11 -4
- package/src/nitro-stub-drift.test.ts +277 -0
- package/src/public-surface.test.ts +40 -0
- package/src/specs/audio-browser.nitro.ts +4 -3
- package/src/style-resolution.test.ts +139 -0
- package/src/types/browser-native.ts +2 -2
- package/src/types/browser-nodes.ts +268 -136
- package/src/types/browser.ts +34 -55
- package/src/utils/LazyNativeEmitter.ts +20 -10
- package/src/utils/NativeUpdatedValue.ts +29 -13
- package/src/utils/getTrackIdentity.ts +20 -0
- package/src/utils/useNativeValueRefreshedBy.ts +38 -0
- package/src/web/NativeAudioBrowser.ts +37 -22
- package/src/web/browser/BrowserManager.ts +176 -95
- package/src/web/browser/FavoriteManager.test.ts +84 -0
- package/src/web/browser/FavoriteManager.ts +28 -23
- package/src/web/browser/assertBrowsePageShape.test.ts +1 -1
- package/src/web/browser/assertBrowsePageShape.ts +5 -3
- package/src/web/browser/classifyTrackNavigation.test.ts +10 -8
- package/src/web/browser/classifyTrackNavigation.ts +9 -9
- package/src/web/browser/parseSearchResponse.test.ts +8 -2
- package/src/web/browser/sections.test.ts +91 -0
- package/src/web/browser/sections.ts +72 -0
- package/src/web/player/NowPlayingManager.ts +4 -3
- package/src/web/util/BrowserPathHelper.test.ts +52 -0
- package/src/web/util/BrowserPathHelper.ts +61 -13
- package/ios/CarPlay/ImageRowItem+CarPlay.swift +0 -19
- package/nitrogen/generated/android/c++/JFavoriteConfig.hpp +0 -58
- package/nitrogen/generated/android/c++/JImageRowItem.hpp +0 -105
- package/nitrogen/generated/android/c++/JVariant_Boolean_FavoriteConfig.cpp +0 -26
- package/nitrogen/generated/android/c++/JVariant_Boolean_FavoriteConfig.hpp +0 -71
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ImageRowItem.kt +0 -68
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_Boolean_FavoriteConfig.kt +0 -53
- package/nitrogen/generated/ios/swift/FavoriteConfig.swift +0 -29
- package/nitrogen/generated/ios/swift/FavoritesMatchMode.swift +0 -40
- package/nitrogen/generated/ios/swift/ImageRowItem.swift +0 -195
- package/nitrogen/generated/ios/swift/Variant_Bool_FavoriteConfig.swift +0 -18
- package/nitrogen/generated/shared/c++/FavoriteConfig.hpp +0 -84
- package/nitrogen/generated/shared/c++/ImageRowItem.hpp +0 -129
|
@@ -13,9 +13,10 @@ export interface TrackLoadEvent {
|
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
15
|
* Callback for handling track load events.
|
|
16
|
-
* When set on BrowserConfiguration,
|
|
17
|
-
*
|
|
18
|
-
*
|
|
16
|
+
* When set on BrowserConfiguration, loading a playable track — a browse-row
|
|
17
|
+
* tap or a `navigate(track)` call — invokes this handler instead of the
|
|
18
|
+
* library auto-loading/playing it. The native side awaits the returned
|
|
19
|
+
* promise before proceeding (e.g., showing Now Playing in CarPlay).
|
|
19
20
|
*/
|
|
20
21
|
export type HandleTrackLoadCallback = (event: TrackLoadEvent) => Promise<void>;
|
|
21
22
|
export type BrowserSourceCallbackParam = {
|
|
@@ -142,7 +143,7 @@ export interface RequestConfig {
|
|
|
142
143
|
method?: HttpMethod;
|
|
143
144
|
/**
|
|
144
145
|
* The request path.
|
|
145
|
-
* - For browser requests, this is the track's `
|
|
146
|
+
* - For browser requests, this is the track's `path`
|
|
146
147
|
* - For media requests, this is the track's `src` value
|
|
147
148
|
* - For artwork requests, this is the track's `artwork` URL
|
|
148
149
|
*/
|
|
@@ -293,7 +294,7 @@ export type RequestConfigResolver = () => TransformableRequestConfig | Promise<T
|
|
|
293
294
|
/**
|
|
294
295
|
* Configuration for artwork image requests
|
|
295
296
|
*
|
|
296
|
-
*
|
|
297
|
+
* ### Configuration Hierarchy
|
|
297
298
|
*
|
|
298
299
|
* When a request is made, configs are merged in this order (later overrides earlier):
|
|
299
300
|
* 1. `request` (base config) - shared settings like user agent, common headers
|
|
@@ -302,7 +303,7 @@ export type RequestConfigResolver = () => TransformableRequestConfig | Promise<T
|
|
|
302
303
|
* 4. `imageQueryParams` - automatic size query param injection (if configured)
|
|
303
304
|
* 5. `transform(request, context)` result - final modifications (if provided)
|
|
304
305
|
*
|
|
305
|
-
*
|
|
306
|
+
* ### Usage Patterns
|
|
306
307
|
*
|
|
307
308
|
* **Simple CDN configuration:**
|
|
308
309
|
* ```typescript
|
|
@@ -366,7 +367,7 @@ export interface ImageQueryParams {
|
|
|
366
367
|
* Used for both `media` (audio streaming) and `artwork` (image loading) configuration
|
|
367
368
|
* in BrowserConfiguration.
|
|
368
369
|
*
|
|
369
|
-
*
|
|
370
|
+
* ### Configuration Hierarchy
|
|
370
371
|
*
|
|
371
372
|
* When a request is made, configs are merged in this order (later overrides earlier):
|
|
372
373
|
* 1. `request` (base config) - shared settings like user agent, common headers
|
|
@@ -374,7 +375,7 @@ export interface ImageQueryParams {
|
|
|
374
375
|
* 3. `resolve(track)` result - per-track overrides (if provided)
|
|
375
376
|
* 4. `transform(request)` result - final modifications (if provided)
|
|
376
377
|
*
|
|
377
|
-
*
|
|
378
|
+
* ### Usage Patterns
|
|
378
379
|
*
|
|
379
380
|
* **Simple CDN configuration:**
|
|
380
381
|
* ```typescript
|
|
@@ -526,9 +527,9 @@ export interface ArtworkRequestConfig extends RequestConfig {
|
|
|
526
527
|
*
|
|
527
528
|
* **Response shape (HTTP / `TransformableRequestConfig`):** the endpoint must
|
|
528
529
|
* return a single **page object** — a {@link ResolvedTrack}
|
|
529
|
-
* (`{ title,
|
|
530
|
+
* (`{ title, path?, children: Track[] }`). The `children` array holds the rows
|
|
530
531
|
* shown for the container; each child is a playable leaf (`src`) or a navigable
|
|
531
|
-
* sub-container (`
|
|
532
|
+
* sub-container (`path`). A callback / static `ResolvedTrack` returns the same
|
|
532
533
|
* page object directly.
|
|
533
534
|
*
|
|
534
535
|
* {@link SearchSource} and {@link TabsSource} HTTP endpoints return this same
|
|
@@ -581,41 +582,10 @@ export type TabsSource = Track[] | TabsSourceCallback | TransformableRequestConf
|
|
|
581
582
|
* @see BrowserConfiguration.search
|
|
582
583
|
*/
|
|
583
584
|
export type SearchSource = SearchSourceCallback | TransformableRequestConfig;
|
|
584
|
-
/**
|
|
585
|
-
* How ids passed to `setFavorites` are matched against a
|
|
586
|
-
* track's `src` to hydrate its `favorited` flag.
|
|
587
|
-
*
|
|
588
|
-
* - `'exact'`: the id must equal `src`.
|
|
589
|
-
* - `'partial'`: the id matches if it appears as a complete path segment within
|
|
590
|
-
* `src` (delimited by `/`, `?`, `#`, or the string boundaries). Useful when
|
|
591
|
-
* favorites are stored as a stable identifier that is embedded in — but not
|
|
592
|
-
* equal to — the playable `src` URL.
|
|
593
|
-
*
|
|
594
|
-
* @example
|
|
595
|
-
* ```text
|
|
596
|
-
* setFavorites(['abc123']) + track.src = '/stream/jazz-fm/abc123'
|
|
597
|
-
*
|
|
598
|
-
* 'exact' 'abc123' === '/stream/jazz-fm/abc123' → not favorited
|
|
599
|
-
* 'partial' 'abc123' is the last segment of the src → favorited
|
|
600
|
-
*
|
|
601
|
-
* setFavorites(['https://cdn.example.com/jazz-fm/abc123.mp3'])
|
|
602
|
-
*
|
|
603
|
-
* 'exact' id === src → favorited
|
|
604
|
-
* 'partial' id is a full segment of src → favorited
|
|
605
|
-
* ```
|
|
606
|
-
*/
|
|
607
|
-
export type FavoritesMatchMode = 'exact' | 'partial';
|
|
608
|
-
/**
|
|
609
|
-
* Object form of the `favorite` capability — enables favoriting with an explicit
|
|
610
|
-
* {@link FavoritesMatchMode}. (A bare `true` is shorthand for `{ match: 'exact' }`.)
|
|
611
|
-
*/
|
|
612
|
-
export interface FavoriteConfig {
|
|
613
|
-
match: FavoritesMatchMode;
|
|
614
|
-
}
|
|
615
585
|
export type BrowserConfiguration = {
|
|
616
586
|
/**
|
|
617
587
|
* Initial navigation path. Setting this triggers initial navigation to the
|
|
618
|
-
* specified path. When unset, the first tab's
|
|
588
|
+
* specified path. When unset, the first tab's path is used; when there are
|
|
619
589
|
* no tabs either, `/`.
|
|
620
590
|
*/
|
|
621
591
|
path?: string | undefined;
|
|
@@ -784,18 +754,18 @@ export type BrowserConfiguration = {
|
|
|
784
754
|
search?: SearchSource;
|
|
785
755
|
/**
|
|
786
756
|
* Configuration for navigation tabs in the media browser.
|
|
787
|
-
* The first tab's
|
|
757
|
+
* The first tab's path is automatically loaded when the browser starts.
|
|
788
758
|
*
|
|
789
759
|
* Optional - if not provided, no tab navigation will be available.
|
|
790
760
|
* Limited to maximum 4 tabs for automotive platform compatibility (Android Auto/CarPlay).
|
|
791
761
|
*
|
|
792
|
-
* Can provide static array of Track objects with
|
|
762
|
+
* Can provide static array of Track objects with paths as tabs, API configuration, or custom callback.
|
|
793
763
|
*/
|
|
794
764
|
tabs?: TabsSource;
|
|
795
765
|
/**
|
|
796
|
-
* Route-specific configurations. Maps
|
|
766
|
+
* Route-specific configurations. Maps path patterns to browse sources.
|
|
797
767
|
*
|
|
798
|
-
*
|
|
768
|
+
* ### Matching
|
|
799
769
|
*
|
|
800
770
|
* Patterns match on **exact segment count** — `/artists` does NOT match
|
|
801
771
|
* `/artists/123`. Segments may be:
|
|
@@ -809,7 +779,7 @@ export type BrowserConfiguration = {
|
|
|
809
779
|
* When several patterns match, the most specific wins
|
|
810
780
|
* (constants > parameters > wildcards > tail wildcard).
|
|
811
781
|
*
|
|
812
|
-
*
|
|
782
|
+
* ### Defaults and reserved keys
|
|
813
783
|
*
|
|
814
784
|
* A path matching no route is fetched over HTTP via the `request` →
|
|
815
785
|
* `browse` layers with the path applied — most APIs only need explicit
|
|
@@ -885,22 +855,22 @@ export type BrowserConfiguration = {
|
|
|
885
855
|
carPlayLoadingTitle?: string;
|
|
886
856
|
/**
|
|
887
857
|
* Called when the album line on the CarPlay Now Playing screen is tapped
|
|
888
|
-
* and the active track has no {@link Track.
|
|
858
|
+
* and the active track has no {@link Track.albumPath}. Return a browse path
|
|
889
859
|
* to navigate the CarPlay browse stack there, or `undefined` if the tap was
|
|
890
860
|
* handled (or should do nothing).
|
|
891
861
|
*
|
|
892
|
-
* The album line is tappable whenever the active track has an `
|
|
862
|
+
* The album line is tappable whenever the active track has an `albumPath`
|
|
893
863
|
* or this callback is configured.
|
|
894
864
|
*
|
|
895
865
|
* @example
|
|
896
866
|
* ```typescript
|
|
897
|
-
*
|
|
867
|
+
* resolveAlbumPath: (track) =>
|
|
898
868
|
* track.album ? `/album/${slugify(track.album)}` : undefined
|
|
899
869
|
* ```
|
|
900
870
|
*
|
|
901
871
|
* @platform ios
|
|
902
872
|
*/
|
|
903
|
-
|
|
873
|
+
resolveAlbumPath?: ResolveAlbumPathCallback;
|
|
904
874
|
/**
|
|
905
875
|
* Callback to customize error messages for navigation errors.
|
|
906
876
|
* Used by CarPlay and available via `useFormattedNavigationError()` for app UI.
|
|
@@ -933,6 +903,16 @@ export type BrowserConfiguration = {
|
|
|
933
903
|
* @platform ios
|
|
934
904
|
*/
|
|
935
905
|
export type CarPlayNowPlayingButton = 'shuffle' | 'repeat' | 'favorite' | 'playback-rate';
|
|
906
|
+
/**
|
|
907
|
+
* Where the now-playing indicator draws on a CarPlay list row.
|
|
908
|
+
*
|
|
909
|
+
* - `'leading'`: in the artwork slot, replacing the row's artwork while it
|
|
910
|
+
* plays (the system default, as Apple Music does)
|
|
911
|
+
* - `'trailing'`: at the end of the row, keeping the artwork visible
|
|
912
|
+
*
|
|
913
|
+
* @platform ios
|
|
914
|
+
*/
|
|
915
|
+
export type CarPlayPlayingIndicatorLocation = 'leading' | 'trailing';
|
|
936
916
|
/**
|
|
937
917
|
* Position of the "Ask Siri to Play Audio" assistant cell on a CarPlay list template.
|
|
938
918
|
*
|
|
@@ -1000,7 +980,7 @@ export type FormatNavigationErrorParams = {
|
|
|
1000
980
|
export type FormatNavigationErrorCallback = (params: FormatNavigationErrorParams) => FormattedNavigationError | undefined;
|
|
1001
981
|
/**
|
|
1002
982
|
* Maps the tapped active track to a browse path for the CarPlay album line,
|
|
1003
|
-
* or `undefined` to do nothing. See `
|
|
983
|
+
* or `undefined` to do nothing. See `resolveAlbumPath`.
|
|
1004
984
|
*/
|
|
1005
|
-
export type
|
|
985
|
+
export type ResolveAlbumPathCallback = (track: Track) => string | undefined;
|
|
1006
986
|
//# sourceMappingURL=browser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../../src/types/browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE9D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,oCAAoC;IACpC,KAAK,EAAE,KAAK,CAAA;IACZ,mCAAmC;IACnC,KAAK,EAAE,KAAK,EAAE,CAAA;IACd,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAA;CACnB;AAED
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../../src/types/browser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,37 +1,36 @@
|
|
|
1
1
|
type Callback<T> = (arg: T) => void;
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* The subscription object behind the library's **discrete** events — the
|
|
4
|
+
* remote-control exports (`onRemotePlay`, `onRemoteSeek`, …) and other
|
|
5
|
+
* one-shot signals with no "current value" to cache. Subscribe with
|
|
6
|
+
* {@link addListener}; the returned function unsubscribes. The emitter is
|
|
7
|
+
* not callable itself.
|
|
4
8
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* For critical state changes (playback, progress, etc.), use NativeEmitter instead to ensure
|
|
10
|
-
* no events are missed.
|
|
9
|
+
* "Lazy" is an implementation detail you may notice in timing: the native
|
|
10
|
+
* side only starts delivering the event once the first listener is added.
|
|
11
|
+
* State that always has a current reading uses `NativeUpdatedValue`
|
|
12
|
+
* instead.
|
|
11
13
|
*
|
|
12
14
|
* @example
|
|
13
15
|
* ```typescript
|
|
14
|
-
*
|
|
15
|
-
* (cb) => (nativeBrowser.onRemotePlay = cb)
|
|
16
|
-
* )
|
|
16
|
+
* import { onRemotePlay } from 'react-native-audio-browser'
|
|
17
17
|
*
|
|
18
18
|
* const unsubscribe = onRemotePlay.addListener(() => console.log('play'))
|
|
19
|
+
* // later:
|
|
20
|
+
* unsubscribe()
|
|
19
21
|
* ```
|
|
20
22
|
*/
|
|
21
23
|
export declare class LazyNativeEmitter<T> {
|
|
22
24
|
private setter;
|
|
23
25
|
private listeners;
|
|
24
|
-
constructor(setter: (callback: (data: T) => void) => void);
|
|
25
26
|
private getListeners;
|
|
26
|
-
addListener(callback: Callback<T>): () => void;
|
|
27
27
|
/**
|
|
28
|
-
*
|
|
28
|
+
* Subscribes to the event.
|
|
29
29
|
*
|
|
30
|
-
* @param
|
|
31
|
-
* @returns
|
|
32
|
-
* an unsubscribe function
|
|
30
|
+
* @param callback - Invoked with each event
|
|
31
|
+
* @returns A function that removes the listener
|
|
33
32
|
*/
|
|
34
|
-
|
|
33
|
+
addListener(callback: Callback<T>): () => void;
|
|
35
34
|
}
|
|
36
35
|
export {};
|
|
37
36
|
//# sourceMappingURL=LazyNativeEmitter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LazyNativeEmitter.d.ts","sourceRoot":"","sources":["../../../../src/utils/LazyNativeEmitter.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAA;AAEnC
|
|
1
|
+
{"version":3,"file":"LazyNativeEmitter.d.ts","sourceRoot":"","sources":["../../../../src/utils/LazyNativeEmitter.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAA;AAEnC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,iBAAiB,CAAC,CAAC;IAC9B,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,SAAS,CAAmC;IAOpD,OAAO,CAAC,YAAY;IAWpB;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAI7C;CAeF"}
|
|
@@ -1,37 +1,42 @@
|
|
|
1
1
|
type Callback<T> = (arg: T) => void;
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* The subscription object behind the library's **state** events — every
|
|
4
|
+
* `on<Thing>Changed`-style export (`onPlaybackChanged`, `onQueueChanged`, …)
|
|
5
|
+
* is one of these. Subscribe with {@link addListener}; the returned function
|
|
6
|
+
* unsubscribes. The emitter is not callable itself.
|
|
4
7
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* For discrete events without a current value (remote controls), use LazyNativeEmitter instead.
|
|
8
|
+
* It tracks a value that always has a *current* reading (playback state,
|
|
9
|
+
* progress, options): {@link lastValue} caches the most recent one so hooks —
|
|
10
|
+
* and you — can read it synchronously without a getter round-trip. Discrete
|
|
11
|
+
* events with no current value (remote-control presses) use
|
|
12
|
+
* `LazyNativeEmitter` instead.
|
|
11
13
|
*
|
|
12
14
|
* @example
|
|
13
15
|
* ```typescript
|
|
14
|
-
*
|
|
15
|
-
* (cb) => (nativeBrowser.onPlaybackChanged = cb)
|
|
16
|
-
* )
|
|
16
|
+
* import { onPlaybackChanged } from 'react-native-audio-browser'
|
|
17
17
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* }
|
|
18
|
+
* const unsubscribe = onPlaybackChanged.addListener((p) => {
|
|
19
|
+
* console.log(p.state)
|
|
20
|
+
* })
|
|
21
|
+
* // later:
|
|
22
|
+
* unsubscribe()
|
|
21
23
|
* ```
|
|
22
24
|
*/
|
|
23
25
|
export declare class NativeUpdatedValue<T> {
|
|
24
26
|
private listeners;
|
|
27
|
+
/**
|
|
28
|
+
* The most recent value delivered by native, or `undefined` before the
|
|
29
|
+
* first update. Subscription starts at module load, so this is safe to
|
|
30
|
+
* read synchronously at any time.
|
|
31
|
+
*/
|
|
25
32
|
lastValue: T | undefined;
|
|
26
|
-
constructor(setter: (callback: (data: T) => void) => void);
|
|
27
|
-
addListener(callback: Callback<T>): () => void;
|
|
28
33
|
/**
|
|
29
|
-
*
|
|
34
|
+
* Subscribes to value changes.
|
|
30
35
|
*
|
|
31
|
-
* @param
|
|
32
|
-
* @returns
|
|
36
|
+
* @param callback - Invoked with each new value
|
|
37
|
+
* @returns A function that removes the listener
|
|
33
38
|
*/
|
|
34
|
-
|
|
39
|
+
addListener(callback: Callback<T>): () => void;
|
|
35
40
|
}
|
|
36
41
|
export {};
|
|
37
42
|
//# sourceMappingURL=NativeUpdatedValue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeUpdatedValue.d.ts","sourceRoot":"","sources":["../../../../src/utils/NativeUpdatedValue.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAA;AAEnC
|
|
1
|
+
{"version":3,"file":"NativeUpdatedValue.d.ts","sourceRoot":"","sources":["../../../../src/utils/NativeUpdatedValue.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAA;AAEnC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,kBAAkB,CAAC,CAAC;IAC/B,OAAO,CAAC,SAAS,CAAyB;IAE1C;;;;OAIG;IACH,SAAS,EAAE,CAAC,GAAG,SAAS,CAAY;IAapC;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAG7C;CAcF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A track's identity: its opaque `id` when present (non-blank), falling back
|
|
3
|
+
* to the playable `src`. Two tracks refer to the same item exactly when their
|
|
4
|
+
* identities are equal. Browsable-only tracks (neither `id` nor `src`) have
|
|
5
|
+
* no identity — they are addressed by their `path` instead.
|
|
6
|
+
*
|
|
7
|
+
* This is the same comparison the library uses everywhere it matches tracks:
|
|
8
|
+
* favorites (`setFavorites`), the CarPlay / Android Auto "now playing" row
|
|
9
|
+
* indicator, and queue expansion and in-place skipping when a track is
|
|
10
|
+
* selected from browse content. Use it for your own bookkeeping — keying a
|
|
11
|
+
* favorites collection, deduplicating history — so your comparisons agree
|
|
12
|
+
* with the library's.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getTrackIdentity(track: {
|
|
15
|
+
id?: string;
|
|
16
|
+
src?: string;
|
|
17
|
+
}): string | undefined;
|
|
18
|
+
//# sourceMappingURL=getTrackIdentity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTrackIdentity.d.ts","sourceRoot":"","sources":["../../../../src/utils/getTrackIdentity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,GAAG,MAAM,GAAG,SAAS,CAErB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
type Subscribable = {
|
|
2
|
+
addListener(callback: (event: unknown) => void): () => void;
|
|
3
|
+
};
|
|
4
|
+
/**
|
|
5
|
+
* Hook for a native-fetched value that must stay fresh across SEVERAL event
|
|
6
|
+
* sources — e.g. the active track, which changes on a queue transition
|
|
7
|
+
* (`onActiveTrackChanged`) but is also mutated in place by a favorite toggle
|
|
8
|
+
* (`onFavoriteChanged`).
|
|
9
|
+
*
|
|
10
|
+
* Unlike {@link useNativeUpdatedValue}, this never reads a cached event
|
|
11
|
+
* payload: every trigger re-reads `getter()`, and the mount effect re-reads
|
|
12
|
+
* once after the subscriptions attach (so an event firing between render and
|
|
13
|
+
* effect cannot be missed). The getters are cheap synchronous Nitro calls.
|
|
14
|
+
*
|
|
15
|
+
* @param getter - Synchronous native getter for the current value
|
|
16
|
+
* @param emitters - Event sources that invalidate the value (a stable,
|
|
17
|
+
* module-level array — identity changes resubscribe)
|
|
18
|
+
*/
|
|
19
|
+
export declare function useNativeValueRefreshedBy<T>(getter: () => T, emitters: readonly Subscribable[]): T;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=useNativeValueRefreshedBy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useNativeValueRefreshedBy.d.ts","sourceRoot":"","sources":["../../../../src/utils/useNativeValueRefreshedBy.ts"],"names":[],"mappings":"AAEA,KAAK,YAAY,GAAG;IAClB,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;CAC5D,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EACzC,MAAM,EAAE,MAAM,CAAC,EACf,QAAQ,EAAE,SAAS,YAAY,EAAE,GAChC,CAAC,CAaH"}
|
|
@@ -42,7 +42,6 @@ target_sources(
|
|
|
42
42
|
../nitrogen/generated/android/c++/JSleepTimer.cpp
|
|
43
43
|
../nitrogen/generated/android/c++/JVariant_NullType_RemoteButtonLayout.cpp
|
|
44
44
|
../nitrogen/generated/android/c++/JVariant_NullType_Double.cpp
|
|
45
|
-
../nitrogen/generated/android/c++/JVariant_Boolean_FavoriteConfig.cpp
|
|
46
45
|
../nitrogen/generated/android/c++/JVariant_Boolean_AndroidAudioOffloadSettings.cpp
|
|
47
46
|
../nitrogen/generated/android/c++/JVariant_Boolean_RetryConfig.cpp
|
|
48
47
|
)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
///
|
|
2
|
-
///
|
|
2
|
+
/// JArtworkRendering.hpp
|
|
3
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
4
|
/// https://github.com/mrousavy/nitro
|
|
5
5
|
/// Copyright © Marc Rousavy @ Margelo
|
|
@@ -8,30 +8,30 @@
|
|
|
8
8
|
#pragma once
|
|
9
9
|
|
|
10
10
|
#include <fbjni/fbjni.h>
|
|
11
|
-
#include "
|
|
11
|
+
#include "ArtworkRendering.hpp"
|
|
12
12
|
|
|
13
13
|
namespace margelo::nitro::audiobrowser {
|
|
14
14
|
|
|
15
15
|
using namespace facebook;
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
|
-
* The C++ JNI bridge between the C++ enum "
|
|
18
|
+
* The C++ JNI bridge between the C++ enum "ArtworkRendering" and the the Kotlin enum "ArtworkRendering".
|
|
19
19
|
*/
|
|
20
|
-
struct
|
|
20
|
+
struct JArtworkRendering final: public jni::JavaClass<JArtworkRendering> {
|
|
21
21
|
public:
|
|
22
|
-
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/
|
|
22
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/ArtworkRendering;";
|
|
23
23
|
|
|
24
24
|
public:
|
|
25
25
|
/**
|
|
26
|
-
* Convert this Java/Kotlin-based enum to the C++ enum
|
|
26
|
+
* Convert this Java/Kotlin-based enum to the C++ enum ArtworkRendering.
|
|
27
27
|
*/
|
|
28
28
|
[[maybe_unused]]
|
|
29
29
|
[[nodiscard]]
|
|
30
|
-
|
|
30
|
+
ArtworkRendering toCpp() const {
|
|
31
31
|
static const auto clazz = javaClassStatic();
|
|
32
32
|
static const auto fieldOrdinal = clazz->getField<int>("value");
|
|
33
33
|
int ordinal = this->getFieldValue(fieldOrdinal);
|
|
34
|
-
return static_cast<
|
|
34
|
+
return static_cast<ArtworkRendering>(ordinal);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
public:
|
|
@@ -39,15 +39,15 @@ namespace margelo::nitro::audiobrowser {
|
|
|
39
39
|
* Create a Java/Kotlin-based enum with the given C++ enum's value.
|
|
40
40
|
*/
|
|
41
41
|
[[maybe_unused]]
|
|
42
|
-
static jni::alias_ref<
|
|
42
|
+
static jni::alias_ref<JArtworkRendering> fromCpp(ArtworkRendering value) {
|
|
43
43
|
static const auto clazz = javaClassStatic();
|
|
44
44
|
switch (value) {
|
|
45
|
-
case
|
|
46
|
-
static const auto
|
|
47
|
-
return clazz->getStaticFieldValue(
|
|
48
|
-
case
|
|
49
|
-
static const auto
|
|
50
|
-
return clazz->getStaticFieldValue(
|
|
45
|
+
case ArtworkRendering::ORIGINAL:
|
|
46
|
+
static const auto fieldORIGINAL = clazz->getStaticField<JArtworkRendering>("ORIGINAL");
|
|
47
|
+
return clazz->getStaticFieldValue(fieldORIGINAL);
|
|
48
|
+
case ArtworkRendering::STENCIL:
|
|
49
|
+
static const auto fieldSTENCIL = clazz->getStaticField<JArtworkRendering>("STENCIL");
|
|
50
|
+
return clazz->getStaticFieldValue(fieldSTENCIL);
|
|
51
51
|
default:
|
|
52
52
|
std::string stringValue = std::to_string(static_cast<int>(value));
|
|
53
53
|
throw std::invalid_argument("Invalid enum value (" + stringValue + "!");
|
|
@@ -10,12 +10,13 @@
|
|
|
10
10
|
#include <fbjni/fbjni.h>
|
|
11
11
|
#include "ArtworkRequestConfig.hpp"
|
|
12
12
|
|
|
13
|
+
#include "ArtworkRendering.hpp"
|
|
13
14
|
#include "ArtworkVariants.hpp"
|
|
14
15
|
#include "HttpMethod.hpp"
|
|
15
16
|
#include "ImageContext.hpp"
|
|
16
17
|
#include "ImageQueryParams.hpp"
|
|
17
|
-
#include "ImageRowItem.hpp"
|
|
18
18
|
#include "ImageSource.hpp"
|
|
19
|
+
#include "JArtworkRendering.hpp"
|
|
19
20
|
#include "JArtworkVariants.hpp"
|
|
20
21
|
#include "JFunc_std__shared_ptr_Promise_RequestConfig___MediaTransformParams.hpp"
|
|
21
22
|
#include "JFunc_std__shared_ptr_Promise_RequestConfig___Track.hpp"
|
|
@@ -24,16 +25,17 @@
|
|
|
24
25
|
#include "JHttpMethod.hpp"
|
|
25
26
|
#include "JImageContext.hpp"
|
|
26
27
|
#include "JImageQueryParams.hpp"
|
|
27
|
-
#include "JImageRowItem.hpp"
|
|
28
28
|
#include "JImageSource.hpp"
|
|
29
29
|
#include "JMediaTransformParams.hpp"
|
|
30
30
|
#include "JRequestConfig.hpp"
|
|
31
|
+
#include "JStyleDisplay.hpp"
|
|
31
32
|
#include "JTrack.hpp"
|
|
32
33
|
#include "JTrackRequest.hpp"
|
|
33
34
|
#include "JTrackStyle.hpp"
|
|
34
35
|
#include "JVariant_String_ArtworkVariants.hpp"
|
|
35
36
|
#include "MediaTransformParams.hpp"
|
|
36
37
|
#include "RequestConfig.hpp"
|
|
38
|
+
#include "StyleDisplay.hpp"
|
|
37
39
|
#include "Track.hpp"
|
|
38
40
|
#include "TrackRequest.hpp"
|
|
39
41
|
#include "TrackStyle.hpp"
|
|
@@ -45,7 +47,6 @@
|
|
|
45
47
|
#include <string>
|
|
46
48
|
#include <unordered_map>
|
|
47
49
|
#include <variant>
|
|
48
|
-
#include <vector>
|
|
49
50
|
|
|
50
51
|
namespace margelo::nitro::audiobrowser {
|
|
51
52
|
|
|
@@ -15,9 +15,17 @@
|
|
|
15
15
|
#include <variant>
|
|
16
16
|
#include "JResolvedTrack.hpp"
|
|
17
17
|
#include <string>
|
|
18
|
-
#include "
|
|
19
|
-
#include <vector>
|
|
18
|
+
#include "SectionStyle.hpp"
|
|
20
19
|
#include <optional>
|
|
20
|
+
#include "JSectionStyle.hpp"
|
|
21
|
+
#include "StyleDisplay.hpp"
|
|
22
|
+
#include "JStyleDisplay.hpp"
|
|
23
|
+
#include "ArtworkRendering.hpp"
|
|
24
|
+
#include "JArtworkRendering.hpp"
|
|
25
|
+
#include "Section.hpp"
|
|
26
|
+
#include <vector>
|
|
27
|
+
#include "JSection.hpp"
|
|
28
|
+
#include "Track.hpp"
|
|
21
29
|
#include "JTrack.hpp"
|
|
22
30
|
#include "ArtworkVariants.hpp"
|
|
23
31
|
#include "JVariant_String_ArtworkVariants.hpp"
|
|
@@ -31,8 +39,6 @@
|
|
|
31
39
|
#include "JTrackRequest.hpp"
|
|
32
40
|
#include "TrackStyle.hpp"
|
|
33
41
|
#include "JTrackStyle.hpp"
|
|
34
|
-
#include "ImageRowItem.hpp"
|
|
35
|
-
#include "JImageRowItem.hpp"
|
|
36
42
|
#include "CarPlaySiriListButtonPosition.hpp"
|
|
37
43
|
#include "JCarPlaySiriListButtonPosition.hpp"
|
|
38
44
|
#include "JBrowseError.hpp"
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JCarPlayPlayingIndicatorLocation.hpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <fbjni/fbjni.h>
|
|
11
|
+
#include "CarPlayPlayingIndicatorLocation.hpp"
|
|
12
|
+
|
|
13
|
+
namespace margelo::nitro::audiobrowser {
|
|
14
|
+
|
|
15
|
+
using namespace facebook;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The C++ JNI bridge between the C++ enum "CarPlayPlayingIndicatorLocation" and the the Kotlin enum "CarPlayPlayingIndicatorLocation".
|
|
19
|
+
*/
|
|
20
|
+
struct JCarPlayPlayingIndicatorLocation final: public jni::JavaClass<JCarPlayPlayingIndicatorLocation> {
|
|
21
|
+
public:
|
|
22
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/CarPlayPlayingIndicatorLocation;";
|
|
23
|
+
|
|
24
|
+
public:
|
|
25
|
+
/**
|
|
26
|
+
* Convert this Java/Kotlin-based enum to the C++ enum CarPlayPlayingIndicatorLocation.
|
|
27
|
+
*/
|
|
28
|
+
[[maybe_unused]]
|
|
29
|
+
[[nodiscard]]
|
|
30
|
+
CarPlayPlayingIndicatorLocation toCpp() const {
|
|
31
|
+
static const auto clazz = javaClassStatic();
|
|
32
|
+
static const auto fieldOrdinal = clazz->getField<int>("value");
|
|
33
|
+
int ordinal = this->getFieldValue(fieldOrdinal);
|
|
34
|
+
return static_cast<CarPlayPlayingIndicatorLocation>(ordinal);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public:
|
|
38
|
+
/**
|
|
39
|
+
* Create a Java/Kotlin-based enum with the given C++ enum's value.
|
|
40
|
+
*/
|
|
41
|
+
[[maybe_unused]]
|
|
42
|
+
static jni::alias_ref<JCarPlayPlayingIndicatorLocation> fromCpp(CarPlayPlayingIndicatorLocation value) {
|
|
43
|
+
static const auto clazz = javaClassStatic();
|
|
44
|
+
switch (value) {
|
|
45
|
+
case CarPlayPlayingIndicatorLocation::LEADING:
|
|
46
|
+
static const auto fieldLEADING = clazz->getStaticField<JCarPlayPlayingIndicatorLocation>("LEADING");
|
|
47
|
+
return clazz->getStaticFieldValue(fieldLEADING);
|
|
48
|
+
case CarPlayPlayingIndicatorLocation::TRAILING:
|
|
49
|
+
static const auto fieldTRAILING = clazz->getStaticField<JCarPlayPlayingIndicatorLocation>("TRAILING");
|
|
50
|
+
return clazz->getStaticFieldValue(fieldTRAILING);
|
|
51
|
+
default:
|
|
52
|
+
std::string stringValue = std::to_string(static_cast<int>(value));
|
|
53
|
+
throw std::invalid_argument("Invalid enum value (" + stringValue + "!");
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
} // namespace margelo::nitro::audiobrowser
|
|
@@ -10,18 +10,20 @@
|
|
|
10
10
|
#include <fbjni/fbjni.h>
|
|
11
11
|
#include "FavoriteChangedEvent.hpp"
|
|
12
12
|
|
|
13
|
+
#include "ArtworkRendering.hpp"
|
|
13
14
|
#include "ArtworkVariants.hpp"
|
|
14
15
|
#include "HttpMethod.hpp"
|
|
15
|
-
#include "ImageRowItem.hpp"
|
|
16
16
|
#include "ImageSource.hpp"
|
|
17
|
+
#include "JArtworkRendering.hpp"
|
|
17
18
|
#include "JArtworkVariants.hpp"
|
|
18
19
|
#include "JHttpMethod.hpp"
|
|
19
|
-
#include "JImageRowItem.hpp"
|
|
20
20
|
#include "JImageSource.hpp"
|
|
21
|
+
#include "JStyleDisplay.hpp"
|
|
21
22
|
#include "JTrack.hpp"
|
|
22
23
|
#include "JTrackRequest.hpp"
|
|
23
24
|
#include "JTrackStyle.hpp"
|
|
24
25
|
#include "JVariant_String_ArtworkVariants.hpp"
|
|
26
|
+
#include "StyleDisplay.hpp"
|
|
25
27
|
#include "Track.hpp"
|
|
26
28
|
#include "TrackRequest.hpp"
|
|
27
29
|
#include "TrackStyle.hpp"
|
|
@@ -29,7 +31,6 @@
|
|
|
29
31
|
#include <string>
|
|
30
32
|
#include <unordered_map>
|
|
31
33
|
#include <variant>
|
|
32
|
-
#include <vector>
|
|
33
34
|
|
|
34
35
|
namespace margelo::nitro::audiobrowser {
|
|
35
36
|
|