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.
Files changed (257) hide show
  1. package/README.md +444 -4
  2. package/android/build.gradle +4 -1
  3. package/android/src/main/AndroidManifest.xml +16 -1
  4. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridAndroidAutoMediaLibrary.kt +2 -0
  5. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridAudioDevices.kt +8 -0
  6. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridDownloadManager.kt +225 -0
  7. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridEqualizer.kt +105 -0
  8. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridPlayerQueue.kt +6 -6
  9. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridTrackPlayer.kt +37 -12
  10. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerCore.kt +970 -213
  11. package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadDatabase.kt +475 -0
  12. package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadFileManager.kt +159 -0
  13. package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadManagerCore.kt +489 -0
  14. package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadWorker.kt +209 -0
  15. package/android/src/main/java/com/margelo/nitro/nitroplayer/equalizer/EqualizerCore.kt +486 -0
  16. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaBrowserService.kt +3 -1
  17. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaSessionManager.kt +14 -6
  18. package/android/src/main/java/com/margelo/nitro/nitroplayer/playlist/PlaylistManager.kt +27 -0
  19. package/ios/HybridDownloadManager.swift +226 -0
  20. package/ios/HybridEqualizer.swift +111 -0
  21. package/ios/HybridTrackPlayer.swift +36 -8
  22. package/ios/core/TrackPlayerCore.swift +998 -276
  23. package/ios/download/DownloadDatabase.swift +493 -0
  24. package/ios/download/DownloadFileManager.swift +241 -0
  25. package/ios/download/DownloadManagerCore.swift +923 -0
  26. package/ios/equalizer/EqualizerCore.swift +685 -0
  27. package/ios/media/MediaSessionManager.swift +40 -28
  28. package/ios/playlist/PlaylistManager.swift +40 -9
  29. package/ios/queue/HybridPlayerQueue.swift +33 -13
  30. package/lib/hooks/downloadCallbackManager.d.ts +36 -0
  31. package/lib/hooks/downloadCallbackManager.js +108 -0
  32. package/lib/hooks/equalizerCallbackManager.d.ts +37 -0
  33. package/lib/hooks/equalizerCallbackManager.js +109 -0
  34. package/lib/hooks/index.d.ts +16 -0
  35. package/lib/hooks/index.js +10 -0
  36. package/lib/hooks/useActualQueue.d.ts +48 -0
  37. package/lib/hooks/useActualQueue.js +98 -0
  38. package/lib/hooks/useDownloadActions.d.ts +26 -0
  39. package/lib/hooks/useDownloadActions.js +117 -0
  40. package/lib/hooks/useDownloadProgress.d.ts +25 -0
  41. package/lib/hooks/useDownloadProgress.js +79 -0
  42. package/lib/hooks/useDownloadStorage.d.ts +19 -0
  43. package/lib/hooks/useDownloadStorage.js +60 -0
  44. package/lib/hooks/useDownloadedTracks.d.ts +25 -0
  45. package/lib/hooks/useDownloadedTracks.js +69 -0
  46. package/lib/hooks/useEqualizer.d.ts +25 -0
  47. package/lib/hooks/useEqualizer.js +124 -0
  48. package/lib/hooks/useEqualizerPresets.d.ts +22 -0
  49. package/lib/hooks/useEqualizerPresets.js +96 -0
  50. package/lib/hooks/useNowPlaying.js +3 -2
  51. package/lib/hooks/useOnChangeTrack.js +15 -12
  52. package/lib/hooks/useOnPlaybackStateChange.js +16 -13
  53. package/lib/hooks/usePlaylist.d.ts +48 -0
  54. package/lib/hooks/usePlaylist.js +136 -0
  55. package/lib/index.d.ts +6 -0
  56. package/lib/index.js +6 -0
  57. package/lib/specs/DownloadManager.nitro.d.ts +152 -0
  58. package/lib/specs/DownloadManager.nitro.js +1 -0
  59. package/lib/specs/Equalizer.nitro.d.ts +43 -0
  60. package/lib/specs/Equalizer.nitro.js +1 -0
  61. package/lib/specs/TrackPlayer.nitro.d.ts +6 -2
  62. package/lib/types/DownloadTypes.d.ts +110 -0
  63. package/lib/types/DownloadTypes.js +1 -0
  64. package/lib/types/EqualizerTypes.d.ts +52 -0
  65. package/lib/types/EqualizerTypes.js +1 -0
  66. package/lib/types/PlayerQueue.d.ts +4 -0
  67. package/nitro.json +8 -0
  68. package/nitrogen/generated/android/NitroPlayer+autolinking.cmake +10 -1
  69. package/nitrogen/generated/android/NitroPlayerOnLoad.cpp +32 -2
  70. package/nitrogen/generated/android/c++/JCurrentPlayingType.hpp +65 -0
  71. package/nitrogen/generated/android/c++/JDownloadConfig.hpp +92 -0
  72. package/nitrogen/generated/android/c++/JDownloadError.hpp +71 -0
  73. package/nitrogen/generated/android/c++/JDownloadErrorReason.hpp +74 -0
  74. package/nitrogen/generated/android/c++/JDownloadProgress.hpp +79 -0
  75. package/nitrogen/generated/android/c++/JDownloadQueueStatus.hpp +81 -0
  76. package/nitrogen/generated/android/c++/JDownloadState.hpp +71 -0
  77. package/nitrogen/generated/android/c++/JDownloadStorageInfo.hpp +73 -0
  78. package/nitrogen/generated/android/c++/JDownloadTask.hpp +108 -0
  79. package/nitrogen/generated/android/c++/JDownloadedPlaylist.hpp +111 -0
  80. package/nitrogen/generated/android/c++/JDownloadedTrack.hpp +92 -0
  81. package/nitrogen/generated/android/c++/JEqualizerBand.hpp +69 -0
  82. package/nitrogen/generated/android/c++/JEqualizerPreset.hpp +78 -0
  83. package/nitrogen/generated/android/c++/JEqualizerState.hpp +91 -0
  84. package/nitrogen/generated/android/c++/JFunc_void_DownloadProgress.hpp +80 -0
  85. package/nitrogen/generated/android/c++/JFunc_void_DownloadedTrack.hpp +89 -0
  86. package/nitrogen/generated/android/c++/JFunc_void_TrackItem_std__optional_Reason_.hpp +2 -0
  87. package/nitrogen/generated/android/c++/JFunc_void_std__optional_std__variant_nitro__NullType__std__string__.hpp +81 -0
  88. package/nitrogen/generated/android/c++/JFunc_void_std__string_Playlist_std__optional_QueueOperation_.hpp +2 -0
  89. package/nitrogen/generated/android/c++/JFunc_void_std__string_std__string_DownloadState_std__optional_DownloadError_.hpp +83 -0
  90. package/nitrogen/generated/android/c++/JFunc_void_std__vector_EqualizerBand_.hpp +97 -0
  91. package/nitrogen/generated/android/c++/JFunc_void_std__vector_Playlist__std__optional_QueueOperation_.hpp +2 -0
  92. package/nitrogen/generated/android/c++/JGainRange.hpp +61 -0
  93. package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.cpp +470 -0
  94. package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.hpp +99 -0
  95. package/nitrogen/generated/android/c++/JHybridEqualizerSpec.cpp +204 -0
  96. package/nitrogen/generated/android/c++/JHybridEqualizerSpec.hpp +82 -0
  97. package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.cpp +2 -0
  98. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.cpp +117 -15
  99. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.hpp +6 -2
  100. package/nitrogen/generated/android/c++/JPlaybackSource.hpp +62 -0
  101. package/nitrogen/generated/android/c++/JPlayerState.hpp +11 -3
  102. package/nitrogen/generated/android/c++/JPlaylist.hpp +2 -0
  103. package/nitrogen/generated/android/c++/JPresetType.hpp +59 -0
  104. package/nitrogen/generated/android/c++/JStorageLocation.hpp +59 -0
  105. package/nitrogen/generated/android/c++/JTrackItem.hpp +9 -3
  106. package/nitrogen/generated/android/c++/JTrackPlayerState.hpp +3 -3
  107. package/nitrogen/generated/android/c++/JVariant_NullType_Double.cpp +26 -0
  108. package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +69 -0
  109. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadError.cpp +26 -0
  110. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadError.hpp +74 -0
  111. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadTask.cpp +26 -0
  112. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadTask.hpp +84 -0
  113. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedPlaylist.cpp +26 -0
  114. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedPlaylist.hpp +85 -0
  115. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedTrack.cpp +26 -0
  116. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedTrack.hpp +80 -0
  117. package/nitrogen/generated/android/c++/JVariant_NullType_Playlist.hpp +2 -0
  118. package/nitrogen/generated/android/c++/JVariant_NullType_TrackItem.hpp +2 -0
  119. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/CurrentPlayingType.kt +23 -0
  120. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadConfig.kt +59 -0
  121. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadError.kt +47 -0
  122. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadErrorReason.kt +26 -0
  123. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadProgress.kt +53 -0
  124. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadQueueStatus.kt +56 -0
  125. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadState.kt +25 -0
  126. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadStorageInfo.kt +50 -0
  127. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadTask.kt +65 -0
  128. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadedPlaylist.kt +53 -0
  129. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadedTrack.kt +56 -0
  130. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/EqualizerBand.kt +47 -0
  131. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/EqualizerPreset.kt +44 -0
  132. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/EqualizerState.kt +44 -0
  133. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_DownloadProgress.kt +80 -0
  134. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_DownloadedTrack.kt +80 -0
  135. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__optional_std__variant_nitro__NullType__std__string__.kt +80 -0
  136. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__string_std__string_DownloadState_std__optional_DownloadError_.kt +80 -0
  137. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__vector_EqualizerBand_.kt +80 -0
  138. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/GainRange.kt +41 -0
  139. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridDownloadManagerSpec.kt +210 -0
  140. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridEqualizerSpec.kt +141 -0
  141. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridTrackPlayerSpec.kt +19 -2
  142. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PlaybackSource.kt +22 -0
  143. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PlayerState.kt +6 -3
  144. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PresetType.kt +21 -0
  145. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/StorageLocation.kt +21 -0
  146. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/TrackItem.kt +7 -3
  147. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/TrackPlayerState.kt +2 -2
  148. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_Double.kt +59 -0
  149. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadError.kt +59 -0
  150. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadTask.kt +59 -0
  151. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadedPlaylist.kt +59 -0
  152. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadedTrack.kt +59 -0
  153. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.cpp +138 -8
  154. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.hpp +1046 -121
  155. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Umbrella.hpp +66 -0
  156. package/nitrogen/generated/ios/NitroPlayerAutolinking.mm +16 -0
  157. package/nitrogen/generated/ios/NitroPlayerAutolinking.swift +30 -0
  158. package/nitrogen/generated/ios/c++/HybridDownloadManagerSpecSwift.cpp +11 -0
  159. package/nitrogen/generated/ios/c++/HybridDownloadManagerSpecSwift.hpp +386 -0
  160. package/nitrogen/generated/ios/c++/HybridEqualizerSpecSwift.cpp +11 -0
  161. package/nitrogen/generated/ios/c++/HybridEqualizerSpecSwift.hpp +223 -0
  162. package/nitrogen/generated/ios/c++/HybridPlayerQueueSpecSwift.hpp +1 -0
  163. package/nitrogen/generated/ios/c++/HybridTrackPlayerSpecSwift.hpp +46 -6
  164. package/nitrogen/generated/ios/swift/CurrentPlayingType.swift +48 -0
  165. package/nitrogen/generated/ios/swift/DownloadConfig.swift +270 -0
  166. package/nitrogen/generated/ios/swift/DownloadError.swift +69 -0
  167. package/nitrogen/generated/ios/swift/DownloadErrorReason.swift +60 -0
  168. package/nitrogen/generated/ios/swift/DownloadProgress.swift +91 -0
  169. package/nitrogen/generated/ios/swift/DownloadQueueStatus.swift +102 -0
  170. package/nitrogen/generated/ios/swift/DownloadState.swift +56 -0
  171. package/nitrogen/generated/ios/swift/DownloadStorageInfo.swift +80 -0
  172. package/nitrogen/generated/ios/swift/DownloadTask.swift +315 -0
  173. package/nitrogen/generated/ios/swift/DownloadedPlaylist.swift +103 -0
  174. package/nitrogen/generated/ios/swift/DownloadedTrack.swift +147 -0
  175. package/nitrogen/generated/ios/swift/EqualizerBand.swift +69 -0
  176. package/nitrogen/generated/ios/swift/EqualizerPreset.swift +70 -0
  177. package/nitrogen/generated/ios/swift/EqualizerState.swift +115 -0
  178. package/nitrogen/generated/ios/swift/Func_void.swift +47 -0
  179. package/nitrogen/generated/ios/swift/Func_void_DownloadProgress.swift +47 -0
  180. package/nitrogen/generated/ios/swift/Func_void_DownloadStorageInfo.swift +47 -0
  181. package/nitrogen/generated/ios/swift/Func_void_DownloadedTrack.swift +47 -0
  182. package/nitrogen/generated/ios/swift/Func_void_PlayerState.swift +47 -0
  183. package/nitrogen/generated/ios/swift/Func_void_bool.swift +5 -5
  184. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
  185. package/nitrogen/generated/ios/swift/Func_void_std__optional_std__variant_nitro__NullType__std__string__.swift +66 -0
  186. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +47 -0
  187. package/nitrogen/generated/ios/swift/Func_void_std__string_std__string_DownloadState_std__optional_DownloadError_.swift +47 -0
  188. package/nitrogen/generated/ios/swift/Func_void_std__vector_EqualizerBand_.swift +47 -0
  189. package/nitrogen/generated/ios/swift/Func_void_std__vector_TrackItem_.swift +47 -0
  190. package/nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift +47 -0
  191. package/nitrogen/generated/ios/swift/GainRange.swift +47 -0
  192. package/nitrogen/generated/ios/swift/HybridDownloadManagerSpec.swift +90 -0
  193. package/nitrogen/generated/ios/swift/HybridDownloadManagerSpec_cxx.swift +705 -0
  194. package/nitrogen/generated/ios/swift/HybridEqualizerSpec.swift +73 -0
  195. package/nitrogen/generated/ios/swift/HybridEqualizerSpec_cxx.swift +396 -0
  196. package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec.swift +6 -2
  197. package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec_cxx.swift +105 -8
  198. package/nitrogen/generated/ios/swift/PlaybackSource.swift +44 -0
  199. package/nitrogen/generated/ios/swift/PlayerState.swift +13 -2
  200. package/nitrogen/generated/ios/swift/PresetType.swift +40 -0
  201. package/nitrogen/generated/ios/swift/StorageLocation.swift +40 -0
  202. package/nitrogen/generated/ios/swift/TrackItem.swift +31 -1
  203. package/nitrogen/generated/ios/swift/TrackPlayerState.swift +4 -4
  204. package/nitrogen/generated/ios/swift/Variant_NullType_Double.swift +18 -0
  205. package/nitrogen/generated/ios/swift/Variant_NullType_DownloadError.swift +18 -0
  206. package/nitrogen/generated/ios/swift/Variant_NullType_DownloadTask.swift +18 -0
  207. package/nitrogen/generated/ios/swift/Variant_NullType_DownloadedPlaylist.swift +18 -0
  208. package/nitrogen/generated/ios/swift/Variant_NullType_DownloadedTrack.swift +18 -0
  209. package/nitrogen/generated/shared/c++/CurrentPlayingType.hpp +84 -0
  210. package/nitrogen/generated/shared/c++/DownloadConfig.hpp +108 -0
  211. package/nitrogen/generated/shared/c++/DownloadError.hpp +89 -0
  212. package/nitrogen/generated/shared/c++/DownloadErrorReason.hpp +96 -0
  213. package/nitrogen/generated/shared/c++/DownloadProgress.hpp +97 -0
  214. package/nitrogen/generated/shared/c++/DownloadQueueStatus.hpp +99 -0
  215. package/nitrogen/generated/shared/c++/DownloadState.hpp +92 -0
  216. package/nitrogen/generated/shared/c++/DownloadStorageInfo.hpp +91 -0
  217. package/nitrogen/generated/shared/c++/DownloadTask.hpp +122 -0
  218. package/nitrogen/generated/shared/c++/DownloadedPlaylist.hpp +101 -0
  219. package/nitrogen/generated/shared/c++/DownloadedTrack.hpp +107 -0
  220. package/nitrogen/generated/shared/c++/EqualizerBand.hpp +87 -0
  221. package/nitrogen/generated/shared/c++/EqualizerPreset.hpp +86 -0
  222. package/nitrogen/generated/shared/c++/EqualizerState.hpp +89 -0
  223. package/nitrogen/generated/shared/c++/GainRange.hpp +79 -0
  224. package/nitrogen/generated/shared/c++/HybridDownloadManagerSpec.cpp +55 -0
  225. package/nitrogen/generated/shared/c++/HybridDownloadManagerSpec.hpp +134 -0
  226. package/nitrogen/generated/shared/c++/HybridEqualizerSpec.cpp +38 -0
  227. package/nitrogen/generated/shared/c++/HybridEqualizerSpec.hpp +95 -0
  228. package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.cpp +4 -0
  229. package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.hpp +11 -5
  230. package/nitrogen/generated/shared/c++/PlaybackSource.hpp +80 -0
  231. package/nitrogen/generated/shared/c++/PlayerState.hpp +9 -2
  232. package/nitrogen/generated/shared/c++/PresetType.hpp +76 -0
  233. package/nitrogen/generated/shared/c++/StorageLocation.hpp +76 -0
  234. package/nitrogen/generated/shared/c++/TrackItem.hpp +7 -2
  235. package/nitrogen/generated/shared/c++/TrackPlayerState.hpp +5 -5
  236. package/package.json +1 -1
  237. package/src/hooks/downloadCallbackManager.ts +149 -0
  238. package/src/hooks/equalizerCallbackManager.ts +138 -0
  239. package/src/hooks/index.ts +23 -0
  240. package/src/hooks/useActualQueue.ts +116 -0
  241. package/src/hooks/useDownloadActions.ts +179 -0
  242. package/src/hooks/useDownloadProgress.ts +126 -0
  243. package/src/hooks/useDownloadStorage.ts +84 -0
  244. package/src/hooks/useDownloadedTracks.ts +138 -0
  245. package/src/hooks/useEqualizer.ts +173 -0
  246. package/src/hooks/useEqualizerPresets.ts +140 -0
  247. package/src/hooks/useNowPlaying.ts +3 -2
  248. package/src/hooks/useOnChangeTrack.ts +15 -11
  249. package/src/hooks/useOnPlaybackStateChange.ts +19 -15
  250. package/src/hooks/usePlaylist.ts +161 -0
  251. package/src/index.ts +12 -0
  252. package/src/specs/DownloadManager.nitro.ts +203 -0
  253. package/src/specs/Equalizer.nitro.ts +69 -0
  254. package/src/specs/TrackPlayer.nitro.ts +6 -2
  255. package/src/types/DownloadTypes.ts +135 -0
  256. package/src/types/EqualizerTypes.ts +72 -0
  257. package/src/types/PlayerQueue.ts +9 -0
