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
|
@@ -18,7 +18,7 @@ public extension Track {
|
|
|
18
18
|
/**
|
|
19
19
|
* Create a new instance of `Track`.
|
|
20
20
|
*/
|
|
21
|
-
init(id: String?,
|
|
21
|
+
init(id: String?, path: String?, src: String?, artwork: Variant_String_ArtworkVariants?, artworkSource: ImageSource?, request: TrackRequest?, title: String, subtitle: String?, artist: String?, albumPath: String?, album: String?, description: String?, genre: String?, duration: Double?, style: TrackStyle?, disabled: Bool?, favorited: Bool?, live: Bool?) {
|
|
22
22
|
self.init({ () -> bridge.std__optional_std__string_ in
|
|
23
23
|
if let __unwrappedValue = id {
|
|
24
24
|
return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
|
|
@@ -26,7 +26,7 @@ public extension Track {
|
|
|
26
26
|
return .init()
|
|
27
27
|
}
|
|
28
28
|
}(), { () -> bridge.std__optional_std__string_ in
|
|
29
|
-
if let __unwrappedValue =
|
|
29
|
+
if let __unwrappedValue = path {
|
|
30
30
|
return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
|
|
31
31
|
} else {
|
|
32
32
|
return .init()
|
|
@@ -62,12 +62,6 @@ public extension Track {
|
|
|
62
62
|
} else {
|
|
63
63
|
return .init()
|
|
64
64
|
}
|
|
65
|
-
}(), { () -> bridge.std__optional_bool_ in
|
|
66
|
-
if let __unwrappedValue = artworkCarPlayTinted {
|
|
67
|
-
return bridge.create_std__optional_bool_(__unwrappedValue)
|
|
68
|
-
} else {
|
|
69
|
-
return .init()
|
|
70
|
-
}
|
|
71
65
|
}(), std.string(title), { () -> bridge.std__optional_std__string_ in
|
|
72
66
|
if let __unwrappedValue = subtitle {
|
|
73
67
|
return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
|
|
@@ -81,7 +75,7 @@ public extension Track {
|
|
|
81
75
|
return .init()
|
|
82
76
|
}
|
|
83
77
|
}(), { () -> bridge.std__optional_std__string_ in
|
|
84
|
-
if let __unwrappedValue =
|
|
78
|
+
if let __unwrappedValue = albumPath {
|
|
85
79
|
return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
|
|
86
80
|
} else {
|
|
87
81
|
return .init()
|
|
@@ -116,9 +110,9 @@ public extension Track {
|
|
|
116
110
|
} else {
|
|
117
111
|
return .init()
|
|
118
112
|
}
|
|
119
|
-
}(), { () -> bridge.
|
|
120
|
-
if let __unwrappedValue =
|
|
121
|
-
return bridge.
|
|
113
|
+
}(), { () -> bridge.std__optional_bool_ in
|
|
114
|
+
if let __unwrappedValue = disabled {
|
|
115
|
+
return bridge.create_std__optional_bool_(__unwrappedValue)
|
|
122
116
|
} else {
|
|
123
117
|
return .init()
|
|
124
118
|
}
|
|
@@ -128,30 +122,12 @@ public extension Track {
|
|
|
128
122
|
} else {
|
|
129
123
|
return .init()
|
|
130
124
|
}
|
|
131
|
-
}(), { () -> bridge.std__optional_std__string_ in
|
|
132
|
-
if let __unwrappedValue = groupTitle {
|
|
133
|
-
return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
|
|
134
|
-
} else {
|
|
135
|
-
return .init()
|
|
136
|
-
}
|
|
137
125
|
}(), { () -> bridge.std__optional_bool_ in
|
|
138
126
|
if let __unwrappedValue = live {
|
|
139
127
|
return bridge.create_std__optional_bool_(__unwrappedValue)
|
|
140
128
|
} else {
|
|
141
129
|
return .init()
|
|
142
130
|
}
|
|
143
|
-
}(), { () -> bridge.std__optional_std__vector_ImageRowItem__ in
|
|
144
|
-
if let __unwrappedValue = imageRow {
|
|
145
|
-
return bridge.create_std__optional_std__vector_ImageRowItem__({ () -> bridge.std__vector_ImageRowItem_ in
|
|
146
|
-
var __vector = bridge.create_std__vector_ImageRowItem_(__unwrappedValue.count)
|
|
147
|
-
for __item in __unwrappedValue {
|
|
148
|
-
__vector.push_back(__item)
|
|
149
|
-
}
|
|
150
|
-
return __vector
|
|
151
|
-
}())
|
|
152
|
-
} else {
|
|
153
|
-
return .init()
|
|
154
|
-
}
|
|
155
131
|
}())
|
|
156
132
|
}
|
|
157
133
|
|
|
@@ -168,10 +144,10 @@ public extension Track {
|
|
|
168
144
|
}
|
|
169
145
|
|
|
170
146
|
@inline(__always)
|
|
171
|
-
var
|
|
147
|
+
var path: String? {
|
|
172
148
|
return { () -> String? in
|
|
173
|
-
if bridge.has_value_std__optional_std__string_(self.
|
|
174
|
-
let __unwrapped = bridge.get_std__optional_std__string_(self.
|
|
149
|
+
if bridge.has_value_std__optional_std__string_(self.__path) {
|
|
150
|
+
let __unwrapped = bridge.get_std__optional_std__string_(self.__path)
|
|
175
151
|
return String(__unwrapped)
|
|
176
152
|
} else {
|
|
177
153
|
return nil
|
|
@@ -225,18 +201,6 @@ public extension Track {
|
|
|
225
201
|
return self.__request.value
|
|
226
202
|
}
|
|
227
203
|
|
|
228
|
-
@inline(__always)
|
|
229
|
-
var artworkCarPlayTinted: Bool? {
|
|
230
|
-
return { () -> Bool? in
|
|
231
|
-
if bridge.has_value_std__optional_bool_(self.__artworkCarPlayTinted) {
|
|
232
|
-
let __unwrapped = bridge.get_std__optional_bool_(self.__artworkCarPlayTinted)
|
|
233
|
-
return __unwrapped
|
|
234
|
-
} else {
|
|
235
|
-
return nil
|
|
236
|
-
}
|
|
237
|
-
}()
|
|
238
|
-
}
|
|
239
|
-
|
|
240
204
|
@inline(__always)
|
|
241
205
|
var title: String {
|
|
242
206
|
return String(self.__title)
|
|
@@ -267,10 +231,10 @@ public extension Track {
|
|
|
267
231
|
}
|
|
268
232
|
|
|
269
233
|
@inline(__always)
|
|
270
|
-
var
|
|
234
|
+
var albumPath: String? {
|
|
271
235
|
return { () -> String? in
|
|
272
|
-
if bridge.has_value_std__optional_std__string_(self.
|
|
273
|
-
let __unwrapped = bridge.get_std__optional_std__string_(self.
|
|
236
|
+
if bridge.has_value_std__optional_std__string_(self.__albumPath) {
|
|
237
|
+
let __unwrapped = bridge.get_std__optional_std__string_(self.__albumPath)
|
|
274
238
|
return String(__unwrapped)
|
|
275
239
|
} else {
|
|
276
240
|
return nil
|
|
@@ -332,15 +296,10 @@ public extension Track {
|
|
|
332
296
|
}
|
|
333
297
|
|
|
334
298
|
@inline(__always)
|
|
335
|
-
var
|
|
336
|
-
return self.__childrenStyle.value
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
@inline(__always)
|
|
340
|
-
var favorited: Bool? {
|
|
299
|
+
var disabled: Bool? {
|
|
341
300
|
return { () -> Bool? in
|
|
342
|
-
if bridge.has_value_std__optional_bool_(self.
|
|
343
|
-
let __unwrapped = bridge.get_std__optional_bool_(self.
|
|
301
|
+
if bridge.has_value_std__optional_bool_(self.__disabled) {
|
|
302
|
+
let __unwrapped = bridge.get_std__optional_bool_(self.__disabled)
|
|
344
303
|
return __unwrapped
|
|
345
304
|
} else {
|
|
346
305
|
return nil
|
|
@@ -349,11 +308,11 @@ public extension Track {
|
|
|
349
308
|
}
|
|
350
309
|
|
|
351
310
|
@inline(__always)
|
|
352
|
-
var
|
|
353
|
-
return { () ->
|
|
354
|
-
if bridge.
|
|
355
|
-
let __unwrapped = bridge.
|
|
356
|
-
return
|
|
311
|
+
var favorited: Bool? {
|
|
312
|
+
return { () -> Bool? in
|
|
313
|
+
if bridge.has_value_std__optional_bool_(self.__favorited) {
|
|
314
|
+
let __unwrapped = bridge.get_std__optional_bool_(self.__favorited)
|
|
315
|
+
return __unwrapped
|
|
357
316
|
} else {
|
|
358
317
|
return nil
|
|
359
318
|
}
|
|
@@ -371,16 +330,4 @@ public extension Track {
|
|
|
371
330
|
}
|
|
372
331
|
}()
|
|
373
332
|
}
|
|
374
|
-
|
|
375
|
-
@inline(__always)
|
|
376
|
-
var imageRow: [ImageRowItem]? {
|
|
377
|
-
return { () -> [ImageRowItem]? in
|
|
378
|
-
if bridge.has_value_std__optional_std__vector_ImageRowItem__(self.__imageRow) {
|
|
379
|
-
let __unwrapped = bridge.get_std__optional_std__vector_ImageRowItem__(self.__imageRow)
|
|
380
|
-
return __unwrapped.map({ __item in __item })
|
|
381
|
-
} else {
|
|
382
|
-
return nil
|
|
383
|
-
}
|
|
384
|
-
}()
|
|
385
|
-
}
|
|
386
333
|
}
|
|
@@ -5,36 +5,42 @@
|
|
|
5
5
|
/// Copyright © Marc Rousavy @ Margelo
|
|
6
6
|
///
|
|
7
7
|
|
|
8
|
+
import NitroModules
|
|
9
|
+
|
|
8
10
|
/**
|
|
9
|
-
* Represents
|
|
11
|
+
* Represents an instance of `TrackStyle`, backed by a C++ struct.
|
|
10
12
|
*/
|
|
11
13
|
public typealias TrackStyle = margelo.nitro.audiobrowser.TrackStyle
|
|
12
14
|
|
|
13
15
|
public extension TrackStyle {
|
|
16
|
+
private typealias bridge = margelo.nitro.audiobrowser.bridge.swift
|
|
17
|
+
|
|
14
18
|
/**
|
|
15
|
-
*
|
|
16
|
-
* return `nil` if the given value was invalid/unknown.
|
|
19
|
+
* Create a new instance of `TrackStyle`.
|
|
17
20
|
*/
|
|
18
|
-
init
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
init(display: StyleDisplay?, artworkRendering: ArtworkRendering?) {
|
|
22
|
+
self.init({ () -> bridge.std__optional_StyleDisplay_ in
|
|
23
|
+
if let __unwrappedValue = display {
|
|
24
|
+
return bridge.create_std__optional_StyleDisplay_(__unwrappedValue)
|
|
25
|
+
} else {
|
|
26
|
+
return .init()
|
|
27
|
+
}
|
|
28
|
+
}(), { () -> bridge.std__optional_ArtworkRendering_ in
|
|
29
|
+
if let __unwrappedValue = artworkRendering {
|
|
30
|
+
return bridge.create_std__optional_ArtworkRendering_(__unwrappedValue)
|
|
31
|
+
} else {
|
|
32
|
+
return .init()
|
|
33
|
+
}
|
|
34
|
+
}())
|
|
27
35
|
}
|
|
28
36
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
return "grid"
|
|
38
|
-
}
|
|
37
|
+
@inline(__always)
|
|
38
|
+
var display: StyleDisplay? {
|
|
39
|
+
return self.__display.value
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@inline(__always)
|
|
43
|
+
var artworkRendering: ArtworkRendering? {
|
|
44
|
+
return self.__artworkRendering.value
|
|
39
45
|
}
|
|
40
46
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
///
|
|
2
|
-
///
|
|
2
|
+
/// ArtworkRendering.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
|
|
@@ -26,35 +26,35 @@
|
|
|
26
26
|
namespace margelo::nitro::audiobrowser {
|
|
27
27
|
|
|
28
28
|
/**
|
|
29
|
-
* An enum which can be represented as a JavaScript union (
|
|
29
|
+
* An enum which can be represented as a JavaScript union (ArtworkRendering).
|
|
30
30
|
*/
|
|
31
|
-
enum class
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
enum class ArtworkRendering {
|
|
32
|
+
ORIGINAL SWIFT_NAME(original) = 0,
|
|
33
|
+
STENCIL SWIFT_NAME(stencil) = 1,
|
|
34
34
|
} CLOSED_ENUM;
|
|
35
35
|
|
|
36
36
|
} // namespace margelo::nitro::audiobrowser
|
|
37
37
|
|
|
38
38
|
namespace margelo::nitro {
|
|
39
39
|
|
|
40
|
-
// C++
|
|
40
|
+
// C++ ArtworkRendering <> JS ArtworkRendering (union)
|
|
41
41
|
template <>
|
|
42
|
-
struct JSIConverter<margelo::nitro::audiobrowser::
|
|
43
|
-
static inline margelo::nitro::audiobrowser::
|
|
42
|
+
struct JSIConverter<margelo::nitro::audiobrowser::ArtworkRendering> final {
|
|
43
|
+
static inline margelo::nitro::audiobrowser::ArtworkRendering fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
|
|
44
44
|
std::string unionValue = JSIConverter<std::string>::fromJSI(runtime, arg);
|
|
45
45
|
switch (hashString(unionValue.c_str(), unionValue.size())) {
|
|
46
|
-
case hashString("
|
|
47
|
-
case hashString("
|
|
46
|
+
case hashString("original"): return margelo::nitro::audiobrowser::ArtworkRendering::ORIGINAL;
|
|
47
|
+
case hashString("stencil"): return margelo::nitro::audiobrowser::ArtworkRendering::STENCIL;
|
|
48
48
|
default: [[unlikely]]
|
|
49
|
-
throw std::invalid_argument("Cannot convert \"" + unionValue + "\" to enum
|
|
49
|
+
throw std::invalid_argument("Cannot convert \"" + unionValue + "\" to enum ArtworkRendering - invalid value!");
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
-
static inline jsi::Value toJSI(jsi::Runtime& runtime, margelo::nitro::audiobrowser::
|
|
52
|
+
static inline jsi::Value toJSI(jsi::Runtime& runtime, margelo::nitro::audiobrowser::ArtworkRendering arg) {
|
|
53
53
|
switch (arg) {
|
|
54
|
-
case margelo::nitro::audiobrowser::
|
|
55
|
-
case margelo::nitro::audiobrowser::
|
|
54
|
+
case margelo::nitro::audiobrowser::ArtworkRendering::ORIGINAL: return JSIConverter<std::string>::toJSI(runtime, "original");
|
|
55
|
+
case margelo::nitro::audiobrowser::ArtworkRendering::STENCIL: return JSIConverter<std::string>::toJSI(runtime, "stencil");
|
|
56
56
|
default: [[unlikely]]
|
|
57
|
-
throw std::invalid_argument("Cannot convert
|
|
57
|
+
throw std::invalid_argument("Cannot convert ArtworkRendering to JS - invalid value: "
|
|
58
58
|
+ std::to_string(static_cast<int>(arg)) + "!");
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -64,8 +64,8 @@ namespace margelo::nitro {
|
|
|
64
64
|
}
|
|
65
65
|
std::string unionValue = JSIConverter<std::string>::fromJSI(runtime, value);
|
|
66
66
|
switch (hashString(unionValue.c_str(), unionValue.size())) {
|
|
67
|
-
case hashString("
|
|
68
|
-
case hashString("
|
|
67
|
+
case hashString("original"):
|
|
68
|
+
case hashString("stencil"):
|
|
69
69
|
return true;
|
|
70
70
|
default:
|
|
71
71
|
return false;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// CarPlayPlayingIndicatorLocation.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
|
+
#if __has_include(<NitroModules/NitroHash.hpp>)
|
|
11
|
+
#include <NitroModules/NitroHash.hpp>
|
|
12
|
+
#else
|
|
13
|
+
#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
|
|
14
|
+
#endif
|
|
15
|
+
#if __has_include(<NitroModules/JSIConverter.hpp>)
|
|
16
|
+
#include <NitroModules/JSIConverter.hpp>
|
|
17
|
+
#else
|
|
18
|
+
#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
|
|
19
|
+
#endif
|
|
20
|
+
#if __has_include(<NitroModules/NitroDefines.hpp>)
|
|
21
|
+
#include <NitroModules/NitroDefines.hpp>
|
|
22
|
+
#else
|
|
23
|
+
#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
|
|
24
|
+
#endif
|
|
25
|
+
|
|
26
|
+
namespace margelo::nitro::audiobrowser {
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* An enum which can be represented as a JavaScript union (CarPlayPlayingIndicatorLocation).
|
|
30
|
+
*/
|
|
31
|
+
enum class CarPlayPlayingIndicatorLocation {
|
|
32
|
+
LEADING SWIFT_NAME(leading) = 0,
|
|
33
|
+
TRAILING SWIFT_NAME(trailing) = 1,
|
|
34
|
+
} CLOSED_ENUM;
|
|
35
|
+
|
|
36
|
+
} // namespace margelo::nitro::audiobrowser
|
|
37
|
+
|
|
38
|
+
namespace margelo::nitro {
|
|
39
|
+
|
|
40
|
+
// C++ CarPlayPlayingIndicatorLocation <> JS CarPlayPlayingIndicatorLocation (union)
|
|
41
|
+
template <>
|
|
42
|
+
struct JSIConverter<margelo::nitro::audiobrowser::CarPlayPlayingIndicatorLocation> final {
|
|
43
|
+
static inline margelo::nitro::audiobrowser::CarPlayPlayingIndicatorLocation fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
|
|
44
|
+
std::string unionValue = JSIConverter<std::string>::fromJSI(runtime, arg);
|
|
45
|
+
switch (hashString(unionValue.c_str(), unionValue.size())) {
|
|
46
|
+
case hashString("leading"): return margelo::nitro::audiobrowser::CarPlayPlayingIndicatorLocation::LEADING;
|
|
47
|
+
case hashString("trailing"): return margelo::nitro::audiobrowser::CarPlayPlayingIndicatorLocation::TRAILING;
|
|
48
|
+
default: [[unlikely]]
|
|
49
|
+
throw std::invalid_argument("Cannot convert \"" + unionValue + "\" to enum CarPlayPlayingIndicatorLocation - invalid value!");
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
static inline jsi::Value toJSI(jsi::Runtime& runtime, margelo::nitro::audiobrowser::CarPlayPlayingIndicatorLocation arg) {
|
|
53
|
+
switch (arg) {
|
|
54
|
+
case margelo::nitro::audiobrowser::CarPlayPlayingIndicatorLocation::LEADING: return JSIConverter<std::string>::toJSI(runtime, "leading");
|
|
55
|
+
case margelo::nitro::audiobrowser::CarPlayPlayingIndicatorLocation::TRAILING: return JSIConverter<std::string>::toJSI(runtime, "trailing");
|
|
56
|
+
default: [[unlikely]]
|
|
57
|
+
throw std::invalid_argument("Cannot convert CarPlayPlayingIndicatorLocation to JS - invalid value: "
|
|
58
|
+
+ std::to_string(static_cast<int>(arg)) + "!");
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
|
|
62
|
+
if (!value.isString()) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
std::string unionValue = JSIConverter<std::string>::fromJSI(runtime, value);
|
|
66
|
+
switch (hashString(unionValue.c_str(), unionValue.size())) {
|
|
67
|
+
case hashString("leading"):
|
|
68
|
+
case hashString("trailing"):
|
|
69
|
+
return true;
|
|
70
|
+
default:
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
} // namespace margelo::nitro
|
|
@@ -30,9 +30,12 @@
|
|
|
30
30
|
|
|
31
31
|
// Forward declaration of `CarPlayNowPlayingButton` to properly resolve imports.
|
|
32
32
|
namespace margelo::nitro::audiobrowser { enum class CarPlayNowPlayingButton; }
|
|
33
|
+
// Forward declaration of `CarPlayPlayingIndicatorLocation` to properly resolve imports.
|
|
34
|
+
namespace margelo::nitro::audiobrowser { enum class CarPlayPlayingIndicatorLocation; }
|
|
33
35
|
|
|
34
36
|
#include <vector>
|
|
35
37
|
#include "CarPlayNowPlayingButton.hpp"
|
|
38
|
+
#include "CarPlayPlayingIndicatorLocation.hpp"
|
|
36
39
|
|
|
37
40
|
namespace margelo::nitro::audiobrowser {
|
|
38
41
|
|
|
@@ -44,10 +47,11 @@ namespace margelo::nitro::audiobrowser {
|
|
|
44
47
|
std::vector<double> playbackRates SWIFT_PRIVATE;
|
|
45
48
|
bool carPlayUpNextButton SWIFT_PRIVATE;
|
|
46
49
|
std::vector<CarPlayNowPlayingButton> carPlayNowPlayingButtons SWIFT_PRIVATE;
|
|
50
|
+
CarPlayPlayingIndicatorLocation carPlayPlayingIndicatorLocation SWIFT_PRIVATE;
|
|
47
51
|
|
|
48
52
|
public:
|
|
49
53
|
IOSOptions() = default;
|
|
50
|
-
explicit IOSOptions(std::vector<double> playbackRates, bool carPlayUpNextButton, std::vector<CarPlayNowPlayingButton> carPlayNowPlayingButtons): playbackRates(playbackRates), carPlayUpNextButton(carPlayUpNextButton), carPlayNowPlayingButtons(carPlayNowPlayingButtons) {}
|
|
54
|
+
explicit IOSOptions(std::vector<double> playbackRates, bool carPlayUpNextButton, std::vector<CarPlayNowPlayingButton> carPlayNowPlayingButtons, CarPlayPlayingIndicatorLocation carPlayPlayingIndicatorLocation): playbackRates(playbackRates), carPlayUpNextButton(carPlayUpNextButton), carPlayNowPlayingButtons(carPlayNowPlayingButtons), carPlayPlayingIndicatorLocation(carPlayPlayingIndicatorLocation) {}
|
|
51
55
|
|
|
52
56
|
};
|
|
53
57
|
|
|
@@ -63,7 +67,8 @@ namespace margelo::nitro {
|
|
|
63
67
|
return margelo::nitro::audiobrowser::IOSOptions(
|
|
64
68
|
JSIConverter<std::vector<double>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "playbackRates"))),
|
|
65
69
|
JSIConverter<bool>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "carPlayUpNextButton"))),
|
|
66
|
-
JSIConverter<std::vector<margelo::nitro::audiobrowser::CarPlayNowPlayingButton>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "carPlayNowPlayingButtons")))
|
|
70
|
+
JSIConverter<std::vector<margelo::nitro::audiobrowser::CarPlayNowPlayingButton>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "carPlayNowPlayingButtons"))),
|
|
71
|
+
JSIConverter<margelo::nitro::audiobrowser::CarPlayPlayingIndicatorLocation>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "carPlayPlayingIndicatorLocation")))
|
|
67
72
|
);
|
|
68
73
|
}
|
|
69
74
|
static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::audiobrowser::IOSOptions& arg) {
|
|
@@ -71,6 +76,7 @@ namespace margelo::nitro {
|
|
|
71
76
|
obj.setProperty(runtime, PropNameIDCache::get(runtime, "playbackRates"), JSIConverter<std::vector<double>>::toJSI(runtime, arg.playbackRates));
|
|
72
77
|
obj.setProperty(runtime, PropNameIDCache::get(runtime, "carPlayUpNextButton"), JSIConverter<bool>::toJSI(runtime, arg.carPlayUpNextButton));
|
|
73
78
|
obj.setProperty(runtime, PropNameIDCache::get(runtime, "carPlayNowPlayingButtons"), JSIConverter<std::vector<margelo::nitro::audiobrowser::CarPlayNowPlayingButton>>::toJSI(runtime, arg.carPlayNowPlayingButtons));
|
|
79
|
+
obj.setProperty(runtime, PropNameIDCache::get(runtime, "carPlayPlayingIndicatorLocation"), JSIConverter<margelo::nitro::audiobrowser::CarPlayPlayingIndicatorLocation>::toJSI(runtime, arg.carPlayPlayingIndicatorLocation));
|
|
74
80
|
return obj;
|
|
75
81
|
}
|
|
76
82
|
static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
|
|
@@ -84,6 +90,7 @@ namespace margelo::nitro {
|
|
|
84
90
|
if (!JSIConverter<std::vector<double>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "playbackRates")))) return false;
|
|
85
91
|
if (!JSIConverter<bool>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "carPlayUpNextButton")))) return false;
|
|
86
92
|
if (!JSIConverter<std::vector<margelo::nitro::audiobrowser::CarPlayNowPlayingButton>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "carPlayNowPlayingButtons")))) return false;
|
|
93
|
+
if (!JSIConverter<margelo::nitro::audiobrowser::CarPlayPlayingIndicatorLocation>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "carPlayPlayingIndicatorLocation")))) return false;
|
|
87
94
|
return true;
|
|
88
95
|
}
|
|
89
96
|
};
|
|
@@ -79,15 +79,15 @@ namespace margelo::nitro::audiobrowser {
|
|
|
79
79
|
std::optional<std::function<std::shared_ptr<Promise<std::shared_ptr<Promise<void>>>>(const TrackLoadEvent& /* event */)>> handleTrackLoad SWIFT_PRIVATE;
|
|
80
80
|
std::optional<bool> androidControllerOfflineError SWIFT_PRIVATE;
|
|
81
81
|
std::optional<std::string> carPlayLoadingTitle SWIFT_PRIVATE;
|
|
82
|
-
std::optional<std::function<std::shared_ptr<Promise<std::optional<std::string>>>(const Track& /* track */)>>
|
|
82
|
+
std::optional<std::function<std::shared_ptr<Promise<std::optional<std::string>>>(const Track& /* track */)>> resolveAlbumPath SWIFT_PRIVATE;
|
|
83
83
|
std::optional<std::function<std::shared_ptr<Promise<std::optional<FormattedNavigationError>>>(const FormatNavigationErrorParams& /* params */)>> formatNavigationError SWIFT_PRIVATE;
|
|
84
84
|
|
|
85
85
|
public:
|
|
86
86
|
NativeBrowserConfiguration() = default;
|
|
87
|
-
explicit NativeBrowserConfiguration(std::optional<std::string> path, std::optional<TransformableRequestConfig> request, std::optional<std::function<std::shared_ptr<Promise<std::shared_ptr<Promise<TransformableRequestConfig>>>>()>> requestResolver, std::optional<TransformableRequestConfig> browse, std::optional<std::function<std::shared_ptr<Promise<std::shared_ptr<Promise<TransformableRequestConfig>>>>()>> browseResolver, std::optional<MediaRequestConfig> media, std::optional<ArtworkRequestConfig> artwork, std::optional<ArtworkRequestConfig> nowPlayingArtwork, std::optional<std::vector<NativeRouteEntry>> routes, std::optional<bool> singleTrack, std::optional<std::function<std::shared_ptr<Promise<std::shared_ptr<Promise<void>>>>(const TrackLoadEvent& /* event */)>> handleTrackLoad, std::optional<bool> androidControllerOfflineError, std::optional<std::string> carPlayLoadingTitle, std::optional<std::function<std::shared_ptr<Promise<std::optional<std::string>>>(const Track& /* track */)>>
|
|
87
|
+
explicit NativeBrowserConfiguration(std::optional<std::string> path, std::optional<TransformableRequestConfig> request, std::optional<std::function<std::shared_ptr<Promise<std::shared_ptr<Promise<TransformableRequestConfig>>>>()>> requestResolver, std::optional<TransformableRequestConfig> browse, std::optional<std::function<std::shared_ptr<Promise<std::shared_ptr<Promise<TransformableRequestConfig>>>>()>> browseResolver, std::optional<MediaRequestConfig> media, std::optional<ArtworkRequestConfig> artwork, std::optional<ArtworkRequestConfig> nowPlayingArtwork, std::optional<std::vector<NativeRouteEntry>> routes, std::optional<bool> singleTrack, std::optional<std::function<std::shared_ptr<Promise<std::shared_ptr<Promise<void>>>>(const TrackLoadEvent& /* event */)>> handleTrackLoad, std::optional<bool> androidControllerOfflineError, std::optional<std::string> carPlayLoadingTitle, std::optional<std::function<std::shared_ptr<Promise<std::optional<std::string>>>(const Track& /* track */)>> resolveAlbumPath, std::optional<std::function<std::shared_ptr<Promise<std::optional<FormattedNavigationError>>>(const FormatNavigationErrorParams& /* params */)>> formatNavigationError): path(path), request(request), requestResolver(requestResolver), browse(browse), browseResolver(browseResolver), media(media), artwork(artwork), nowPlayingArtwork(nowPlayingArtwork), routes(routes), singleTrack(singleTrack), handleTrackLoad(handleTrackLoad), androidControllerOfflineError(androidControllerOfflineError), carPlayLoadingTitle(carPlayLoadingTitle), resolveAlbumPath(resolveAlbumPath), formatNavigationError(formatNavigationError) {}
|
|
88
88
|
|
|
89
89
|
public:
|
|
90
|
-
// NativeBrowserConfiguration is not equatable because these properties are not equatable: request, requestResolver, browse, browseResolver, media, artwork, nowPlayingArtwork, routes, handleTrackLoad,
|
|
90
|
+
// NativeBrowserConfiguration is not equatable because these properties are not equatable: request, requestResolver, browse, browseResolver, media, artwork, nowPlayingArtwork, routes, handleTrackLoad, resolveAlbumPath, formatNavigationError
|
|
91
91
|
};
|
|
92
92
|
|
|
93
93
|
} // namespace margelo::nitro::audiobrowser
|
|
@@ -113,7 +113,7 @@ namespace margelo::nitro {
|
|
|
113
113
|
JSIConverter<std::optional<std::function<std::shared_ptr<Promise<std::shared_ptr<Promise<void>>>>(const margelo::nitro::audiobrowser::TrackLoadEvent&)>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "handleTrackLoad"))),
|
|
114
114
|
JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "androidControllerOfflineError"))),
|
|
115
115
|
JSIConverter<std::optional<std::string>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "carPlayLoadingTitle"))),
|
|
116
|
-
JSIConverter<std::optional<std::function<std::shared_ptr<Promise<std::optional<std::string>>>(const margelo::nitro::audiobrowser::Track&)>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "
|
|
116
|
+
JSIConverter<std::optional<std::function<std::shared_ptr<Promise<std::optional<std::string>>>(const margelo::nitro::audiobrowser::Track&)>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "resolveAlbumPath"))),
|
|
117
117
|
JSIConverter<std::optional<std::function<std::shared_ptr<Promise<std::optional<margelo::nitro::audiobrowser::FormattedNavigationError>>>(const margelo::nitro::audiobrowser::FormatNavigationErrorParams&)>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "formatNavigationError")))
|
|
118
118
|
);
|
|
119
119
|
}
|
|
@@ -132,7 +132,7 @@ namespace margelo::nitro {
|
|
|
132
132
|
obj.setProperty(runtime, PropNameIDCache::get(runtime, "handleTrackLoad"), JSIConverter<std::optional<std::function<std::shared_ptr<Promise<std::shared_ptr<Promise<void>>>>(const margelo::nitro::audiobrowser::TrackLoadEvent&)>>>::toJSI(runtime, arg.handleTrackLoad));
|
|
133
133
|
obj.setProperty(runtime, PropNameIDCache::get(runtime, "androidControllerOfflineError"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.androidControllerOfflineError));
|
|
134
134
|
obj.setProperty(runtime, PropNameIDCache::get(runtime, "carPlayLoadingTitle"), JSIConverter<std::optional<std::string>>::toJSI(runtime, arg.carPlayLoadingTitle));
|
|
135
|
-
obj.setProperty(runtime, PropNameIDCache::get(runtime, "
|
|
135
|
+
obj.setProperty(runtime, PropNameIDCache::get(runtime, "resolveAlbumPath"), JSIConverter<std::optional<std::function<std::shared_ptr<Promise<std::optional<std::string>>>(const margelo::nitro::audiobrowser::Track&)>>>::toJSI(runtime, arg.resolveAlbumPath));
|
|
136
136
|
obj.setProperty(runtime, PropNameIDCache::get(runtime, "formatNavigationError"), JSIConverter<std::optional<std::function<std::shared_ptr<Promise<std::optional<margelo::nitro::audiobrowser::FormattedNavigationError>>>(const margelo::nitro::audiobrowser::FormatNavigationErrorParams&)>>>::toJSI(runtime, arg.formatNavigationError));
|
|
137
137
|
return obj;
|
|
138
138
|
}
|
|
@@ -157,7 +157,7 @@ namespace margelo::nitro {
|
|
|
157
157
|
if (!JSIConverter<std::optional<std::function<std::shared_ptr<Promise<std::shared_ptr<Promise<void>>>>(const margelo::nitro::audiobrowser::TrackLoadEvent&)>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "handleTrackLoad")))) return false;
|
|
158
158
|
if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "androidControllerOfflineError")))) return false;
|
|
159
159
|
if (!JSIConverter<std::optional<std::string>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "carPlayLoadingTitle")))) return false;
|
|
160
|
-
if (!JSIConverter<std::optional<std::function<std::shared_ptr<Promise<std::optional<std::string>>>(const margelo::nitro::audiobrowser::Track&)>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "
|
|
160
|
+
if (!JSIConverter<std::optional<std::function<std::shared_ptr<Promise<std::optional<std::string>>>(const margelo::nitro::audiobrowser::Track&)>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "resolveAlbumPath")))) return false;
|
|
161
161
|
if (!JSIConverter<std::optional<std::function<std::shared_ptr<Promise<std::optional<margelo::nitro::audiobrowser::FormattedNavigationError>>>(const margelo::nitro::audiobrowser::FormatNavigationErrorParams&)>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "formatNavigationError")))) return false;
|
|
162
162
|
return true;
|
|
163
163
|
}
|
|
@@ -30,10 +30,13 @@
|
|
|
30
30
|
|
|
31
31
|
// Forward declaration of `CarPlayNowPlayingButton` to properly resolve imports.
|
|
32
32
|
namespace margelo::nitro::audiobrowser { enum class CarPlayNowPlayingButton; }
|
|
33
|
+
// Forward declaration of `CarPlayPlayingIndicatorLocation` to properly resolve imports.
|
|
34
|
+
namespace margelo::nitro::audiobrowser { enum class CarPlayPlayingIndicatorLocation; }
|
|
33
35
|
|
|
34
36
|
#include <vector>
|
|
35
37
|
#include <optional>
|
|
36
38
|
#include "CarPlayNowPlayingButton.hpp"
|
|
39
|
+
#include "CarPlayPlayingIndicatorLocation.hpp"
|
|
37
40
|
|
|
38
41
|
namespace margelo::nitro::audiobrowser {
|
|
39
42
|
|
|
@@ -45,10 +48,11 @@ namespace margelo::nitro::audiobrowser {
|
|
|
45
48
|
std::optional<std::vector<double>> playbackRates SWIFT_PRIVATE;
|
|
46
49
|
std::optional<bool> carPlayUpNextButton SWIFT_PRIVATE;
|
|
47
50
|
std::optional<std::vector<CarPlayNowPlayingButton>> carPlayNowPlayingButtons SWIFT_PRIVATE;
|
|
51
|
+
std::optional<CarPlayPlayingIndicatorLocation> carPlayPlayingIndicatorLocation SWIFT_PRIVATE;
|
|
48
52
|
|
|
49
53
|
public:
|
|
50
54
|
NitroIOSUpdateOptions() = default;
|
|
51
|
-
explicit NitroIOSUpdateOptions(std::optional<std::vector<double>> playbackRates, std::optional<bool> carPlayUpNextButton, std::optional<std::vector<CarPlayNowPlayingButton>> carPlayNowPlayingButtons): playbackRates(playbackRates), carPlayUpNextButton(carPlayUpNextButton), carPlayNowPlayingButtons(carPlayNowPlayingButtons) {}
|
|
55
|
+
explicit NitroIOSUpdateOptions(std::optional<std::vector<double>> playbackRates, std::optional<bool> carPlayUpNextButton, std::optional<std::vector<CarPlayNowPlayingButton>> carPlayNowPlayingButtons, std::optional<CarPlayPlayingIndicatorLocation> carPlayPlayingIndicatorLocation): playbackRates(playbackRates), carPlayUpNextButton(carPlayUpNextButton), carPlayNowPlayingButtons(carPlayNowPlayingButtons), carPlayPlayingIndicatorLocation(carPlayPlayingIndicatorLocation) {}
|
|
52
56
|
|
|
53
57
|
};
|
|
54
58
|
|
|
@@ -64,7 +68,8 @@ namespace margelo::nitro {
|
|
|
64
68
|
return margelo::nitro::audiobrowser::NitroIOSUpdateOptions(
|
|
65
69
|
JSIConverter<std::optional<std::vector<double>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "playbackRates"))),
|
|
66
70
|
JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "carPlayUpNextButton"))),
|
|
67
|
-
JSIConverter<std::optional<std::vector<margelo::nitro::audiobrowser::CarPlayNowPlayingButton>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "carPlayNowPlayingButtons")))
|
|
71
|
+
JSIConverter<std::optional<std::vector<margelo::nitro::audiobrowser::CarPlayNowPlayingButton>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "carPlayNowPlayingButtons"))),
|
|
72
|
+
JSIConverter<std::optional<margelo::nitro::audiobrowser::CarPlayPlayingIndicatorLocation>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "carPlayPlayingIndicatorLocation")))
|
|
68
73
|
);
|
|
69
74
|
}
|
|
70
75
|
static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::audiobrowser::NitroIOSUpdateOptions& arg) {
|
|
@@ -72,6 +77,7 @@ namespace margelo::nitro {
|
|
|
72
77
|
obj.setProperty(runtime, PropNameIDCache::get(runtime, "playbackRates"), JSIConverter<std::optional<std::vector<double>>>::toJSI(runtime, arg.playbackRates));
|
|
73
78
|
obj.setProperty(runtime, PropNameIDCache::get(runtime, "carPlayUpNextButton"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.carPlayUpNextButton));
|
|
74
79
|
obj.setProperty(runtime, PropNameIDCache::get(runtime, "carPlayNowPlayingButtons"), JSIConverter<std::optional<std::vector<margelo::nitro::audiobrowser::CarPlayNowPlayingButton>>>::toJSI(runtime, arg.carPlayNowPlayingButtons));
|
|
80
|
+
obj.setProperty(runtime, PropNameIDCache::get(runtime, "carPlayPlayingIndicatorLocation"), JSIConverter<std::optional<margelo::nitro::audiobrowser::CarPlayPlayingIndicatorLocation>>::toJSI(runtime, arg.carPlayPlayingIndicatorLocation));
|
|
75
81
|
return obj;
|
|
76
82
|
}
|
|
77
83
|
static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
|
|
@@ -85,6 +91,7 @@ namespace margelo::nitro {
|
|
|
85
91
|
if (!JSIConverter<std::optional<std::vector<double>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "playbackRates")))) return false;
|
|
86
92
|
if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "carPlayUpNextButton")))) return false;
|
|
87
93
|
if (!JSIConverter<std::optional<std::vector<margelo::nitro::audiobrowser::CarPlayNowPlayingButton>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "carPlayNowPlayingButtons")))) return false;
|
|
94
|
+
if (!JSIConverter<std::optional<margelo::nitro::audiobrowser::CarPlayPlayingIndicatorLocation>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "carPlayPlayingIndicatorLocation")))) return false;
|
|
88
95
|
return true;
|
|
89
96
|
}
|
|
90
97
|
};
|
|
@@ -28,12 +28,9 @@
|
|
|
28
28
|
#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
|
|
29
29
|
#endif
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
namespace margelo::nitro::audiobrowser { struct FavoriteConfig; }
|
|
31
|
+
|
|
33
32
|
|
|
34
33
|
#include <optional>
|
|
35
|
-
#include "FavoriteConfig.hpp"
|
|
36
|
-
#include <variant>
|
|
37
34
|
|
|
38
35
|
namespace margelo::nitro::audiobrowser {
|
|
39
36
|
|
|
@@ -50,14 +47,14 @@ namespace margelo::nitro::audiobrowser {
|
|
|
50
47
|
std::optional<bool> skipToPrevious SWIFT_PRIVATE;
|
|
51
48
|
std::optional<bool> jumpForward SWIFT_PRIVATE;
|
|
52
49
|
std::optional<bool> jumpBackward SWIFT_PRIVATE;
|
|
53
|
-
std::optional<
|
|
50
|
+
std::optional<bool> favorite SWIFT_PRIVATE;
|
|
54
51
|
std::optional<bool> shuffleMode SWIFT_PRIVATE;
|
|
55
52
|
std::optional<bool> repeatMode SWIFT_PRIVATE;
|
|
56
53
|
std::optional<bool> playbackRate SWIFT_PRIVATE;
|
|
57
54
|
|
|
58
55
|
public:
|
|
59
56
|
PlayerCapabilities() = default;
|
|
60
|
-
explicit PlayerCapabilities(std::optional<bool> play, std::optional<bool> pause, std::optional<bool> stop, std::optional<bool> seekTo, std::optional<bool> skipToNext, std::optional<bool> skipToPrevious, std::optional<bool> jumpForward, std::optional<bool> jumpBackward, std::optional<
|
|
57
|
+
explicit PlayerCapabilities(std::optional<bool> play, std::optional<bool> pause, std::optional<bool> stop, std::optional<bool> seekTo, std::optional<bool> skipToNext, std::optional<bool> skipToPrevious, std::optional<bool> jumpForward, std::optional<bool> jumpBackward, std::optional<bool> favorite, std::optional<bool> shuffleMode, std::optional<bool> repeatMode, std::optional<bool> playbackRate): play(play), pause(pause), stop(stop), seekTo(seekTo), skipToNext(skipToNext), skipToPrevious(skipToPrevious), jumpForward(jumpForward), jumpBackward(jumpBackward), favorite(favorite), shuffleMode(shuffleMode), repeatMode(repeatMode), playbackRate(playbackRate) {}
|
|
61
58
|
|
|
62
59
|
public:
|
|
63
60
|
friend bool operator==(const PlayerCapabilities& lhs, const PlayerCapabilities& rhs) = default;
|
|
@@ -81,7 +78,7 @@ namespace margelo::nitro {
|
|
|
81
78
|
JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "skipToPrevious"))),
|
|
82
79
|
JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "jumpForward"))),
|
|
83
80
|
JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "jumpBackward"))),
|
|
84
|
-
JSIConverter<std::optional<
|
|
81
|
+
JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "favorite"))),
|
|
85
82
|
JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "shuffleMode"))),
|
|
86
83
|
JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "repeatMode"))),
|
|
87
84
|
JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "playbackRate")))
|
|
@@ -97,7 +94,7 @@ namespace margelo::nitro {
|
|
|
97
94
|
obj.setProperty(runtime, PropNameIDCache::get(runtime, "skipToPrevious"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.skipToPrevious));
|
|
98
95
|
obj.setProperty(runtime, PropNameIDCache::get(runtime, "jumpForward"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.jumpForward));
|
|
99
96
|
obj.setProperty(runtime, PropNameIDCache::get(runtime, "jumpBackward"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.jumpBackward));
|
|
100
|
-
obj.setProperty(runtime, PropNameIDCache::get(runtime, "favorite"), JSIConverter<std::optional<
|
|
97
|
+
obj.setProperty(runtime, PropNameIDCache::get(runtime, "favorite"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.favorite));
|
|
101
98
|
obj.setProperty(runtime, PropNameIDCache::get(runtime, "shuffleMode"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.shuffleMode));
|
|
102
99
|
obj.setProperty(runtime, PropNameIDCache::get(runtime, "repeatMode"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.repeatMode));
|
|
103
100
|
obj.setProperty(runtime, PropNameIDCache::get(runtime, "playbackRate"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.playbackRate));
|
|
@@ -119,7 +116,7 @@ namespace margelo::nitro {
|
|
|
119
116
|
if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "skipToPrevious")))) return false;
|
|
120
117
|
if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "jumpForward")))) return false;
|
|
121
118
|
if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "jumpBackward")))) return false;
|
|
122
|
-
if (!JSIConverter<std::optional<
|
|
119
|
+
if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "favorite")))) return false;
|
|
123
120
|
if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "shuffleMode")))) return false;
|
|
124
121
|
if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "repeatMode")))) return false;
|
|
125
122
|
if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "playbackRate")))) return false;
|