react-native-nitro-player 0.3.0-alpha.9 → 0.4.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.
- package/README.md +444 -4
- package/android/build.gradle +4 -1
- package/android/src/main/AndroidManifest.xml +16 -1
- package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridAndroidAutoMediaLibrary.kt +2 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridAudioDevices.kt +8 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridDownloadManager.kt +225 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridEqualizer.kt +105 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridPlayerQueue.kt +6 -6
- package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridTrackPlayer.kt +37 -12
- package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerCore.kt +970 -213
- package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadDatabase.kt +475 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadFileManager.kt +159 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadManagerCore.kt +489 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadWorker.kt +209 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/equalizer/EqualizerCore.kt +486 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaBrowserService.kt +3 -1
- package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaSessionManager.kt +14 -6
- package/android/src/main/java/com/margelo/nitro/nitroplayer/playlist/PlaylistManager.kt +27 -0
- package/ios/HybridDownloadManager.swift +226 -0
- package/ios/HybridEqualizer.swift +111 -0
- package/ios/HybridTrackPlayer.swift +36 -8
- package/ios/core/TrackPlayerCore.swift +998 -276
- package/ios/download/DownloadDatabase.swift +493 -0
- package/ios/download/DownloadFileManager.swift +241 -0
- package/ios/download/DownloadManagerCore.swift +923 -0
- package/ios/equalizer/EqualizerCore.swift +685 -0
- package/ios/media/MediaSessionManager.swift +40 -28
- package/ios/playlist/PlaylistManager.swift +40 -9
- package/ios/queue/HybridPlayerQueue.swift +33 -13
- package/lib/hooks/downloadCallbackManager.d.ts +36 -0
- package/lib/hooks/downloadCallbackManager.js +108 -0
- package/lib/hooks/equalizerCallbackManager.d.ts +37 -0
- package/lib/hooks/equalizerCallbackManager.js +109 -0
- package/lib/hooks/index.d.ts +16 -0
- package/lib/hooks/index.js +10 -0
- package/lib/hooks/useActualQueue.d.ts +48 -0
- package/lib/hooks/useActualQueue.js +98 -0
- package/lib/hooks/useDownloadActions.d.ts +26 -0
- package/lib/hooks/useDownloadActions.js +117 -0
- package/lib/hooks/useDownloadProgress.d.ts +25 -0
- package/lib/hooks/useDownloadProgress.js +79 -0
- package/lib/hooks/useDownloadStorage.d.ts +19 -0
- package/lib/hooks/useDownloadStorage.js +60 -0
- package/lib/hooks/useDownloadedTracks.d.ts +25 -0
- package/lib/hooks/useDownloadedTracks.js +69 -0
- package/lib/hooks/useEqualizer.d.ts +25 -0
- package/lib/hooks/useEqualizer.js +124 -0
- package/lib/hooks/useEqualizerPresets.d.ts +22 -0
- package/lib/hooks/useEqualizerPresets.js +96 -0
- package/lib/hooks/useNowPlaying.js +3 -2
- package/lib/hooks/useOnChangeTrack.js +15 -12
- package/lib/hooks/useOnPlaybackStateChange.js +16 -13
- package/lib/hooks/usePlaylist.d.ts +48 -0
- package/lib/hooks/usePlaylist.js +136 -0
- package/lib/index.d.ts +6 -0
- package/lib/index.js +6 -0
- package/lib/specs/DownloadManager.nitro.d.ts +152 -0
- package/lib/specs/DownloadManager.nitro.js +1 -0
- package/lib/specs/Equalizer.nitro.d.ts +43 -0
- package/lib/specs/Equalizer.nitro.js +1 -0
- package/lib/specs/TrackPlayer.nitro.d.ts +6 -2
- package/lib/types/DownloadTypes.d.ts +110 -0
- package/lib/types/DownloadTypes.js +1 -0
- package/lib/types/EqualizerTypes.d.ts +52 -0
- package/lib/types/EqualizerTypes.js +1 -0
- package/lib/types/PlayerQueue.d.ts +4 -0
- package/nitro.json +8 -0
- package/nitrogen/generated/android/NitroPlayer+autolinking.cmake +10 -1
- package/nitrogen/generated/android/NitroPlayerOnLoad.cpp +32 -2
- package/nitrogen/generated/android/c++/JCurrentPlayingType.hpp +65 -0
- package/nitrogen/generated/android/c++/JDownloadConfig.hpp +92 -0
- package/nitrogen/generated/android/c++/JDownloadError.hpp +71 -0
- package/nitrogen/generated/android/c++/JDownloadErrorReason.hpp +74 -0
- package/nitrogen/generated/android/c++/JDownloadProgress.hpp +79 -0
- package/nitrogen/generated/android/c++/JDownloadQueueStatus.hpp +81 -0
- package/nitrogen/generated/android/c++/JDownloadState.hpp +71 -0
- package/nitrogen/generated/android/c++/JDownloadStorageInfo.hpp +73 -0
- package/nitrogen/generated/android/c++/JDownloadTask.hpp +108 -0
- package/nitrogen/generated/android/c++/JDownloadedPlaylist.hpp +111 -0
- package/nitrogen/generated/android/c++/JDownloadedTrack.hpp +92 -0
- package/nitrogen/generated/android/c++/JEqualizerBand.hpp +69 -0
- package/nitrogen/generated/android/c++/JEqualizerPreset.hpp +78 -0
- package/nitrogen/generated/android/c++/JEqualizerState.hpp +91 -0
- package/nitrogen/generated/android/c++/JFunc_void_DownloadProgress.hpp +80 -0
- package/nitrogen/generated/android/c++/JFunc_void_DownloadedTrack.hpp +89 -0
- package/nitrogen/generated/android/c++/JFunc_void_TrackItem_std__optional_Reason_.hpp +2 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__optional_std__variant_nitro__NullType__std__string__.hpp +81 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__string_Playlist_std__optional_QueueOperation_.hpp +2 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__string_std__string_DownloadState_std__optional_DownloadError_.hpp +83 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_EqualizerBand_.hpp +97 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_Playlist__std__optional_QueueOperation_.hpp +2 -0
- package/nitrogen/generated/android/c++/JGainRange.hpp +61 -0
- package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.cpp +470 -0
- package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.hpp +99 -0
- package/nitrogen/generated/android/c++/JHybridEqualizerSpec.cpp +204 -0
- package/nitrogen/generated/android/c++/JHybridEqualizerSpec.hpp +82 -0
- package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.cpp +2 -0
- package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.cpp +117 -15
- package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.hpp +6 -2
- package/nitrogen/generated/android/c++/JPlaybackSource.hpp +62 -0
- package/nitrogen/generated/android/c++/JPlayerState.hpp +11 -3
- package/nitrogen/generated/android/c++/JPlaylist.hpp +2 -0
- package/nitrogen/generated/android/c++/JPresetType.hpp +59 -0
- package/nitrogen/generated/android/c++/JStorageLocation.hpp +59 -0
- package/nitrogen/generated/android/c++/JTrackItem.hpp +9 -3
- package/nitrogen/generated/android/c++/JTrackPlayerState.hpp +3 -3
- package/nitrogen/generated/android/c++/JVariant_NullType_Double.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +69 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_DownloadError.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_DownloadError.hpp +74 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_DownloadTask.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_DownloadTask.hpp +84 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedPlaylist.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedPlaylist.hpp +85 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedTrack.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedTrack.hpp +80 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Playlist.hpp +2 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_TrackItem.hpp +2 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/CurrentPlayingType.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadConfig.kt +59 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadError.kt +47 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadErrorReason.kt +26 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadProgress.kt +53 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadQueueStatus.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadState.kt +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadStorageInfo.kt +50 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadTask.kt +65 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadedPlaylist.kt +53 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadedTrack.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/EqualizerBand.kt +47 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/EqualizerPreset.kt +44 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/EqualizerState.kt +44 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_DownloadProgress.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_DownloadedTrack.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__optional_std__variant_nitro__NullType__std__string__.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__string_std__string_DownloadState_std__optional_DownloadError_.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__vector_EqualizerBand_.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/GainRange.kt +41 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridDownloadManagerSpec.kt +210 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridEqualizerSpec.kt +141 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridTrackPlayerSpec.kt +19 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PlaybackSource.kt +22 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PlayerState.kt +6 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PresetType.kt +21 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/StorageLocation.kt +21 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/TrackItem.kt +7 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/TrackPlayerState.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_Double.kt +59 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadError.kt +59 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadTask.kt +59 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadedPlaylist.kt +59 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadedTrack.kt +59 -0
- package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.cpp +138 -8
- package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.hpp +1046 -121
- package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Umbrella.hpp +66 -0
- package/nitrogen/generated/ios/NitroPlayerAutolinking.mm +16 -0
- package/nitrogen/generated/ios/NitroPlayerAutolinking.swift +30 -0
- package/nitrogen/generated/ios/c++/HybridDownloadManagerSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridDownloadManagerSpecSwift.hpp +386 -0
- package/nitrogen/generated/ios/c++/HybridEqualizerSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridEqualizerSpecSwift.hpp +223 -0
- package/nitrogen/generated/ios/c++/HybridPlayerQueueSpecSwift.hpp +1 -0
- package/nitrogen/generated/ios/c++/HybridTrackPlayerSpecSwift.hpp +46 -6
- package/nitrogen/generated/ios/swift/CurrentPlayingType.swift +48 -0
- package/nitrogen/generated/ios/swift/DownloadConfig.swift +270 -0
- package/nitrogen/generated/ios/swift/DownloadError.swift +69 -0
- package/nitrogen/generated/ios/swift/DownloadErrorReason.swift +60 -0
- package/nitrogen/generated/ios/swift/DownloadProgress.swift +91 -0
- package/nitrogen/generated/ios/swift/DownloadQueueStatus.swift +102 -0
- package/nitrogen/generated/ios/swift/DownloadState.swift +56 -0
- package/nitrogen/generated/ios/swift/DownloadStorageInfo.swift +80 -0
- package/nitrogen/generated/ios/swift/DownloadTask.swift +315 -0
- package/nitrogen/generated/ios/swift/DownloadedPlaylist.swift +103 -0
- package/nitrogen/generated/ios/swift/DownloadedTrack.swift +147 -0
- package/nitrogen/generated/ios/swift/EqualizerBand.swift +69 -0
- package/nitrogen/generated/ios/swift/EqualizerPreset.swift +70 -0
- package/nitrogen/generated/ios/swift/EqualizerState.swift +115 -0
- package/nitrogen/generated/ios/swift/Func_void.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_DownloadProgress.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_DownloadStorageInfo.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_DownloadedTrack.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_PlayerState.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_bool.swift +5 -5
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__optional_std__variant_nitro__NullType__std__string__.swift +66 -0
- package/nitrogen/generated/ios/swift/Func_void_std__string.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__string_std__string_DownloadState_std__optional_DownloadError_.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__vector_EqualizerBand_.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__vector_TrackItem_.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift +47 -0
- package/nitrogen/generated/ios/swift/GainRange.swift +47 -0
- package/nitrogen/generated/ios/swift/HybridDownloadManagerSpec.swift +90 -0
- package/nitrogen/generated/ios/swift/HybridDownloadManagerSpec_cxx.swift +705 -0
- package/nitrogen/generated/ios/swift/HybridEqualizerSpec.swift +73 -0
- package/nitrogen/generated/ios/swift/HybridEqualizerSpec_cxx.swift +396 -0
- package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec.swift +6 -2
- package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec_cxx.swift +105 -8
- package/nitrogen/generated/ios/swift/PlaybackSource.swift +44 -0
- package/nitrogen/generated/ios/swift/PlayerState.swift +13 -2
- package/nitrogen/generated/ios/swift/PresetType.swift +40 -0
- package/nitrogen/generated/ios/swift/StorageLocation.swift +40 -0
- package/nitrogen/generated/ios/swift/TrackItem.swift +31 -1
- package/nitrogen/generated/ios/swift/TrackPlayerState.swift +4 -4
- package/nitrogen/generated/ios/swift/Variant_NullType_Double.swift +18 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_DownloadError.swift +18 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_DownloadTask.swift +18 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_DownloadedPlaylist.swift +18 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_DownloadedTrack.swift +18 -0
- package/nitrogen/generated/shared/c++/CurrentPlayingType.hpp +84 -0
- package/nitrogen/generated/shared/c++/DownloadConfig.hpp +108 -0
- package/nitrogen/generated/shared/c++/DownloadError.hpp +89 -0
- package/nitrogen/generated/shared/c++/DownloadErrorReason.hpp +96 -0
- package/nitrogen/generated/shared/c++/DownloadProgress.hpp +97 -0
- package/nitrogen/generated/shared/c++/DownloadQueueStatus.hpp +99 -0
- package/nitrogen/generated/shared/c++/DownloadState.hpp +92 -0
- package/nitrogen/generated/shared/c++/DownloadStorageInfo.hpp +91 -0
- package/nitrogen/generated/shared/c++/DownloadTask.hpp +122 -0
- package/nitrogen/generated/shared/c++/DownloadedPlaylist.hpp +101 -0
- package/nitrogen/generated/shared/c++/DownloadedTrack.hpp +107 -0
- package/nitrogen/generated/shared/c++/EqualizerBand.hpp +87 -0
- package/nitrogen/generated/shared/c++/EqualizerPreset.hpp +86 -0
- package/nitrogen/generated/shared/c++/EqualizerState.hpp +89 -0
- package/nitrogen/generated/shared/c++/GainRange.hpp +79 -0
- package/nitrogen/generated/shared/c++/HybridDownloadManagerSpec.cpp +55 -0
- package/nitrogen/generated/shared/c++/HybridDownloadManagerSpec.hpp +134 -0
- package/nitrogen/generated/shared/c++/HybridEqualizerSpec.cpp +38 -0
- package/nitrogen/generated/shared/c++/HybridEqualizerSpec.hpp +95 -0
- package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.cpp +4 -0
- package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.hpp +11 -5
- package/nitrogen/generated/shared/c++/PlaybackSource.hpp +80 -0
- package/nitrogen/generated/shared/c++/PlayerState.hpp +9 -2
- package/nitrogen/generated/shared/c++/PresetType.hpp +76 -0
- package/nitrogen/generated/shared/c++/StorageLocation.hpp +76 -0
- package/nitrogen/generated/shared/c++/TrackItem.hpp +7 -2
- package/nitrogen/generated/shared/c++/TrackPlayerState.hpp +5 -5
- package/package.json +1 -1
- package/src/hooks/downloadCallbackManager.ts +149 -0
- package/src/hooks/equalizerCallbackManager.ts +138 -0
- package/src/hooks/index.ts +23 -0
- package/src/hooks/useActualQueue.ts +116 -0
- package/src/hooks/useDownloadActions.ts +179 -0
- package/src/hooks/useDownloadProgress.ts +126 -0
- package/src/hooks/useDownloadStorage.ts +84 -0
- package/src/hooks/useDownloadedTracks.ts +138 -0
- package/src/hooks/useEqualizer.ts +173 -0
- package/src/hooks/useEqualizerPresets.ts +140 -0
- package/src/hooks/useNowPlaying.ts +3 -2
- package/src/hooks/useOnChangeTrack.ts +15 -11
- package/src/hooks/useOnPlaybackStateChange.ts +19 -15
- package/src/hooks/usePlaylist.ts +161 -0
- package/src/index.ts +12 -0
- package/src/specs/DownloadManager.nitro.ts +203 -0
- package/src/specs/Equalizer.nitro.ts +69 -0
- package/src/specs/TrackPlayer.nitro.ts +6 -2
- package/src/types/DownloadTypes.ts +135 -0
- package/src/types/EqualizerTypes.ts +72 -0
- package/src/types/PlayerQueue.ts +9 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { EqualizerPreset } from '../types/EqualizerTypes';
|
|
2
|
+
export interface UseEqualizerPresetsResult {
|
|
3
|
+
/** All available presets */
|
|
4
|
+
presets: EqualizerPreset[];
|
|
5
|
+
/** Built-in presets only */
|
|
6
|
+
builtInPresets: EqualizerPreset[];
|
|
7
|
+
/** Custom user presets */
|
|
8
|
+
customPresets: EqualizerPreset[];
|
|
9
|
+
/** Apply a preset by name */
|
|
10
|
+
applyPreset: (name: string) => boolean;
|
|
11
|
+
/** Save current settings as custom preset */
|
|
12
|
+
saveCustomPreset: (name: string) => boolean;
|
|
13
|
+
/** Delete a custom preset */
|
|
14
|
+
deleteCustomPreset: (name: string) => boolean;
|
|
15
|
+
/** Currently applied preset name */
|
|
16
|
+
currentPreset: string | null;
|
|
17
|
+
/** Whether presets are loading */
|
|
18
|
+
isLoading: boolean;
|
|
19
|
+
/** Refresh presets from native */
|
|
20
|
+
refreshPresets: () => void;
|
|
21
|
+
}
|
|
22
|
+
export declare function useEqualizerPresets(): UseEqualizerPresetsResult;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { useEffect, useState, useCallback, useRef } from 'react';
|
|
2
|
+
import { Equalizer } from '../index';
|
|
3
|
+
import { equalizerCallbackManager } from './equalizerCallbackManager';
|
|
4
|
+
export function useEqualizerPresets() {
|
|
5
|
+
const [presets, setPresets] = useState([]);
|
|
6
|
+
const [builtInPresets, setBuiltInPresets] = useState([]);
|
|
7
|
+
const [customPresets, setCustomPresets] = useState([]);
|
|
8
|
+
const [currentPreset, setCurrentPreset] = useState(null);
|
|
9
|
+
const [isLoading, setIsLoading] = useState(true);
|
|
10
|
+
const isMounted = useRef(true);
|
|
11
|
+
const refreshPresets = useCallback(() => {
|
|
12
|
+
try {
|
|
13
|
+
const allPresets = Equalizer.getPresets();
|
|
14
|
+
const builtIn = Equalizer.getBuiltInPresets();
|
|
15
|
+
const custom = Equalizer.getCustomPresets();
|
|
16
|
+
const current = Equalizer.getCurrentPresetName();
|
|
17
|
+
if (isMounted.current) {
|
|
18
|
+
setPresets(allPresets);
|
|
19
|
+
setBuiltInPresets(builtIn);
|
|
20
|
+
setCustomPresets(custom);
|
|
21
|
+
setCurrentPreset(current);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
console.error('[useEqualizerPresets] Error refreshing presets:', error);
|
|
26
|
+
}
|
|
27
|
+
}, []);
|
|
28
|
+
// Load initial presets
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
isMounted.current = true;
|
|
31
|
+
refreshPresets();
|
|
32
|
+
setIsLoading(false);
|
|
33
|
+
return () => {
|
|
34
|
+
isMounted.current = false;
|
|
35
|
+
};
|
|
36
|
+
}, [refreshPresets]);
|
|
37
|
+
// Subscribe to preset changes
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
const unsubscribe = equalizerCallbackManager.subscribeToPresetChange((presetName) => {
|
|
40
|
+
if (isMounted.current) {
|
|
41
|
+
setCurrentPreset(presetName);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
return unsubscribe;
|
|
45
|
+
}, []);
|
|
46
|
+
const applyPreset = useCallback((name) => {
|
|
47
|
+
try {
|
|
48
|
+
const success = Equalizer.applyPreset(name);
|
|
49
|
+
if (success) {
|
|
50
|
+
setCurrentPreset(name);
|
|
51
|
+
}
|
|
52
|
+
return success;
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
console.error('[useEqualizerPresets] Error applying preset:', error);
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
}, []);
|
|
59
|
+
const saveCustomPreset = useCallback((name) => {
|
|
60
|
+
try {
|
|
61
|
+
const success = Equalizer.saveCustomPreset(name);
|
|
62
|
+
if (success) {
|
|
63
|
+
refreshPresets();
|
|
64
|
+
}
|
|
65
|
+
return success;
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
console.error('[useEqualizerPresets] Error saving custom preset:', error);
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
}, [refreshPresets]);
|
|
72
|
+
const deleteCustomPreset = useCallback((name) => {
|
|
73
|
+
try {
|
|
74
|
+
const success = Equalizer.deleteCustomPreset(name);
|
|
75
|
+
if (success) {
|
|
76
|
+
refreshPresets();
|
|
77
|
+
}
|
|
78
|
+
return success;
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
console.error('[useEqualizerPresets] Error deleting custom preset:', error);
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
}, [refreshPresets]);
|
|
85
|
+
return {
|
|
86
|
+
presets,
|
|
87
|
+
builtInPresets,
|
|
88
|
+
customPresets,
|
|
89
|
+
applyPreset,
|
|
90
|
+
saveCustomPreset,
|
|
91
|
+
deleteCustomPreset,
|
|
92
|
+
currentPreset,
|
|
93
|
+
isLoading,
|
|
94
|
+
refreshPresets,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
@@ -8,6 +8,7 @@ const DEFAULT_STATE = {
|
|
|
8
8
|
currentState: 'stopped',
|
|
9
9
|
currentPlaylistId: null,
|
|
10
10
|
currentIndex: -1,
|
|
11
|
+
currentPlayingType: 'not-playing',
|
|
11
12
|
};
|
|
12
13
|
/**
|
|
13
14
|
* Hook to get the current player state (same as TrackPlayer.getState())
|
|
@@ -46,11 +47,11 @@ const DEFAULT_STATE = {
|
|
|
46
47
|
export function useNowPlaying() {
|
|
47
48
|
const [state, setState] = useState(DEFAULT_STATE);
|
|
48
49
|
const isMounted = useRef(true);
|
|
49
|
-
const updateState = useCallback(() => {
|
|
50
|
+
const updateState = useCallback(async () => {
|
|
50
51
|
if (!isMounted.current)
|
|
51
52
|
return;
|
|
52
53
|
try {
|
|
53
|
-
const newState = TrackPlayer.getState();
|
|
54
|
+
const newState = await TrackPlayer.getState();
|
|
54
55
|
setState(newState);
|
|
55
56
|
}
|
|
56
57
|
catch (error) {
|
|
@@ -38,20 +38,23 @@ export function useOnChangeTrack() {
|
|
|
38
38
|
// Initialize with current track from the player
|
|
39
39
|
useEffect(() => {
|
|
40
40
|
isMounted.current = true;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
41
|
+
const initializeTrack = async () => {
|
|
42
|
+
try {
|
|
43
|
+
const playerState = await TrackPlayer.getState();
|
|
44
|
+
if (isMounted.current) {
|
|
45
|
+
setTrack(playerState.currentTrack);
|
|
46
|
+
setIsReady(true);
|
|
47
|
+
}
|
|
46
48
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
catch (error) {
|
|
50
|
+
console.error('[useOnChangeTrack] Failed to get initial state:', error);
|
|
51
|
+
if (isMounted.current) {
|
|
52
|
+
setTrack(null);
|
|
53
|
+
setIsReady(true);
|
|
54
|
+
}
|
|
53
55
|
}
|
|
54
|
-
}
|
|
56
|
+
};
|
|
57
|
+
initializeTrack();
|
|
55
58
|
return () => {
|
|
56
59
|
isMounted.current = false;
|
|
57
60
|
};
|
|
@@ -37,21 +37,24 @@ export function useOnPlaybackStateChange() {
|
|
|
37
37
|
// Initialize with current state from the player
|
|
38
38
|
useEffect(() => {
|
|
39
39
|
isMounted.current = true;
|
|
40
|
-
// Get initial state
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
40
|
+
// Get initial state asynchronously
|
|
41
|
+
const initializeState = async () => {
|
|
42
|
+
try {
|
|
43
|
+
const playerState = await TrackPlayer.getState();
|
|
44
|
+
if (isMounted.current) {
|
|
45
|
+
setState(playerState.currentState);
|
|
46
|
+
setIsReady(true);
|
|
47
|
+
}
|
|
46
48
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
catch (error) {
|
|
50
|
+
console.error('[useOnPlaybackStateChange] Failed to get initial state:', error);
|
|
51
|
+
if (isMounted.current) {
|
|
52
|
+
setState('stopped');
|
|
53
|
+
setIsReady(true);
|
|
54
|
+
}
|
|
53
55
|
}
|
|
54
|
-
}
|
|
56
|
+
};
|
|
57
|
+
initializeState();
|
|
55
58
|
return () => {
|
|
56
59
|
isMounted.current = false;
|
|
57
60
|
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { Playlist, TrackItem } from '../types/PlayerQueue';
|
|
2
|
+
export interface UsePlaylistResult {
|
|
3
|
+
/** The currently loaded playlist */
|
|
4
|
+
currentPlaylist: Playlist | null;
|
|
5
|
+
/** ID of the currently loaded playlist */
|
|
6
|
+
currentPlaylistId: string | null;
|
|
7
|
+
/** All available playlists */
|
|
8
|
+
allPlaylists: Playlist[];
|
|
9
|
+
/** All tracks from all playlists (flattened) */
|
|
10
|
+
allTracks: TrackItem[];
|
|
11
|
+
/** Whether the playlists are currently loading */
|
|
12
|
+
isLoading: boolean;
|
|
13
|
+
/** Manually refresh playlist data */
|
|
14
|
+
refreshPlaylists: () => void;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Hook to manage playlist state
|
|
18
|
+
*
|
|
19
|
+
* Provides current playlist, all playlists, and all tracks across playlists.
|
|
20
|
+
* Automatically refreshes when:
|
|
21
|
+
* - Component mounts
|
|
22
|
+
* - Track changes (to update currentPlaylistId)
|
|
23
|
+
* - Playlists are modified via PlayerQueue methods
|
|
24
|
+
*
|
|
25
|
+
* Call `refreshPlaylists()` after creating/deleting playlists to update the state.
|
|
26
|
+
*
|
|
27
|
+
* @returns Object containing playlist state and refresh function
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```tsx
|
|
31
|
+
* function MyComponent() {
|
|
32
|
+
* const { currentPlaylist, allTracks, refreshPlaylists } = usePlaylist();
|
|
33
|
+
*
|
|
34
|
+
* const handleCreatePlaylist = () => {
|
|
35
|
+
* PlayerQueue.createPlaylist('New Playlist');
|
|
36
|
+
* refreshPlaylists(); // Refresh to see the new playlist
|
|
37
|
+
* };
|
|
38
|
+
*
|
|
39
|
+
* return (
|
|
40
|
+
* <View>
|
|
41
|
+
* <Text>{currentPlaylist?.name}</Text>
|
|
42
|
+
* <Text>Total tracks: {allTracks.length}</Text>
|
|
43
|
+
* </View>
|
|
44
|
+
* );
|
|
45
|
+
* }
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare function usePlaylist(): UsePlaylistResult;
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { useEffect, useState, useRef, useCallback } from 'react';
|
|
2
|
+
import { PlayerQueue } from '../index';
|
|
3
|
+
import { callbackManager } from './callbackManager';
|
|
4
|
+
/**
|
|
5
|
+
* Hook to manage playlist state
|
|
6
|
+
*
|
|
7
|
+
* Provides current playlist, all playlists, and all tracks across playlists.
|
|
8
|
+
* Automatically refreshes when:
|
|
9
|
+
* - Component mounts
|
|
10
|
+
* - Track changes (to update currentPlaylistId)
|
|
11
|
+
* - Playlists are modified via PlayerQueue methods
|
|
12
|
+
*
|
|
13
|
+
* Call `refreshPlaylists()` after creating/deleting playlists to update the state.
|
|
14
|
+
*
|
|
15
|
+
* @returns Object containing playlist state and refresh function
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```tsx
|
|
19
|
+
* function MyComponent() {
|
|
20
|
+
* const { currentPlaylist, allTracks, refreshPlaylists } = usePlaylist();
|
|
21
|
+
*
|
|
22
|
+
* const handleCreatePlaylist = () => {
|
|
23
|
+
* PlayerQueue.createPlaylist('New Playlist');
|
|
24
|
+
* refreshPlaylists(); // Refresh to see the new playlist
|
|
25
|
+
* };
|
|
26
|
+
*
|
|
27
|
+
* return (
|
|
28
|
+
* <View>
|
|
29
|
+
* <Text>{currentPlaylist?.name}</Text>
|
|
30
|
+
* <Text>Total tracks: {allTracks.length}</Text>
|
|
31
|
+
* </View>
|
|
32
|
+
* );
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export function usePlaylist() {
|
|
37
|
+
const [currentPlaylist, setCurrentPlaylist] = useState(null);
|
|
38
|
+
const [currentPlaylistId, setCurrentPlaylistId] = useState(null);
|
|
39
|
+
const [allPlaylists, setAllPlaylists] = useState([]);
|
|
40
|
+
const [allTracks, setAllTracks] = useState([]);
|
|
41
|
+
const [isLoading, setIsLoading] = useState(true);
|
|
42
|
+
const isMounted = useRef(true);
|
|
43
|
+
const hasSubscribed = useRef(false);
|
|
44
|
+
const refreshPlaylists = useCallback(() => {
|
|
45
|
+
if (!isMounted.current)
|
|
46
|
+
return;
|
|
47
|
+
try {
|
|
48
|
+
// Get current playlist ID
|
|
49
|
+
const playlistId = PlayerQueue.getCurrentPlaylistId();
|
|
50
|
+
if (!isMounted.current)
|
|
51
|
+
return;
|
|
52
|
+
setCurrentPlaylistId(playlistId);
|
|
53
|
+
// Get current playlist details
|
|
54
|
+
if (playlistId) {
|
|
55
|
+
const playlist = PlayerQueue.getPlaylist(playlistId);
|
|
56
|
+
if (isMounted.current) {
|
|
57
|
+
setCurrentPlaylist(playlist);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
if (isMounted.current) {
|
|
62
|
+
setCurrentPlaylist(null);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Get all playlists
|
|
66
|
+
const playlists = PlayerQueue.getAllPlaylists();
|
|
67
|
+
if (!isMounted.current)
|
|
68
|
+
return;
|
|
69
|
+
setAllPlaylists(playlists);
|
|
70
|
+
// Get all tracks from all playlists (deduplicated by id)
|
|
71
|
+
const trackMap = new Map();
|
|
72
|
+
playlists.forEach((playlist) => {
|
|
73
|
+
playlist.tracks.forEach((track) => {
|
|
74
|
+
if (!trackMap.has(track.id)) {
|
|
75
|
+
trackMap.set(track.id, track);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
if (isMounted.current) {
|
|
80
|
+
setAllTracks(Array.from(trackMap.values()));
|
|
81
|
+
setIsLoading(false);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
console.error('[usePlaylist] Error refreshing playlists:', error);
|
|
86
|
+
if (isMounted.current) {
|
|
87
|
+
setIsLoading(false);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}, []);
|
|
91
|
+
// Initialize and setup mounted ref
|
|
92
|
+
useEffect(() => {
|
|
93
|
+
isMounted.current = true;
|
|
94
|
+
// Initial load
|
|
95
|
+
refreshPlaylists();
|
|
96
|
+
return () => {
|
|
97
|
+
isMounted.current = false;
|
|
98
|
+
};
|
|
99
|
+
}, [refreshPlaylists]);
|
|
100
|
+
// Subscribe to native playlist changes (only once)
|
|
101
|
+
useEffect(() => {
|
|
102
|
+
if (hasSubscribed.current)
|
|
103
|
+
return;
|
|
104
|
+
hasSubscribed.current = true;
|
|
105
|
+
try {
|
|
106
|
+
PlayerQueue.onPlaylistsChanged(() => {
|
|
107
|
+
if (isMounted.current) {
|
|
108
|
+
refreshPlaylists();
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
console.error('[usePlaylist] Error setting up playlist listener:', error);
|
|
114
|
+
}
|
|
115
|
+
}, [refreshPlaylists]);
|
|
116
|
+
// Also refresh when track changes (as it might indicate playlist loaded)
|
|
117
|
+
useEffect(() => {
|
|
118
|
+
const unsubscribe = callbackManager.subscribeToTrackChange(() => {
|
|
119
|
+
// Refresh to update currentPlaylistId when track changes
|
|
120
|
+
if (isMounted.current) {
|
|
121
|
+
refreshPlaylists();
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
return () => {
|
|
125
|
+
unsubscribe();
|
|
126
|
+
};
|
|
127
|
+
}, [refreshPlaylists]);
|
|
128
|
+
return {
|
|
129
|
+
currentPlaylist,
|
|
130
|
+
currentPlaylistId,
|
|
131
|
+
allPlaylists,
|
|
132
|
+
allTracks,
|
|
133
|
+
isLoading,
|
|
134
|
+
refreshPlaylists,
|
|
135
|
+
};
|
|
136
|
+
}
|
package/lib/index.d.ts
CHANGED
|
@@ -2,14 +2,20 @@ import type { PlayerQueue as PlayerQueueType, TrackPlayer as TrackPlayerType } f
|
|
|
2
2
|
import type { AndroidAutoMediaLibrary as AndroidAutoMediaLibraryType } from './specs/AndroidAutoMediaLibrary.nitro';
|
|
3
3
|
import type { AudioDevices as AudioDevicesType } from './specs/AudioDevices.nitro';
|
|
4
4
|
import type { AudioRoutePicker as AudioRoutePickerType } from './specs/AudioRoutePicker.nitro';
|
|
5
|
+
import type { DownloadManager as DownloadManagerType } from './specs/DownloadManager.nitro';
|
|
6
|
+
import type { Equalizer as EqualizerType } from './specs/Equalizer.nitro';
|
|
5
7
|
export declare const PlayerQueue: PlayerQueueType;
|
|
6
8
|
export declare const TrackPlayer: TrackPlayerType;
|
|
7
9
|
export declare const AndroidAutoMediaLibrary: AndroidAutoMediaLibraryType | null;
|
|
8
10
|
export declare const AudioDevices: AudioDevicesType | null;
|
|
9
11
|
export declare const AudioRoutePicker: AudioRoutePickerType | null;
|
|
12
|
+
export declare const DownloadManager: DownloadManagerType;
|
|
13
|
+
export declare const Equalizer: EqualizerType;
|
|
10
14
|
export * from './hooks';
|
|
11
15
|
export * from './types/PlayerQueue';
|
|
12
16
|
export * from './types/AndroidAutoMediaLibrary';
|
|
17
|
+
export * from './types/DownloadTypes';
|
|
18
|
+
export * from './types/EqualizerTypes';
|
|
13
19
|
export type { TAudioDevice } from './specs/AudioDevices.nitro';
|
|
14
20
|
export type { RepeatMode } from './specs/TrackPlayer.nitro';
|
|
15
21
|
export { AndroidAutoMediaLibraryHelper } from './utils/androidAutoMediaLibrary';
|
package/lib/index.js
CHANGED
|
@@ -15,10 +15,16 @@ export const AudioDevices = Platform.OS === 'android'
|
|
|
15
15
|
export const AudioRoutePicker = Platform.OS === 'ios'
|
|
16
16
|
? NitroModules.createHybridObject('AudioRoutePicker')
|
|
17
17
|
: null;
|
|
18
|
+
// Download Manager
|
|
19
|
+
export const DownloadManager = NitroModules.createHybridObject('DownloadManager');
|
|
20
|
+
// Equalizer
|
|
21
|
+
export const Equalizer = NitroModules.createHybridObject('Equalizer');
|
|
18
22
|
// Export hooks
|
|
19
23
|
export * from './hooks';
|
|
20
24
|
// Export types
|
|
21
25
|
export * from './types/PlayerQueue';
|
|
22
26
|
export * from './types/AndroidAutoMediaLibrary';
|
|
27
|
+
export * from './types/DownloadTypes';
|
|
28
|
+
export * from './types/EqualizerTypes';
|
|
23
29
|
// Export utilities
|
|
24
30
|
export { AndroidAutoMediaLibraryHelper } from './utils/androidAutoMediaLibrary';
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import type { HybridObject } from 'react-native-nitro-modules';
|
|
2
|
+
import type { TrackItem } from '../types/PlayerQueue';
|
|
3
|
+
import type { DownloadConfig, DownloadTask, DownloadProgress, DownloadedTrack, DownloadedPlaylist, DownloadState, DownloadStorageInfo, DownloadQueueStatus, DownloadError, PlaybackSource } from '../types/DownloadTypes';
|
|
4
|
+
export interface DownloadManager extends HybridObject<{
|
|
5
|
+
android: 'kotlin';
|
|
6
|
+
ios: 'swift';
|
|
7
|
+
}> {
|
|
8
|
+
/**
|
|
9
|
+
* Configure the download manager
|
|
10
|
+
*/
|
|
11
|
+
configure(config: DownloadConfig): void;
|
|
12
|
+
/**
|
|
13
|
+
* Get current configuration
|
|
14
|
+
*/
|
|
15
|
+
getConfig(): DownloadConfig;
|
|
16
|
+
/**
|
|
17
|
+
* Download a single track
|
|
18
|
+
* @returns downloadId for tracking
|
|
19
|
+
*/
|
|
20
|
+
downloadTrack(track: TrackItem, playlistId?: string): Promise<string>;
|
|
21
|
+
/**
|
|
22
|
+
* Download an entire playlist
|
|
23
|
+
* @returns downloadId array for each track
|
|
24
|
+
*/
|
|
25
|
+
downloadPlaylist(playlistId: string, tracks: TrackItem[]): Promise<string[]>;
|
|
26
|
+
/**
|
|
27
|
+
* Pause a download
|
|
28
|
+
*/
|
|
29
|
+
pauseDownload(downloadId: string): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Resume a paused download
|
|
32
|
+
*/
|
|
33
|
+
resumeDownload(downloadId: string): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Cancel a download
|
|
36
|
+
*/
|
|
37
|
+
cancelDownload(downloadId: string): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Retry a failed download
|
|
40
|
+
*/
|
|
41
|
+
retryDownload(downloadId: string): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Pause all downloads
|
|
44
|
+
*/
|
|
45
|
+
pauseAllDownloads(): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Resume all paused downloads
|
|
48
|
+
*/
|
|
49
|
+
resumeAllDownloads(): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Cancel all downloads
|
|
52
|
+
*/
|
|
53
|
+
cancelAllDownloads(): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Get download task by ID
|
|
56
|
+
*/
|
|
57
|
+
getDownloadTask(downloadId: string): DownloadTask | null;
|
|
58
|
+
/**
|
|
59
|
+
* Get all active download tasks
|
|
60
|
+
*/
|
|
61
|
+
getActiveDownloads(): DownloadTask[];
|
|
62
|
+
/**
|
|
63
|
+
* Get download queue status
|
|
64
|
+
*/
|
|
65
|
+
getQueueStatus(): DownloadQueueStatus;
|
|
66
|
+
/**
|
|
67
|
+
* Check if a track is currently downloading
|
|
68
|
+
*/
|
|
69
|
+
isDownloading(trackId: string): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Get download state for a track
|
|
72
|
+
*/
|
|
73
|
+
getDownloadState(trackId: string): DownloadState | null;
|
|
74
|
+
/**
|
|
75
|
+
* Check if a track is downloaded
|
|
76
|
+
*/
|
|
77
|
+
isTrackDownloaded(trackId: string): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Check if a playlist is fully downloaded
|
|
80
|
+
*/
|
|
81
|
+
isPlaylistDownloaded(playlistId: string): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Check if a playlist is partially downloaded
|
|
84
|
+
*/
|
|
85
|
+
isPlaylistPartiallyDownloaded(playlistId: string): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Get downloaded track by track ID
|
|
88
|
+
*/
|
|
89
|
+
getDownloadedTrack(trackId: string): DownloadedTrack | null;
|
|
90
|
+
/**
|
|
91
|
+
* Get all downloaded tracks
|
|
92
|
+
*/
|
|
93
|
+
getAllDownloadedTracks(): DownloadedTrack[];
|
|
94
|
+
/**
|
|
95
|
+
* Get downloaded playlist by playlist ID
|
|
96
|
+
*/
|
|
97
|
+
getDownloadedPlaylist(playlistId: string): DownloadedPlaylist | null;
|
|
98
|
+
/**
|
|
99
|
+
* Get all downloaded playlists
|
|
100
|
+
*/
|
|
101
|
+
getAllDownloadedPlaylists(): DownloadedPlaylist[];
|
|
102
|
+
/**
|
|
103
|
+
* Get local file path for a downloaded track
|
|
104
|
+
*/
|
|
105
|
+
getLocalPath(trackId: string): string | null;
|
|
106
|
+
/**
|
|
107
|
+
* Delete a downloaded track
|
|
108
|
+
*/
|
|
109
|
+
deleteDownloadedTrack(trackId: string): Promise<void>;
|
|
110
|
+
/**
|
|
111
|
+
* Delete a downloaded playlist (all its tracks)
|
|
112
|
+
*/
|
|
113
|
+
deleteDownloadedPlaylist(playlistId: string): Promise<void>;
|
|
114
|
+
/**
|
|
115
|
+
* Delete all downloaded content
|
|
116
|
+
*/
|
|
117
|
+
deleteAllDownloads(): Promise<void>;
|
|
118
|
+
/**
|
|
119
|
+
* Get storage information
|
|
120
|
+
*/
|
|
121
|
+
getStorageInfo(): Promise<DownloadStorageInfo>;
|
|
122
|
+
/**
|
|
123
|
+
* Sync downloads - validates all downloads and removes orphaned records
|
|
124
|
+
* Call this to clean up after manual file deletion
|
|
125
|
+
* @returns number of orphaned records that were cleaned up
|
|
126
|
+
*/
|
|
127
|
+
syncDownloads(): number;
|
|
128
|
+
/**
|
|
129
|
+
* Set playback source preference
|
|
130
|
+
*/
|
|
131
|
+
setPlaybackSourcePreference(preference: PlaybackSource): void;
|
|
132
|
+
/**
|
|
133
|
+
* Get current playback source preference
|
|
134
|
+
*/
|
|
135
|
+
getPlaybackSourcePreference(): PlaybackSource;
|
|
136
|
+
/**
|
|
137
|
+
* Get the effective URL for a track (local or network based on preference)
|
|
138
|
+
*/
|
|
139
|
+
getEffectiveUrl(track: TrackItem): string;
|
|
140
|
+
/**
|
|
141
|
+
* Called when download progress updates
|
|
142
|
+
*/
|
|
143
|
+
onDownloadProgress(callback: (progress: DownloadProgress) => void): void;
|
|
144
|
+
/**
|
|
145
|
+
* Called when download state changes
|
|
146
|
+
*/
|
|
147
|
+
onDownloadStateChange(callback: (downloadId: string, trackId: string, state: DownloadState, error?: DownloadError) => void): void;
|
|
148
|
+
/**
|
|
149
|
+
* Called when a download completes
|
|
150
|
+
*/
|
|
151
|
+
onDownloadComplete(callback: (downloadedTrack: DownloadedTrack) => void): void;
|
|
152
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { HybridObject } from 'react-native-nitro-modules';
|
|
2
|
+
import type { EqualizerBand, EqualizerPreset, EqualizerState, GainRange } from '../types/EqualizerTypes';
|
|
3
|
+
export interface Equalizer extends HybridObject<{
|
|
4
|
+
android: 'kotlin';
|
|
5
|
+
ios: 'swift';
|
|
6
|
+
}> {
|
|
7
|
+
/** Enable or disable the equalizer */
|
|
8
|
+
setEnabled(enabled: boolean): boolean;
|
|
9
|
+
/** Check if equalizer is currently enabled */
|
|
10
|
+
isEnabled(): boolean;
|
|
11
|
+
/** Get all equalizer bands with current gain values */
|
|
12
|
+
getBands(): EqualizerBand[];
|
|
13
|
+
/** Set gain for a specific band index (-12 to +12 dB) */
|
|
14
|
+
setBandGain(bandIndex: number, gainDb: number): boolean;
|
|
15
|
+
/** Set gains for all bands at once (array of 5 values) */
|
|
16
|
+
setAllBandGains(gains: number[]): boolean;
|
|
17
|
+
/** Get the valid gain range for bands */
|
|
18
|
+
getBandRange(): GainRange;
|
|
19
|
+
/** Get all available presets (built-in + custom) */
|
|
20
|
+
getPresets(): EqualizerPreset[];
|
|
21
|
+
/** Get built-in presets only */
|
|
22
|
+
getBuiltInPresets(): EqualizerPreset[];
|
|
23
|
+
/** Get custom user presets only */
|
|
24
|
+
getCustomPresets(): EqualizerPreset[];
|
|
25
|
+
/** Apply a preset by name */
|
|
26
|
+
applyPreset(presetName: string): boolean;
|
|
27
|
+
/** Get currently applied preset name (null if custom values) */
|
|
28
|
+
getCurrentPresetName(): string | null;
|
|
29
|
+
/** Save current settings as a custom preset */
|
|
30
|
+
saveCustomPreset(name: string): boolean;
|
|
31
|
+
/** Delete a custom preset by name */
|
|
32
|
+
deleteCustomPreset(name: string): boolean;
|
|
33
|
+
/** Get complete equalizer state */
|
|
34
|
+
getState(): EqualizerState;
|
|
35
|
+
/** Reset to flat response (all bands at 0 dB) */
|
|
36
|
+
reset(): void;
|
|
37
|
+
/** Called when equalizer enabled state changes */
|
|
38
|
+
onEnabledChange(callback: (enabled: boolean) => void): void;
|
|
39
|
+
/** Called when any band gain changes */
|
|
40
|
+
onBandChange(callback: (bands: EqualizerBand[]) => void): void;
|
|
41
|
+
/** Called when preset changes */
|
|
42
|
+
onPresetChange(callback: (presetName: string | null) => void): void;
|
|
43
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -25,11 +25,15 @@ export interface TrackPlayer extends HybridObject<{
|
|
|
25
25
|
}> {
|
|
26
26
|
play(): void;
|
|
27
27
|
pause(): void;
|
|
28
|
-
playSong(songId: string, fromPlaylist?: string): void
|
|
28
|
+
playSong(songId: string, fromPlaylist?: string): Promise<void>;
|
|
29
29
|
skipToNext(): void;
|
|
30
|
+
skipToIndex(index: number): Promise<boolean>;
|
|
30
31
|
skipToPrevious(): void;
|
|
31
32
|
seek(position: number): void;
|
|
32
|
-
|
|
33
|
+
addToUpNext(trackId: string): Promise<void>;
|
|
34
|
+
playNext(trackId: string): Promise<void>;
|
|
35
|
+
getActualQueue(): Promise<TrackItem[]>;
|
|
36
|
+
getState(): Promise<PlayerState>;
|
|
33
37
|
setRepeatMode(mode: RepeatMode): boolean;
|
|
34
38
|
configure(config: PlayerConfig): void;
|
|
35
39
|
onChangeTrack(callback: (track: TrackItem, reason?: Reason) => void): void;
|