@5stones/react-native-audio-browser 0.1.6 → 0.2.0

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 (44) hide show
  1. package/android/src/main/java/com/audiobrowser/AudioBrowser.kt +34 -9
  2. package/android/src/main/java/com/audiobrowser/player/MediaSessionCallback.kt +57 -17
  3. package/android/src/main/java/com/audiobrowser/player/TransformingDataSource.kt +33 -11
  4. package/ios/Browser/BrowserManager.swift +2 -17
  5. package/ios/CarPlay/CarPlayController.swift +75 -27
  6. package/ios/HybridAudioBrowser.swift +42 -12
  7. package/ios/TrackPlayer.swift +39 -32
  8. package/lib/commonjs/features/remoteControls.js +24 -1
  9. package/lib/commonjs/features/remoteControls.js.map +1 -1
  10. package/lib/commonjs/web/NativeAudioBrowser.js +34 -5
  11. package/lib/commonjs/web/NativeAudioBrowser.js.map +1 -1
  12. package/lib/module/features/remoteControls.js +22 -0
  13. package/lib/module/features/remoteControls.js.map +1 -1
  14. package/lib/module/web/NativeAudioBrowser.js +34 -5
  15. package/lib/module/web/NativeAudioBrowser.js.map +1 -1
  16. package/lib/typescript/src/features/remoteControls.d.ts +26 -0
  17. package/lib/typescript/src/features/remoteControls.d.ts.map +1 -1
  18. package/lib/typescript/src/specs/audio-browser.nitro.d.ts +3 -1
  19. package/lib/typescript/src/specs/audio-browser.nitro.d.ts.map +1 -1
  20. package/lib/typescript/src/web/NativeAudioBrowser.d.ts +11 -1
  21. package/lib/typescript/src/web/NativeAudioBrowser.d.ts.map +1 -1
  22. package/nitrogen/generated/android/AudioBrowserOnLoad.cpp +2 -0
  23. package/nitrogen/generated/android/c++/JFunc_void_RemoteLoadEvent.hpp +89 -0
  24. package/nitrogen/generated/android/c++/JHybridAudioBrowserSpec.cpp +39 -0
  25. package/nitrogen/generated/android/c++/JHybridAudioBrowserSpec.hpp +4 -0
  26. package/nitrogen/generated/android/c++/JRemoteLoadEvent.hpp +94 -0
  27. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RemoteLoadEvent.kt +80 -0
  28. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/HybridAudioBrowserSpec.kt +28 -0
  29. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemoteLoadEvent.kt +44 -0
  30. package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Bridge.cpp +8 -0
  31. package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Bridge.hpp +40 -0
  32. package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Umbrella.hpp +3 -0
  33. package/nitrogen/generated/ios/c++/HybridAudioBrowserSpecSwift.hpp +17 -0
  34. package/nitrogen/generated/ios/swift/Func_void_RemoteLoadEvent.swift +47 -0
  35. package/nitrogen/generated/ios/swift/HybridAudioBrowserSpec.swift +2 -0
  36. package/nitrogen/generated/ios/swift/HybridAudioBrowserSpec_cxx.swift +51 -0
  37. package/nitrogen/generated/ios/swift/RemoteLoadEvent.swift +70 -0
  38. package/nitrogen/generated/shared/c++/HybridAudioBrowserSpec.cpp +4 -0
  39. package/nitrogen/generated/shared/c++/HybridAudioBrowserSpec.hpp +7 -0
  40. package/nitrogen/generated/shared/c++/RemoteLoadEvent.hpp +85 -0
  41. package/package.json +1 -1
  42. package/src/features/remoteControls.ts +35 -0
  43. package/src/specs/audio-browser.nitro.ts +3 -0
  44. package/src/web/NativeAudioBrowser.ts +34 -5