@@ -0,0 +1,223 @@
1
+ ///
2
+ /// HybridEqualizerSpecSwift.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 "HybridEqualizerSpec.hpp"
11
+
12
+ // Forward declaration of `HybridEqualizerSpec_cxx` to properly resolve imports.
13
+ namespace NitroPlayer { class HybridEqualizerSpec_cxx; }
14
+
15
+ // Forward declaration of `EqualizerBand` to properly resolve imports.
16
+ namespace margelo::nitro::nitroplayer { struct EqualizerBand; }
17
+ // Forward declaration of `GainRange` to properly resolve imports.
18
+ namespace margelo::nitro::nitroplayer { struct GainRange; }
19
+ // Forward declaration of `EqualizerPreset` to properly resolve imports.
20
+ namespace margelo::nitro::nitroplayer { struct EqualizerPreset; }
21
+ // Forward declaration of `PresetType` to properly resolve imports.
22
+ namespace margelo::nitro::nitroplayer { enum class PresetType; }
23
+ // Forward declaration of `EqualizerState` to properly resolve imports.
24
+ namespace margelo::nitro::nitroplayer { struct EqualizerState; }
25
+
26
+ #include "EqualizerBand.hpp"
27
+ #include <vector>
28
+ #include <string>
29
+ #include "GainRange.hpp"
30
+ #include "EqualizerPreset.hpp"
31
+ #include "PresetType.hpp"
32
+ #include <NitroModules/Null.hpp>
33
+ #include <variant>
34
+ #include "EqualizerState.hpp"
35
+ #include <optional>
36
+ #include <functional>
37
+
38
+ #include "NitroPlayer-Swift-Cxx-Umbrella.hpp"
39
+
40
+ namespace margelo::nitro::nitroplayer {
41
+
42
+ /**
43
+ * The C++ part of HybridEqualizerSpec_cxx.swift.
44
+ *
45
+ * HybridEqualizerSpecSwift (C++) accesses HybridEqualizerSpec_cxx (Swift), and might
46
+ * contain some additional bridging code for C++ <> Swift interop.
47
+ *
48
+ * Since this obviously introduces an overhead, I hope at some point in
49
+ * the future, HybridEqualizerSpec_cxx can directly inherit from the C++ class HybridEqualizerSpec
50
+ * to simplify the whole structure and memory management.
51
+ */
52
+ class HybridEqualizerSpecSwift: public virtual HybridEqualizerSpec {
53
+ public:
54
+ // Constructor from a Swift instance
55
+ explicit HybridEqualizerSpecSwift(const NitroPlayer::HybridEqualizerSpec_cxx& swiftPart):
56
+ HybridObject(HybridEqualizerSpec::TAG),
57
+ _swiftPart(swiftPart) { }
58
+
59
+ public:
60
+ // Get the Swift part
61
+ inline NitroPlayer::HybridEqualizerSpec_cxx& getSwiftPart() noexcept {
62
+ return _swiftPart;
63
+ }
64
+
65
+ public:
66
+ inline size_t getExternalMemorySize() noexcept override {
67
+ return _swiftPart.getMemorySize();
68
+ }
69
+ void dispose() noexcept override {
70
+ _swiftPart.dispose();
71
+ }
72
+ std::string toString() override {
73
+ return _swiftPart.toString();
74
+ }
75
+
76
+ public:
77
+ // Properties
78
+
79
+
80
+ public:
81
+ // Methods
82
+ inline bool setEnabled(bool enabled) override {
83
+ auto __result = _swiftPart.setEnabled(std::forward<decltype(enabled)>(enabled));
84
+ if (__result.hasError()) [[unlikely]] {
85
+ std::rethrow_exception(__result.error());
86
+ }
87
+ auto __value = std::move(__result.value());
88
+ return __value;
89
+ }
90
+ inline bool isEnabled() override {
91
+ auto __result = _swiftPart.isEnabled();
92
+ if (__result.hasError()) [[unlikely]] {
93
+ std::rethrow_exception(__result.error());
94
+ }
95
+ auto __value = std::move(__result.value());
96
+ return __value;
97
+ }
98
+ inline std::vector<EqualizerBand> getBands() override {
99
+ auto __result = _swiftPart.getBands();
100
+ if (__result.hasError()) [[unlikely]] {
101
+ std::rethrow_exception(__result.error());
102
+ }
103
+ auto __value = std::move(__result.value());
104
+ return __value;
105
+ }
106
+ inline bool setBandGain(double bandIndex, double gainDb) override {
107
+ auto __result = _swiftPart.setBandGain(std::forward<decltype(bandIndex)>(bandIndex), std::forward<decltype(gainDb)>(gainDb));
108
+ if (__result.hasError()) [[unlikely]] {
109
+ std::rethrow_exception(__result.error());
110
+ }
111
+ auto __value = std::move(__result.value());
112
+ return __value;
113
+ }
114
+ inline bool setAllBandGains(const std::vector<double>& gains) override {
115
+ auto __result = _swiftPart.setAllBandGains(gains);
116
+ if (__result.hasError()) [[unlikely]] {
117
+ std::rethrow_exception(__result.error());
118
+ }
119
+ auto __value = std::move(__result.value());
120
+ return __value;
121
+ }
122
+ inline GainRange getBandRange() override {
123
+ auto __result = _swiftPart.getBandRange();
124
+ if (__result.hasError()) [[unlikely]] {
125
+ std::rethrow_exception(__result.error());
126
+ }
127
+ auto __value = std::move(__result.value());
128
+ return __value;
129
+ }
130
+ inline std::vector<EqualizerPreset> getPresets() override {
131
+ auto __result = _swiftPart.getPresets();
132
+ if (__result.hasError()) [[unlikely]] {
133
+ std::rethrow_exception(__result.error());
134
+ }
135
+ auto __value = std::move(__result.value());
136
+ return __value;
137
+ }
138
+ inline std::vector<EqualizerPreset> getBuiltInPresets() override {
139
+ auto __result = _swiftPart.getBuiltInPresets();
140
+ if (__result.hasError()) [[unlikely]] {
141
+ std::rethrow_exception(__result.error());
142
+ }
143
+ auto __value = std::move(__result.value());
144
+ return __value;
145
+ }
146
+ inline std::vector<EqualizerPreset> getCustomPresets() override {
147
+ auto __result = _swiftPart.getCustomPresets();
148
+ if (__result.hasError()) [[unlikely]] {
149
+ std::rethrow_exception(__result.error());
150
+ }
151
+ auto __value = std::move(__result.value());
152
+ return __value;
153
+ }
154
+ inline bool applyPreset(const std::string& presetName) override {
155
+ auto __result = _swiftPart.applyPreset(presetName);
156
+ if (__result.hasError()) [[unlikely]] {
157
+ std::rethrow_exception(__result.error());
158
+ }
159
+ auto __value = std::move(__result.value());
160
+ return __value;
161
+ }
162
+ inline std::variant<nitro::NullType, std::string> getCurrentPresetName() override {
163
+ auto __result = _swiftPart.getCurrentPresetName();
164
+ if (__result.hasError()) [[unlikely]] {
165
+ std::rethrow_exception(__result.error());
166
+ }
167
+ auto __value = std::move(__result.value());
168
+ return __value;
169
+ }
170
+ inline bool saveCustomPreset(const std::string& name) override {
171
+ auto __result = _swiftPart.saveCustomPreset(name);
172
+ if (__result.hasError()) [[unlikely]] {
173
+ std::rethrow_exception(__result.error());
174
+ }
175
+ auto __value = std::move(__result.value());
176
+ return __value;
177
+ }
178
+ inline bool deleteCustomPreset(const std::string& name) override {
179
+ auto __result = _swiftPart.deleteCustomPreset(name);
180
+ if (__result.hasError()) [[unlikely]] {
181
+ std::rethrow_exception(__result.error());
182
+ }
183
+ auto __value = std::move(__result.value());
184
+ return __value;
185
+ }
186
+ inline EqualizerState getState() override {
187
+ auto __result = _swiftPart.getState();
188
+ if (__result.hasError()) [[unlikely]] {
189
+ std::rethrow_exception(__result.error());
190
+ }
191
+ auto __value = std::move(__result.value());
192
+ return __value;
193
+ }
194
+ inline void reset() override {
195
+ auto __result = _swiftPart.reset();
196
+ if (__result.hasError()) [[unlikely]] {
197
+ std::rethrow_exception(__result.error());
198
+ }
199
+ }
200
+ inline void onEnabledChange(const std::function<void(bool /* enabled */)>& callback) override {
201
+ auto __result = _swiftPart.onEnabledChange(callback);
202
+ if (__result.hasError()) [[unlikely]] {
203
+ std::rethrow_exception(__result.error());
204
+ }
205
+ }
206
+ inline void onBandChange(const std::function<void(const std::vector<EqualizerBand>& /* bands */)>& callback) override {
207
+ auto __result = _swiftPart.onBandChange(callback);
208
+ if (__result.hasError()) [[unlikely]] {
209
+ std::rethrow_exception(__result.error());
210
+ }
211
+ }
212
+ inline void onPresetChange(const std::function<void(const std::optional<std::variant<nitro::NullType, std::string>>& /* presetName */)>& callback) override {
213
+ auto __result = _swiftPart.onPresetChange(callback);
214
+ if (__result.hasError()) [[unlikely]] {
215
+ std::rethrow_exception(__result.error());
216
+ }
217
+ }
218
+
219
+ private:
220
+ NitroPlayer::HybridEqualizerSpec_cxx _swiftPart;
221
+ };
222
+
223
+ } // namespace margelo::nitro::nitroplayer
@@ -26,6 +26,7 @@ namespace margelo::nitro::nitroplayer { enum class QueueOperation; }
26
26
  #include <variant>
