react-native-audio-browser 0.2.0-next.24 → 0.2.0-next.26

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.
Files changed (301) hide show
  1. package/android/src/main/java/com/audiobrowser/AudioBrowser.kt +149 -119
  2. package/lib/typescript/src/utils/resolveAssetSource.d.ts +1 -2
  3. package/lib/typescript/src/utils/resolveAssetSource.d.ts.map +1 -1
  4. package/nitrogen/generated/android/AudioBrowserOnLoad.cpp +2 -2
  5. package/nitrogen/generated/android/c++/JAndroidAudioContentType.hpp +2 -2
  6. package/nitrogen/generated/android/c++/JAndroidAudioOffloadSettings.hpp +2 -2
  7. package/nitrogen/generated/android/c++/JAndroidOptions.hpp +2 -2
  8. package/nitrogen/generated/android/c++/JAndroidPlayerWakeMode.hpp +2 -2
  9. package/nitrogen/generated/android/c++/JAppKilledPlaybackBehavior.hpp +2 -2
  10. package/nitrogen/generated/android/c++/JArtworkRendering.hpp +2 -2
  11. package/nitrogen/generated/android/c++/JArtworkRequestConfig.hpp +2 -2
  12. package/nitrogen/generated/android/c++/JArtworkVariants.hpp +2 -2
  13. package/nitrogen/generated/android/c++/JBatteryOptimizationStatus.hpp +2 -2
  14. package/nitrogen/generated/android/c++/JBatteryOptimizationStatusChangedEvent.hpp +2 -2
  15. package/nitrogen/generated/android/c++/JBatteryWarningPendingChangedEvent.hpp +2 -2
  16. package/nitrogen/generated/android/c++/JBrowseError.hpp +2 -2
  17. package/nitrogen/generated/android/c++/JBrowseResult.hpp +3 -3
  18. package/nitrogen/generated/android/c++/JBrowserSourceCallbackParam.hpp +2 -2
  19. package/nitrogen/generated/android/c++/JCarPlayNowPlayingButton.hpp +2 -2
  20. package/nitrogen/generated/android/c++/JCarPlayPlayingIndicatorLocation.hpp +2 -2
  21. package/nitrogen/generated/android/c++/JCarPlaySiriListButtonPosition.hpp +2 -2
  22. package/nitrogen/generated/android/c++/JCardImage.hpp +2 -2
  23. package/nitrogen/generated/android/c++/JChapterMetadata.hpp +2 -2
  24. package/nitrogen/generated/android/c++/JEqualizerSettings.hpp +10 -10
  25. package/nitrogen/generated/android/c++/JFavoriteChangedEvent.hpp +2 -2
  26. package/nitrogen/generated/android/c++/JFormatNavigationErrorParams.hpp +2 -2
  27. package/nitrogen/generated/android/c++/JFormatNowPlayingParams.hpp +2 -2
  28. package/nitrogen/generated/android/c++/JFormattedNavigationError.hpp +2 -2
  29. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_RequestConfig___MediaTransformParams.hpp +2 -2
  30. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_RequestConfig___RequestConfig_std__optional_std__unordered_map_std__string__std__string__.hpp +9 -9
  31. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_RequestConfig___Track.hpp +2 -2
  32. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_FormattedNavigationError____FormatNavigationErrorParams.hpp +2 -2
  33. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_NowPlayingUpdate____FormatNowPlayingParams.hpp +2 -2
  34. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_std__string____Track.hpp +2 -2
  35. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_GateDecision_____NativeGateRequest.hpp +2 -2
  36. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____MediaTransformParams.hpp +2 -2
  37. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____RequestConfig_std__optional_std__unordered_map_std__string__std__string__.hpp +9 -9
  38. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____Track.hpp +2 -2
  39. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_TransformableRequestConfig____.hpp +2 -2
  40. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_Track______SearchParams.hpp +10 -10
  41. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_void_____TrackLoadEvent.hpp +2 -2
  42. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__string__.hpp +2 -2
  43. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError__std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError_______BrowserSourceCallbackParam.hpp +2 -2
  44. package/nitrogen/generated/android/c++/JFunc_void.hpp +2 -2
  45. package/nitrogen/generated/android/c++/JFunc_void_BatteryOptimizationStatusChangedEvent.hpp +2 -2
  46. package/nitrogen/generated/android/c++/JFunc_void_BatteryWarningPendingChangedEvent.hpp +2 -2
  47. package/nitrogen/generated/android/c++/JFunc_void_EqualizerSettings.hpp +2 -2
  48. package/nitrogen/generated/android/c++/JFunc_void_FavoriteChangedEvent.hpp +2 -2
  49. package/nitrogen/generated/android/c++/JFunc_void_GateEvent.hpp +2 -2
  50. package/nitrogen/generated/android/c++/JFunc_void_NavigationErrorEvent.hpp +2 -2
  51. package/nitrogen/generated/android/c++/JFunc_void_NowPlayingMetadata.hpp +2 -2
  52. package/nitrogen/generated/android/c++/JFunc_void_Options.hpp +2 -2
  53. package/nitrogen/generated/android/c++/JFunc_void_Output.hpp +2 -2
  54. package/nitrogen/generated/android/c++/JFunc_void_Playback.hpp +2 -2
  55. package/nitrogen/generated/android/c++/JFunc_void_PlaybackActiveTrackChangedEvent.hpp +2 -2
  56. package/nitrogen/generated/android/c++/JFunc_void_PlaybackErrorEvent.hpp +2 -2
  57. package/nitrogen/generated/android/c++/JFunc_void_PlaybackPlayWhenReadyChangedEvent.hpp +2 -2
  58. package/nitrogen/generated/android/c++/JFunc_void_PlaybackProgressUpdatedEvent.hpp +2 -2
  59. package/nitrogen/generated/android/c++/JFunc_void_PlaybackQueueEndedEvent.hpp +2 -2
  60. package/nitrogen/generated/android/c++/JFunc_void_PlayingState.hpp +2 -2
  61. package/nitrogen/generated/android/c++/JFunc_void_RemoteJumpBackwardEvent.hpp +2 -2
  62. package/nitrogen/generated/android/c++/JFunc_void_RemoteJumpForwardEvent.hpp +2 -2
  63. package/nitrogen/generated/android/c++/JFunc_void_RemotePlayIdEvent.hpp +2 -2
  64. package/nitrogen/generated/android/c++/JFunc_void_RemotePlaySearchEvent.hpp +2 -2
  65. package/nitrogen/generated/android/c++/JFunc_void_RemoteSeekEvent.hpp +2 -2
  66. package/nitrogen/generated/android/c++/JFunc_void_RemoteSkipEvent.hpp +2 -2
  67. package/nitrogen/generated/android/c++/JFunc_void_RepeatModeChangedEvent.hpp +2 -2
  68. package/nitrogen/generated/android/c++/JFunc_void_TimedMetadata.hpp +2 -2
  69. package/nitrogen/generated/android/c++/JFunc_void_TrackMetadata.hpp +2 -2
  70. package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +2 -2
  71. package/nitrogen/generated/android/c++/JFunc_void_double.hpp +2 -2
  72. package/nitrogen/generated/android/c++/JFunc_void_std__optional_FormattedNavigationError_.hpp +2 -2
  73. package/nitrogen/generated/android/c++/JFunc_void_std__optional_ResolvedTrack_.hpp +2 -2
  74. package/nitrogen/generated/android/c++/JFunc_void_std__optional_std__variant_nitro__NullType__SleepTimerTime__SleepTimerEndOfTrack__.hpp +2 -2
  75. package/nitrogen/generated/android/c++/JFunc_void_std__string.hpp +2 -2
  76. package/nitrogen/generated/android/c++/JFunc_void_std__vector_ChapterMetadata_.hpp +16 -16
  77. package/nitrogen/generated/android/c++/JFunc_void_std__vector_Track_.hpp +16 -16
  78. package/nitrogen/generated/android/c++/JGate.hpp +2 -2
  79. package/nitrogen/generated/android/c++/JGateDecision.hpp +2 -2
  80. package/nitrogen/generated/android/c++/JGateEvent.hpp +2 -2
  81. package/nitrogen/generated/android/c++/JGateReason.hpp +2 -2
  82. package/nitrogen/generated/android/c++/JGridTile.hpp +2 -2
  83. package/nitrogen/generated/android/c++/JHttpMethod.hpp +2 -2
  84. package/nitrogen/generated/android/c++/JHybridAudioBrowserSpec.cpp +28 -28
  85. package/nitrogen/generated/android/c++/JHybridAudioBrowserSpec.hpp +2 -2
  86. package/nitrogen/generated/android/c++/JIOSCategory.hpp +2 -2
  87. package/nitrogen/generated/android/c++/JIOSCategoryMode.hpp +2 -2
  88. package/nitrogen/generated/android/c++/JIOSCategoryOptions.hpp +2 -2
  89. package/nitrogen/generated/android/c++/JIOSCategoryPolicy.hpp +2 -2
  90. package/nitrogen/generated/android/c++/JIOSOptions.hpp +10 -10
  91. package/nitrogen/generated/android/c++/JImageContext.hpp +2 -2
  92. package/nitrogen/generated/android/c++/JImageQueryParams.hpp +2 -2
  93. package/nitrogen/generated/android/c++/JImageShape.hpp +2 -2
  94. package/nitrogen/generated/android/c++/JImageSource.hpp +2 -2
  95. package/nitrogen/generated/android/c++/JMediaReference.hpp +2 -2
  96. package/nitrogen/generated/android/c++/JMediaRequestConfig.hpp +2 -2
  97. package/nitrogen/generated/android/c++/JMediaTransformParams.hpp +2 -2
  98. package/nitrogen/generated/android/c++/JNativeAndroidSetupOptions.hpp +2 -2
  99. package/nitrogen/generated/android/c++/JNativeBrowserConfiguration.hpp +10 -10
  100. package/nitrogen/generated/android/c++/JNativeGateRequest.hpp +2 -2
  101. package/nitrogen/generated/android/c++/JNativeIOSSetupOptions.hpp +10 -10
  102. package/nitrogen/generated/android/c++/JNativeRouteEntry.hpp +2 -2
  103. package/nitrogen/generated/android/c++/JNativeSetupPlayerOptions.hpp +2 -2
  104. package/nitrogen/generated/android/c++/JNativeUpdateOptions.hpp +2 -2
  105. package/nitrogen/generated/android/c++/JNavigationError.hpp +2 -2
  106. package/nitrogen/generated/android/c++/JNavigationErrorEvent.hpp +2 -2
  107. package/nitrogen/generated/android/c++/JNavigationErrorKind.hpp +2 -2
  108. package/nitrogen/generated/android/c++/JNavigationErrorType.hpp +2 -2
  109. package/nitrogen/generated/android/c++/JNitroAndroidUpdateOptions.hpp +2 -2
  110. package/nitrogen/generated/android/c++/JNitroIOSUpdateOptions.hpp +10 -10
  111. package/nitrogen/generated/android/c++/JNowPlayingMetadata.hpp +2 -2
  112. package/nitrogen/generated/android/c++/JNowPlayingUpdate.hpp +2 -2
  113. package/nitrogen/generated/android/c++/JOptions.hpp +2 -2
  114. package/nitrogen/generated/android/c++/JOutput.hpp +2 -2
  115. package/nitrogen/generated/android/c++/JOutputType.hpp +2 -2
  116. package/nitrogen/generated/android/c++/JPlayback.hpp +2 -2
  117. package/nitrogen/generated/android/c++/JPlaybackActiveTrackChangedEvent.hpp +2 -2
  118. package/nitrogen/generated/android/c++/JPlaybackError.hpp +2 -2
  119. package/nitrogen/generated/android/c++/JPlaybackErrorEvent.hpp +2 -2
  120. package/nitrogen/generated/android/c++/JPlaybackErrorKind.hpp +2 -2
  121. package/nitrogen/generated/android/c++/JPlaybackPlayWhenReadyChangedEvent.hpp +2 -2
  122. package/nitrogen/generated/android/c++/JPlaybackProgressUpdatedEvent.hpp +2 -2
  123. package/nitrogen/generated/android/c++/JPlaybackQueueEndedEvent.hpp +2 -2
  124. package/nitrogen/generated/android/c++/JPlaybackState.hpp +2 -2
  125. package/nitrogen/generated/android/c++/JPlayerCapabilities.hpp +2 -2
  126. package/nitrogen/generated/android/c++/JPlayingState.hpp +2 -2
  127. package/nitrogen/generated/android/c++/JProgress.hpp +2 -2
  128. package/nitrogen/generated/android/c++/JRemoteButton.hpp +2 -2
  129. package/nitrogen/generated/android/c++/JRemoteButtonLayout.hpp +10 -10
  130. package/nitrogen/generated/android/c++/JRemoteJumpBackwardEvent.hpp +2 -2
  131. package/nitrogen/generated/android/c++/JRemoteJumpForwardEvent.hpp +2 -2
  132. package/nitrogen/generated/android/c++/JRemotePlayIdEvent.hpp +2 -2
  133. package/nitrogen/generated/android/c++/JRemotePlaySearchEvent.hpp +2 -2
  134. package/nitrogen/generated/android/c++/JRemoteSeekEvent.hpp +2 -2
  135. package/nitrogen/generated/android/c++/JRemoteSkipEvent.hpp +2 -2
  136. package/nitrogen/generated/android/c++/JRepeatMode.hpp +2 -2
  137. package/nitrogen/generated/android/c++/JRepeatModeChangedEvent.hpp +2 -2
  138. package/nitrogen/generated/android/c++/JRequestConfig.hpp +2 -2
  139. package/nitrogen/generated/android/c++/JResolvedTrack.hpp +18 -18
  140. package/nitrogen/generated/android/c++/JRetryConfig.hpp +2 -2
  141. package/nitrogen/generated/android/c++/JSearchMode.hpp +2 -2
  142. package/nitrogen/generated/android/c++/JSearchParams.hpp +2 -2
  143. package/nitrogen/generated/android/c++/JSection.hpp +10 -10
  144. package/nitrogen/generated/android/c++/JSectionStyle.hpp +2 -2
  145. package/nitrogen/generated/android/c++/JSleepTimer.hpp +4 -4
  146. package/nitrogen/generated/android/c++/JSleepTimerEndOfTrack.hpp +2 -2
  147. package/nitrogen/generated/android/c++/JSleepTimerTime.hpp +2 -2
  148. package/nitrogen/generated/android/c++/JStallReason.hpp +2 -2
  149. package/nitrogen/generated/android/c++/JStyleDisplay.hpp +2 -2
  150. package/nitrogen/generated/android/c++/JTimedMetadata.hpp +2 -2
  151. package/nitrogen/generated/android/c++/JTrack.hpp +2 -2
  152. package/nitrogen/generated/android/c++/JTrackLoadEvent.hpp +10 -10
  153. package/nitrogen/generated/android/c++/JTrackMetadata.hpp +2 -2
  154. package/nitrogen/generated/android/c++/JTrackRequest.hpp +2 -2
  155. package/nitrogen/generated/android/c++/JTrackStyle.hpp +2 -2
  156. package/nitrogen/generated/android/c++/JTransformableRequestConfig.hpp +2 -2
  157. package/nitrogen/generated/android/c++/JVariant_Boolean_AndroidAudioOffloadSettings.hpp +3 -3
  158. package/nitrogen/generated/android/c++/JVariant_Boolean_RetryConfig.hpp +3 -3
  159. package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +3 -3
  160. package/nitrogen/generated/android/c++/JVariant_NullType_RemoteButtonLayout.hpp +3 -3
  161. package/nitrogen/generated/android/c++/JVariant_ResolvedTrack_BrowseError_Promise_BrowseResult_.hpp +4 -4
  162. package/nitrogen/generated/android/c++/JVariant_String_ArtworkVariants.hpp +3 -3
  163. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/AndroidAudioOffloadSettings.kt +15 -0
  164. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/AndroidOptions.kt +17 -0
  165. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ArtworkRequestConfig.kt +37 -0
  166. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ArtworkVariants.kt +15 -0
  167. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/BatteryOptimizationStatusChangedEvent.kt +13 -0
  168. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/BatteryWarningPendingChangedEvent.kt +13 -0
  169. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/BrowseError.kt +13 -0
  170. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/BrowseResult.kt +16 -7
  171. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/BrowserSourceCallbackParam.kt +15 -0
  172. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ChapterMetadata.kt +19 -0
  173. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/EqualizerSettings.kt +27 -0
  174. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/FavoriteChangedEvent.kt +15 -0
  175. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/FormatNavigationErrorParams.kt +19 -0
  176. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/FormatNowPlayingParams.kt +21 -0
  177. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/FormattedNavigationError.kt +15 -0
  178. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_RequestConfig___MediaTransformParams.kt +0 -2
  179. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_RequestConfig___RequestConfig_std__optional_std__unordered_map_std__string__std__string__.kt +0 -2
  180. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_RequestConfig___Track.kt +0 -2
  181. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__optional_FormattedNavigationError____FormatNavigationErrorParams.kt +0 -2
  182. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__optional_NowPlayingUpdate____FormatNowPlayingParams.kt +0 -2
  183. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__optional_std__string____Track.kt +0 -2
  184. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_GateDecision_____NativeGateRequest.kt +0 -2
  185. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____MediaTransformParams.kt +0 -2
  186. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____RequestConfig_std__optional_std__unordered_map_std__string__std__string__.kt +0 -2
  187. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____Track.kt +0 -2
  188. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_TransformableRequestConfig____.kt +0 -2
  189. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_Track______SearchParams.kt +0 -2
  190. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_void_____TrackLoadEvent.kt +0 -2
  191. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__string__.kt +0 -2
  192. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError__std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError_______BrowserSourceCallbackParam.kt +0 -2
  193. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void.kt +0 -2
  194. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_BatteryOptimizationStatusChangedEvent.kt +0 -2
  195. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_BatteryWarningPendingChangedEvent.kt +0 -2
  196. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_EqualizerSettings.kt +0 -2
  197. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_FavoriteChangedEvent.kt +0 -2
  198. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_GateEvent.kt +0 -2
  199. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_NavigationErrorEvent.kt +0 -2
  200. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_NowPlayingMetadata.kt +0 -2
  201. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_Options.kt +0 -2
  202. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_Output.kt +0 -2
  203. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_Playback.kt +0 -2
  204. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_PlaybackActiveTrackChangedEvent.kt +0 -2
  205. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_PlaybackErrorEvent.kt +0 -2
  206. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_PlaybackPlayWhenReadyChangedEvent.kt +0 -2
  207. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_PlaybackProgressUpdatedEvent.kt +0 -2
  208. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_PlaybackQueueEndedEvent.kt +0 -2
  209. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_PlayingState.kt +0 -2
  210. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RemoteJumpBackwardEvent.kt +0 -2
  211. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RemoteJumpForwardEvent.kt +0 -2
  212. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RemotePlayIdEvent.kt +0 -2
  213. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RemotePlaySearchEvent.kt +0 -2
  214. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RemoteSeekEvent.kt +0 -2
  215. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RemoteSkipEvent.kt +0 -2
  216. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RepeatModeChangedEvent.kt +0 -2
  217. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_TimedMetadata.kt +0 -2
  218. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_TrackMetadata.kt +0 -2
  219. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_bool.kt +0 -2
  220. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_double.kt +0 -2
  221. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_std__optional_FormattedNavigationError_.kt +0 -2
  222. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_std__optional_ResolvedTrack_.kt +0 -2
  223. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_std__optional_std__variant_nitro__NullType__SleepTimerTime__SleepTimerEndOfTrack__.kt +0 -2
  224. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_std__string.kt +0 -2
  225. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_std__vector_ChapterMetadata_.kt +0 -2
  226. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_std__vector_Track_.kt +0 -2
  227. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Gate.kt +15 -0
  228. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/GateDecision.kt +15 -0
  229. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/GateEvent.kt +13 -0
  230. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/HybridAudioBrowserSpec.kt +2 -0
  231. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IOSOptions.kt +19 -0
  232. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ImageContext.kt +15 -0
  233. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ImageQueryParams.kt +15 -0
  234. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ImageSource.kt +19 -0
  235. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/MediaRequestConfig.kt +35 -0
  236. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/MediaTransformParams.kt +15 -0
  237. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeAndroidSetupOptions.kt +31 -0
  238. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeBrowserConfiguration.kt +43 -0
  239. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeGateRequest.kt +17 -0
  240. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeIOSSetupOptions.kt +21 -0
  241. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeRouteEntry.kt +27 -0
  242. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeSetupPlayerOptions.kt +29 -0
  243. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeUpdateOptions.kt +23 -0
  244. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NavigationError.kt +19 -0
  245. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NavigationErrorEvent.kt +13 -0
  246. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NitroAndroidUpdateOptions.kt +17 -0
  247. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NitroIOSUpdateOptions.kt +19 -0
  248. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NowPlayingMetadata.kt +29 -0
  249. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NowPlayingUpdate.kt +17 -0
  250. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Options.kt +23 -0
  251. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Output.kt +17 -0
  252. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Playback.kt +15 -0
  253. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackActiveTrackChangedEvent.kt +21 -0
  254. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackError.kt +21 -0
  255. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackErrorEvent.kt +13 -0
  256. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackPlayWhenReadyChangedEvent.kt +13 -0
  257. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackProgressUpdatedEvent.kt +19 -0
  258. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackQueueEndedEvent.kt +15 -0
  259. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlayerCapabilities.kt +35 -0
  260. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlayingState.kt +15 -0
  261. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Progress.kt +17 -0
  262. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemoteButtonLayout.kt +17 -0
  263. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemoteJumpBackwardEvent.kt +13 -0
  264. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemoteJumpForwardEvent.kt +13 -0
  265. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemotePlayIdEvent.kt +15 -0
  266. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemotePlaySearchEvent.kt +13 -0
  267. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemoteSeekEvent.kt +13 -0
  268. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemoteSkipEvent.kt +13 -0
  269. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RepeatModeChangedEvent.kt +13 -0
  270. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RequestConfig.kt +27 -0
  271. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ResolvedTrack.kt +55 -0
  272. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RetryConfig.kt +17 -0
  273. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/SearchParams.kt +27 -0
  274. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Section.kt +19 -0
  275. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/SectionStyle.kt +27 -0
  276. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/SleepTimer.kt +18 -8
  277. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/SleepTimerEndOfTrack.kt +13 -0
  278. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/SleepTimerTime.kt +13 -0
  279. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TimedMetadata.kt +21 -0
  280. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Track.kt +49 -0
  281. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TrackLoadEvent.kt +17 -0
  282. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TrackMetadata.kt +43 -0
  283. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TrackRequest.kt +17 -0
  284. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TrackStyle.kt +23 -0
  285. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TransformableRequestConfig.kt +31 -0
  286. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_Boolean_AndroidAudioOffloadSettings.kt +16 -7
  287. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_Boolean_RetryConfig.kt +16 -7
  288. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_NullType_Double.kt +16 -7
  289. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_NullType_RemoteButtonLayout.kt +16 -7
  290. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_ResolvedTrack_BrowseError_Promise_BrowseResult_.kt +18 -8
  291. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_String_ArtworkVariants.kt +16 -7
  292. package/nitrogen/generated/ios/AudioBrowser+autolinking.rb +2 -0
  293. package/nitrogen/generated/ios/swift/BrowseResult.swift +12 -0
  294. package/nitrogen/generated/ios/swift/SleepTimer.swift +13 -0
  295. package/nitrogen/generated/ios/swift/Variant_Bool_AndroidAudioOffloadSettings.swift +12 -0
  296. package/nitrogen/generated/ios/swift/Variant_Bool_RetryConfig.swift +12 -0
  297. package/nitrogen/generated/ios/swift/Variant_NullType_Double.swift +12 -0
  298. package/nitrogen/generated/ios/swift/Variant_NullType_RemoteButtonLayout.swift +12 -0
  299. package/nitrogen/generated/ios/swift/Variant_ResolvedTrack_BrowseError_Promise_BrowseResult_.swift +13 -0
  300. package/nitrogen/generated/ios/swift/Variant_String_ArtworkVariants.swift +12 -0
  301. package/package.json +6 -6
