react-native-audio-browser 0.2.0-next.7 → 0.2.0-next.8

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 (162) hide show
  1. package/android/build.gradle +7 -1
  2. package/android/src/main/java/com/audiobrowser/browser/BrowserManager.kt +1 -2
  3. package/android/src/main/java/com/audiobrowser/browser/BrowserUrlResolution.kt +1 -2
  4. package/android/src/main/java/com/audiobrowser/browser/SectionScope.kt +6 -7
  5. package/android/src/main/java/com/audiobrowser/player/NowPlayingUpdater.kt +0 -1
  6. package/android/src/main/java/com/audiobrowser/player/PlaybackStateStore.kt +2 -4
  7. package/android/src/main/java/com/audiobrowser/player/RetryLoadErrorHandlingPolicy.kt +2 -1
  8. package/android/src/main/java/com/audiobrowser/util/ArtworkVariant.kt +7 -9
  9. package/android/src/main/java/com/audiobrowser/util/TrackFactory.kt +8 -7
  10. package/android/src/test/java/com/audiobrowser/TestFixtures.kt +0 -1
  11. package/android/src/test/java/com/audiobrowser/browser/JsonArtworkTest.kt +2 -1
  12. package/android/src/test/java/com/audiobrowser/browser/SectionScopeTest.kt +2 -4
  13. package/android/src/test/java/com/audiobrowser/player/PlaybackErrorClassifierTest.kt +3 -4
  14. package/android/src/test/java/com/audiobrowser/player/RetryLoadErrorHandlingPolicyTest.kt +3 -3
  15. package/ios/Browser/BrowserManager.swift +2 -2
  16. package/ios/Browser/SearchDrillIn.swift +1 -1
  17. package/ios/CarPlay/RNABMediaAddHandler.swift +6 -6
  18. package/ios/CarPlay/RNABMediaAffinityHandler.swift +2 -2
  19. package/ios/CarPlay/RNABMediaIntentHandler.swift +16 -16
  20. package/ios/HybridAudioBrowser.swift +8 -7
  21. package/ios/Model/RemoteCommand.swift +18 -0
  22. package/ios/Model/TrackPlayerError.swift +2 -2
  23. package/ios/Option/SessionCategories.swift +3 -2
  24. package/ios/Player/MediaIntentCriteria.swift +4 -4
  25. package/ios/Player/PlaybackErrorHandler.swift +2 -2
  26. package/ios/Player/RetryManager.swift +2 -1
  27. package/ios/RemoteCommand/RemoteCommandCallbacks.swift +47 -0
  28. package/ios/RemoteCommand/RemoteCommandController.swift +9 -6
  29. package/ios/Tests/LoadSeekCoordinatorTests.swift +3 -1
  30. package/ios/Tests/MediaIntentCriteriaTests.swift +2 -2
  31. package/ios/Tests/PlaybackCoordinatorTests.swift +1 -1
  32. package/ios/Tests/RemoteCommandControllerTests.swift +156 -0
  33. package/ios/Tests/RemoteCommandTests.swift +67 -0
  34. package/ios/Tests/SectionScopeTests.swift +2 -2
  35. package/ios/Tests/TabBarEntriesTests.swift +7 -7
  36. package/ios/TrackPlayer.swift +1 -1
  37. package/ios/TrackPlayerCallbacks.swift +5 -38
  38. package/lib/commonjs/AudioBrowser.js +0 -11
  39. package/lib/commonjs/AudioBrowser.js.map +1 -1
  40. package/lib/commonjs/features/carConnection.js +1 -1
  41. package/lib/commonjs/features/equalizer.js +1 -1
  42. package/lib/commonjs/features/errors.js +3 -3
  43. package/lib/commonjs/features/favorites.js +1 -1
  44. package/lib/commonjs/features/gate.js +1 -1
  45. package/lib/commonjs/features/metadata.js +3 -3
  46. package/lib/commonjs/features/network.js +1 -1
  47. package/lib/commonjs/features/nowPlaying.js +1 -1
  48. package/lib/commonjs/features/output.js +1 -1
  49. package/lib/commonjs/features/playback/playWhenReady.js +1 -1
  50. package/lib/commonjs/features/playback/playing.js +1 -1
  51. package/lib/commonjs/features/playback/progress.js +1 -1
  52. package/lib/commonjs/features/playback/state.js +1 -1
  53. package/lib/commonjs/features/playback/trackPlaybackTime.js +0 -6
  54. package/lib/commonjs/features/playback/trackPlaybackTime.js.map +1 -1
  55. package/lib/commonjs/features/playback/volume.js +1 -1
  56. package/lib/commonjs/features/player/options.js +3 -19
  57. package/lib/commonjs/features/player/options.js.map +1 -1
  58. package/lib/commonjs/features/player/setup.js +2 -2
  59. package/lib/commonjs/features/player/setup.js.map +1 -1
  60. package/lib/commonjs/features/player/validateOptions.js +24 -0
  61. package/lib/commonjs/features/player/validateOptions.js.map +1 -0
  62. package/lib/commonjs/features/queue/activeTrack.js +1 -1
  63. package/lib/commonjs/features/queue/queue.js +2 -2
  64. package/lib/commonjs/features/queue/repeatMode.js +1 -1
  65. package/lib/commonjs/features/queue/shuffle.js +1 -1
  66. package/lib/commonjs/features/remoteControls.js +13 -92
  67. package/lib/commonjs/features/remoteControls.js.map +1 -1
  68. package/lib/commonjs/features/sleepTimer.js +1 -1
  69. package/lib/commonjs/utils/LazyNativeEmitter.js +8 -5
  70. package/lib/commonjs/utils/LazyNativeEmitter.js.map +1 -1
  71. package/lib/module/AudioBrowser.js +4 -1
  72. package/lib/module/AudioBrowser.js.map +1 -1
  73. package/lib/module/features/carConnection.js +1 -1
  74. package/lib/module/features/equalizer.js +1 -1
  75. package/lib/module/features/errors.js +3 -3
  76. package/lib/module/features/favorites.js +1 -1
  77. package/lib/module/features/gate.js +1 -1
  78. package/lib/module/features/metadata.js +3 -3
  79. package/lib/module/features/network.js +1 -1
  80. package/lib/module/features/nowPlaying.js +1 -1
  81. package/lib/module/features/output.js +1 -1
  82. package/lib/module/features/playback/playWhenReady.js +1 -1
  83. package/lib/module/features/playback/playing.js +1 -1
  84. package/lib/module/features/playback/progress.js +1 -1
  85. package/lib/module/features/playback/state.js +1 -1
  86. package/lib/module/features/playback/trackPlaybackTime.js +0 -5
  87. package/lib/module/features/playback/trackPlaybackTime.js.map +1 -1
  88. package/lib/module/features/playback/volume.js +1 -1
  89. package/lib/module/features/player/options.js +2 -17
  90. package/lib/module/features/player/options.js.map +1 -1
  91. package/lib/module/features/player/setup.js +1 -1
  92. package/lib/module/features/player/setup.js.map +1 -1
  93. package/lib/module/features/player/validateOptions.js +20 -0
  94. package/lib/module/features/player/validateOptions.js.map +1 -0
  95. package/lib/module/features/queue/activeTrack.js +1 -1
  96. package/lib/module/features/queue/queue.js +2 -2
  97. package/lib/module/features/queue/repeatMode.js +1 -1
  98. package/lib/module/features/queue/shuffle.js +1 -1
  99. package/lib/module/features/remoteControls.js +13 -92
  100. package/lib/module/features/remoteControls.js.map +1 -1
  101. package/lib/module/features/sleepTimer.js +1 -1
  102. package/lib/module/utils/LazyNativeEmitter.js +8 -5
  103. package/lib/module/utils/LazyNativeEmitter.js.map +1 -1
  104. package/lib/typescript/src/AudioBrowser.d.ts +0 -1
  105. package/lib/typescript/src/AudioBrowser.d.ts.map +1 -1
  106. package/lib/typescript/src/features/carConnection.d.ts +1 -1
  107. package/lib/typescript/src/features/equalizer.d.ts +1 -1
  108. package/lib/typescript/src/features/errors.d.ts +3 -3
  109. package/lib/typescript/src/features/favorites.d.ts +1 -1
  110. package/lib/typescript/src/features/gate.d.ts +3 -2
  111. package/lib/typescript/src/features/gate.d.ts.map +1 -1
  112. package/lib/typescript/src/features/metadata.d.ts +3 -3
  113. package/lib/typescript/src/features/network.d.ts +1 -1
  114. package/lib/typescript/src/features/nowPlaying.d.ts +1 -1
  115. package/lib/typescript/src/features/output.d.ts +1 -1
  116. package/lib/typescript/src/features/playback/playWhenReady.d.ts +1 -1
  117. package/lib/typescript/src/features/playback/playing.d.ts +1 -1
  118. package/lib/typescript/src/features/playback/progress.d.ts +1 -1
  119. package/lib/typescript/src/features/playback/state.d.ts +1 -1
  120. package/lib/typescript/src/features/playback/volume.d.ts +1 -1
  121. package/lib/typescript/src/features/player/options.d.ts +1 -1
  122. package/lib/typescript/src/features/player/options.d.ts.map +1 -1
  123. package/lib/typescript/src/features/player/validateOptions.d.ts +2 -0
  124. package/lib/typescript/src/features/player/validateOptions.d.ts.map +1 -0
  125. package/lib/typescript/src/features/queue/activeTrack.d.ts +1 -1
  126. package/lib/typescript/src/features/queue/queue.d.ts +2 -2
  127. package/lib/typescript/src/features/queue/repeatMode.d.ts +1 -1
  128. package/lib/typescript/src/features/queue/shuffle.d.ts +1 -1
  129. package/lib/typescript/src/features/remoteControls.d.ts +23 -22
  130. package/lib/typescript/src/features/remoteControls.d.ts.map +1 -1
  131. package/lib/typescript/src/features/sleepTimer.d.ts +1 -1
  132. package/lib/typescript/src/utils/LazyNativeEmitter.d.ts +8 -4
  133. package/lib/typescript/src/utils/LazyNativeEmitter.d.ts.map +1 -1
  134. package/package.json +3 -1
  135. package/src/AudioBrowser.ts +4 -1
  136. package/src/features/carConnection.ts +1 -1
  137. package/src/features/equalizer.ts +1 -1
  138. package/src/features/errors.ts +3 -3
  139. package/src/features/favorites.ts +1 -1
  140. package/src/features/gate.ts +1 -1
  141. package/src/features/metadata.ts +3 -3
  142. package/src/features/network.ts +1 -1
  143. package/src/features/nowPlaying.ts +1 -1
  144. package/src/features/output.ts +1 -1
  145. package/src/features/playback/playWhenReady.ts +1 -1
  146. package/src/features/playback/playing.ts +1 -1
  147. package/src/features/playback/progress.ts +1 -1
  148. package/src/features/playback/state.ts +1 -1
  149. package/src/features/playback/trackPlaybackTime.test.ts +20 -6
  150. package/src/features/playback/trackPlaybackTime.ts +0 -5
  151. package/src/features/playback/volume.ts +1 -1
  152. package/src/features/player/options.ts +2 -20
  153. package/src/features/player/setup.ts +1 -1
  154. package/src/features/player/validateOptions.ts +22 -0
  155. package/src/features/queue/activeTrack.ts +1 -1
  156. package/src/features/queue/queue.ts +2 -2
  157. package/src/features/queue/repeatMode.ts +1 -1
  158. package/src/features/queue/shuffle.ts +1 -1
  159. package/src/features/remoteControls.ts +13 -92
  160. package/src/features/sleepTimer.ts +1 -1
  161. package/src/public-surface.test.ts +116 -0
  162. package/src/utils/LazyNativeEmitter.ts +9 -6