27
27
  #include "TrackItem.hpp"
28
28
  #include <vector>
29
+ #include <NitroModules/AnyMap.hpp>
29
30
  #include "QueueOperation.hpp"
30
31
  #include <functional>
31
32
 
@@ -12,12 +12,14 @@
12
12
  // Forward declaration of `HybridTrackPlayerSpec_cxx` to properly resolve imports.
13
13
  namespace NitroPlayer { class HybridTrackPlayerSpec_cxx; }
14
14
 
15
- // Forward declaration of `PlayerState` to properly resolve imports.
16
- namespace margelo::nitro::nitroplayer { struct PlayerState; }
17
15
  // Forward declaration of `TrackItem` to properly resolve imports.
18
16
  namespace margelo::nitro::nitroplayer { struct TrackItem; }
17
+ // Forward declaration of `PlayerState` to properly resolve imports.
18
+ namespace margelo::nitro::nitroplayer { struct PlayerState; }
19
19
  // Forward declaration of `TrackPlayerState` to properly resolve imports.
20
20
  namespace margelo::nitro::nitroplayer { enum class TrackPlayerState; }
21
+ // Forward declaration of `CurrentPlayingType` to properly resolve imports.
22
+ namespace margelo::nitro::nitroplayer { enum class CurrentPlayingType; }
21
23
  // Forward declaration of `RepeatMode` to properly resolve imports.
