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,110 @@
|
|
|
1
|
+
import type { TrackItem, Playlist } from './PlayerQueue';
|
|
2
|
+
/**
|
|
3
|
+
* Storage location options for downloads
|
|
4
|
+
*/
|
|
5
|
+
export type StorageLocation = 'private' | 'public';
|
|
6
|
+
/**
|
|
7
|
+
* Current state of a download task
|
|
8
|
+
*/
|
|
9
|
+
export type DownloadState = 'pending' | 'downloading' | 'paused' | 'completed' | 'failed' | 'cancelled';
|
|
10
|
+
/**
|
|
11
|
+
* Reason for download failure
|
|
12
|
+
*/
|
|
13
|
+
export type DownloadErrorReason = 'network_error' | 'storage_full' | 'file_not_found' | 'permission_denied' | 'invalid_url' | 'timeout' | 'unknown';
|
|
14
|
+
/**
|
|
15
|
+
* Source preference for playback
|
|
16
|
+
*/
|
|
17
|
+
export type PlaybackSource = 'auto' | 'download' | 'network';
|
|
18
|
+
/**
|
|
19
|
+
* Progress information for a download
|
|
20
|
+
*/
|
|
21
|
+
export interface DownloadProgress {
|
|
22
|
+
trackId: string;
|
|
23
|
+
downloadId: string;
|
|
24
|
+
bytesDownloaded: number;
|
|
25
|
+
totalBytes: number;
|
|
26
|
+
progress: number;
|
|
27
|
+
state: DownloadState;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Download error information
|
|
31
|
+
*/
|
|
32
|
+
export interface DownloadError {
|
|
33
|
+
code: string;
|
|
34
|
+
message: string;
|
|
35
|
+
reason: DownloadErrorReason;
|
|
36
|
+
isRetryable: boolean;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* A downloaded track with local file information
|
|
40
|
+
*/
|
|
41
|
+
export interface DownloadedTrack {
|
|
42
|
+
trackId: string;
|
|
43
|
+
originalTrack: TrackItem;
|
|
44
|
+
localPath: string;
|
|
45
|
+
localArtworkPath?: string | null;
|
|
46
|
+
downloadedAt: number;
|
|
47
|
+
fileSize: number;
|
|
48
|
+
storageLocation: StorageLocation;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* A playlist with download information
|
|
52
|
+
*/
|
|
53
|
+
export interface DownloadedPlaylist {
|
|
54
|
+
playlistId: string;
|
|
55
|
+
originalPlaylist: Playlist;
|
|
56
|
+
downloadedTracks: DownloadedTrack[];
|
|
57
|
+
totalSize: number;
|
|
58
|
+
downloadedAt: number;
|
|
59
|
+
isComplete: boolean;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Download task information
|
|
63
|
+
*/
|
|
64
|
+
export interface DownloadTask {
|
|
65
|
+
downloadId: string;
|
|
66
|
+
trackId: string;
|
|
67
|
+
playlistId?: string | null;
|
|
68
|
+
state: DownloadState;
|
|
69
|
+
progress: DownloadProgress;
|
|
70
|
+
createdAt: number;
|
|
71
|
+
startedAt?: number | null;
|
|
72
|
+
completedAt?: number | null;
|
|
73
|
+
error?: DownloadError | null;
|
|
74
|
+
retryCount: number;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Configuration for the DownloadManager
|
|
78
|
+
*/
|
|
79
|
+
export interface DownloadConfig {
|
|
80
|
+
storageLocation?: StorageLocation;
|
|
81
|
+
maxConcurrentDownloads?: number;
|
|
82
|
+
autoRetry?: boolean;
|
|
83
|
+
maxRetryAttempts?: number;
|
|
84
|
+
backgroundDownloadsEnabled?: boolean;
|
|
85
|
+
downloadArtwork?: boolean;
|
|
86
|
+
customDownloadPath?: string | null;
|
|
87
|
+
wifiOnlyDownloads?: boolean;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Summary of download storage usage
|
|
91
|
+
*/
|
|
92
|
+
export interface DownloadStorageInfo {
|
|
93
|
+
totalDownloadedSize: number;
|
|
94
|
+
trackCount: number;
|
|
95
|
+
playlistCount: number;
|
|
96
|
+
availableSpace: number;
|
|
97
|
+
totalSpace: number;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Download queue status
|
|
101
|
+
*/
|
|
102
|
+
export interface DownloadQueueStatus {
|
|
103
|
+
pendingCount: number;
|
|
104
|
+
activeCount: number;
|
|
105
|
+
completedCount: number;
|
|
106
|
+
failedCount: number;
|
|
107
|
+
totalBytesToDownload: number;
|
|
108
|
+
totalBytesDownloaded: number;
|
|
109
|
+
overallProgress: number;
|
|
110
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents a single equalizer frequency band
|
|
3
|
+
*/
|
|
4
|
+
export interface EqualizerBand {
|
|
5
|
+
/** Band index (0-4) */
|
|
6
|
+
index: number;
|
|
7
|
+
/** Center frequency in Hz */
|
|
8
|
+
centerFrequency: number;
|
|
9
|
+
/** Current gain in dB (-12 to +12) */
|
|
10
|
+
gainDb: number;
|
|
11
|
+
/** Human-readable frequency label (e.g., "60 Hz", "3.6 kHz") */
|
|
12
|
+
frequencyLabel: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Preset type identifier
|
|
16
|
+
*/
|
|
17
|
+
export type PresetType = 'built-in' | 'custom';
|
|
18
|
+
/**
|
|
19
|
+
* Represents an equalizer preset (built-in or custom)
|
|
20
|
+
*/
|
|
21
|
+
export interface EqualizerPreset {
|
|
22
|
+
/** Unique preset name */
|
|
23
|
+
name: string;
|
|
24
|
+
/** Array of 5 gain values in dB for each band */
|
|
25
|
+
gains: number[];
|
|
26
|
+
/** Whether this is a built-in or custom preset */
|
|
27
|
+
type: PresetType;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Complete equalizer state
|
|
31
|
+
*/
|
|
32
|
+
export interface EqualizerState {
|
|
33
|
+
/** Whether equalizer is enabled */
|
|
34
|
+
enabled: boolean;
|
|
35
|
+
/** Current band settings */
|
|
36
|
+
bands: EqualizerBand[];
|
|
37
|
+
/** Currently applied preset name (null if custom values) */
|
|
38
|
+
currentPreset: string | null;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Gain range for equalizer bands
|
|
42
|
+
*/
|
|
43
|
+
export interface GainRange {
|
|
44
|
+
/** Minimum gain in dB */
|
|
45
|
+
min: number;
|
|
46
|
+
/** Maximum gain in dB */
|
|
47
|
+
max: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Built-in preset names
|
|
51
|
+
*/
|
|
52
|
+
export type BuiltInPresetName = 'Flat' | 'Bass Boost' | 'Bass Reducer' | 'Treble Boost' | 'Treble Reducer' | 'Vocal Boost' | 'Rock' | 'Pop' | 'Jazz' | 'Classical' | 'Hip Hop' | 'Electronic' | 'Acoustic' | 'R&B' | 'Loudness';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { AnyMap } from 'react-native-nitro-modules';
|
|
2
|
+
export type CurrentPlayingType = 'playlist' | 'up-next' | 'play-next' | 'not-playing';
|
|
1
3
|
export interface TrackItem {
|
|
2
4
|
id: string;
|
|
3
5
|
title: string;
|
|
@@ -6,6 +8,7 @@ export interface TrackItem {
|
|
|
6
8
|
duration: number;
|
|
7
9
|
url: string;
|
|
8
10
|
artwork?: string | null;
|
|
11
|
+
extraPayload?: AnyMap;
|
|
9
12
|
}
|
|
10
13
|
export interface Playlist {
|
|
11
14
|
id: string;
|
|
@@ -24,6 +27,7 @@ export interface PlayerState {
|
|
|
24
27
|
currentState: TrackPlayerState;
|
|
25
28
|
currentPlaylistId: string | null;
|
|
26
29
|
currentIndex: number;
|
|
30
|
+
currentPlayingType: CurrentPlayingType;
|
|
27
31
|
}
|
|
28
32
|
export interface PlayerConfig {
|
|
29
33
|
androidAutoEnabled?: boolean;
|
package/nitro.json
CHANGED
|
@@ -25,6 +25,14 @@
|
|
|
25
25
|
},
|
|
26
26
|
"AudioRoutePicker": {
|
|
27
27
|
"swift": "HybridAudioRoutePicker"
|
|
28
|
+
},
|
|
29
|
+
"DownloadManager": {
|
|
30
|
+
"swift": "HybridDownloadManager",
|
|
31
|
+
"kotlin": "HybridDownloadManager"
|
|
32
|
+
},
|
|
33
|
+
"Equalizer": {
|
|
34
|
+
"swift": "HybridEqualizer",
|
|
35
|
+
"kotlin": "HybridEqualizer"
|
|
28
36
|
}
|
|
29
37
|
},
|
|
30
38
|
"ignorePaths": ["**/node_modules"]
|
|
@@ -36,14 +36,23 @@ target_sources(
|
|
|
36
36
|
../nitrogen/generated/shared/c++/HybridAndroidAutoMediaLibrarySpec.cpp
|
|
37
37
|
../nitrogen/generated/shared/c++/HybridAudioDevicesSpec.cpp
|
|
38
38
|
../nitrogen/generated/shared/c++/HybridAudioRoutePickerSpec.cpp
|
|
39
|
+
../nitrogen/generated/shared/c++/HybridDownloadManagerSpec.cpp
|
|
40
|
+
../nitrogen/generated/shared/c++/HybridEqualizerSpec.cpp
|
|
39
41
|
../nitrogen/generated/shared/c++/HybridPlayerQueueSpec.cpp
|
|
40
42
|
../nitrogen/generated/shared/c++/HybridTrackPlayerSpec.cpp
|
|
41
43
|
# Android-specific Nitrogen C++ sources
|
|
42
44
|
../nitrogen/generated/android/c++/JHybridAndroidAutoMediaLibrarySpec.cpp
|
|
43
45
|
../nitrogen/generated/android/c++/JHybridAudioDevicesSpec.cpp
|
|
46
|
+
../nitrogen/generated/android/c++/JHybridDownloadManagerSpec.cpp
|
|
47
|
+
../nitrogen/generated/android/c++/JVariant_NullType_String.cpp
|
|
48
|
+
../nitrogen/generated/android/c++/JVariant_NullType_DownloadTask.cpp
|
|
49
|
+
../nitrogen/generated/android/c++/JVariant_NullType_Double.cpp
|
|
50
|
+
../nitrogen/generated/android/c++/JVariant_NullType_DownloadError.cpp
|
|
51
|
+
../nitrogen/generated/android/c++/JVariant_NullType_DownloadedTrack.cpp
|
|
52
|
+
../nitrogen/generated/android/c++/JVariant_NullType_DownloadedPlaylist.cpp
|
|
53
|
+
../nitrogen/generated/android/c++/JHybridEqualizerSpec.cpp
|
|
44
54
|
../nitrogen/generated/android/c++/JHybridPlayerQueueSpec.cpp
|
|
45
55
|
../nitrogen/generated/android/c++/JVariant_NullType_Playlist.cpp
|
|
46
|
-
../nitrogen/generated/android/c++/JVariant_NullType_String.cpp
|
|
47
56
|
../nitrogen/generated/android/c++/JHybridTrackPlayerSpec.cpp
|
|
48
57
|
../nitrogen/generated/android/c++/JVariant_NullType_TrackItem.cpp
|
|
49
58
|
)
|
|
@@ -17,6 +17,14 @@
|
|
|
17
17
|
|
|
18
18
|
#include "JHybridAndroidAutoMediaLibrarySpec.hpp"
|
|
19
19
|
#include "JHybridAudioDevicesSpec.hpp"
|
|
20
|
+
#include "JHybridDownloadManagerSpec.hpp"
|
|
21
|
+
#include "JFunc_void_DownloadProgress.hpp"
|
|
22
|
+
#include "JFunc_void_std__string_std__string_DownloadState_std__optional_DownloadError_.hpp"
|
|
23
|
+
#include "JFunc_void_DownloadedTrack.hpp"
|
|
24
|
+
#include "JHybridEqualizerSpec.hpp"
|
|
25
|
+
#include "JFunc_void_bool.hpp"
|
|
26
|
+
#include "JFunc_void_std__vector_EqualizerBand_.hpp"
|
|
27
|
+
#include "JFunc_void_std__optional_std__variant_nitro__NullType__std__string__.hpp"
|
|
20
28
|
#include "JHybridPlayerQueueSpec.hpp"
|
|
21
29
|
#include "JFunc_void_std__vector_Playlist__std__optional_QueueOperation_.hpp"
|
|
22
30
|
#include "JFunc_void_std__string_Playlist_std__optional_QueueOperation_.hpp"
|
|
@@ -25,7 +33,6 @@
|
|
|
25
33
|
#include "JFunc_void_TrackPlayerState_std__optional_Reason_.hpp"
|
|
26
34
|
#include "JFunc_void_double_double.hpp"
|
|
27
35
|
#include "JFunc_void_double_double_std__optional_bool_.hpp"
|
|
28
|
-
#include "JFunc_void_bool.hpp"
|
|
29
36
|
#include <NitroModules/DefaultConstructableObject.hpp>
|
|
30
37
|
|
|
31
38
|
namespace margelo::nitro::nitroplayer {
|
|
@@ -39,6 +46,14 @@ int initialize(JavaVM* vm) {
|
|
|
39
46
|
// Register native JNI methods
|
|
40
47
|
margelo::nitro::nitroplayer::JHybridAndroidAutoMediaLibrarySpec::registerNatives();
|
|
41
48
|
margelo::nitro::nitroplayer::JHybridAudioDevicesSpec::registerNatives();
|
|
49
|
+
margelo::nitro::nitroplayer::JHybridDownloadManagerSpec::registerNatives();
|
|
50
|
+
margelo::nitro::nitroplayer::JFunc_void_DownloadProgress_cxx::registerNatives();
|
|
51
|
+
margelo::nitro::nitroplayer::JFunc_void_std__string_std__string_DownloadState_std__optional_DownloadError__cxx::registerNatives();
|
|
52
|
+
margelo::nitro::nitroplayer::JFunc_void_DownloadedTrack_cxx::registerNatives();
|
|
53
|
+
margelo::nitro::nitroplayer::JHybridEqualizerSpec::registerNatives();
|
|
54
|
+
margelo::nitro::nitroplayer::JFunc_void_bool_cxx::registerNatives();
|
|
55
|
+
margelo::nitro::nitroplayer::JFunc_void_std__vector_EqualizerBand__cxx::registerNatives();
|
|
56
|
+
margelo::nitro::nitroplayer::JFunc_void_std__optional_std__variant_nitro__NullType__std__string___cxx::registerNatives();
|
|
42
57
|
margelo::nitro::nitroplayer::JHybridPlayerQueueSpec::registerNatives();
|
|
43
58
|
margelo::nitro::nitroplayer::JFunc_void_std__vector_Playlist__std__optional_QueueOperation__cxx::registerNatives();
|
|
44
59
|
margelo::nitro::nitroplayer::JFunc_void_std__string_Playlist_std__optional_QueueOperation__cxx::registerNatives();
|
|
@@ -47,7 +62,6 @@ int initialize(JavaVM* vm) {
|
|
|
47
62
|
margelo::nitro::nitroplayer::JFunc_void_TrackPlayerState_std__optional_Reason__cxx::registerNatives();
|
|
48
63
|
margelo::nitro::nitroplayer::JFunc_void_double_double_cxx::registerNatives();
|
|
49
64
|
margelo::nitro::nitroplayer::JFunc_void_double_double_std__optional_bool__cxx::registerNatives();
|
|
50
|
-
margelo::nitro::nitroplayer::JFunc_void_bool_cxx::registerNatives();
|
|
51
65
|
|
|
52
66
|
// Register Nitro Hybrid Objects
|
|
53
67
|
HybridObjectRegistry::registerHybridObjectConstructor(
|
|
@@ -82,6 +96,22 @@ int initialize(JavaVM* vm) {
|
|
|
82
96
|
return instance->cthis()->shared();
|
|
83
97
|
}
|
|
84
98
|
);
|
|
99
|
+
HybridObjectRegistry::registerHybridObjectConstructor(
|
|
100
|
+
"DownloadManager",
|
|
101
|
+
[]() -> std::shared_ptr<HybridObject> {
|
|
102
|
+
static DefaultConstructableObject<JHybridDownloadManagerSpec::javaobject> object("com/margelo/nitro/nitroplayer/HybridDownloadManager");
|
|
103
|
+
auto instance = object.create();
|
|
104
|
+
return instance->cthis()->shared();
|
|
105
|
+
}
|
|
106
|
+
);
|
|
107
|
+
HybridObjectRegistry::registerHybridObjectConstructor(
|
|
108
|
+
"Equalizer",
|
|
109
|
+
[]() -> std::shared_ptr<HybridObject> {
|
|
110
|
+
static DefaultConstructableObject<JHybridEqualizerSpec::javaobject> object("com/margelo/nitro/nitroplayer/HybridEqualizer");
|
|
111
|
+
auto instance = object.create();
|
|
112
|
+
return instance->cthis()->shared();
|
|
113
|
+
}
|
|
114
|
+
);
|
|
85
115
|
});
|
|
86
116
|
}
|
|
87
117
|
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JCurrentPlayingType.hpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © 2026 Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <fbjni/fbjni.h>
|
|
11
|
+
#include "CurrentPlayingType.hpp"
|
|
12
|
+
|
|
13
|
+
namespace margelo::nitro::nitroplayer {
|
|
14
|
+
|
|
15
|
+
using namespace facebook;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The C++ JNI bridge between the C++ enum "CurrentPlayingType" and the the Kotlin enum "CurrentPlayingType".
|
|
19
|
+
*/
|
|
20
|
+
struct JCurrentPlayingType final: public jni::JavaClass<JCurrentPlayingType> {
|
|
21
|
+
public:
|
|
22
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/CurrentPlayingType;";
|
|
23
|
+
|
|
24
|
+
public:
|
|
25
|
+
/**
|
|
26
|
+
* Convert this Java/Kotlin-based enum to the C++ enum CurrentPlayingType.
|
|
27
|
+
*/
|
|
28
|
+
[[maybe_unused]]
|
|
29
|
+
[[nodiscard]]
|
|
30
|
+
CurrentPlayingType toCpp() const {
|
|
31
|
+
static const auto clazz = javaClassStatic();
|
|
32
|
+
static const auto fieldOrdinal = clazz->getField<int>("value");
|
|
33
|
+
int ordinal = this->getFieldValue(fieldOrdinal);
|
|
34
|
+
return static_cast<CurrentPlayingType>(ordinal);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public:
|
|
38
|
+
/**
|
|
39
|
+
* Create a Java/Kotlin-based enum with the given C++ enum's value.
|
|
40
|
+
*/
|
|
41
|
+
[[maybe_unused]]
|
|
42
|
+
static jni::alias_ref<JCurrentPlayingType> fromCpp(CurrentPlayingType value) {
|
|
43
|
+
static const auto clazz = javaClassStatic();
|
|
44
|
+
static const auto fieldPLAYLIST = clazz->getStaticField<JCurrentPlayingType>("PLAYLIST");
|
|
45
|
+
static const auto fieldUP_NEXT = clazz->getStaticField<JCurrentPlayingType>("UP_NEXT");
|
|
46
|
+
static const auto fieldPLAY_NEXT = clazz->getStaticField<JCurrentPlayingType>("PLAY_NEXT");
|
|
47
|
+
static const auto fieldNOT_PLAYING = clazz->getStaticField<JCurrentPlayingType>("NOT_PLAYING");
|
|
48
|
+
|
|
49
|
+
switch (value) {
|
|
50
|
+
case CurrentPlayingType::PLAYLIST:
|
|
51
|
+
return clazz->getStaticFieldValue(fieldPLAYLIST);
|
|
52
|
+
case CurrentPlayingType::UP_NEXT:
|
|
53
|
+
return clazz->getStaticFieldValue(fieldUP_NEXT);
|
|
54
|
+
case CurrentPlayingType::PLAY_NEXT:
|
|
55
|
+
return clazz->getStaticFieldValue(fieldPLAY_NEXT);
|
|
56
|
+
case CurrentPlayingType::NOT_PLAYING:
|
|
57
|
+
return clazz->getStaticFieldValue(fieldNOT_PLAYING);
|
|
58
|
+
default:
|
|
59
|
+
std::string stringValue = std::to_string(static_cast<int>(value));
|
|
60
|
+
throw std::invalid_argument("Invalid enum value (" + stringValue + "!");
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
} // namespace margelo::nitro::nitroplayer
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JDownloadConfig.hpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © 2026 Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <fbjni/fbjni.h>
|
|
11
|
+
#include "DownloadConfig.hpp"
|
|
12
|
+
|
|
13
|
+
#include "JStorageLocation.hpp"
|
|
14
|
+
#include "JVariant_NullType_String.hpp"
|
|
15
|
+
#include "StorageLocation.hpp"
|
|
16
|
+
#include <NitroModules/JNull.hpp>
|
|
17
|
+
#include <NitroModules/Null.hpp>
|
|
18
|
+
#include <optional>
|
|
19
|
+
#include <string>
|
|
20
|
+
#include <variant>
|
|
21
|
+
|
|
22
|
+
namespace margelo::nitro::nitroplayer {
|
|
23
|
+
|
|
24
|
+
using namespace facebook;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The C++ JNI bridge between the C++ struct "DownloadConfig" and the the Kotlin data class "DownloadConfig".
|
|
28
|
+
*/
|
|
29
|
+
struct JDownloadConfig final: public jni::JavaClass<JDownloadConfig> {
|
|
30
|
+
public:
|
|
31
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/DownloadConfig;";
|
|
32
|
+
|
|
33
|
+
public:
|
|
34
|
+
/**
|
|
35
|
+
* Convert this Java/Kotlin-based struct to the C++ struct DownloadConfig by copying all values to C++.
|
|
36
|
+
*/
|
|
37
|
+
[[maybe_unused]]
|
|
38
|
+
[[nodiscard]]
|
|
39
|
+
DownloadConfig toCpp() const {
|
|
40
|
+
static const auto clazz = javaClassStatic();
|
|
41
|
+
static const auto fieldStorageLocation = clazz->getField<JStorageLocation>("storageLocation");
|
|
42
|
+
jni::local_ref<JStorageLocation> storageLocation = this->getFieldValue(fieldStorageLocation);
|
|
43
|
+
static const auto fieldMaxConcurrentDownloads = clazz->getField<jni::JDouble>("maxConcurrentDownloads");
|
|
44
|
+
jni::local_ref<jni::JDouble> maxConcurrentDownloads = this->getFieldValue(fieldMaxConcurrentDownloads);
|
|
45
|
+
static const auto fieldAutoRetry = clazz->getField<jni::JBoolean>("autoRetry");
|
|
46
|
+
jni::local_ref<jni::JBoolean> autoRetry = this->getFieldValue(fieldAutoRetry);
|
|
47
|
+
static const auto fieldMaxRetryAttempts = clazz->getField<jni::JDouble>("maxRetryAttempts");
|
|
48
|
+
jni::local_ref<jni::JDouble> maxRetryAttempts = this->getFieldValue(fieldMaxRetryAttempts);
|
|
49
|
+
static const auto fieldBackgroundDownloadsEnabled = clazz->getField<jni::JBoolean>("backgroundDownloadsEnabled");
|
|
50
|
+
jni::local_ref<jni::JBoolean> backgroundDownloadsEnabled = this->getFieldValue(fieldBackgroundDownloadsEnabled);
|
|
51
|
+
static const auto fieldDownloadArtwork = clazz->getField<jni::JBoolean>("downloadArtwork");
|
|
52
|
+
jni::local_ref<jni::JBoolean> downloadArtwork = this->getFieldValue(fieldDownloadArtwork);
|
|
53
|
+
static const auto fieldCustomDownloadPath = clazz->getField<JVariant_NullType_String>("customDownloadPath");
|
|
54
|
+
jni::local_ref<JVariant_NullType_String> customDownloadPath = this->getFieldValue(fieldCustomDownloadPath);
|
|
55
|
+
static const auto fieldWifiOnlyDownloads = clazz->getField<jni::JBoolean>("wifiOnlyDownloads");
|
|
56
|
+
jni::local_ref<jni::JBoolean> wifiOnlyDownloads = this->getFieldValue(fieldWifiOnlyDownloads);
|
|
57
|
+
return DownloadConfig(
|
|
58
|
+
storageLocation != nullptr ? std::make_optional(storageLocation->toCpp()) : std::nullopt,
|
|
59
|
+
maxConcurrentDownloads != nullptr ? std::make_optional(maxConcurrentDownloads->value()) : std::nullopt,
|
|
60
|
+
autoRetry != nullptr ? std::make_optional(static_cast<bool>(autoRetry->value())) : std::nullopt,
|
|
61
|
+
maxRetryAttempts != nullptr ? std::make_optional(maxRetryAttempts->value()) : std::nullopt,
|
|
62
|
+
backgroundDownloadsEnabled != nullptr ? std::make_optional(static_cast<bool>(backgroundDownloadsEnabled->value())) : std::nullopt,
|
|
63
|
+
downloadArtwork != nullptr ? std::make_optional(static_cast<bool>(downloadArtwork->value())) : std::nullopt,
|
|
64
|
+
customDownloadPath != nullptr ? std::make_optional(customDownloadPath->toCpp()) : std::nullopt,
|
|
65
|
+
wifiOnlyDownloads != nullptr ? std::make_optional(static_cast<bool>(wifiOnlyDownloads->value())) : std::nullopt
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
public:
|
|
70
|
+
/**
|
|
71
|
+
* Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
|
|
72
|
+
*/
|
|
73
|
+
[[maybe_unused]]
|
|
74
|
+
static jni::local_ref<JDownloadConfig::javaobject> fromCpp(const DownloadConfig& value) {
|
|
75
|
+
using JSignature = JDownloadConfig(jni::alias_ref<JStorageLocation>, jni::alias_ref<jni::JDouble>, jni::alias_ref<jni::JBoolean>, jni::alias_ref<jni::JDouble>, jni::alias_ref<jni::JBoolean>, jni::alias_ref<jni::JBoolean>, jni::alias_ref<JVariant_NullType_String>, jni::alias_ref<jni::JBoolean>);
|
|
76
|
+
static const auto clazz = javaClassStatic();
|
|
77
|
+
static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
|
|
78
|
+
return create(
|
|
79
|
+
clazz,
|
|
80
|
+
value.storageLocation.has_value() ? JStorageLocation::fromCpp(value.storageLocation.value()) : nullptr,
|
|
81
|
+
value.maxConcurrentDownloads.has_value() ? jni::JDouble::valueOf(value.maxConcurrentDownloads.value()) : nullptr,
|
|
82
|
+
value.autoRetry.has_value() ? jni::JBoolean::valueOf(value.autoRetry.value()) : nullptr,
|
|
83
|
+
value.maxRetryAttempts.has_value() ? jni::JDouble::valueOf(value.maxRetryAttempts.value()) : nullptr,
|
|
84
|
+
value.backgroundDownloadsEnabled.has_value() ? jni::JBoolean::valueOf(value.backgroundDownloadsEnabled.value()) : nullptr,
|
|
85
|
+
value.downloadArtwork.has_value() ? jni::JBoolean::valueOf(value.downloadArtwork.value()) : nullptr,
|
|
86
|
+
value.customDownloadPath.has_value() ? JVariant_NullType_String::fromCpp(value.customDownloadPath.value()) : nullptr,
|
|
87
|
+
value.wifiOnlyDownloads.has_value() ? jni::JBoolean::valueOf(value.wifiOnlyDownloads.value()) : nullptr
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
} // namespace margelo::nitro::nitroplayer
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JDownloadError.hpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © 2026 Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <fbjni/fbjni.h>
|
|
11
|
+
#include "DownloadError.hpp"
|
|
12
|
+
|
|
13
|
+
#include "DownloadErrorReason.hpp"
|
|
14
|
+
#include "JDownloadErrorReason.hpp"
|
|
15
|
+
#include <string>
|
|
16
|
+
|
|
17
|
+
namespace margelo::nitro::nitroplayer {
|
|
18
|
+
|
|
19
|
+
using namespace facebook;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The C++ JNI bridge between the C++ struct "DownloadError" and the the Kotlin data class "DownloadError".
|
|
23
|
+
*/
|
|
24
|
+
struct JDownloadError final: public jni::JavaClass<JDownloadError> {
|
|
25
|
+
public:
|
|
26
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/DownloadError;";
|
|
27
|
+
|
|
28
|
+
public:
|
|
29
|
+
/**
|
|
30
|
+
* Convert this Java/Kotlin-based struct to the C++ struct DownloadError by copying all values to C++.
|
|
31
|
+
*/
|
|
32
|
+
[[maybe_unused]]
|
|
33
|
+
[[nodiscard]]
|
|
34
|
+
DownloadError toCpp() const {
|
|
35
|
+
static const auto clazz = javaClassStatic();
|
|
36
|
+
static const auto fieldCode = clazz->getField<jni::JString>("code");
|
|
37
|
+
jni::local_ref<jni::JString> code = this->getFieldValue(fieldCode);
|
|
38
|
+
static const auto fieldMessage = clazz->getField<jni::JString>("message");
|
|
39
|
+
jni::local_ref<jni::JString> message = this->getFieldValue(fieldMessage);
|
|
40
|
+
static const auto fieldReason = clazz->getField<JDownloadErrorReason>("reason");
|
|
41
|
+
jni::local_ref<JDownloadErrorReason> reason = this->getFieldValue(fieldReason);
|
|
42
|
+
static const auto fieldIsRetryable = clazz->getField<jboolean>("isRetryable");
|
|
43
|
+
jboolean isRetryable = this->getFieldValue(fieldIsRetryable);
|
|
44
|
+
return DownloadError(
|
|
45
|
+
code->toStdString(),
|
|
46
|
+
message->toStdString(),
|
|
47
|
+
reason->toCpp(),
|
|
48
|
+
static_cast<bool>(isRetryable)
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public:
|
|
53
|
+
/**
|
|
54
|
+
* Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
|
|
55
|
+
*/
|
|
56
|
+
[[maybe_unused]]
|
|
57
|
+
static jni::local_ref<JDownloadError::javaobject> fromCpp(const DownloadError& value) {
|
|
58
|
+
using JSignature = JDownloadError(jni::alias_ref<jni::JString>, jni::alias_ref<jni::JString>, jni::alias_ref<JDownloadErrorReason>, jboolean);
|
|
59
|
+
static const auto clazz = javaClassStatic();
|
|
60
|
+
static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
|
|
61
|
+
return create(
|
|
62
|
+
clazz,
|
|
63
|
+
jni::make_jstring(value.code),
|
|
64
|
+
jni::make_jstring(value.message),
|
|
65
|
+
JDownloadErrorReason::fromCpp(value.reason),
|
|
66
|
+
value.isRetryable
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
} // namespace margelo::nitro::nitroplayer
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JDownloadErrorReason.hpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © 2026 Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <fbjni/fbjni.h>
|
|
11
|
+
#include "DownloadErrorReason.hpp"
|
|
12
|
+
|
|
13
|
+
namespace margelo::nitro::nitroplayer {
|
|
14
|
+
|
|
15
|
+
using namespace facebook;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The C++ JNI bridge between the C++ enum "DownloadErrorReason" and the the Kotlin enum "DownloadErrorReason".
|
|
19
|
+
*/
|
|
20
|
+
struct JDownloadErrorReason final: public jni::JavaClass<JDownloadErrorReason> {
|
|
21
|
+
public:
|
|
22
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/DownloadErrorReason;";
|
|
23
|
+
|
|
24
|
+
public:
|
|
25
|
+
/**
|
|
26
|
+
* Convert this Java/Kotlin-based enum to the C++ enum DownloadErrorReason.
|
|
27
|
+
*/
|
|
28
|
+
[[maybe_unused]]
|
|
29
|
+
[[nodiscard]]
|
|
30
|
+
DownloadErrorReason toCpp() const {
|
|
31
|
+
static const auto clazz = javaClassStatic();
|
|
32
|
+
static const auto fieldOrdinal = clazz->getField<int>("value");
|
|
33
|
+
int ordinal = this->getFieldValue(fieldOrdinal);
|
|
34
|
+
return static_cast<DownloadErrorReason>(ordinal);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public:
|
|
38
|
+
/**
|
|
39
|
+
* Create a Java/Kotlin-based enum with the given C++ enum's value.
|
|
40
|
+
*/
|
|
41
|
+
[[maybe_unused]]
|
|
42
|
+
static jni::alias_ref<JDownloadErrorReason> fromCpp(DownloadErrorReason value) {
|
|
43
|
+
static const auto clazz = javaClassStatic();
|
|
44
|
+
static const auto fieldNETWORK_ERROR = clazz->getStaticField<JDownloadErrorReason>("NETWORK_ERROR");
|
|
45
|
+
static const auto fieldSTORAGE_FULL = clazz->getStaticField<JDownloadErrorReason>("STORAGE_FULL");
|
|
46
|
+
static const auto fieldFILE_NOT_FOUND = clazz->getStaticField<JDownloadErrorReason>("FILE_NOT_FOUND");
|
|
47
|
+
static const auto fieldPERMISSION_DENIED = clazz->getStaticField<JDownloadErrorReason>("PERMISSION_DENIED");
|
|
48
|
+
static const auto fieldINVALID_URL = clazz->getStaticField<JDownloadErrorReason>("INVALID_URL");
|
|
49
|
+
static const auto fieldTIMEOUT = clazz->getStaticField<JDownloadErrorReason>("TIMEOUT");
|
|
50
|
+
static const auto fieldUNKNOWN = clazz->getStaticField<JDownloadErrorReason>("UNKNOWN");
|
|
51
|
+
|
|
52
|
+
switch (value) {
|
|
53
|
+
case DownloadErrorReason::NETWORK_ERROR:
|
|
54
|
+
return clazz->getStaticFieldValue(fieldNETWORK_ERROR);
|
|
55
|
+
case DownloadErrorReason::STORAGE_FULL:
|
|
56
|
+
return clazz->getStaticFieldValue(fieldSTORAGE_FULL);
|
|
57
|
+
case DownloadErrorReason::FILE_NOT_FOUND:
|
|
58
|
+
return clazz->getStaticFieldValue(fieldFILE_NOT_FOUND);
|
|
59
|
+
case DownloadErrorReason::PERMISSION_DENIED:
|
|
60
|
+
return clazz->getStaticFieldValue(fieldPERMISSION_DENIED);
|
|
61
|
+
case DownloadErrorReason::INVALID_URL:
|
|
62
|
+
return clazz->getStaticFieldValue(fieldINVALID_URL);
|
|
63
|
+
case DownloadErrorReason::TIMEOUT:
|
|
64
|
+
return clazz->getStaticFieldValue(fieldTIMEOUT);
|
|
65
|
+
case DownloadErrorReason::UNKNOWN:
|
|
66
|
+
return clazz->getStaticFieldValue(fieldUNKNOWN);
|
|
67
|
+
default:
|
|
68
|
+
std::string stringValue = std::to_string(static_cast<int>(value));
|
|
69
|
+
throw std::invalid_argument("Invalid enum value (" + stringValue + "!");
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
} // namespace margelo::nitro::nitroplayer
|