@@ -87,19 +87,19 @@ export interface ChapterMetadata {
87
87
  /**
88
88
  * Subscribes to chapter metadata events.
89
89
  * @param callback - Called when chapter metadata is received
90
- * @returns Cleanup function to unsubscribe
90
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
91
91
  */
92
92
  export declare const onChapterMetadata: NativeUpdatedValue<ChapterMetadata[]>;
93
93
  /**
94
94
  * Subscribes to track metadata events.
95
95
  * @param callback - Called when static track metadata is received
96
- * @returns Cleanup function to unsubscribe
96
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
97
97
  */
98
98
  export declare const onTrackMetadata: NativeUpdatedValue<TrackMetadata>;
99
99
  /**
100
100
  * Subscribes to timed metadata events (ICY/ID3 from live streams).
101
101
  * @param callback - Called when stream metadata is received (title, artist from ICY/ID3 tags)
102
- * @returns Cleanup function to unsubscribe
102
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
103
103
  */
104
104
  export declare const onTimedMetadata: NativeUpdatedValue<TimedMetadata>;
105
105
  //# sourceMappingURL=metadata.d.ts.map
@@ -7,7 +7,7 @@ export declare function getOnline(): boolean;
7
7
  /**
8
8
  * Subscribes to network connectivity changes.
9
9
  * @param callback - Called when network state changes
10
- * @returns Cleanup function to unsubscribe
10
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
11
11
  */
12
12
  export declare const onOnlineChanged: NativeUpdatedValue<boolean>;
13
13
  /**
@@ -52,7 +52,7 @@ export declare function clearNowPlayingFlash(): void;
52
52
  * Subscribes to now playing metadata change events.
53
53
  * Fires when updateNowPlaying is called or when the track changes.
54
54
  * @param callback - Called when now playing metadata changes
55
- * @returns Cleanup function to unsubscribe
55
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
56
56
  */
57
57
  export declare const onNowPlayingChanged: NativeUpdatedValue<NowPlayingMetadata>;
58
58
  /**
@@ -27,7 +27,7 @@ export declare function getOutput(): Output | undefined;
27
27
  /**
28
28
  * Subscribes to current-output changes (headphones unplugged, Bluetooth speaker
29
29
  * connected, AirPlay/route selected). Fires on iOS and Android 11+; never below.
30
- * @returns Cleanup function to unsubscribe.
30
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
31
31
  */
32
32
  export declare const onOutputChanged: NativeUpdatedValue<Output>;
33
33
  /**
@@ -19,7 +19,7 @@ export declare function setPlayWhenReady(playWhenReady: boolean): void;
19
19
  /**
20
20
  * Subscribes to play when ready changes.
21
21
  * @param callback - Called when playWhenReady changes
22
- * @returns Cleanup function to unsubscribe
22
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
23
23
  */
24
24
  export declare const onPlayWhenReadyChanged: NativeUpdatedValue<PlaybackPlayWhenReadyChangedEvent>;
25
25
  /**
@@ -10,7 +10,7 @@ export declare function getPlayingState(): PlayingState;
10
10
  /**
11
11
  * Subscribes to playing state changes.
12
12
  * @param callback - Called when playing or buffering state changes
13
- * @returns Cleanup function to unsubscribe
13
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
14
14
  */
15
15
  export declare const onPlayingState: NativeUpdatedValue<PlayingState>;
16
16
  /**
@@ -29,7 +29,7 @@ export declare function getProgress(): Progress;
29
29
  /**
30
30
  * Subscribes to playback progress updates.
31
31
  * @param callback - Called periodically with playback progress updates
32
- * @returns Cleanup function to unsubscribe
32
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
33
33
  */
34
34
  export declare const onProgressUpdated: NativeUpdatedValue<PlaybackProgressUpdatedEvent>;
35
35
  /**
@@ -32,7 +32,7 @@ export declare function getPlayback(): Playback;
32
32
  /**
33
33
  * Subscribes to playback state changes.
34
34
  * @param callback - Called when the playback state changes
35
- * @returns Cleanup function to unsubscribe
35
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
36
36
  */
37
37
  export declare const onPlaybackChanged: NativeUpdatedValue<Playback>;
38
38
  /**
@@ -21,7 +21,7 @@ export declare function setSystemVolume(level: number): void;
21
21
  /**
22
22
  * Subscribes to system volume changes.
23
23
  * @param callback - Called when the system volume changes
24
- * @returns Cleanup function to unsubscribe
24
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
25
25
  */
26
26
  export declare const onSystemVolumeChanged: NativeUpdatedValue<number>;
27
27
  /**
@@ -451,7 +451,7 @@ export declare function getOptions(): Options;
451
451
  /**
452
452
  * Subscribes to player options changes.
453
453
  * @param callback - Called when the player options change
454
- * @returns Cleanup function to unsubscribe
454
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
455
455
  */
456
456
  export declare const onOptionsChanged: NativeUpdatedValue<Options>;
457
457
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../src/features/player/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../src/features/player/options.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=validateOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateOptions.d.ts","sourceRoot":"","sources":["../../../../../src/features/player/validateOptions.ts"],"names":[],"mappings":""}
@@ -27,7 +27,7 @@ export declare function getActiveTrackIndex(): number | undefined;
27
27
  /**
28
28
  * Subscribes to active track change events.
29
29
  * @param callback - Called when the active track changes
30
- * @returns Cleanup function to unsubscribe
30
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
31
31
  */
32
32
  export declare const onActiveTrackChanged: NativeUpdatedValue<PlaybackActiveTrackChangedEvent>;
33
33
  /**
@@ -100,14 +100,14 @@ export declare function getQueue(): Track[];
100
100
  /**
101
101
  * Subscribes to playback queue ended events.
102
102
  * @param callback - Called when playback has paused due to reaching the end of the queue
103
- * @returns Cleanup function to unsubscribe
103
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
104
104
  */
105
105
  export declare const onQueueEnded: NativeUpdatedValue<PlaybackQueueEndedEvent>;
106
106
  /**
107
107
  * Subscribes to queue change events.
108
108
  * Called when tracks are added, removed, reordered, or when track metadata changes.
109
109
  * @param callback - Called with the updated queue
110
- * @returns Cleanup function to unsubscribe
110
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
111
111
  */
112
112
  export declare const onQueueChanged: NativeUpdatedValue<Track[]>;
113
113
  /**
@@ -23,7 +23,7 @@ export interface RepeatModeChangedEvent {
23
23
  /**
24
24
  * Subscribes to repeat mode changes.
25
25
  * @param callback - Called when repeat mode changes
26
- * @returns Cleanup function to unsubscribe
26
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
27
27
  */
28
28
  export declare const onRepeatModeChanged: NativeUpdatedValue<RepeatModeChangedEvent>;
29
29
  /**
@@ -16,7 +16,7 @@ export declare function toggleShuffle(): void;
16
16
  /**
17
17
  * Subscribes to shuffle mode changes.
18
18
  * @param callback - Called when shuffle mode changes
19
- * @returns Cleanup function to unsubscribe
19
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
20
20
  */
21
21
  export declare const onShuffleChanged: NativeUpdatedValue<boolean>;
22
22
  /**
@@ -1,3 +1,4 @@
1
+ import { LazyNativeEmitter } from '../utils/LazyNativeEmitter';
1
2
  /**
2
3
  * Remote jump backward event.
3
4
  */
@@ -85,67 +86,67 @@ export declare function handleRemoteJumpBackward(callback: ((event: RemoteJumpBa
85
86
  /**
86
87
  * Subscribes to remote jump backward events.
87
88
  * @param callback - Called when the user presses the jump backward button
88
- * @returns Cleanup function to unsubscribe
89
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
89
90
  */
90
- export declare const onRemoteJumpBackward: (callback: (arg: RemoteJumpBackwardEvent) => void) => () => void;
91
+ export declare const onRemoteJumpBackward: LazyNativeEmitter<RemoteJumpBackwardEvent>;
91
92
  /**
92
93
  * Subscribes to remote jump forward events.
93
94
  * @param callback - Called when the user presses the jump forward button
94
- * @returns Cleanup function to unsubscribe
95
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
95
96
  */
96
- export declare const onRemoteJumpForward: (callback: (arg: RemoteJumpForwardEvent) => void) => () => void;
97
+ export declare const onRemoteJumpForward: LazyNativeEmitter<RemoteJumpForwardEvent>;
97
98
  /**
98
99
  * Subscribes to remote next events.
99
100
  * @param callback - Called when the user presses the next track button
100
- * @returns Cleanup function to unsubscribe
101
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
101
102
  */
102
- export declare const onRemoteNext: (callback: (arg: void) => void) => () => void;
103
+ export declare const onRemoteNext: LazyNativeEmitter<void>;
103
104
  /**
104
105
  * Subscribes to remote pause events.
105
106
  * @param callback - Called when the user presses the pause button
106
- * @returns Cleanup function to unsubscribe
107
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
107
108
  */
108
- export declare const onRemotePause: (callback: (arg: void) => void) => () => void;
109
+ export declare const onRemotePause: LazyNativeEmitter<void>;
109
110
  /**
110
111
  * Subscribes to remote play events.
111
112
  * @param callback - Called when the user presses the play button
112
- * @returns Cleanup function to unsubscribe
113
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
113
114
  */
114
- export declare const onRemotePlay: (callback: (arg: void) => void) => () => void;
115
+ export declare const onRemotePlay: LazyNativeEmitter<void>;
115
116
  /**
116
117
  * Subscribes to remote play ID events (Android only).
117
118
  * @param callback - Called when the user selects a track from an external device
118
- * @returns Cleanup function to unsubscribe
119
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
119
120
  */
120
- export declare const onRemotePlayId: (callback: (arg: RemotePlayIdEvent) => void) => () => void;
121
+ export declare const onRemotePlayId: LazyNativeEmitter<RemotePlayIdEvent>;
121
122
  /**
122
123
  * Subscribes to remote play search events (Android only).
123
124
  * @param callback - Called when the user searches for a track (usually voice search)
124
- * @returns Cleanup function to unsubscribe
125
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
125
126
  */
126
- export declare const onRemotePlaySearch: (callback: (arg: RemotePlaySearchEvent) => void) => () => void;
127
+ export declare const onRemotePlaySearch: LazyNativeEmitter<RemotePlaySearchEvent>;
127
128
  /**
128
129
  * Subscribes to remote previous events.
129
130
  * @param callback - Called when the user presses the previous track button
130
- * @returns Cleanup function to unsubscribe
131
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
131
132
  */
132
- export declare const onRemotePrevious: (callback: (arg: void) => void) => () => void;
133
+ export declare const onRemotePrevious: LazyNativeEmitter<void>;
133
134
  /**
134
135
  * Subscribes to remote seek events.
135
136
  * @param callback - Called when the user changes the position of the timeline
136
- * @returns Cleanup function to unsubscribe
137
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
137
138
  */
138
- export declare const onRemoteSeek: (callback: (arg: RemoteSeekEvent) => void) => () => void;
139
+ export declare const onRemoteSeek: LazyNativeEmitter<RemoteSeekEvent>;
139
140
  /**
140
141
  * Subscribes to remote skip events (Android only).
141
142
  * @param callback - Called when the user presses the skip button
142
- * @returns Cleanup function to unsubscribe
143
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
143
144
  */
144
- export declare const onRemoteSkip: (callback: (arg: RemoteSkipEvent) => void) => () => void;
145
+ export declare const onRemoteSkip: LazyNativeEmitter<RemoteSkipEvent>;
145
146
  /**
146
147
  * Subscribes to remote stop events.
147
148
  * @param callback - Called when the user presses the stop button
148
- * @returns Cleanup function to unsubscribe
149
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
149
150
  */
150
- export declare const onRemoteStop: (callback: (arg: void) => void) => () => void;
151
+ export declare const onRemoteStop: LazyNativeEmitter<void>;
151
152
  //# sourceMappingURL=remoteControls.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remoteControls.d.ts","sourceRoot":"","sources":["../../../../src/features/remoteControls.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAA;CACd;AAuFD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,QAElE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,QAEnE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,QAElE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,QAEtE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,QAElE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC,GAAG,SAAS,QAGzD;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC,GAAG,SAAS,QAGhE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,uBAAuB,KAAK,IAAI,CAAC,GAAG,SAAS,QAGjE;AASD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,kEAG9B,CAAA;AAEH;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,iEAG7B,CAAA;AAEH;;;;GAIG;AACH,eAAO,MAAM,YAAY,+CAExB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,+CAEzB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,+CAExB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,4DAE1B,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,gEAG5B,CAAA;AAEH;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,+CAE5B,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,0DAExB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,0DAExB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,+CAExB,CAAA"}
1
+ {"version":3,"file":"remoteControls.d.ts","sourceRoot":"","sources":["../../../../src/features/remoteControls.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAI9D;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAA;CACd;AAQD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,QAElE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,QAEnE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,QAElE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,QAEtE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,QAElE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC,GAAG,SAAS,QAGzD;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC,GAAG,SAAS,QAGhE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,uBAAuB,KAAK,IAAI,CAAC,GAAG,SAAS,QAGjE;AASD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,4CAG9B,CAAA;AAEH;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,2CAG7B,CAAA;AAEH;;;;GAIG;AACH,eAAO,MAAM,YAAY,yBAExB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,yBAEzB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,yBAExB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,sCAE1B,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,0CAG5B,CAAA;AAEH;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,yBAE5B,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,oCAExB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,oCAExB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,yBAExB,CAAA"}
@@ -57,7 +57,7 @@ export declare function clearSleepTimer(): boolean;
57
57
  /**
58
58
  * Subscribes to sleep timer changes.
59
59
  * @param callback - Called when the sleep timer state changes
60
- * @returns Cleanup function to unsubscribe
60
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
61
61
  */
62
62
  export declare const onSleepTimerChanged: NativeUpdatedValue<SleepTimer>;
63
63
  /**
@@ -11,9 +11,11 @@ type Callback<T> = (arg: T) => void;
11
11
  *
12
12
  * @example
13
13
  * ```typescript
14
- * export const onRemotePlay = LazyEmitter.emitterize<void>(
14
+ * export const onRemotePlay = LazyNativeEmitter.emitterize<void>(
15
15
  * (cb) => (nativeBrowser.onRemotePlay = cb)
16
16
  * )
17
+ *
18
+ * const unsubscribe = onRemotePlay.addListener(() => console.log('play'))
17
19
  * ```
18
20
  */
19
21
  export declare class LazyNativeEmitter<T> {
@@ -23,11 +25,13 @@ export declare class LazyNativeEmitter<T> {
23
25
  private getListeners;
24
26
  addListener(callback: Callback<T>): () => void;
25
27
  /**
26
- * Creates a lazy emitter subscription function for a native callback.
28
+ * Creates a lazy emitter for a native callback.
29
+ *
27
30
  * @param setter - Function that sets the native callback property
28
- * @returns A subscription function that returns an unsubscribe function
31
+ * @returns The emitter instance — subscribe with `addListener`, which returns
32
+ * an unsubscribe function
29
33
  */
30
- static emitterize<T>(setter: (callback: (data: T) => void) => void): (callback: Callback<T>) => () => void;
34
+ static emitterize<T>(setter: (callback: (data: T) => void) => void): LazyNativeEmitter<T>;
31
35
  }
32
36
  export {};
33
37
  //# sourceMappingURL=LazyNativeEmitter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LazyNativeEmitter.d.ts","sourceRoot":"","sources":["../../../../src/utils/LazyNativeEmitter.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAA;AAEnC;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,iBAAiB,CAAC,CAAC;IAC9B,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,SAAS,CAAmC;IAEpD,YAAY,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,KAAK,IAAI,EAExD;IAED,OAAO,CAAC,YAAY;IAWpB,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAI7C;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,EACjB,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,KAAK,IAAI,GAC5C,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,CAGvC;CACF"}
1
+ {"version":3,"file":"LazyNativeEmitter.d.ts","sourceRoot":"","sources":["../../../../src/utils/LazyNativeEmitter.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAA;AAEnC;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,iBAAiB,CAAC,CAAC;IAC9B,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,SAAS,CAAmC;IAEpD,YAAY,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,KAAK,IAAI,EAExD;IAED,OAAO,CAAC,YAAY;IAWpB,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAI7C;IAED;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,EACjB,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,KAAK,IAAI,GAC5C,iBAAiB,CAAC,CAAC,CAAC,CAEtB;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-audio-browser",
3
- "version": "0.2.0-next.7",
3
+ "version": "0.2.0-next.8",
4
4
  "description": "react-native-audio-browser is a react native package built with Nitro",
5
5
  "keywords": [
6
6
  "react-native",
@@ -45,6 +45,7 @@
45
45
  },
46
46
  "scripts": {
47
47
  "android:format": "yarn workspace example-native android:format",
48
+ "android:format:check": "yarn workspace example-native android:format:check",
48
49
  "android:ide": "yarn workspace example-native android:ide",
49
50
  "android:logs": "react-native log-android",
50
51
  "android:test": "yarn workspace example-native android:test",
@@ -54,6 +55,7 @@
54
55
  "prepare": "bob build",
55
56
  "example": "yarn workspace example-native",
56
57
  "ci:format": "oxfmt --check src",
58
+ "ci:format:ios": "swiftformat --lint ios",
57
59
  "ci:lint": "oxlint --type-aware src",
58
60
  "format": "oxfmt --write",
59
61
  "ios:format": "swiftformat ios",
@@ -1,4 +1,7 @@
1
+ // `./native` is deliberately NOT re-exported. It holds the raw Nitro hybrid
2
+ // object, whose `on*` properties are single callback slots that the emitters in
3
+ // `./features` own — a consumer assigning one silently unsubscribes every hook
4
+ // in the library. Feature modules import it directly; nothing else should.
1
5
  export * from './features'
2
- export * from './native'
3
6
  export * from './types'
4
7
  export * from './utils/useDebug'
@@ -19,7 +19,7 @@ export function isCarConnected(): boolean {
19
19
  * Subscribes to car connection changes (CarPlay on iOS, Android Auto /
20
20
  * Android Automotive on Android). Never fires on web.
21
21
  * @param callback - Called with the new connection state
22
- * @returns Cleanup function to unsubscribe
22
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
23
23
  */
24
24
  export const onCarConnectedChanged = NativeUpdatedValue.emitterize<boolean>(
25
25
  (cb) => (nativeBrowser.onCarConnectedChanged = cb)
@@ -46,7 +46,7 @@ export function setEqualizerLevels(levels: number[]): void {
46
46
  /**
47
47
  * Subscribes to equalizer settings changes (Android only).
48
48
  * @param callback - Called when equalizer settings change
49
- * @returns Cleanup function to unsubscribe
49
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
50
50
  */
51
51
  export const onEqualizerChanged =
52
52
  NativeUpdatedValue.emitterize<EqualizerSettings>(
@@ -134,7 +134,7 @@ export function getPlaybackError(): PlaybackError | undefined {
134
134
  /**
135
135
  * Subscribes to playback error events.
136
136
  * @param callback - Called when a playback error occurs
137
- * @returns Cleanup function to unsubscribe
137
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
138
138
  */
139
139
  export const onPlaybackError =
140
140
  NativeUpdatedValue.emitterize<PlaybackErrorEvent>(
@@ -165,7 +165,7 @@ export function getNavigationError(): NavigationError | undefined {
165
165
  /**
166
166
  * Subscribes to navigation error events.
167
167
  * @param callback - Called when a navigation error occurs
168
- * @returns Cleanup function to unsubscribe
168
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
169
169
  */
170
170
  export const onNavigationError =
171
171
  NativeUpdatedValue.emitterize<NavigationErrorEvent>(
@@ -198,7 +198,7 @@ export function getFormattedNavigationError():
198
198
  /**
199
199
  * Subscribes to formatted navigation error changes.
200
200
  * @param callback - Called when the formatted navigation error changes
201
- * @returns Cleanup function to unsubscribe
201
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
202
202
  */
203
203
  export const onFormattedNavigationError = NativeUpdatedValue.emitterize<
204
204
  FormattedNavigationError | undefined
@@ -82,7 +82,7 @@ export interface FavoriteChangedEvent {
82
82
  * The native side has already updated the track's favorite state and UI.
83
83
  *
84
84
  * @param callback - Called with the track and its new favorite state
85
- * @returns Cleanup function to unsubscribe
85
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
86
86
  *
87
87
  * @example
88
88
  * ```ts
@@ -148,7 +148,7 @@ export function clearGate(): void {
148
148
 
149
149
  /**
150
150
  * Subscribes to gate events (fired when a request is gated).
151
- * @returns Cleanup function to unsubscribe.
151
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
152
152
  */
153
153
  export const onGate = LazyNativeEmitter.emitterize<GateEvent>(
154
154
  (cb) => (nativeBrowser.onGate = cb)
@@ -99,7 +99,7 @@ export interface ChapterMetadata {
99
99
  /**
100
100
  * Subscribes to chapter metadata events.
101
101
  * @param callback - Called when chapter metadata is received
102
- * @returns Cleanup function to unsubscribe
102
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
103
103
  */
104
104
  export const onChapterMetadata = NativeUpdatedValue.emitterize<
105
105
  ChapterMetadata[]
@@ -108,7 +108,7 @@ export const onChapterMetadata = NativeUpdatedValue.emitterize<
108
108
  /**
109
109
  * Subscribes to track metadata events.
110
110
  * @param callback - Called when static track metadata is received
111
- * @returns Cleanup function to unsubscribe
111
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
112
112
  */
113
113
  export const onTrackMetadata = NativeUpdatedValue.emitterize<TrackMetadata>(
114
114
  (cb) => (nativeBrowser.onTrackMetadata = cb)
@@ -117,7 +117,7 @@ export const onTrackMetadata = NativeUpdatedValue.emitterize<TrackMetadata>(
117
117
  /**
118
118
  * Subscribes to timed metadata events (ICY/ID3 from live streams).
119
119
  * @param callback - Called when stream metadata is received (title, artist from ICY/ID3 tags)
120
- * @returns Cleanup function to unsubscribe
120
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
121
121
  */
122
122
  export const onTimedMetadata = NativeUpdatedValue.emitterize<TimedMetadata>(
123
123
  (cb) => (nativeBrowser.onTimedMetadata = cb)
@@ -17,7 +17,7 @@ export function getOnline(): boolean {
17
17
  /**
18
18
  * Subscribes to network connectivity changes.
19
19
  * @param callback - Called when network state changes
20
- * @returns Cleanup function to unsubscribe
20
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
21
21
  */
22
22
  export const onOnlineChanged = NativeUpdatedValue.emitterize<boolean>(
23
23
  (cb) => (nativeBrowser.onOnlineChanged = cb)
@@ -74,7 +74,7 @@ export function clearNowPlayingFlash(): void {
74
74
  * Subscribes to now playing metadata change events.
75
75
  * Fires when updateNowPlaying is called or when the track changes.
76
76
  * @param callback - Called when now playing metadata changes
77
- * @returns Cleanup function to unsubscribe
77
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
78
78
  */
79
79
  export const onNowPlayingChanged =
80
80
  NativeUpdatedValue.emitterize<NowPlayingMetadata>(
@@ -46,7 +46,7 @@ export function getOutput(): Output | undefined {
46
46
  /**
47
47
  * Subscribes to current-output changes (headphones unplugged, Bluetooth speaker
48
48
  * connected, AirPlay/route selected). Fires on iOS and Android 11+; never below.
49
- * @returns Cleanup function to unsubscribe.
49
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
50
50
  */
51
51
  export const onOutputChanged = NativeUpdatedValue.emitterize<Output>(
52
52
  (cb) => (nativeBrowser.onOutputChanged = cb)
@@ -35,7 +35,7 @@ export function setPlayWhenReady(playWhenReady: boolean): void {
35
35
  /**
36
36
  * Subscribes to play when ready changes.
37
37
  * @param callback - Called when playWhenReady changes
38
- * @returns Cleanup function to unsubscribe
38
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
39
39
  */
40
40
  export const onPlayWhenReadyChanged =
41
41
  NativeUpdatedValue.emitterize<PlaybackPlayWhenReadyChangedEvent>(
@@ -23,7 +23,7 @@ export function getPlayingState(): PlayingState {
23
23
  /**
24
24
  * Subscribes to playing state changes.
25
25
  * @param callback - Called when playing or buffering state changes
26
- * @returns Cleanup function to unsubscribe
26
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
27
27
  */
28
28
  export const onPlayingState = NativeUpdatedValue.emitterize<PlayingState>(
29
29
  (cb) => (nativeBrowser.onPlaybackPlayingState = cb)
@@ -46,7 +46,7 @@ export function getProgress(): Progress {
46
46
  /**
47
47
  * Subscribes to playback progress updates.
48
48
  * @param callback - Called periodically with playback progress updates
49
- * @returns Cleanup function to unsubscribe
49
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
50
50
  */
51
51
  export const onProgressUpdated =
52
52
  NativeUpdatedValue.emitterize<PlaybackProgressUpdatedEvent>(
@@ -55,7 +55,7 @@ export function getPlayback(): Playback {
55
55
  /**
56
56
  * Subscribes to playback state changes.
57
57
  * @param callback - Called when the playback state changes
58
- * @returns Cleanup function to unsubscribe
58
+ * @returns An emitter — subscribe with `addListener(callback)`, which returns a cleanup function
59
59
  */
60
60
  export const onPlaybackChanged = NativeUpdatedValue.emitterize<Playback>(
61
61
  (cb) => (nativeBrowser.onPlaybackChanged = cb)
@@ -13,12 +13,26 @@ vi.mock('../queue/activeTrack', () => ({
13
13
  onActiveTrackChanged: { addListener: vi.fn(() => () => {}) }
14
14
  }))
15
15
 
16
- import { trackPlaybackTime, __emitTickForTests } from './trackPlaybackTime'
16
+ import { trackPlaybackTime } from './trackPlaybackTime'
17
17
 
18
18
  beforeEach(() => {
19
19
  nativeMock.setPlaybackIntervalEnabled.mockClear()
20
20
  })
21
21
 
22
+ /**
23
+ * Drives the fan-out through the same slot the native side does: `install()`
24
+ * assigns `onPlaybackInterval`, so calling it here also asserts that wiring
25
+ * exists — a dedicated test-only export would skip it.
26
+ */
27
+ function tick(times = 1) {
28
+ for (let i = 0; i < times; i++) {
29
+ if (!nativeMock.onPlaybackInterval) {
30
+ throw new Error('trackPlaybackTime never installed onPlaybackInterval')
31
+ }
32
+ nativeMock.onPlaybackInterval()
33
+ }
34
+ }
35
+
22
36
  describe('trackPlaybackTime', () => {
23
37
  it('enables native tick on first subscriber, disables on last', () => {
24
38
  const a = trackPlaybackTime(() => {}, 5)
@@ -38,17 +52,17 @@ describe('trackPlaybackTime', () => {
38
52
  (e) => calls.push({ total: e.total, sinceLast: e.sinceLast }),
39
53
  3
40
54
  )
41
- __emitTickForTests(2)
55
+ tick(2)
42
56
  expect(calls).toEqual([])
43
- __emitTickForTests(1) // total now 3 → fires
57
+ tick(1) // total now 3 → fires
44
58
  expect(calls).toEqual([{ total: 3, sinceLast: 3 }])
45
- __emitTickForTests(3) // total now 6 → fires again
59
+ tick(3) // total now 6 → fires again
46
60
  expect(calls).toEqual([
47
61
  { total: 3, sinceLast: 3 },
48
62
  { total: 6, sinceLast: 3 }
49
63
  ])
50
64
  cancel()
51
- __emitTickForTests(3)
65
+ tick(3)
52
66
  expect(calls).toHaveLength(2) // cancelled
53
67
  })
54
68
 
@@ -57,7 +71,7 @@ describe('trackPlaybackTime', () => {
57
71
  const slow: number[] = []
58
72
  const cancelFast = trackPlaybackTime((e) => fast.push(e.total), 1)
59
73
  const cancelSlow = trackPlaybackTime((e) => slow.push(e.total), 2)
60
- __emitTickForTests(2)
74
+ tick(2)
61
75
  expect(fast).toEqual([1, 2])
62
76
  expect(slow).toEqual([2])
63
77
  cancelFast()
@@ -99,8 +99,3 @@ export function trackPlaybackTime(
99
99
  if (handles.size === 0) nativeBrowser.setPlaybackIntervalEnabled(false)
100
100
  }
101
101
  }
102
-
103
- /** @internal test hook — drives the fan-out without a native tick. */
104
- export function __emitTickForTests(ticks = 1) {
105
- for (let i = 0; i < ticks; i++) onTick()
106
- }