22
24
  namespace margelo::nitro::nitroplayer { enum class RepeatMode; }
23
25
  // Forward declaration of `PlayerConfig` to properly resolve imports.
@@ -25,13 +27,17 @@ namespace margelo::nitro::nitroplayer { struct PlayerConfig; }
25
27
  // Forward declaration of `Reason` to properly resolve imports.
26
28
  namespace margelo::nitro::nitroplayer { enum class Reason; }
27
29
 
30
+ #include <NitroModules/Promise.hpp>
28
31
  #include <string>
29
32
  #include <optional>
30
- #include "PlayerState.hpp"
31
- #include <NitroModules/Null.hpp>
32
33
  #include "TrackItem.hpp"
34
+ #include <vector>
35
+ #include <NitroModules/Null.hpp>
33
36
  #include <variant>
37
+ #include <NitroModules/AnyMap.hpp>
38
+ #include "PlayerState.hpp"
34
39
  #include "TrackPlayerState.hpp"
40
+ #include "CurrentPlayingType.hpp"
35
41
  #include "RepeatMode.hpp"
36
42
  #include "PlayerConfig.hpp"
37
43
  #include "Reason.hpp"
@@ -93,11 +99,13 @@ namespace margelo::nitro::nitroplayer {
93
99
  std::rethrow_exception(__result.error());
94
100
  }