@@ -87,6 +87,7 @@ import com.margelo.nitro.audiobrowser.TimedMetadata
87
87
  import com.margelo.nitro.audiobrowser.Track
88
88
  import com.margelo.nitro.audiobrowser.TrackMetadata
89
89
  import com.margelo.nitro.audiobrowser.TransformableRequestConfig
90
+ import com.margelo.nitro.core.NullType
90
91
  import com.margelo.nitro.core.Promise
91
92
  import java.util.concurrent.TimeUnit
92
93
  import java.util.concurrent.atomic.AtomicReference
@@ -916,24 +917,27 @@ class AudioBrowser : HybridAudioBrowserSpec(), ServiceConnection {
916
917
  // ============================================================================
917
918
 
918
919
  override fun load(track: Track) {
920
+ // Throws without a player, as on iOS: a track asked for and silently dropped hides a mistake.
921
+ val player = player
919
922
  launchInScope { player.load(track) }
920
923
  }
921
924
 
922
- override fun reset() = runBlockingOnMain {
923
- player.stop()
924
- player.clear()
925
- // clear() while IDLE emits no engine event, so the state machine never
926
- // leaves STOPPED — a reset queue is "nothing loaded".
927
- player.setPlaybackState(PlaybackState.NONE)
928
- }
925
+ override fun reset() =
926
+ commandPlayer("reset") { player ->
927
+ player.stop()
928
+ player.clear()
929
+ // clear() while IDLE emits no engine event, so the state machine never
930
+ // leaves STOPPED — a reset queue is "nothing loaded".
931
+ player.setPlaybackState(PlaybackState.NONE)
932
+ }
929
933
 
930
- override fun play() = runBlockingOnMain { player.play() }
934
+ override fun play() = commandPlayer("play") { it.play() }
931
935
 
932
- override fun pause() = runBlockingOnMain { player.pause() }
936
+ override fun pause() = commandPlayer("pause") { it.pause() }
933
937
 
934
- override fun togglePlayback() = runBlockingOnMain { player.togglePlayback() }
938
+ override fun togglePlayback() = commandPlayer("togglePlayback") { it.togglePlayback() }
935
939
 
936
- override fun stop() = runBlockingOnMain { player.stop() }
940
+ override fun stop() = commandPlayer("stop") { it.stop() }
937
941
 
938
942
  override fun setPlayWhenReady(playWhenReady: Boolean) = runBlockingOnMain {
939
943
  // Pre-setup this stages the intent for the player to come up with — never throws.
@@ -945,35 +949,41 @@ class AudioBrowser : HybridAudioBrowserSpec(), ServiceConnection {
945
949
  connectedService?.player?.playWhenReady ?: pendingPlayWhenReady ?: false
946
950
  }
947
951
 
948
- override fun seekTo(position: Double) = runBlockingOnMain {
949
- player.seekTo((position * 1000).toLong(), TimeUnit.MILLISECONDS)
950
- }
952
+ override fun seekTo(position: Double) =
953
+ commandPlayer("seekTo") { player ->
954
+ player.seekTo((position * 1000).toLong(), TimeUnit.MILLISECONDS)
955
+ }
951
956
 
952
- override fun seekBy(offset: Double) = runBlockingOnMain {
953
- player.seekBy((offset * 1000).toLong(), TimeUnit.MILLISECONDS)
954
- }
957
+ override fun seekBy(offset: Double) =
958
+ commandPlayer("seekBy") { player ->
959
+ player.seekBy((offset * 1000).toLong(), TimeUnit.MILLISECONDS)
960
+ }
955
961
 
956
- override fun seekToLiveEdge() = runBlockingOnMain { player.seekToLiveEdge() }
962
+ override fun seekToLiveEdge() = commandPlayer("seekToLiveEdge") { it.seekToLiveEdge() }
957
963
 
958
- override fun setVolume(level: Double) = runBlockingOnMain { player.volume = level.toFloat() }
964
+ override fun setVolume(level: Double) = commandPlayer("setVolume") { it.volume = level.toFloat() }
959
965
 
960
- override fun getVolume(): Double = runBlockingOnMain { player.volume.toDouble() }
966
+ override fun getVolume(): Double = readPlayer(1.0) { it.volume.toDouble() }
961
967
 
962
- override fun setRate(rate: Double) = runBlockingOnMain { player.playbackSpeed = rate.toFloat() }
968
+ override fun setRate(rate: Double) =
969
+ commandPlayer("setRate") { it.playbackSpeed = rate.toFloat() }
963
970
 
964
- override fun getRate(): Double = runBlockingOnMain { player.playbackSpeed.toDouble() }
971
+ override fun getRate(): Double = readPlayer(1.0) { it.playbackSpeed.toDouble() }
965
972
 
966
- override fun getProgress(): Progress = runBlockingOnMain {
967
- Progress(
968
- duration = player.duration.toSeconds(),
969
- position = player.position.toSeconds(),
970
- buffered = player.bufferedPosition.toSeconds(),
971
- )
972
- }
973
+ override fun getProgress(): Progress =
974
+ readPlayer(Progress(duration = 0.0, position = 0.0, buffered = 0.0)) { player ->
975
+ Progress(
976
+ duration = player.duration.toSeconds(),
977
+ position = player.position.toSeconds(),
978
+ buffered = player.bufferedPosition.toSeconds(),
979
+ )
980
+ }
973
981
 
974
- override fun getPlayback(): Playback = runBlockingOnMain { player.getPlayback() }
982
+ override fun getPlayback(): Playback =
983
+ readPlayer(Playback(PlaybackState.NONE, null)) { it.getPlayback() }
975
984
 
976
- override fun getPlayingState(): PlayingState = runBlockingOnMain { player.getPlayingState() }
985
+ override fun getPlayingState(): PlayingState =
986
+ readPlayer(PlayingState(playing = false, buffering = false)) { it.getPlayingState() }
977
987
 
978
988
  override fun getRepeatMode(): RepeatMode = runBlockingOnMain {
979
989
  connectedService?.player?.repeatMode ?: pendingRepeatMode ?: RepeatMode.OFF
@@ -984,121 +994,121 @@ class AudioBrowser : HybridAudioBrowserSpec(), ServiceConnection {
984
994
  connectedService?.player?.let { it.repeatMode = mode } ?: run { pendingRepeatMode = mode }
985
995
  }
986
996
 
987
- override fun getShuffleEnabled(): Boolean = runBlockingOnMain { player.shuffleMode }
997
+ override fun getShuffleEnabled(): Boolean = readPlayer(false) { it.shuffleMode }
988
998
 
989
- override fun setShuffleEnabled(enabled: Boolean) = runBlockingOnMain {
990
- player.shuffleMode = enabled
991
- }
999
+ override fun setShuffleEnabled(enabled: Boolean) =
1000
+ commandPlayer("setShuffleEnabled") { player -> player.shuffleMode = enabled }
992
1001
 
993
- override fun setPlaybackIntervalEnabled(enabled: Boolean) = runBlockingOnMain {
994
- player.setPlaybackIntervalEnabled(enabled)
995
- }
1002
+ override fun setPlaybackIntervalEnabled(enabled: Boolean) =
1003
+ commandPlayer("setPlaybackIntervalEnabled") { player ->
1004
+ player.setPlaybackIntervalEnabled(enabled)
1005
+ }
996
1006
 
997
- override fun getPlaybackError(): PlaybackError? = runBlockingOnMain { player.playbackError }
1007
+ override fun getPlaybackError(): PlaybackError? = readPlayer(null) { it.playbackError }
998
1008
 
999
- override fun retry() = runBlockingOnMain { player.prepare() }
1009
+ override fun retry() = commandPlayer("retry") { it.prepare() }
1000
1010
 
1001
1011
  // ============================================================================
1002
1012
  // MARK: Queue Management
1003
1013
  // ============================================================================
1004
1014
 
1005
- override fun add(tracks: Array<Track>, insertBeforeIndex: Double?) = runBlockingOnMain {
1006
- val inputIndex = insertBeforeIndex?.toInt() ?: -1
1007
- player.add(tracks, inputIndex)
1008
- }
1015
+ override fun add(tracks: Array<Track>, insertBeforeIndex: Double?) =
1016
+ commandPlayer("add") { player ->
1017
+ val inputIndex = insertBeforeIndex?.toInt() ?: -1
1018
+ player.add(tracks, inputIndex)
1019
+ }
1009
1020
 
1010
- override fun move(fromIndex: Double, toIndex: Double) = runBlockingOnMain {
1011
- player.move(fromIndex.toInt(), toIndex.toInt())
1012
- }
1021
+ override fun move(fromIndex: Double, toIndex: Double) =
1022
+ commandPlayer("move") { player -> player.move(fromIndex.toInt(), toIndex.toInt()) }
1013
1023
 
1014
- override fun remove(indexes: DoubleArray) = runBlockingOnMain {
1015
- val indexList = indexes.map { it.toInt() }
1016
- player.remove(indexList)
1017
- }
1024
+ override fun remove(indexes: DoubleArray) =
1025
+ commandPlayer("remove") { player ->
1026
+ val indexList = indexes.map { it.toInt() }
1027
+ player.remove(indexList)
1028
+ }
1018
1029
 
1019
- override fun removeUpcomingTracks() = runBlockingOnMain { player.removeUpcomingTracks() }
1030
+ override fun removeUpcomingTracks() =
1031
+ commandPlayer("removeUpcomingTracks") { it.removeUpcomingTracks() }
1020
1032
 
1021
- override fun skip(index: Double, initialPosition: Double?) = runBlockingOnMain {
1022
- player.skipTo(index.toInt())
1033
+ override fun skip(index: Double, initialPosition: Double?) =
1034
+ commandPlayer("skip") { player ->
1035
+ player.skipTo(index.toInt())
1023
1036
 
1024
- if (initialPosition != null && initialPosition >= 0) {
1025
- player.seekTo((initialPosition * 1000).toLong(), TimeUnit.MILLISECONDS)
1037
+ if (initialPosition != null && initialPosition >= 0) {
1038
+ player.seekTo((initialPosition * 1000).toLong(), TimeUnit.MILLISECONDS)
1039
+ }
1026
1040
  }
1027
- }
1028
1041
 
1029
- override fun skipToNext(initialPosition: Double?) = runBlockingOnMain {
1030
- player.next()
1042
+ override fun skipToNext(initialPosition: Double?) =
1043
+ commandPlayer("skipToNext") { player ->
1044
+ player.next()
1031
1045
 
1032
- if (initialPosition != null && initialPosition >= 0) {
1033
- player.seekTo((initialPosition * 1000).toLong(), TimeUnit.MILLISECONDS)
1046
+ if (initialPosition != null && initialPosition >= 0) {
1047
+ player.seekTo((initialPosition * 1000).toLong(), TimeUnit.MILLISECONDS)
1048
+ }
1034
1049
  }
1035
- }
1036
1050
 
1037
- override fun skipToPrevious(initialPosition: Double?) = runBlockingOnMain {
1038
- player.previous()
1051
+ override fun skipToPrevious(initialPosition: Double?) =
1052
+ commandPlayer("skipToPrevious") { player ->
1053
+ player.previous()
1039
1054
 
1040
- if (initialPosition != null && initialPosition >= 0) {
1041
- player.seekTo((initialPosition * 1000).toLong(), TimeUnit.MILLISECONDS)
1055
+ if (initialPosition != null && initialPosition >= 0) {
1056
+ player.seekTo((initialPosition * 1000).toLong(), TimeUnit.MILLISECONDS)
1057
+ }
1042
1058
  }
1043
- }
1044
1059
 
1045
1060
  override fun setQueue(tracks: Array<Track>, startIndex: Double?, startPosition: Double?) =
1046
- runBlockingOnMain {
1061
+ commandPlayer("setQueue") { player ->
1047
1062
  player.setQueue(tracks, startIndex?.toInt() ?: 0, ((startPosition ?: 0.0) * 1000).toLong())
1048
1063
  }
1049
1064
 
1050
- override fun setActiveTrackFavorited(favorited: Boolean): Unit = runBlockingOnMain {
1051
- // Applied-result is for MediaSession honesty; the JS API stays fire-and-forget.
1052
- player.setActiveTrackFavorited(favorited)
1053
- Unit
1054
- }
1065
+ override fun setActiveTrackFavorited(favorited: Boolean): Unit =
1066
+ commandPlayer("setActiveTrackFavorited") { player ->
1067
+ // Applied-result is for MediaSession honesty; the JS API stays fire-and-forget.
1068
+ player.setActiveTrackFavorited(favorited)
1069
+ }
1055
1070
 
1056
- override fun toggleActiveTrackFavorited(): Unit = runBlockingOnMain {
1057
- player.toggleActiveTrackFavorited()
1058
- Unit
1059
- }
1071
+ override fun toggleActiveTrackFavorited(): Unit =
1072
+ commandPlayer("toggleActiveTrackFavorited") { it.toggleActiveTrackFavorited() }
1060
1073
 
1061
- override fun getQueue(): Array<Track> = runBlockingOnMain { player.tracks }
1074
+ override fun getQueue(): Array<Track> = readPlayer(emptyArray()) { it.tracks }
1062
1075
 
1063
- override fun getTrack(index: Double): Track? = runBlockingOnMain {
1064
- try {
1065
- player.getTrack(index.toInt())
1066
- } catch (e: IllegalArgumentException) {
1067
- null
1076
+ override fun getTrack(index: Double): Track? =
1077
+ readPlayer(null) { player ->
1078
+ try {
1079
+ player.getTrack(index.toInt())
1080
+ } catch (e: IllegalArgumentException) {
1081
+ null
1082
+ }
1068
1083
  }
1069
- }
1070
1084
 
1071
- override fun getActiveTrackIndex(): Double? = runBlockingOnMain {
1072
- player.currentIndex?.toDouble()
1073
- }
1085
+ override fun getActiveTrackIndex(): Double? = readPlayer(null) { it.currentIndex?.toDouble() }
1074
1086
 
1075
- override fun getActiveTrack(): Track? = runBlockingOnMain { player.currentTrack }
1087
+ override fun getActiveTrack(): Track? = readPlayer(null) { it.currentTrack }
1076
1088
 
1077
1089
  // ============================================================================
1078
1090
  // MARK: Now Playing Metadata
1079
1091
  // ============================================================================
1080
1092
 
1081
- override fun updateNowPlaying(update: NowPlayingUpdate?) = runBlockingOnMain {
1082
- player.nowPlaying.updateNowPlaying(update)
1083
- }
1093
+ override fun updateNowPlaying(update: NowPlayingUpdate?) =
1094
+ commandPlayer("updateNowPlaying") { player -> player.nowPlaying.updateNowPlaying(update) }
1084
1095
 
1085
- override fun flashNowPlaying(update: NowPlayingUpdate, durationMs: Double) = runBlockingOnMain {
1086
- player.nowPlaying.flashNowPlaying(update, durationMs)
1087
- }
1096
+ override fun flashNowPlaying(update: NowPlayingUpdate, durationMs: Double) =
1097
+ commandPlayer("flashNowPlaying") { player ->
1098
+ player.nowPlaying.flashNowPlaying(update, durationMs)
1099
+ }
1088
1100
 
1089
- override fun clearNowPlayingFlash() = runBlockingOnMain {
1090
- player.nowPlaying.clearNowPlayingFlash()
1091
- }
1101
+ override fun clearNowPlayingFlash() =
1102
+ commandPlayer("clearNowPlayingFlash") { player -> player.nowPlaying.clearNowPlayingFlash() }
1092
1103
 
1093
- override fun getNowPlaying(): NowPlayingMetadata? = runBlockingOnMain {
1094
- player.nowPlaying.getNowPlaying()
1095
- }
1104
+ override fun getNowPlaying(): NowPlayingMetadata? =
1105
+ readPlayer(null) { player -> player.nowPlaying.getNowPlaying() }
1096
1106
 
1097
1107
  // ============================================================================
1098
1108
  // MARK: Network Connectivity
1099
1109
  // ============================================================================
1100
1110
 
1101
- override fun getOnline(): Boolean = runBlockingOnMain { player.getOnline() }
1111
+ override fun getOnline(): Boolean = readPlayer(true) { it.getOnline() }
1102
1112
 
1103
1113
  // ============================================================================
1104
1114
  // MARK: System Volume
@@ -1124,35 +1134,32 @@ class AudioBrowser : HybridAudioBrowserSpec(), ServiceConnection {
1124
1134
  // MARK: Equalizer (Android only)
1125
1135
  // ============================================================================
1126
1136
 
1127
- override fun getEqualizerSettings(): EqualizerSettings? = runBlockingOnMain {
1128
- player.equalizer.getSettings()
1129
- }
1137
+ override fun getEqualizerSettings(): EqualizerSettings? =
1138
+ readPlayer(null) { player -> player.equalizer.getSettings() }
1130
1139
 
1131
- override fun setEqualizerEnabled(enabled: Boolean) = runBlockingOnMain {
1132
- player.equalizer.setEnabled(enabled)
1133
- }
1140
+ override fun setEqualizerEnabled(enabled: Boolean) =
1141
+ commandPlayer("setEqualizerEnabled") { player -> player.equalizer.setEnabled(enabled) }
1134
1142
 
1135
- override fun setEqualizerPreset(preset: String) = runBlockingOnMain {
1136
- player.equalizer.setPreset(preset)
1137
- }
1143
+ override fun setEqualizerPreset(preset: String) =
1144
+ commandPlayer("setEqualizerPreset") { player -> player.equalizer.setPreset(preset) }
1138
1145
 
1139
- override fun setEqualizerLevels(levels: DoubleArray) = runBlockingOnMain {
1140
- player.equalizer.setLevels(levels)
1141
- }
1146
+ override fun setEqualizerLevels(levels: DoubleArray) =
1147
+ commandPlayer("setEqualizerLevels") { player -> player.equalizer.setLevels(levels) }
1142
1148
 
1143
1149
  // ============================================================================
1144
1150
  // MARK: Sleep Timer
1145
1151
  // ============================================================================
1146
1152
 
1147
- override fun getSleepTimer(): SleepTimer = runBlockingOnMain { player.sleepTimer.get() }
1153
+ override fun getSleepTimer(): SleepTimer =
1154
+ readPlayer(SleepTimer.create(NullType.NULL)) { it.sleepTimer.get() }
1148
1155
 
1149
- override fun setSleepTimer(seconds: Double, fadeDuration: Double?) = runBlockingOnMain {
1150
- player.sleepTimer.setAfter(seconds, fadeDuration)
1151
- }
1156
+ override fun setSleepTimer(seconds: Double, fadeDuration: Double?) =
1157
+ commandPlayer("setSleepTimer") { player -> player.sleepTimer.setAfter(seconds, fadeDuration) }
1152
1158
 
1153
- override fun setSleepTimerToEndOfTrack() = runBlockingOnMain { player.sleepTimer.setEndOfTrack() }
1159
+ override fun setSleepTimerToEndOfTrack() =
1160
+ commandPlayer("setSleepTimerToEndOfTrack") { it.sleepTimer.setEndOfTrack() }
1154
1161
 
1155
- override fun clearSleepTimer(): Boolean = runBlockingOnMain { player.sleepTimer.clear() }
1162
+ override fun clearSleepTimer(): Boolean = readPlayer(false) { it.sleepTimer.clear() }
1156
1163
 
1157
1164
  // ============================================================================
1158
1165
  // MARK: Battery Optimization (Android only)
@@ -1293,6 +1300,29 @@ class AudioBrowser : HybridAudioBrowserSpec(), ServiceConnection {
1293
1300
  private val service: Service
1294
1301
  get() = connectedService ?: throw Exception("Player not initialized")
1295
1302
 
1303
+ /**
1304
+ * The player while its service is connected: not before setupPlayer, nor while the service
1305
+ * restarts.
1306
+ */
1307
+ private val connectedPlayer: Player?
1308
+ get() = connectedService?.player
1309
+
1310
+ /** What [read] gets from the player, or without one [fallback], the answer iOS gives then. */
1311
+ private fun <T> readPlayer(fallback: T, read: suspend (Player) -> T): T = runBlockingOnMain {
1312
+ val player = connectedPlayer ?: return@runBlockingOnMain fallback
1313
+ read(player)
1314
+ }
1315
+
1316
+ /** Runs [command] on the player; without one it is dropped with a warning, as iOS drops it. */
1317
+ private fun commandPlayer(name: String, command: suspend (Player) -> Unit) = runBlockingOnMain {
1318
+ val player = connectedPlayer
1319
+ if (player == null) {
1320
+ Timber.w("$name before the player is set up, or while its service restarts: ignored")
1321
+ } else {
1322
+ command(player)
1323
+ }
1324
+ }
1325
+
1296
1326
  internal val player
1297
1327
  get() = service.player
1298
1328
 
@@ -1,4 +1,3 @@
1
- import { Image } from 'react-native';
2
- declare const resolve: typeof Image.resolveAssetSource;
1
+ declare const resolve: (source: import("react-native").ImageSource) => import("react-native").ImageResolvedAssetSource | undefined;
3
2
  export default resolve;
4
3
  //# sourceMappingURL=resolveAssetSource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveAssetSource.d.ts","sourceRoot":"","sources":["../../../../src/utils/resolveAssetSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEpC,QAAA,MAAM,OAAO,iCAA2B,CAAA;eACzB,OAAO"}
1
+ {"version":3,"file":"resolveAssetSource.d.ts","sourceRoot":"","sources":["../../../../src/utils/resolveAssetSource.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,OAAO,6GAA2B,CAAA;eACzB,OAAO"}
@@ -76,9 +76,9 @@ int initialize(JavaVM* vm) {
76
76
  }
77
77
 
78
78
  struct JHybridAudioBrowserSpecImpl: public jni::JavaClass<JHybridAudioBrowserSpecImpl, JHybridAudioBrowserSpec::JavaPart> {
79
- static auto constexpr kJavaDescriptor = "Lcom/audiobrowser/AudioBrowser;";
79
+ static constexpr auto kJavaDescriptor = "Lcom/audiobrowser/AudioBrowser;";
80
80
  static std::shared_ptr<JHybridAudioBrowserSpec> create() {
81
- static auto constructorFn = javaClassStatic()->getConstructor<JHybridAudioBrowserSpecImpl::javaobject()>();
81
+ static const auto constructorFn = javaClassStatic()->getConstructor<JHybridAudioBrowserSpecImpl::javaobject()>();
82
82
  jni::local_ref<JHybridAudioBrowserSpec::JavaPart> javaPart = javaClassStatic()->newObject(constructorFn);
83
83
  return javaPart->getJHybridAudioBrowserSpec();
84
84
  }
@@ -15,11 +15,11 @@ namespace margelo::nitro::audiobrowser {
15
15
  using namespace facebook;
16
16
 
17
17
  /**
18
- * The C++ JNI bridge between the C++ enum "AndroidAudioContentType" and the the Kotlin enum "AndroidAudioContentType".
18
+ * The C++ JNI bridge between the C++ enum "AndroidAudioContentType" and the Kotlin enum "AndroidAudioContentType".
19
19
  */
20
20
  struct JAndroidAudioContentType final: public jni::JavaClass<JAndroidAudioContentType> {
21
21
  public:
22
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/AndroidAudioContentType;";
22
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/AndroidAudioContentType;";
23
23
 
24
24
  public:
25
25
  /**
@@ -17,11 +17,11 @@ namespace margelo::nitro::audiobrowser {
17
17
  using namespace facebook;
18
18
 
19
19
  /**
20
- * The C++ JNI bridge between the C++ struct "AndroidAudioOffloadSettings" and the the Kotlin data class "AndroidAudioOffloadSettings".
20
+ * The C++ JNI bridge between the C++ struct "AndroidAudioOffloadSettings" and the Kotlin data class "AndroidAudioOffloadSettings".
21
21
  */
22
22
  struct JAndroidAudioOffloadSettings final: public jni::JavaClass<JAndroidAudioOffloadSettings> {
23
23
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/AndroidAudioOffloadSettings;";
24
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/AndroidAudioOffloadSettings;";
25
25
 
26
26
  public:
27
27
  /**
@@ -28,11 +28,11 @@ namespace margelo::nitro::audiobrowser {
28
28
  using namespace facebook;
29
29
 
30
30
  /**
31
- * The C++ JNI bridge between the C++ struct "AndroidOptions" and the the Kotlin data class "AndroidOptions".
31
+ * The C++ JNI bridge between the C++ struct "AndroidOptions" and the Kotlin data class "AndroidOptions".
32
32
  */
33
33
  struct JAndroidOptions final: public jni::JavaClass<JAndroidOptions> {
34
34
  public:
35
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/AndroidOptions;";
35
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/AndroidOptions;";
36
36
 
37
37
  public:
38
38
  /**
@@ -15,11 +15,11 @@ namespace margelo::nitro::audiobrowser {
15
15
  using namespace facebook;
16
16
 
17
17
  /**
18
- * The C++ JNI bridge between the C++ enum "AndroidPlayerWakeMode" and the the Kotlin enum "AndroidPlayerWakeMode".
18
+ * The C++ JNI bridge between the C++ enum "AndroidPlayerWakeMode" and the Kotlin enum "AndroidPlayerWakeMode".
19
19
  */
20
20
  struct JAndroidPlayerWakeMode final: public jni::JavaClass<JAndroidPlayerWakeMode> {
21
21
  public:
22
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/AndroidPlayerWakeMode;";
22
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/AndroidPlayerWakeMode;";
23
23
 
24
24
  public:
25
25
  /**
@@ -15,11 +15,11 @@ namespace margelo::nitro::audiobrowser {
15
15
  using namespace facebook;
16
16
 
17
17
  /**
18
- * The C++ JNI bridge between the C++ enum "AppKilledPlaybackBehavior" and the the Kotlin enum "AppKilledPlaybackBehavior".
18
+ * The C++ JNI bridge between the C++ enum "AppKilledPlaybackBehavior" and the Kotlin enum "AppKilledPlaybackBehavior".
19
19
  */
20
20
  struct JAppKilledPlaybackBehavior final: public jni::JavaClass<JAppKilledPlaybackBehavior> {
21
21
  public:
22
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/AppKilledPlaybackBehavior;";
22
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/AppKilledPlaybackBehavior;";
23
23
 
24
24
  public:
25
25
  /**
@@ -15,11 +15,11 @@ namespace margelo::nitro::audiobrowser {
15
15
  using namespace facebook;
16
16
 
17
17
  /**
18
- * The C++ JNI bridge between the C++ enum "ArtworkRendering" and the the Kotlin enum "ArtworkRendering".
18
+ * The C++ JNI bridge between the C++ enum "ArtworkRendering" and the Kotlin enum "ArtworkRendering".
19
19
  */
20
20
  struct JArtworkRendering final: public jni::JavaClass<JArtworkRendering> {
21
21
  public:
22
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/ArtworkRendering;";
22
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/ArtworkRendering;";
23
23
 
24
24
  public:
25
25
  /**
@@ -57,11 +57,11 @@ namespace margelo::nitro::audiobrowser {
57
57
  using namespace facebook;
58
58
 
59
59
  /**
60
- * The C++ JNI bridge between the C++ struct "ArtworkRequestConfig" and the the Kotlin data class "ArtworkRequestConfig".
60
+ * The C++ JNI bridge between the C++ struct "ArtworkRequestConfig" and the Kotlin data class "ArtworkRequestConfig".
61
61
  */
62
62
  struct JArtworkRequestConfig final: public jni::JavaClass<JArtworkRequestConfig> {
63
63
  public:
64
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/ArtworkRequestConfig;";
64
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/ArtworkRequestConfig;";
65
65
 
66
66
  public:
67
67
  /**
@@ -17,11 +17,11 @@ namespace margelo::nitro::audiobrowser {
17
17
  using namespace facebook;
18
18
 
19
19
  /**
20
- * The C++ JNI bridge between the C++ struct "ArtworkVariants" and the the Kotlin data class "ArtworkVariants".
20
+ * The C++ JNI bridge between the C++ struct "ArtworkVariants" and the Kotlin data class "ArtworkVariants".
21
21
  */
22
22
  struct JArtworkVariants final: public jni::JavaClass<JArtworkVariants> {
23
23
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/ArtworkVariants;";
24
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/ArtworkVariants;";
25
25
 
26
26
  public:
27
27
  /**
@@ -15,11 +15,11 @@ namespace margelo::nitro::audiobrowser {
15
15
  using namespace facebook;
16
16
 
17
17
  /**
18
- * The C++ JNI bridge between the C++ enum "BatteryOptimizationStatus" and the the Kotlin enum "BatteryOptimizationStatus".
18
+ * The C++ JNI bridge between the C++ enum "BatteryOptimizationStatus" and the Kotlin enum "BatteryOptimizationStatus".
19
19
  */
20
20
  struct JBatteryOptimizationStatus final: public jni::JavaClass<JBatteryOptimizationStatus> {
21
21
  public:
22
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/BatteryOptimizationStatus;";
22
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/BatteryOptimizationStatus;";
23
23
 
24
24
  public:
25
25
  /**
@@ -18,11 +18,11 @@ namespace margelo::nitro::audiobrowser {
18
18
  using namespace facebook;
19
19
 
20
20
  /**
21
- * The C++ JNI bridge between the C++ struct "BatteryOptimizationStatusChangedEvent" and the the Kotlin data class "BatteryOptimizationStatusChangedEvent".
21
+ * The C++ JNI bridge between the C++ struct "BatteryOptimizationStatusChangedEvent" and the Kotlin data class "BatteryOptimizationStatusChangedEvent".
22
22
  */
23
23
  struct JBatteryOptimizationStatusChangedEvent final: public jni::JavaClass<JBatteryOptimizationStatusChangedEvent> {
24
24
  public:
25
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/BatteryOptimizationStatusChangedEvent;";
25
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/BatteryOptimizationStatusChangedEvent;";
26
26
 
27
27
  public:
28
28
  /**
@@ -17,11 +17,11 @@ namespace margelo::nitro::audiobrowser {
17
17
  using namespace facebook;
18
18
 
19
19
  /**
20
- * The C++ JNI bridge between the C++ struct "BatteryWarningPendingChangedEvent" and the the Kotlin data class "BatteryWarningPendingChangedEvent".
20
+ * The C++ JNI bridge between the C++ struct "BatteryWarningPendingChangedEvent" and the Kotlin data class "BatteryWarningPendingChangedEvent".
21
21
  */
22
22
  struct JBatteryWarningPendingChangedEvent final: public jni::JavaClass<JBatteryWarningPendingChangedEvent> {
23
23
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/BatteryWarningPendingChangedEvent;";
24
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/BatteryWarningPendingChangedEvent;";
25
25
 
26
26
  public:
27
27
  /**
@@ -17,11 +17,11 @@ namespace margelo::nitro::audiobrowser {
17
17
  using namespace facebook;
18
18
 
19
19
  /**
20
- * The C++ JNI bridge between the C++ struct "BrowseError" and the the Kotlin data class "BrowseError".
20
+ * The C++ JNI bridge between the C++ struct "BrowseError" and the Kotlin data class "BrowseError".
21
21
  */
22
22
  struct JBrowseError final: public jni::JavaClass<JBrowseError> {
23
23
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/BrowseError;";
24
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/BrowseError;";
25
25
 
26
26
  public:
27
27
  /**
@@ -58,7 +58,7 @@ namespace margelo::nitro::audiobrowser {
58
58
  */
59
59
  class JBrowseResult: public jni::JavaClass<JBrowseResult> {
60
60
  public:
61
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/BrowseResult;";
61
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/BrowseResult;";
62
62
 
63
63
  static jni::local_ref<JBrowseResult> create_0(jni::alias_ref<JResolvedTrack> value) {
64
64
  static const auto method = javaClassStatic()->getStaticMethod<JBrowseResult(jni::alias_ref<JResolvedTrack>)>("create");
@@ -83,7 +83,7 @@ namespace margelo::nitro::audiobrowser {
83
83
  namespace JBrowseResult_impl {
84
84
  class First final: public jni::JavaClass<First, JBrowseResult> {
85
85
  public:
86
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/BrowseResult$First;";
86
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/BrowseResult$First;";
87
87
 
88
88
  [[nodiscard]] jni::local_ref<JResolvedTrack> getValue() const {
89
89
  static const auto field = javaClassStatic()->getField<JResolvedTrack>("value");
@@ -93,7 +93,7 @@ namespace margelo::nitro::audiobrowser {
93
93
 
94
94
  class Second final: public jni::JavaClass<Second, JBrowseResult> {
95
95
  public:
96
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/BrowseResult$Second;";
96
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/BrowseResult$Second;";
97
97
 
98
98
  [[nodiscard]] jni::local_ref<JBrowseError> getValue() const {
99
99
  static const auto field = javaClassStatic()->getField<JBrowseError>("value");
@@ -19,11 +19,11 @@ namespace margelo::nitro::audiobrowser {
19
19
  using namespace facebook;
20
20
 
21
21
  /**
22
- * The C++ JNI bridge between the C++ struct "BrowserSourceCallbackParam" and the the Kotlin data class "BrowserSourceCallbackParam".
22
+ * The C++ JNI bridge between the C++ struct "BrowserSourceCallbackParam" and the Kotlin data class "BrowserSourceCallbackParam".
23
23
  */
24
24
  struct JBrowserSourceCallbackParam final: public jni::JavaClass<JBrowserSourceCallbackParam> {
25
25
  public:
26
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/BrowserSourceCallbackParam;";
26
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/BrowserSourceCallbackParam;";
27
27
 
28
28
  public:
29
29
  /**