@rntp/player 5.0.0-beta.1 → 5.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/RNTPPlayer.podspec +1 -0
- package/android/src/main/java/com/doublesymmetry/trackplayer/TrackPlayerModule.kt +61 -1
- package/android/src/main/java/com/doublesymmetry/trackplayer/TrackPlayerPlaybackService.kt +148 -0
- package/android/src/main/java/com/doublesymmetry/trackplayer/models/EmitEventType.kt +11 -0
- package/ios/CarPlay/BrowseTreeStore.swift +40 -0
- package/ios/CarPlay/RNTPCarPlaySceneDelegate.swift +254 -0
- package/ios/TrackPlayer.swift +135 -1
- package/ios/TrackPlayerBridge.mm +9 -0
- package/ios/models/EmitEvent.swift +10 -0
- package/lib/commonjs/NativeTrackPlayer.js.map +1 -1
- package/lib/commonjs/audio.js +58 -5
- package/lib/commonjs/audio.js.map +1 -1
- package/lib/commonjs/events/SleepTimerTriggered.js +2 -0
- package/lib/commonjs/events/SleepTimerTriggered.js.map +1 -0
- package/lib/commonjs/events/index.js +13 -0
- package/lib/commonjs/events/index.js.map +1 -1
- package/lib/module/NativeTrackPlayer.js.map +1 -1
- package/lib/module/audio.js +54 -5
- package/lib/module/audio.js.map +1 -1
- package/lib/module/events/SleepTimerTriggered.js +2 -0
- package/lib/module/events/SleepTimerTriggered.js.map +1 -0
- package/lib/module/events/index.js +2 -0
- package/lib/module/events/index.js.map +1 -1
- package/lib/typescript/src/NativeTrackPlayer.d.ts +4 -0
- package/lib/typescript/src/NativeTrackPlayer.d.ts.map +1 -1
- package/lib/typescript/src/audio.d.ts +46 -4
- package/lib/typescript/src/audio.d.ts.map +1 -1
- package/lib/typescript/src/events/SleepTimerTriggered.d.ts +5 -0
- package/lib/typescript/src/events/SleepTimerTriggered.d.ts.map +1 -0
- package/lib/typescript/src/events/index.d.ts +5 -1
- package/lib/typescript/src/events/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/NativeTrackPlayer.ts +6 -0
- package/src/audio.ts +67 -6
- package/src/events/SleepTimerTriggered.ts +4 -0
- package/src/events/index.ts +4 -0
|
@@ -137,17 +137,59 @@ export declare function setShuffleEnabled(enabled: boolean): void;
|
|
|
137
137
|
/** Update the HTTP headers used for progress sync POST requests. */
|
|
138
138
|
export declare function updateProgressSyncHeaders(headers: Record<string, string>): void;
|
|
139
139
|
/**
|
|
140
|
-
* Set the media browse tree for Android Auto and
|
|
141
|
-
* Each category becomes a top-level browsable folder
|
|
140
|
+
* Set the media browse tree for Android Auto and CarPlay.
|
|
141
|
+
* Each category becomes a top-level browsable folder (Android Auto) or tab (CarPlay);
|
|
142
|
+
* its items are playable leaves.
|
|
142
143
|
*
|
|
143
|
-
* When a user selects an item
|
|
144
|
+
* When a user selects an item, the native player loads and plays it
|
|
144
145
|
* without JS intervention.
|
|
145
146
|
*
|
|
146
147
|
* @remarks
|
|
147
|
-
* - On
|
|
148
|
+
* - On CarPlay, a maximum of 4 tabs are shown. If more than 4 categories are provided,
|
|
149
|
+
* the first 3 become tabs and the rest are grouped under a "More" tab.
|
|
148
150
|
* - Call again to update the tree (e.g. after loading new content)
|
|
149
151
|
*/
|
|
150
152
|
export declare function setBrowseTree(categories: BrowseCategory[]): void;
|
|
153
|
+
/**
|
|
154
|
+
* Sets a countdown sleep timer. Playback pauses after `seconds` of wall clock time.
|
|
155
|
+
* The timer keeps counting even if playback is paused.
|
|
156
|
+
*
|
|
157
|
+
* @param seconds Duration in seconds before playback pauses.
|
|
158
|
+
* @param options.fadeOutSeconds Gradually reduce volume over the last N seconds.
|
|
159
|
+
* Clamped to `seconds` if it exceeds it. Defaults to 0 (no fade).
|
|
160
|
+
*
|
|
161
|
+
* @remarks Cancels any existing sleep timer (last one wins).
|
|
162
|
+
*/
|
|
163
|
+
export declare function sleepAfterTime(seconds: number, options?: {
|
|
164
|
+
fadeOutSeconds?: number;
|
|
165
|
+
}): void;
|
|
166
|
+
/**
|
|
167
|
+
* Pauses playback after the media item at `index` finishes playing.
|
|
168
|
+
*
|
|
169
|
+
* @param index Queue index of the target media item. Defaults to the active item.
|
|
170
|
+
*
|
|
171
|
+
* @remarks
|
|
172
|
+
* - Cancels any existing sleep timer (last one wins).
|
|
173
|
+
* - Index is absolute — queue mutations after setting may shift which item it points to.
|
|
174
|
+
* - No fade-out support (no known time horizon).
|
|
175
|
+
*/
|
|
176
|
+
export declare function sleepAfterMediaItemAtIndex(index?: number): void;
|
|
177
|
+
/**
|
|
178
|
+
* Returns the current sleep timer state, or `null` if none is active.
|
|
179
|
+
*/
|
|
180
|
+
export declare function getSleepTimer(): {
|
|
181
|
+
type: 'time';
|
|
182
|
+
remainingSeconds: number;
|
|
183
|
+
fadeOutSeconds: number;
|
|
184
|
+
} | {
|
|
185
|
+
type: 'mediaItem';
|
|
186
|
+
index: number;
|
|
187
|
+
} | null;
|
|
188
|
+
/**
|
|
189
|
+
* Cancels the active sleep timer. If a volume fade is in progress,
|
|
190
|
+
* restores the original volume immediately.
|
|
191
|
+
*/
|
|
192
|
+
export declare function cancelSleepTimer(): void;
|
|
151
193
|
/**
|
|
152
194
|
* Tears down the player and releases all resources.
|
|
153
195
|
* After calling this, you must call `setupPlayer()` again to use the player.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../../src/audio.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../../src/audio.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SleepTimerTriggered.d.ts","sourceRoot":"","sources":["../../../../src/events/SleepTimerTriggered.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC,0EAA0E;IAC1E,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;CAC5B"}
|
|
@@ -10,6 +10,7 @@ import type { RemotePlayEvent, RemotePauseEvent, RemoteNextEvent, RemotePrevious
|
|
|
10
10
|
import type { PlaybackErrorEvent } from './PlaybackError';
|
|
11
11
|
import type { PlaybackProgressUpdatedEvent } from './PlaybackProgressUpdated';
|
|
12
12
|
import type { QueueChangedEvent } from './QueueChanged';
|
|
13
|
+
import type { SleepTimerTriggeredEvent } from './SleepTimerTriggered';
|
|
13
14
|
export declare enum Event {
|
|
14
15
|
PlaybackStateChanged = "event.playback-state-changed",
|
|
15
16
|
IsPlayingChanged = "event.is-playing-changed",
|
|
@@ -25,7 +26,8 @@ export declare enum Event {
|
|
|
25
26
|
RemoteStop = "event.remote-stop",
|
|
26
27
|
RemoteSeek = "event.remote-seek",
|
|
27
28
|
RemoteSkipForward = "event.remote-skip-forward",
|
|
28
|
-
RemoteSkipBackward = "event.remote-skip-backward"
|
|
29
|
+
RemoteSkipBackward = "event.remote-skip-backward",
|
|
30
|
+
SleepTimerTriggered = "event.sleep-timer-triggered"
|
|
29
31
|
}
|
|
30
32
|
export type EventPayloadByEvent = {
|
|
31
33
|
[Event.PlaybackStateChanged]: PlaybackStateChangedEvent;
|
|
@@ -43,6 +45,7 @@ export type EventPayloadByEvent = {
|
|
|
43
45
|
[Event.RemoteSeek]: RemoteSeekEvent;
|
|
44
46
|
[Event.RemoteSkipForward]: RemoteSkipForwardEvent;
|
|
45
47
|
[Event.RemoteSkipBackward]: RemoteSkipBackwardEvent;
|
|
48
|
+
[Event.SleepTimerTriggered]: SleepTimerTriggeredEvent;
|
|
46
49
|
};
|
|
47
50
|
type Simplify<T> = {
|
|
48
51
|
[KeyType in keyof T]: T[KeyType];
|
|
@@ -64,4 +67,5 @@ export * from './RemoteControl';
|
|
|
64
67
|
export * from './PlaybackError';
|
|
65
68
|
export * from './PlaybackProgressUpdated';
|
|
66
69
|
export * from './QueueChanged';
|
|
70
|
+
export * from './SleepTimerTriggered';
|
|
67
71
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/events/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/events/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/NativeTrackPlayer.ts
CHANGED
|
@@ -76,6 +76,12 @@ export interface Spec extends TurboModule {
|
|
|
76
76
|
// Progress Sync
|
|
77
77
|
updateProgressSyncHeaders(headers: UnsafeObject): void;
|
|
78
78
|
|
|
79
|
+
// Sleep Timer
|
|
80
|
+
sleepAfterTime(seconds: number, fadeOutSeconds: number): void;
|
|
81
|
+
sleepAfterMediaItemAtIndex(index: number): void;
|
|
82
|
+
getSleepTimer(): UnsafeObject | null;
|
|
83
|
+
cancelSleepTimer(): void;
|
|
84
|
+
|
|
79
85
|
// Destroy
|
|
80
86
|
destroy(): void;
|
|
81
87
|
|
package/src/audio.ts
CHANGED
|
@@ -413,19 +413,19 @@ export function updateProgressSyncHeaders(
|
|
|
413
413
|
// ─── Browse Tree ─────────────────────────────────────
|
|
414
414
|
|
|
415
415
|
/**
|
|
416
|
-
* Set the media browse tree for Android Auto and
|
|
417
|
-
* Each category becomes a top-level browsable folder
|
|
416
|
+
* Set the media browse tree for Android Auto and CarPlay.
|
|
417
|
+
* Each category becomes a top-level browsable folder (Android Auto) or tab (CarPlay);
|
|
418
|
+
* its items are playable leaves.
|
|
418
419
|
*
|
|
419
|
-
* When a user selects an item
|
|
420
|
+
* When a user selects an item, the native player loads and plays it
|
|
420
421
|
* without JS intervention.
|
|
421
422
|
*
|
|
422
423
|
* @remarks
|
|
423
|
-
* - On
|
|
424
|
+
* - On CarPlay, a maximum of 4 tabs are shown. If more than 4 categories are provided,
|
|
425
|
+
* the first 3 become tabs and the rest are grouped under a "More" tab.
|
|
424
426
|
* - Call again to update the tree (e.g. after loading new content)
|
|
425
427
|
*/
|
|
426
428
|
export function setBrowseTree(categories: BrowseCategory[]): void {
|
|
427
|
-
if (Platform.OS !== 'android') return;
|
|
428
|
-
|
|
429
429
|
const resolved = categories.map((cat) => ({
|
|
430
430
|
...cat,
|
|
431
431
|
items: cat.items.map(resolveMediaItem),
|
|
@@ -433,6 +433,67 @@ export function setBrowseTree(categories: BrowseCategory[]): void {
|
|
|
433
433
|
TrackPlayer.setBrowseTree(resolved);
|
|
434
434
|
}
|
|
435
435
|
|
|
436
|
+
// ─── Sleep Timer ─────────────────────────────────────
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* Sets a countdown sleep timer. Playback pauses after `seconds` of wall clock time.
|
|
440
|
+
* The timer keeps counting even if playback is paused.
|
|
441
|
+
*
|
|
442
|
+
* @param seconds Duration in seconds before playback pauses.
|
|
443
|
+
* @param options.fadeOutSeconds Gradually reduce volume over the last N seconds.
|
|
444
|
+
* Clamped to `seconds` if it exceeds it. Defaults to 0 (no fade).
|
|
445
|
+
*
|
|
446
|
+
* @remarks Cancels any existing sleep timer (last one wins).
|
|
447
|
+
*/
|
|
448
|
+
export function sleepAfterTime(
|
|
449
|
+
seconds: number,
|
|
450
|
+
options?: { fadeOutSeconds?: number }
|
|
451
|
+
): void {
|
|
452
|
+
TrackPlayer.sleepAfterTime(seconds, options?.fadeOutSeconds ?? 0);
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
/**
|
|
456
|
+
* Pauses playback after the media item at `index` finishes playing.
|
|
457
|
+
*
|
|
458
|
+
* @param index Queue index of the target media item. Defaults to the active item.
|
|
459
|
+
*
|
|
460
|
+
* @remarks
|
|
461
|
+
* - Cancels any existing sleep timer (last one wins).
|
|
462
|
+
* - Index is absolute — queue mutations after setting may shift which item it points to.
|
|
463
|
+
* - No fade-out support (no known time horizon).
|
|
464
|
+
*/
|
|
465
|
+
export function sleepAfterMediaItemAtIndex(index?: number): void {
|
|
466
|
+
const resolvedIndex = index ?? getActiveMediaItemIndex() ?? 0;
|
|
467
|
+
TrackPlayer.sleepAfterMediaItemAtIndex(resolvedIndex);
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
/**
|
|
471
|
+
* Returns the current sleep timer state, or `null` if none is active.
|
|
472
|
+
*/
|
|
473
|
+
export function getSleepTimer():
|
|
474
|
+
| {
|
|
475
|
+
type: 'time';
|
|
476
|
+
remainingSeconds: number;
|
|
477
|
+
fadeOutSeconds: number;
|
|
478
|
+
}
|
|
479
|
+
| {
|
|
480
|
+
type: 'mediaItem';
|
|
481
|
+
index: number;
|
|
482
|
+
}
|
|
483
|
+
| null {
|
|
484
|
+
const result = TrackPlayer.getSleepTimer();
|
|
485
|
+
if (result == null) return null;
|
|
486
|
+
return result as any;
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
/**
|
|
490
|
+
* Cancels the active sleep timer. If a volume fade is in progress,
|
|
491
|
+
* restores the original volume immediately.
|
|
492
|
+
*/
|
|
493
|
+
export function cancelSleepTimer(): void {
|
|
494
|
+
TrackPlayer.cancelSleepTimer();
|
|
495
|
+
}
|
|
496
|
+
|
|
436
497
|
// ─── Destroy ─────────────────────────────────────────
|
|
437
498
|
|
|
438
499
|
/**
|
package/src/events/index.ts
CHANGED
|
@@ -20,6 +20,7 @@ import type {
|
|
|
20
20
|
import type { PlaybackErrorEvent } from './PlaybackError';
|
|
21
21
|
import type { PlaybackProgressUpdatedEvent } from './PlaybackProgressUpdated';
|
|
22
22
|
import type { QueueChangedEvent } from './QueueChanged';
|
|
23
|
+
import type { SleepTimerTriggeredEvent } from './SleepTimerTriggered';
|
|
23
24
|
|
|
24
25
|
export enum Event {
|
|
25
26
|
PlaybackStateChanged = 'event.playback-state-changed',
|
|
@@ -37,6 +38,7 @@ export enum Event {
|
|
|
37
38
|
RemoteSeek = 'event.remote-seek',
|
|
38
39
|
RemoteSkipForward = 'event.remote-skip-forward',
|
|
39
40
|
RemoteSkipBackward = 'event.remote-skip-backward',
|
|
41
|
+
SleepTimerTriggered = 'event.sleep-timer-triggered',
|
|
40
42
|
}
|
|
41
43
|
|
|
42
44
|
export type EventPayloadByEvent = {
|
|
@@ -55,6 +57,7 @@ export type EventPayloadByEvent = {
|
|
|
55
57
|
[Event.RemoteSeek]: RemoteSeekEvent;
|
|
56
58
|
[Event.RemoteSkipForward]: RemoteSkipForwardEvent;
|
|
57
59
|
[Event.RemoteSkipBackward]: RemoteSkipBackwardEvent;
|
|
60
|
+
[Event.SleepTimerTriggered]: SleepTimerTriggeredEvent;
|
|
58
61
|
};
|
|
59
62
|
|
|
60
63
|
type Simplify<T> = { [KeyType in keyof T]: T[KeyType] } & {};
|
|
@@ -77,3 +80,4 @@ export * from './RemoteControl';
|
|
|
77
80
|
export * from './PlaybackError';
|
|
78
81
|
export * from './PlaybackProgressUpdated';
|
|
79
82
|
export * from './QueueChanged';
|
|
83
|
+
export * from './SleepTimerTriggered';
|