95
101
  }
96
- inline void playSong(const std::string& songId, const std::optional<std::string>& fromPlaylist) override {
102
+ inline std::shared_ptr<Promise<void>> playSong(const std::string& songId, const std::optional<std::string>& fromPlaylist) override {
97
103
  auto __result = _swiftPart.playSong(songId, fromPlaylist);
98
104
  if (__result.hasError()) [[unlikely]] {
99
105
  std::rethrow_exception(__result.error());
100
106
  }
107
+ auto __value = std::move(__result.value());
108
+ return __value;
101
109
  }
102
110
  inline void skipToNext() override {
103
111
  auto __result = _swiftPart.skipToNext();
@@ -105,6 +113,14 @@ namespace margelo::nitro::nitroplayer {
105
113
  std::rethrow_exception(__result.error());
106
114
  }
107
115
  }
116
+ inline std::shared_ptr<Promise<bool>> skipToIndex(double index) override {
117
+ auto __result = _swiftPart.skipToIndex(std::forward<decltype(index)>(index));
118
+ if (__result.hasError()) [[unlikely]] {
119
+ std::rethrow_exception(__result.error());
120
+ }
121
+ auto __value = std::move(__result.value());
122
+ return __value;
123
+ }
108
124
  inline void skipToPrevious() override {
109
125
  auto __result = _swiftPart.skipToPrevious();
110
126
  if (__result.hasError()) [[unlikely]] {
@@ -117,7 +133,31 @@ namespace margelo::nitro::nitroplayer {
117
133
  std::rethrow_exception(__result.error());
118
134
  }
119
135
  }
120
- inline PlayerState getState() override {
136
+ inline std::shared_ptr<Promise<void>> addToUpNext(const std::string& trackId) override {
137
+ auto __result = _swiftPart.addToUpNext(trackId);
138
+ if (__result.hasError()) [[unlikely]] {
139
+ std::rethrow_exception(__result.error());
140
+ }
141
+ auto __value = std::move(__result.value());
142
+ return __value;
143
+ }
144
+ inline std::shared_ptr<Promise<void>> playNext(const std::string& trackId) override {
145
+ auto __result = _swiftPart.playNext(trackId);
146
+ if (__result.hasError()) [[unlikely]] {
147
+ std::rethrow_exception(__result.error());
148
+ }
149
+ auto __value = std::move(__result.value());
150
+ return __value;
151
+ }
152
+ inline std::shared_ptr<Promise<std::vector<TrackItem>>> getActualQueue() override {
153
+ auto __result = _swiftPart.getActualQueue();
154
+ if (__result.hasError()) [[unlikely]] {
155
+ std::rethrow_exception(__result.error());
156
+ }
157
+ auto __value = std::move(__result.value());
158
+ return __value;
159
+ }
160
+ inline std::shared_ptr<Promise<PlayerState>> getState() override {
121
161
  auto __result = _swiftPart.getState();
122
162
  if (__result.hasError()) [[unlikely]] {
123
163
  std::rethrow_exception(__result.error());
@@ -0,0 +1,48 @@
1
+ ///
2
+ /// CurrentPlayingType.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ /**
9
+ * Represents the JS union `CurrentPlayingType`, backed by a C++ enum.
10
+ */
11
+ public typealias CurrentPlayingType = margelo.nitro.nitroplayer.CurrentPlayingType
12
+
13
+ public extension CurrentPlayingType {
14
+ /**
15
+ * Get a CurrentPlayingType for the given String value, or
16
+ * return `nil` if the given value was invalid/unknown.
17
+ */
18
+ init?(fromString string: String) {
19
+ switch string {
20
+ case "playlist":
21
+ self = .playlist
22
+ case "up-next":
23
+ self = .upNext
24
+ case "play-next":
25
+ self = .playNext
26
+ case "not-playing":
27
+ self = .notPlaying
28
+ default:
29
+ return nil
30
+ }
31
+ }
32
+
33
+ /**
34
+ * Get the String value this CurrentPlayingType represents.
35
+ */
36
+ var stringValue: String {
37
+ switch self {
38
+ case .playlist:
39
+ return "playlist"
40
+ case .upNext:
41
+ return "up-next"
42
+ case .playNext:
43
+ return "play-next"
44
+ case .notPlaying:
45
+ return "not-playing"
46
+ }
47
+ }
48
+ }
@@ -0,0 +1,270 @@
1
+ ///
2
+ /// DownloadConfig.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ import Foundation
9
+ import NitroModules
10
+
11
+ /**
12
+ * Represents an instance of `DownloadConfig`, backed by a C++ struct.
13
+ */
14
+ public typealias DownloadConfig = margelo.nitro.nitroplayer.DownloadConfig
15
+
16
+ public extension DownloadConfig {
17
+ private typealias bridge = margelo.nitro.nitroplayer.bridge.swift
18
+
19
+ /**
20
+ * Create a new instance of `DownloadConfig`.
21
+ */
22
+ init(storageLocation: StorageLocation?, maxConcurrentDownloads: Double?, autoRetry: Bool?, maxRetryAttempts: Double?, backgroundDownloadsEnabled: Bool?, downloadArtwork: Bool?, customDownloadPath: Variant_NullType_String?, wifiOnlyDownloads: Bool?) {
23
+ self.init({ () -> bridge.std__optional_StorageLocation_ in
24
+ if let __unwrappedValue = storageLocation {
25
+ return bridge.create_std__optional_StorageLocation_(__unwrappedValue)
26
+ } else {
27
+ return .init()
28
+ }
29
+ }(), { () -> bridge.std__optional_double_ in
30
+ if let __unwrappedValue = maxConcurrentDownloads {
31
+ return bridge.create_std__optional_double_(__unwrappedValue)
32
+ } else {
33
+ return .init()
34
+ }
35
+ }(), { () -> bridge.std__optional_bool_ in
36
+ if let __unwrappedValue = autoRetry {
37
+ return bridge.create_std__optional_bool_(__unwrappedValue)
38
+ } else {
39
+ return .init()
40
+ }
41
+ }(), { () -> bridge.std__optional_double_ in
42
+ if let __unwrappedValue = maxRetryAttempts {
43
+ return bridge.create_std__optional_double_(__unwrappedValue)
44
+ } else {
45
+ return .init()
46
+ }
47
+ }(), { () -> bridge.std__optional_bool_ in
48
+ if let __unwrappedValue = backgroundDownloadsEnabled {
49
+ return bridge.create_std__optional_bool_(__unwrappedValue)
50
+ } else {
51
+ return .init()
52
+ }
53
+ }(), { () -> bridge.std__optional_bool_ in
54
+ if let __unwrappedValue = downloadArtwork {
55
+ return bridge.create_std__optional_bool_(__unwrappedValue)
56
+ } else {
57
+ return .init()
58
+ }
59
+ }(), { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
60
+ if let __unwrappedValue = customDownloadPath {
61
+ return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
62
+ switch __unwrappedValue {
63
+ case .first(let __value):
64
+ return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
65
+ case .second(let __value):
66
+ return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
67
+ }
68
+ }().variant)
69
+ } else {
70
+ return .init()
71
+ }
72
+ }(), { () -> bridge.std__optional_bool_ in
73
+ if let __unwrappedValue = wifiOnlyDownloads {
74
+ return bridge.create_std__optional_bool_(__unwrappedValue)
75
+ } else {
76
+ return .init()
77
+ }
78
+ }())
79
+ }
80
+
81
+ var storageLocation: StorageLocation? {
82
+ @inline(__always)
83
+ get {
84
+ return self.__storageLocation.value
85
+ }
86
+ @inline(__always)
87
+ set {
88
+ self.__storageLocation = { () -> bridge.std__optional_StorageLocation_ in
89
+ if let __unwrappedValue = newValue {
90
+ return bridge.create_std__optional_StorageLocation_(__unwrappedValue)
91
+ } else {
92
+ return .init()
93
+ }
94
+ }()
95
+ }
96
+ }
97
+
98
+ var maxConcurrentDownloads: Double? {
99
+ @inline(__always)
100
+ get {
101
+ return self.__maxConcurrentDownloads.value
102
+ }
103
+ @inline(__always)
104
+ set {
105
+ self.__maxConcurrentDownloads = { () -> bridge.std__optional_double_ in
106
+ if let __unwrappedValue = newValue {
107
+ return bridge.create_std__optional_double_(__unwrappedValue)
108
+ } else {
109
+ return .init()
110
+ }
111
+ }()
112
+ }
113
+ }
114
+
115
+ var autoRetry: Bool? {
116
+ @inline(__always)
117
+ get {
118
+ return { () -> Bool? in
119
+ if bridge.has_value_std__optional_bool_(self.__autoRetry) {
120
+ let __unwrapped = bridge.get_std__optional_bool_(self.__autoRetry)
121
+ return __unwrapped
122
+ } else {
123
+ return nil
124
+ }
125
+ }()
126
+ }
127
+ @inline(__always)
128
+ set {
129
+ self.__autoRetry = { () -> bridge.std__optional_bool_ in
130
+ if let __unwrappedValue = newValue {
131
+ return bridge.create_std__optional_bool_(__unwrappedValue)
132
+ } else {
133
+ return .init()
134
+ }
135
+ }()
136
+ }
137
+ }
138
+
139
+ var maxRetryAttempts: Double? {
140
+ @inline(__always)
141
+ get {
142
+ return self.__maxRetryAttempts.value
143
+ }
144
+ @inline(__always)
145
+ set {
146
+ self.__maxRetryAttempts = { () -> bridge.std__optional_double_ in
147
+ if let __unwrappedValue = newValue {
148
+ return bridge.create_std__optional_double_(__unwrappedValue)
149
+ } else {
150
+ return .init()
151
+ }
152
+ }()
153
+ }
154
+ }
155
+
156
+ var backgroundDownloadsEnabled: Bool? {
157
+ @inline(__always)
158
+ get {
159
+ return { () -> Bool? in
160
+ if bridge.has_value_std__optional_bool_(self.__backgroundDownloadsEnabled) {
161
+ let __unwrapped = bridge.get_std__optional_bool_(self.__backgroundDownloadsEnabled)
162
+ return __unwrapped
163
+ } else {
164
+ return nil
165
+ }
166
+ }()
167
+ }
168
+ @inline(__always)
169
+ set {
170
+ self.__backgroundDownloadsEnabled = { () -> bridge.std__optional_bool_ in
171
+ if let __unwrappedValue = newValue {
172
+ return bridge.create_std__optional_bool_(__unwrappedValue)
173
+ } else {
174
+ return .init()
175
+ }
176
+ }()
177
+ }
178
+ }
179
+
180
+ var downloadArtwork: Bool? {
181
+ @inline(__always)
182
+ get {
183
+ return { () -> Bool? in
184
+ if bridge.has_value_std__optional_bool_(self.__downloadArtwork) {
185
+ let __unwrapped = bridge.get_std__optional_bool_(self.__downloadArtwork)
186
+ return __unwrapped
187
+ } else {
188
+ return nil
189
+ }
190
+ }()
191
+ }
192
+ @inline(__always)
193
+ set {
194
+ self.__downloadArtwork = { () -> bridge.std__optional_bool_ in
195
+ if let __unwrappedValue = newValue {
196
+ return bridge.create_std__optional_bool_(__unwrappedValue)
197
+ } else {
198
+ return .init()
199
+ }
200
+ }()
201
+ }
202
+ }
203
+
204
+ var customDownloadPath: Variant_NullType_String? {
205
+ @inline(__always)
206
+ get {
207
+ return { () -> Variant_NullType_String? in
208
+ if bridge.has_value_std__optional_std__variant_nitro__NullType__std__string__(self.__customDownloadPath) {
209
+ let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__string__(self.__customDownloadPath)
210
+ return { () -> Variant_NullType_String in
211
+ let __variant = bridge.std__variant_nitro__NullType__std__string_(__unwrapped)
212
+ switch __variant.index() {
213
+ case 0:
214
+ let __actual = __variant.get_0()
215
+ return .first(NullType.null)
216
+ case 1:
217
+ let __actual = __variant.get_1()
218
+ return .second(String(__actual))
219
+ default:
220
+ fatalError("Variant can never have index \(__variant.index())!")
221
+ }
222
+ }()
223
+ } else {
224
+ return nil
225
+ }
226
+ }()
227
+ }
228
+ @inline(__always)
229
+ set {
230
+ self.__customDownloadPath = { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
231
+ if let __unwrappedValue = newValue {
232
+ return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
233
+ switch __unwrappedValue {
234
+ case .first(let __value):
235
+ return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
236
+ case .second(let __value):
237
+ return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
238
+ }
239
+ }().variant)
240
+ } else {
241
+ return .init()
242
+ }
243
+ }()
244
+ }
245
+ }
246
+
247
+ var wifiOnlyDownloads: Bool? {
248
+ @inline(__always)
249
+ get {
250
+ return { () -> Bool? in
251
+ if bridge.has_value_std__optional_bool_(self.__wifiOnlyDownloads) {
252
+ let __unwrapped = bridge.get_std__optional_bool_(self.__wifiOnlyDownloads)
253
+ return __unwrapped
254
+ } else {
255
+ return nil
256
+ }
257
+ }()
258
+ }
259
+ @inline(__always)
260
+ set {
261
+ self.__wifiOnlyDownloads = { () -> bridge.std__optional_bool_ in
262
+ if let __unwrappedValue = newValue {
263
+ return bridge.create_std__optional_bool_(__unwrappedValue)
264
+ } else {
265
+ return .init()
266
+ }
267
+ }()
268
+ }
269
+ }
270
+ }