@@ -0,0 +1,80 @@
1
+ ///
2
+ /// Func_void_RemoteLoadEvent.kt
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ package com.margelo.nitro.audiobrowser
9
+
10
+ import androidx.annotation.Keep
11
+ import com.facebook.jni.HybridData
12
+ import com.facebook.proguard.annotations.DoNotStrip
13
+ import dalvik.annotation.optimization.FastNative
14
+
15
+
16
+ /**
17
+ * Represents the JavaScript callback `(event: struct) => void`.
18
+ * This can be either implemented in C++ (in which case it might be a callback coming from JS),
19
+ * or in Kotlin/Java (in which case it is a native callback).
20
+ */
21
+ @DoNotStrip
22
+ @Keep
23
+ @Suppress("ClassName", "RedundantUnitReturnType")
24
+ fun interface Func_void_RemoteLoadEvent: (RemoteLoadEvent) -> Unit {
25
+ /**
26
+ * Call the given JS callback.
27
+ * @throws Throwable if the JS function itself throws an error, or if the JS function/runtime has already been deleted.
28
+ */
29
+ @DoNotStrip
30
+ @Keep
31
+ override fun invoke(event: RemoteLoadEvent): Unit
32
+ }
33
+
34
+ /**
35
+ * Represents the JavaScript callback `(event: struct) => void`.
36
+ * This is implemented in C++, via a `std::function<...>`.
37
+ * The callback might be coming from JS.
38
+ */
39
+ @DoNotStrip
40
+ @Keep
41
+ @Suppress(
42
+ "KotlinJniMissingFunction", "unused",
43
+ "RedundantSuppression", "RedundantUnitReturnType", "FunctionName",
44
+ "ConvertSecondaryConstructorToPrimary", "ClassName", "LocalVariableName",
45
+ )
46
+ class Func_void_RemoteLoadEvent_cxx: Func_void_RemoteLoadEvent {
47
+ @DoNotStrip
48
+ @Keep
49
+ private val mHybridData: HybridData
50
+
51
+ @DoNotStrip
52
+ @Keep
53
+ private constructor(hybridData: HybridData) {
54
+ mHybridData = hybridData
55
+ }
56
+
57
+ @DoNotStrip
58
+ @Keep
59
+ override fun invoke(event: RemoteLoadEvent): Unit
60
+ = invoke_cxx(event)
61
+
62
+ @FastNative
63
+ private external fun invoke_cxx(event: RemoteLoadEvent): Unit
64
+ }
65
+
66
+ /**
67
+ * Represents the JavaScript callback `(event: struct) => void`.
68
+ * This is implemented in Java/Kotlin, via a `(RemoteLoadEvent) -> Unit`.
69
+ * The callback is always coming from native.
70
+ */
71
+ @DoNotStrip
72
+ @Keep
73
+ @Suppress("ClassName", "RedundantUnitReturnType", "unused")
74
+ class Func_void_RemoteLoadEvent_java(private val function: (RemoteLoadEvent) -> Unit): Func_void_RemoteLoadEvent {
75
+ @DoNotStrip
76
+ @Keep
77
+ override fun invoke(event: RemoteLoadEvent): Unit {
78
+ return this.function(event)
79
+ }
80
+ }
@@ -398,6 +398,20 @@ abstract class HybridAudioBrowserSpec: HybridObject() {
398
398
  onRemoteLike = value
399
399
  }
400
400
 
401
+ abstract var onRemoteLoad: (event: RemoteLoadEvent) -> Unit
402
+
403
+ private var onRemoteLoad_cxx: Func_void_RemoteLoadEvent
404
+ @Keep
405
+ @DoNotStrip
406
+ get() {
407
+ return Func_void_RemoteLoadEvent_java(onRemoteLoad)
408
+ }
409
+ @Keep
410
+ @DoNotStrip
411
+ set(value) {
412
+ onRemoteLoad = value
413
+ }
414
+
401
415
  abstract var onRemoteNext: () -> Unit
402
416
 
403
417
  private var onRemoteNext_cxx: Func_void
@@ -650,6 +664,20 @@ abstract class HybridAudioBrowserSpec: HybridObject() {
650
664
  handleRemoteLike = value?.let { it }
651
665
  }
652
666
 
667
+ abstract var handleRemoteLoad: ((event: RemoteLoadEvent) -> Unit)?
668
+
669
+ private var handleRemoteLoad_cxx: Func_void_RemoteLoadEvent?
670
+ @Keep
671
+ @DoNotStrip
672
+ get() {
673
+ return handleRemoteLoad?.let { Func_void_RemoteLoadEvent_java(it) }
674
+ }
675
+ @Keep
676
+ @DoNotStrip
677
+ set(value) {
678
+ handleRemoteLoad = value?.let { it }
679
+ }
680
+
653
681
  abstract var handleRemoteNext: (() -> Unit)?
654
682
 
655
683
  private var handleRemoteNext_cxx: Func_void?
@@ -0,0 +1,44 @@
1
+ ///
2
+ /// RemoteLoadEvent.kt
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ package com.margelo.nitro.audiobrowser
9
+
10
+ import androidx.annotation.Keep
11
+ import com.facebook.proguard.annotations.DoNotStrip
12
+
13
+
14
+ /**
15
+ * Represents the JavaScript object/struct "RemoteLoadEvent".
16
+ */
17
+ @DoNotStrip
18
+ @Keep
19
+ data class RemoteLoadEvent(
20
+ @DoNotStrip
21
+ @Keep
22
+ val track: Track,
23
+ @DoNotStrip
24
+ @Keep
25
+ val queue: Array<Track>,
26
+ @DoNotStrip
27
+ @Keep
28
+ val startIndex: Double
29
+ ) {
30
+ /* primary constructor */
31
+
32
+ private companion object {
33
+ /**
34
+ * Constructor called from C++
35
+ */
36
+ @DoNotStrip
37
+ @Keep
38
+ @Suppress("unused")
39
+ @JvmStatic
40
+ private fun fromCpp(track: Track, queue: Array<Track>, startIndex: Double): RemoteLoadEvent {
41
+ return RemoteLoadEvent(track, queue, startIndex)
42
+ }
43
+ }
44
+ }
@@ -284,6 +284,14 @@ namespace margelo::nitro::audiobrowser::bridge::swift {
284
284
  };
