react-native-nitro-player 1.4.3 → 1.5.0-alpha.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 (68) hide show
  1. package/NitroPlayer.podspec +6 -0
  2. package/README.md +113 -0
  3. package/android/build.gradle +8 -0
  4. package/android/src/main/AndroidManifest.xml +11 -0
  5. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridCast.kt +79 -0
  6. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/ExoPlayerCore.kt +10 -7
  7. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerCast.kt +122 -0
  8. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerCore.kt +13 -0
  9. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerSetup.kt +7 -0
  10. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/CastSessionController.kt +160 -0
  11. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/NitroCastConfig.kt +23 -0
  12. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/NitroCastOptionsProvider.kt +30 -0
  13. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/NitroMediaItemConverter.kt +53 -0
  14. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/PlaybackService.kt +33 -0
  15. package/ios/HybridCast.swift +63 -0
  16. package/ios/core/CastSessionManager.swift +367 -0
  17. package/ios/core/TrackPlayerCast.swift +109 -0
  18. package/ios/core/TrackPlayerCore.swift +28 -2
  19. package/ios/core/TrackPlayerPlayback.swift +32 -0
  20. package/ios/core/TrackPlayerQueue.swift +8 -1
  21. package/ios/core/TrackPlayerQueueBuild.swift +37 -2
  22. package/ios/core/TrackPlayerRedirectResolver.swift +150 -0
  23. package/lib/components/CastButton.d.ts +44 -0
  24. package/lib/components/CastButton.js +100 -0
  25. package/lib/hooks/castCallbackManager.d.ts +19 -0
  26. package/lib/hooks/castCallbackManager.js +43 -0
  27. package/lib/hooks/index.d.ts +3 -0
  28. package/lib/hooks/index.js +3 -0
  29. package/lib/hooks/useCastState.d.ts +27 -0
  30. package/lib/hooks/useCastState.js +49 -0
  31. package/lib/hooks/useIsCasting.d.ts +17 -0
  32. package/lib/hooks/useIsCasting.js +43 -0
  33. package/lib/index.d.ts +5 -0
  34. package/lib/index.js +4 -1
  35. package/lib/specs/Cast.nitro.d.ts +58 -0
  36. package/lib/specs/Cast.nitro.js +1 -0
  37. package/nitro.json +10 -0
  38. package/nitrogen/generated/android/NitroPlayer+autolinking.cmake +3 -1
  39. package/nitrogen/generated/android/NitroPlayerOnLoad.cpp +18 -0
  40. package/nitrogen/generated/android/c++/JCastState.hpp +64 -0
  41. package/nitrogen/generated/android/c++/JFunc_void_CastState_std__optional_std__variant_nitro__NullType__std__string__.hpp +83 -0
  42. package/nitrogen/generated/android/c++/JHybridCastSpec.cpp +115 -0
  43. package/nitrogen/generated/android/c++/JHybridCastSpec.hpp +69 -0
  44. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/CastState.kt +25 -0
  45. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string__.kt +80 -0
  46. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridCastSpec.kt +85 -0
  47. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.cpp +38 -13
  48. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.hpp +176 -125
  49. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Umbrella.hpp +8 -0
  50. package/nitrogen/generated/ios/NitroPlayerAutolinking.mm +8 -0
  51. package/nitrogen/generated/ios/NitroPlayerAutolinking.swift +12 -0
  52. package/nitrogen/generated/ios/c++/HybridCastSpecSwift.cpp +11 -0
  53. package/nitrogen/generated/ios/c++/HybridCastSpecSwift.hpp +133 -0
  54. package/nitrogen/generated/ios/swift/CastState.swift +48 -0
  55. package/nitrogen/generated/ios/swift/Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string__.swift +65 -0
  56. package/nitrogen/generated/ios/swift/HybridCastSpec.swift +61 -0
  57. package/nitrogen/generated/ios/swift/HybridCastSpec_cxx.swift +254 -0
  58. package/nitrogen/generated/shared/c++/CastState.hpp +84 -0
  59. package/nitrogen/generated/shared/c++/HybridCastSpec.cpp +27 -0
  60. package/nitrogen/generated/shared/c++/HybridCastSpec.hpp +75 -0
  61. package/package.json +3 -3
  62. package/src/components/CastButton.tsx +196 -0
  63. package/src/hooks/castCallbackManager.ts +55 -0
  64. package/src/hooks/index.ts +5 -0
  65. package/src/hooks/useCastState.ts +67 -0
  66. package/src/hooks/useIsCasting.ts +47 -0
  67. package/src/index.ts +9 -0
  68. package/src/specs/Cast.nitro.ts +72 -0
@@ -0,0 +1,72 @@
1
+ import type { HybridObject } from 'react-native-nitro-modules'
2
+
3
+ /**
4
+ * The current Google Cast connection state.
5
+ *
6
+ * - `no_devices_available`: No Cast devices are discoverable on the network.
7
+ * The Cast button is typically hidden in this state.
8
+ * - `not_connected`: Cast devices are available but none is connected.
9
+ * - `connecting`: A session is being established with a device.
10
+ * - `connected`: A session is active and playback is routed to the device.
11
+ */
12
+ export type CastState =
13
+ | 'no_devices_available'
14
+ | 'not_connected'
15
+ | 'connecting'
16
+ | 'connected'
17
+
18
+ /**
19
+ * Google Cast control surface.
20
+ *
21
+ * Casting is implemented as an internal playback backend swap inside the native
22
+ * player core: when a session is `connected`, every playback operation (play,
23
+ * pause, seek, skip, queue) is routed to the remote Cast device and local audio
24
+ * is suppressed automatically. The existing {@link TrackPlayer} API keeps
25
+ * working unchanged — this object only exposes the Cast-specific surface.
26
+ */
27
+ export interface Cast extends HybridObject<{
28
+ android: 'kotlin'
29
+ ios: 'swift'
30
+ }> {
31
+ /**
32
+ * Initialize the Cast framework. Must be called once early in app startup
33
+ * (before the first Cast interaction). Safe to call multiple times.
34
+ *
35
+ * @param receiverApplicationId Optional Web Receiver application ID registered
36
+ * in the Google Cast Developer Console. When omitted, the platform Default
37
+ * Media Receiver (`CC1AD845`) is used, which supports audio playback,
38
+ * metadata and queues out of the box.
39
+ */
40
+ configure(receiverApplicationId?: string): Promise<void>
41
+
42
+ /**
43
+ * Whether playback is currently routed to a Cast device.
44
+ * Equivalent to `getCastState() === 'connected'`.
45
+ */
46
+ isCasting(): boolean
47
+
48
+ /** The current Cast connection state. */
49
+ getCastState(): CastState
50
+
51
+ /** The friendly name of the connected device, or `null` when not connected. */
52
+ getCastDeviceName(): string | null
53
+
54
+ /**
55
+ * Present the native Cast dialog. Shows the device chooser when not connected,
56
+ * or the cast controls / disconnect dialog when already connected. Mirrors the
57
+ * behaviour of the standard platform Cast button.
58
+ */
59
+ showCastPicker(): void
60
+
61
+ /** End the current Cast session and resume local playback. No-op when not connected. */
62
+ endCastSession(): Promise<void>
63
+
64
+ /**
65
+ * Register a callback fired whenever the Cast connection state changes.
66
+ * The callback receives the new {@link CastState} and the connected device
67
+ * name (or `null`).
68
+ */
69
+ onCastStateChange(
70
+ callback: (state: CastState, deviceName: string | null) => void
71
+ ): void
72
+ }