285
285
  }
286
286
 
287
+ // pragma MARK: std::function<void(const RemoteLoadEvent& /* event */)>
288
+ Func_void_RemoteLoadEvent create_Func_void_RemoteLoadEvent(void* NON_NULL swiftClosureWrapper) noexcept {
289
+ auto swiftClosure = AudioBrowser::Func_void_RemoteLoadEvent::fromUnsafe(swiftClosureWrapper);
290
+ return [swiftClosure = std::move(swiftClosure)](const RemoteLoadEvent& event) mutable -> void {
291
+ swiftClosure.call(event);
292
+ };
293
+ }
294
+
287
295
  // pragma MARK: std::function<void(const RemotePlayIdEvent& /* event */)>
288
296
  Func_void_RemotePlayIdEvent create_Func_void_RemotePlayIdEvent(void* NON_NULL swiftClosureWrapper) noexcept {
289
297
  auto swiftClosure = AudioBrowser::Func_void_RemotePlayIdEvent::fromUnsafe(swiftClosureWrapper);
@@ -116,6 +116,8 @@ namespace margelo::nitro::audiobrowser { enum class RatingType; }
116
116
  namespace margelo::nitro::audiobrowser { struct RemoteJumpBackwardEvent; }
117
117
  // Forward declaration of `RemoteJumpForwardEvent` to properly resolve imports.
118
118
  namespace margelo::nitro::audiobrowser { struct RemoteJumpForwardEvent; }
119
+ // Forward declaration of `RemoteLoadEvent` to properly resolve imports.
120
+ namespace margelo::nitro::audiobrowser { struct RemoteLoadEvent; }
119
121
  // Forward declaration of `RemotePlayIdEvent` to properly resolve imports.
120
122
  namespace margelo::nitro::audiobrowser { struct RemotePlayIdEvent; }
121
123
  // Forward declaration of `RemotePlaySearchEvent` to properly resolve imports.
@@ -220,6 +222,7 @@ namespace AudioBrowser { class HybridAudioBrowserSpec_cxx; }
220
222
  #include "RatingType.hpp"
221
223
  #include "RemoteJumpBackwardEvent.hpp"
222
224
  #include "RemoteJumpForwardEvent.hpp"
225
+ #include "RemoteLoadEvent.hpp"
223
226
  #include "RemotePlayIdEvent.hpp"
224
227
  #include "RemotePlaySearchEvent.hpp"
225
228
  #include "RemoteSeekEvent.hpp"
@@ -2102,6 +2105,28 @@ namespace margelo::nitro::audiobrowser::bridge::swift {
2102
2105
  return Func_void_RemoteJumpForwardEvent_Wrapper(std::move(value));
2103
2106
  }
2104
2107
 
2108
+ // pragma MARK: std::function<void(const RemoteLoadEvent& /* event */)>
2109
+ /**
2110
+ * Specialized version of `std::function<void(const RemoteLoadEvent&)>`.
2111
+ */
2112
+ using Func_void_RemoteLoadEvent = std::function<void(const RemoteLoadEvent& /* event */)>;
2113
+ /**
2114
+ * Wrapper class for a `std::function<void(const RemoteLoadEvent& / * event * /)>`, this can be used from Swift.
2115
+ */
2116
+ class Func_void_RemoteLoadEvent_Wrapper final {
2117
+ public:
2118
+ explicit Func_void_RemoteLoadEvent_Wrapper(std::function<void(const RemoteLoadEvent& /* event */)>&& func): _function(std::make_unique<std::function<void(const RemoteLoadEvent& /* event */)>>(std::move(func))) {}
2119
+ inline void call(RemoteLoadEvent event) const noexcept {
2120
+ _function->operator()(event);
2121
+ }
2122
+ private:
2123
+ std::unique_ptr<std::function<void(const RemoteLoadEvent& /* event */)>> _function;
2124
+ } SWIFT_NONCOPYABLE;
2125
+ Func_void_RemoteLoadEvent create_Func_void_RemoteLoadEvent(void* NON_NULL swiftClosureWrapper) noexcept;
2126
+ inline Func_void_RemoteLoadEvent_Wrapper wrap_Func_void_RemoteLoadEvent(Func_void_RemoteLoadEvent value) noexcept {
2127
+ return Func_void_RemoteLoadEvent_Wrapper(std::move(value));
2128
+ }
2129
+
2105
2130
  // pragma MARK: std::function<void(const RemotePlayIdEvent& /* event */)>
2106
2131
  /**
2107
2132
  * Specialized version of `std::function<void(const RemotePlayIdEvent&)>`.
@@ -2394,6 +2419,21 @@ namespace margelo::nitro::audiobrowser::bridge::swift {
2394
2419
  return *optional;
2395
2420
  }
2396
2421
 
2422
+ // pragma MARK: std::optional<std::function<void(const RemoteLoadEvent& /* event */)>>
2423
+ /**
2424
+ * Specialized version of `std::optional<std::function<void(const RemoteLoadEvent& / * event * /)>>`.
2425
+ */
2426
+ using std__optional_std__function_void_const_RemoteLoadEvent_____event______ = std::optional<std::function<void(const RemoteLoadEvent& /* event */)>>;
2427
+ inline std::optional<std::function<void(const RemoteLoadEvent& /* event */)>> create_std__optional_std__function_void_const_RemoteLoadEvent_____event______(const std::function<void(const RemoteLoadEvent& /* event */)>& value) noexcept {
2428
+ return std::optional<std::function<void(const RemoteLoadEvent& /* event */)>>(value);
2429
+ }
2430
+ inline bool has_value_std__optional_std__function_void_const_RemoteLoadEvent_____event______(const std::optional<std::function<void(const RemoteLoadEvent& /* event */)>>& optional) noexcept {
2431
+ return optional.has_value();
2432
+ }
2433
+ inline std::function<void(const RemoteLoadEvent& /* event */)> get_std__optional_std__function_void_const_RemoteLoadEvent_____event______(const std::optional<std::function<void(const RemoteLoadEvent& /* event */)>>& optional) noexcept {
2434
+ return *optional;
2435
+ }
2436
+
2397
2437
  // pragma MARK: std::optional<std::function<void(const RemotePlayIdEvent& /* event */)>>
2398
2438
  /**
2399
2439
  * Specialized version of `std::optional<std::function<void(const RemotePlayIdEvent& / * event * /)>>`.
@@ -132,6 +132,8 @@ namespace margelo::nitro::audiobrowser { enum class RatingType; }
132
132
  namespace margelo::nitro::audiobrowser { struct RemoteJumpBackwardEvent; }
133
133
  // Forward declaration of `RemoteJumpForwardEvent` to properly resolve imports.
134
134
  namespace margelo::nitro::audiobrowser { struct RemoteJumpForwardEvent; }
135
+ // Forward declaration of `RemoteLoadEvent` to properly resolve imports.
136
+ namespace margelo::nitro::audiobrowser { struct RemoteLoadEvent; }
135
137
  // Forward declaration of `RemotePlayIdEvent` to properly resolve imports.
136
138
  namespace margelo::nitro::audiobrowser { struct RemotePlayIdEvent; }
137
139
  // Forward declaration of `RemotePlaySearchEvent` to properly resolve imports.
@@ -240,6 +242,7 @@ namespace margelo::nitro::audiobrowser { struct UpdateOptions; }
240
242
  #include "RatingType.hpp"
241
243
  #include "RemoteJumpBackwardEvent.hpp"
242
244
  #include "RemoteJumpForwardEvent.hpp"
245
+ #include "RemoteLoadEvent.hpp"
243
246
  #include "RemotePlayIdEvent.hpp"
244
247
  #include "RemotePlaySearchEvent.hpp"
245
248
  #include "RemoteSeekEvent.hpp"
@@ -94,6 +94,8 @@ namespace margelo::nitro::audiobrowser { enum class PlaybackState; }
94
94
  namespace margelo::nitro::audiobrowser { struct RemoteJumpBackwardEvent; }
95
95
  // Forward declaration of `RemoteJumpForwardEvent` to properly resolve imports.
96
96
  namespace margelo::nitro::audiobrowser { struct RemoteJumpForwardEvent; }
97
+ // Forward declaration of `RemoteLoadEvent` to properly resolve imports.
98
+ namespace margelo::nitro::audiobrowser { struct RemoteLoadEvent; }
97
99
  // Forward declaration of `RemotePlayIdEvent` to properly resolve imports.
98
100
  namespace margelo::nitro::audiobrowser { struct RemotePlayIdEvent; }
99
101
  // Forward declaration of `RemotePlaySearchEvent` to properly resolve imports.
@@ -222,6 +224,7 @@ namespace margelo::nitro::audiobrowser { struct NowPlayingUpdate; }
222
224
  #include "PlaybackState.hpp"
223
225
  #include "RemoteJumpBackwardEvent.hpp"
224
226
  #include "RemoteJumpForwardEvent.hpp"
227
+ #include "RemoteLoadEvent.hpp"
225
228
  #include "RemotePlayIdEvent.hpp"
226
229
  #include "RemotePlaySearchEvent.hpp"
227
230
  #include "RemoteSeekEvent.hpp"
@@ -490,6 +493,13 @@ namespace margelo::nitro::audiobrowser {
490
493
  inline void setOnRemoteLike(const std::function<void()>& onRemoteLike) noexcept override {
491
494
  _swiftPart.setOnRemoteLike(onRemoteLike);
492
495
  }
496
+ inline std::function<void(const RemoteLoadEvent& /* event */)> getOnRemoteLoad() noexcept override {
497
+ auto __result = _swiftPart.getOnRemoteLoad();
498
+ return __result;
499
+ }
500
+ inline void setOnRemoteLoad(const std::function<void(const RemoteLoadEvent& /* event */)>& onRemoteLoad) noexcept override {
501
+ _swiftPart.setOnRemoteLoad(onRemoteLoad);
502
+ }
493
503
  inline std::function<void()> getOnRemoteNext() noexcept override {
494
504
  auto __result = _swiftPart.getOnRemoteNext();
495
505
  return __result;
@@ -616,6 +626,13 @@ namespace margelo::nitro::audiobrowser {
616
626
  inline void setHandleRemoteLike(const std::optional<std::function<void()>>& handleRemoteLike) noexcept override {
617
627
  _swiftPart.setHandleRemoteLike(handleRemoteLike);
618
628
  }
629
+ inline std::optional<std::function<void(const RemoteLoadEvent& /* event */)>> getHandleRemoteLoad() noexcept override {
630
+ auto __result = _swiftPart.getHandleRemoteLoad();
631
+ return __result;
632
+ }
633
+ inline void setHandleRemoteLoad(const std::optional<std::function<void(const RemoteLoadEvent& /* event */)>>& handleRemoteLoad) noexcept override {
634
+ _swiftPart.setHandleRemoteLoad(handleRemoteLoad);
635
+ }
619
636
  inline std::optional<std::function<void()>> getHandleRemoteNext() noexcept override {
620
637
  auto __result = _swiftPart.getHandleRemoteNext();
621
638
  return __result;
@@ -0,0 +1,47 @@
1
+ ///
2
+ /// Func_void_RemoteLoadEvent.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ import Foundation
9
+ import NitroModules
10
+
11
+ /**
12
+ * Wraps a Swift `(_ event: RemoteLoadEvent) -> Void` as a class.
13
+ * This class can be used from C++, e.g. to wrap the Swift closure as a `std::function`.
14
+ */
15
+ public final class Func_void_RemoteLoadEvent {
16
+ public typealias bridge = margelo.nitro.audiobrowser.bridge.swift
17
+
18
+ private let closure: (_ event: RemoteLoadEvent) -> Void
19
+
20
+ public init(_ closure: @escaping (_ event: RemoteLoadEvent) -> Void) {
21
+ self.closure = closure
22
+ }
23
+
24
+ @inline(__always)
25
+ public func call(event: RemoteLoadEvent) -> Void {
26
+ self.closure(event)
27
+ }
28
+
29
+ /**
30
+ * Casts this instance to a retained unsafe raw pointer.
31
+ * This acquires one additional strong reference on the object!
32
+ */
33
+ @inline(__always)
34
+ public func toUnsafe() -> UnsafeMutableRawPointer {
35
+ return Unmanaged.passRetained(self).toOpaque()
36
+ }
37
+
38
+ /**
39
+ * Casts an unsafe pointer to a `Func_void_RemoteLoadEvent`.
40
+ * The pointer has to be a retained opaque `Unmanaged<Func_void_RemoteLoadEvent>`.
41
+ * This removes one strong reference from the object!
42
+ */
43
+ @inline(__always)
44
+ public static func fromUnsafe(_ pointer: UnsafeMutableRawPointer) -> Func_void_RemoteLoadEvent {
45
+ return Unmanaged<Func_void_RemoteLoadEvent>.fromOpaque(pointer).takeRetainedValue()
46
+ }
47
+ }
@@ -38,6 +38,7 @@ public protocol HybridAudioBrowserSpec_protocol: HybridObject {
38
38
  var onRemoteJumpBackward: (_ event: RemoteJumpBackwardEvent) -> Void { get set }
39
39
  var onRemoteJumpForward: (_ event: RemoteJumpForwardEvent) -> Void { get set }
40
40
  var onRemoteLike: () -> Void { get set }
41
+ var onRemoteLoad: (_ event: RemoteLoadEvent) -> Void { get set }
41
42
  var onRemoteNext: () -> Void { get set }
42
43
  var onRemotePause: () -> Void { get set }
43
44
  var onRemotePlay: () -> Void { get set }
@@ -56,6 +57,7 @@ public protocol HybridAudioBrowserSpec_protocol: HybridObject {
56
57
  var handleRemoteJumpBackward: ((_ event: RemoteJumpBackwardEvent) -> Void)? { get set }
57
58
  var handleRemoteJumpForward: ((_ event: RemoteJumpForwardEvent) -> Void)? { get set }
58
59
  var handleRemoteLike: (() -> Void)? { get set }
60
+ var handleRemoteLoad: ((_ event: RemoteLoadEvent) -> Void)? { get set }
59
61
  var handleRemoteNext: (() -> Void)? { get set }
60
62
  var handleRemotePause: (() -> Void)? { get set }
61
63
  var handleRemotePlay: (() -> Void)? { get set }
@@ -680,6 +680,25 @@ open class HybridAudioBrowserSpec_cxx {
680
680
  }
681
681
  }
682
682
 
683
+ public final var onRemoteLoad: bridge.Func_void_RemoteLoadEvent {
684
+ @inline(__always)
685
+ get {
686
+ return { () -> bridge.Func_void_RemoteLoadEvent in
687
+ let __closureWrapper = Func_void_RemoteLoadEvent(self.__implementation.onRemoteLoad)
688
+ return bridge.create_Func_void_RemoteLoadEvent(__closureWrapper.toUnsafe())
689
+ }()
690
+ }
691
+ @inline(__always)
692
+ set {
693
+ self.__implementation.onRemoteLoad = { () -> (RemoteLoadEvent) -> Void in
694
+ let __wrappedFunction = bridge.wrap_Func_void_RemoteLoadEvent(newValue)
695
+ return { (__event: RemoteLoadEvent) -> Void in
696
+ __wrappedFunction.call(__event)
697
+ }
698
+ }()
699
+ }
700
+ }
701
+
683
702
  public final var onRemoteNext: bridge.Func_void {
684
703
  @inline(__always)
685
704
  get {
@@ -1087,6 +1106,38 @@ open class HybridAudioBrowserSpec_cxx {
1087
1106
  }
1088
1107
  }
1089
1108
 
1109
+ public final var handleRemoteLoad: bridge.std__optional_std__function_void_const_RemoteLoadEvent_____event______ {
1110
+ @inline(__always)
1111
+ get {
1112
+ return { () -> bridge.std__optional_std__function_void_const_RemoteLoadEvent_____event______ in
1113
+ if let __unwrappedValue = self.__implementation.handleRemoteLoad {
1114
+ return bridge.create_std__optional_std__function_void_const_RemoteLoadEvent_____event______({ () -> bridge.Func_void_RemoteLoadEvent in
1115
+ let __closureWrapper = Func_void_RemoteLoadEvent(__unwrappedValue)
1116
+ return bridge.create_Func_void_RemoteLoadEvent(__closureWrapper.toUnsafe())
1117
+ }())
1118
+ } else {
1119
+ return .init()
1120
+ }
1121
+ }()
1122
+ }
1123
+ @inline(__always)
1124
+ set {
1125
+ self.__implementation.handleRemoteLoad = { () -> ((_ event: RemoteLoadEvent) -> Void)? in
1126
+ if bridge.has_value_std__optional_std__function_void_const_RemoteLoadEvent_____event______(newValue) {
1127
+ let __unwrapped = bridge.get_std__optional_std__function_void_const_RemoteLoadEvent_____event______(newValue)
1128
+ return { () -> (RemoteLoadEvent) -> Void in
1129
+ let __wrappedFunction = bridge.wrap_Func_void_RemoteLoadEvent(__unwrapped)
1130
+ return { (__event: RemoteLoadEvent) -> Void in
1131
+ __wrappedFunction.call(__event)
1132
+ }
1133
+ }()
1134
+ } else {
1135
+ return nil
1136
+ }
1137
+ }()
1138
+ }
1139
+ }
1140
+
1090
1141
  public final var handleRemoteNext: bridge.std__optional_std__function_void____ {
1091
1142
  @inline(__always)
1092
1143
  get {
@@ -0,0 +1,70 @@
1
+ ///
2
+ /// RemoteLoadEvent.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ import Foundation
9
+ import NitroModules
10
+
11
+ /**
12
+ * Represents an instance of `RemoteLoadEvent`, backed by a C++ struct.
13
+ */
14
+ public typealias RemoteLoadEvent = margelo.nitro.audiobrowser.RemoteLoadEvent
15
+
16
+ public extension RemoteLoadEvent {
17
+ private typealias bridge = margelo.nitro.audiobrowser.bridge.swift
18
+
19
+ /**
20
+ * Create a new instance of `RemoteLoadEvent`.
21
+ */
22
+ init(track: Track, queue: [Track], startIndex: Double) {
23
+ self.init(track, { () -> bridge.std__vector_Track_ in
24
+ var __vector = bridge.create_std__vector_Track_(queue.count)
25
+ for __item in queue {
26
+ __vector.push_back(__item)
27
+ }
28
+ return __vector
29
+ }(), startIndex)
30
+ }
31
+
32
+ var track: Track {
33
+ @inline(__always)
34
+ get {
35
+ return self.__track
36
+ }
37
+ @inline(__always)
38
+ set {
39
+ self.__track = newValue
40
+ }
41
+ }
42
+
43
+ var queue: [Track] {
44
+ @inline(__always)
45
+ get {
46
+ return self.__queue.map({ __item in __item })
47
+ }
48
+ @inline(__always)
49
+ set {
50
+ self.__queue = { () -> bridge.std__vector_Track_ in
51
+ var __vector = bridge.create_std__vector_Track_(newValue.count)
52
+ for __item in newValue {
53
+ __vector.push_back(__item)
54
+ }
55
+ return __vector
56
+ }()
57
+ }
58
+ }
59
+
60
+ var startIndex: Double {
61
+ @inline(__always)
62
+ get {
63
+ return self.__startIndex
64
+ }
65
+ @inline(__always)
66
+ set {
67
+ self.__startIndex = newValue
68
+ }
69
+ }
70
+ }
@@ -68,6 +68,8 @@ namespace margelo::nitro::audiobrowser {
68
68
  prototype.registerHybridSetter("onRemoteJumpForward", &HybridAudioBrowserSpec::setOnRemoteJumpForward);
69
69
  prototype.registerHybridGetter("onRemoteLike", &HybridAudioBrowserSpec::getOnRemoteLike);
70
70
  prototype.registerHybridSetter("onRemoteLike", &HybridAudioBrowserSpec::setOnRemoteLike);
71
+ prototype.registerHybridGetter("onRemoteLoad", &HybridAudioBrowserSpec::getOnRemoteLoad);
72
+ prototype.registerHybridSetter("onRemoteLoad", &HybridAudioBrowserSpec::setOnRemoteLoad);
71
73
  prototype.registerHybridGetter("onRemoteNext", &HybridAudioBrowserSpec::getOnRemoteNext);
72
74
  prototype.registerHybridSetter("onRemoteNext", &HybridAudioBrowserSpec::setOnRemoteNext);
73
75
  prototype.registerHybridGetter("onRemotePause", &HybridAudioBrowserSpec::getOnRemotePause);
@@ -104,6 +106,8 @@ namespace margelo::nitro::audiobrowser {
104
106
  prototype.registerHybridSetter("handleRemoteJumpForward", &HybridAudioBrowserSpec::setHandleRemoteJumpForward);
105
107
  prototype.registerHybridGetter("handleRemoteLike", &HybridAudioBrowserSpec::getHandleRemoteLike);
106
108
  prototype.registerHybridSetter("handleRemoteLike", &HybridAudioBrowserSpec::setHandleRemoteLike);
109
+ prototype.registerHybridGetter("handleRemoteLoad", &HybridAudioBrowserSpec::getHandleRemoteLoad);
110
+ prototype.registerHybridSetter("handleRemoteLoad", &HybridAudioBrowserSpec::setHandleRemoteLoad);
107
111
  prototype.registerHybridGetter("handleRemoteNext", &HybridAudioBrowserSpec::getHandleRemoteNext);
108
112
  prototype.registerHybridSetter("handleRemoteNext", &HybridAudioBrowserSpec::setHandleRemoteNext);
109
113
  prototype.registerHybridGetter("handleRemotePause", &HybridAudioBrowserSpec::getHandleRemotePause);
@@ -53,6 +53,8 @@ namespace margelo::nitro::audiobrowser { struct Playback; }
53
53
  namespace margelo::nitro::audiobrowser { struct RemoteJumpBackwardEvent; }
54
54
  // Forward declaration of `RemoteJumpForwardEvent` to properly resolve imports.
55
55
  namespace margelo::nitro::audiobrowser { struct RemoteJumpForwardEvent; }
56
+ // Forward declaration of `RemoteLoadEvent` to properly resolve imports.
57
+ namespace margelo::nitro::audiobrowser { struct RemoteLoadEvent; }
56
58
  // Forward declaration of `RemotePlayIdEvent` to properly resolve imports.
57
59
  namespace margelo::nitro::audiobrowser { struct RemotePlayIdEvent; }
58
60
  // Forward declaration of `RemotePlaySearchEvent` to properly resolve imports.
@@ -122,6 +124,7 @@ namespace margelo::nitro::audiobrowser { enum class BatteryOptimizationStatus; }
122
124
  #include "Playback.hpp"
123
125
  #include "RemoteJumpBackwardEvent.hpp"
124
126
  #include "RemoteJumpForwardEvent.hpp"
127
+ #include "RemoteLoadEvent.hpp"
125
128
  #include "RemotePlayIdEvent.hpp"
126
129
  #include "RemotePlaySearchEvent.hpp"
127
130
  #include "RemoteSeekEvent.hpp"
@@ -226,6 +229,8 @@ namespace margelo::nitro::audiobrowser {
226
229
  virtual void setOnRemoteJumpForward(const std::function<void(const RemoteJumpForwardEvent& /* event */)>& onRemoteJumpForward) = 0;
227
230
  virtual std::function<void()> getOnRemoteLike() = 0;
228
231
  virtual void setOnRemoteLike(const std::function<void()>& onRemoteLike) = 0;
232
+ virtual std::function<void(const RemoteLoadEvent& /* event */)> getOnRemoteLoad() = 0;
233
+ virtual void setOnRemoteLoad(const std::function<void(const RemoteLoadEvent& /* event */)>& onRemoteLoad) = 0;
229
234
  virtual std::function<void()> getOnRemoteNext() = 0;
230
235
  virtual void setOnRemoteNext(const std::function<void()>& onRemoteNext) = 0;
231
236
  virtual std::function<void()> getOnRemotePause() = 0;
@@ -262,6 +267,8 @@ namespace margelo::nitro::audiobrowser {
262
267
  virtual void setHandleRemoteJumpForward(const std::optional<std::function<void(const RemoteJumpForwardEvent& /* event */)>>& handleRemoteJumpForward) = 0;
263
268
  virtual std::optional<std::function<void()>> getHandleRemoteLike() = 0;
264
269
  virtual void setHandleRemoteLike(const std::optional<std::function<void()>>& handleRemoteLike) = 0;
270
+ virtual std::optional<std::function<void(const RemoteLoadEvent& /* event */)>> getHandleRemoteLoad() = 0;
271
+ virtual void setHandleRemoteLoad(const std::optional<std::function<void(const RemoteLoadEvent& /* event */)>>& handleRemoteLoad) = 0;
265
272
  virtual std::optional<std::function<void()>> getHandleRemoteNext() = 0;
266
273
  virtual void setHandleRemoteNext(const std::optional<std::function<void()>>& handleRemoteNext) = 0;
267
274
  virtual std::optional<std::function<void()>> getHandleRemotePause() = 0;
@@ -0,0 +1,85 @@
1
+ ///
2
+ /// RemoteLoadEvent.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #if __has_include(<NitroModules/JSIConverter.hpp>)
11
+ #include <NitroModules/JSIConverter.hpp>
12
+ #else
13
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
14
+ #endif
15
+ #if __has_include(<NitroModules/NitroDefines.hpp>)
16
+ #include <NitroModules/NitroDefines.hpp>
17
+ #else
18
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
19
+ #endif
20
+ #if __has_include(<NitroModules/JSIHelpers.hpp>)
21
+ #include <NitroModules/JSIHelpers.hpp>
22
+ #else
23
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
24
+ #endif
25
+
26
+ // Forward declaration of `Track` to properly resolve imports.
27
+ namespace margelo::nitro::audiobrowser { struct Track; }
28
+
29
+ #include "Track.hpp"
30
+ #include <vector>
31
+
32
+ namespace margelo::nitro::audiobrowser {
33
+
34
+ /**
35
+ * A struct which can be represented as a JavaScript object (RemoteLoadEvent).
36
+ */
37
+ struct RemoteLoadEvent {
38
+ public:
39
+ Track track SWIFT_PRIVATE;
40
+ std::vector<Track> queue SWIFT_PRIVATE;
41
+ double startIndex SWIFT_PRIVATE;
42
+
43
+ public:
44
+ RemoteLoadEvent() = default;
45
+ explicit RemoteLoadEvent(Track track, std::vector<Track> queue, double startIndex): track(track), queue(queue), startIndex(startIndex) {}
46
+ };
47
+
48
+ } // namespace margelo::nitro::audiobrowser
49
+
50
+ namespace margelo::nitro {
51
+
52
+ // C++ RemoteLoadEvent <> JS RemoteLoadEvent (object)
53
+ template <>
54
+ struct JSIConverter<margelo::nitro::audiobrowser::RemoteLoadEvent> final {
55
+ static inline margelo::nitro::audiobrowser::RemoteLoadEvent fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
56
+ jsi::Object obj = arg.asObject(runtime);
57
+ return margelo::nitro::audiobrowser::RemoteLoadEvent(
58
+ JSIConverter<margelo::nitro::audiobrowser::Track>::fromJSI(runtime, obj.getProperty(runtime, "track")),
59
+ JSIConverter<std::vector<margelo::nitro::audiobrowser::Track>>::fromJSI(runtime, obj.getProperty(runtime, "queue")),
60
+ JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, "startIndex"))
61
+ );
62
+ }
63
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::audiobrowser::RemoteLoadEvent& arg) {
64
+ jsi::Object obj(runtime);
65
+ obj.setProperty(runtime, "track", JSIConverter<margelo::nitro::audiobrowser::Track>::toJSI(runtime, arg.track));
66
+ obj.setProperty(runtime, "queue", JSIConverter<std::vector<margelo::nitro::audiobrowser::Track>>::toJSI(runtime, arg.queue));
67
+ obj.setProperty(runtime, "startIndex", JSIConverter<double>::toJSI(runtime, arg.startIndex));
68
+ return obj;
69
+ }
70
+ static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
71
+ if (!value.isObject()) {
72
+ return false;
73
+ }
74
+ jsi::Object obj = value.getObject(runtime);
75
+ if (!nitro::isPlainObject(runtime, obj)) {
76
+ return false;
77
+ }
78
+ if (!JSIConverter<margelo::nitro::audiobrowser::Track>::canConvert(runtime, obj.getProperty(runtime, "track"))) return false;
79
+ if (!JSIConverter<std::vector<margelo::nitro::audiobrowser::Track>>::canConvert(runtime, obj.getProperty(runtime, "queue"))) return false;
80
+ if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, "startIndex"))) return false;
81
+ return true;
82
+ }
83
+ };
84
+
85
+ } // namespace margelo::nitro
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@5stones/react-native-audio-browser",
3
- "version": "0.1.6",
3
+ "version": "0.2.0",
4
4
  "description": "react-native-audio-browser is a react native package built with Nitro",
5
5
  "keywords": [
6
6
  "react-native",