@zezosoft/zezo-ott-react-native-ui-kit 1.2.1 → 1.2.2

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 (160) hide show
  1. package/lib/module/components/Auth/AuthProvider/AuthProvider.js +2 -2
  2. package/lib/module/components/Auth/AuthProvider/AuthProvider.js.map +1 -1
  3. package/lib/module/components/Auth/One/ForgotPassword/ForgotPassword.js +16 -16
  4. package/lib/module/components/Auth/One/ForgotPassword/ForgotPassword.js.map +1 -1
  5. package/lib/module/components/Auth/One/Login/LoginWithEmail.js +16 -16
  6. package/lib/module/components/Auth/One/Login/LoginWithEmail.js.map +1 -1
  7. package/lib/module/components/Auth/One/Login/LoginWithPhone.js +17 -17
  8. package/lib/module/components/Auth/One/Login/LoginWithPhone.js.map +1 -1
  9. package/lib/module/components/Auth/One/OTP/OTP.js +16 -16
  10. package/lib/module/components/Auth/One/OTP/OTP.js.map +1 -1
  11. package/lib/module/components/Auth/One/SignUp/SignUp.js +17 -17
  12. package/lib/module/components/Auth/One/SignUp/SignUp.js.map +1 -1
  13. package/lib/module/components/Auth/One/SplashScreen/SplashScreen.js +57 -76
  14. package/lib/module/components/Auth/One/SplashScreen/SplashScreen.js.map +1 -1
  15. package/lib/module/components/Auth/One/SplashScreen/components/SplashImage/SplashImage.js +23 -26
  16. package/lib/module/components/Auth/One/SplashScreen/components/SplashImage/SplashImage.js.map +1 -1
  17. package/lib/module/components/Auth/One/SplashScreen/components/SplashLottie/SplashLottie.js +56 -18
  18. package/lib/module/components/Auth/One/SplashScreen/components/SplashLottie/SplashLottie.js.map +1 -1
  19. package/lib/module/components/Auth/One/SplashScreen/components/SplashVideo/SplashVideo.js +62 -71
  20. package/lib/module/components/Auth/One/SplashScreen/components/SplashVideo/SplashVideo.js.map +1 -1
  21. package/lib/module/components/Auth/Two/AuthHeader/AuthHeader.js +20 -17
  22. package/lib/module/components/Auth/Two/AuthHeader/AuthHeader.js.map +1 -1
  23. package/lib/module/components/Auth/Two/ForgotPassword/ForgotPassword.js +11 -12
  24. package/lib/module/components/Auth/Two/ForgotPassword/ForgotPassword.js.map +1 -1
  25. package/lib/module/components/Auth/Two/Login/EmailOrPhoneLogin.js +489 -0
  26. package/lib/module/components/Auth/Two/Login/EmailOrPhoneLogin.js.map +1 -0
  27. package/lib/module/components/Auth/Two/OTP/OTP.js +2 -2
  28. package/lib/module/components/Auth/Two/OTP/OTP.js.map +1 -1
  29. package/lib/module/components/Auth/Two/SignUp/SignUp.js +2 -2
  30. package/lib/module/components/Auth/Two/SignUp/SignUp.js.map +1 -1
  31. package/lib/module/components/Auth/Two/index.js +3 -7
  32. package/lib/module/components/Auth/Two/index.js.map +1 -1
  33. package/lib/module/components/BackgroundLayout/{BackgroundLayout.js → One/One.js} +12 -9
  34. package/lib/module/components/BackgroundLayout/One/One.js.map +1 -0
  35. package/lib/module/components/BackgroundLayout/{BackgroundLayoutOne.js → Two/Two.js} +11 -5
  36. package/lib/module/components/BackgroundLayout/Two/Two.js.map +1 -0
  37. package/lib/module/components/BackgroundLayout/index.js +10 -0
  38. package/lib/module/components/BackgroundLayout/index.js.map +1 -0
  39. package/lib/module/components/ContentView/One/components/AboutSection.js +9 -18
  40. package/lib/module/components/ContentView/One/components/AboutSection.js.map +1 -1
  41. package/lib/module/components/ContentView/One/components/GenreTags.js +5 -1
  42. package/lib/module/components/ContentView/One/components/GenreTags.js.map +1 -1
  43. package/lib/module/components/ContentView/Two/components/AboutSection.js +4 -1
  44. package/lib/module/components/ContentView/Two/components/AboutSection.js.map +1 -1
  45. package/lib/module/components/ContentView/Two/components/Details.js +3 -0
  46. package/lib/module/components/ContentView/Two/components/Details.js.map +1 -1
  47. package/lib/module/components/ContentView/Two/components/GenreTags.js +4 -1
  48. package/lib/module/components/ContentView/Two/components/GenreTags.js.map +1 -1
  49. package/lib/module/components/ContentView/Two/components/SectionTabs.js +3 -0
  50. package/lib/module/components/ContentView/Two/components/SectionTabs.js.map +1 -1
  51. package/lib/module/components/ContentView/Two/components/Title.js.map +1 -1
  52. package/lib/module/components/Headers/One.js +1 -1
  53. package/lib/module/components/Input/Input.js +2 -4
  54. package/lib/module/components/Input/Input.js.map +1 -1
  55. package/lib/module/components/Input/InputThree.js +31 -27
  56. package/lib/module/components/Input/InputThree.js.map +1 -1
  57. package/lib/module/components/Input/InputTwo.js +1 -0
  58. package/lib/module/components/Input/InputTwo.js.map +1 -1
  59. package/lib/module/components/Input/{PhoneNumberInput.js → PhoneInput/One/One.js} +4 -4
  60. package/lib/module/components/Input/PhoneInput/One/One.js.map +1 -0
  61. package/lib/module/components/Input/{PhoneNumberInputTwo.js → PhoneInput/Two/Two.js} +2 -2
  62. package/lib/module/components/Input/PhoneInput/Two/Two.js.map +1 -0
  63. package/lib/module/components/Input/PhoneInput/index.js +15 -0
  64. package/lib/module/components/Input/PhoneInput/index.js.map +1 -0
  65. package/lib/module/components/Keyboard/HideKeyboard.js +1 -1
  66. package/lib/module/components/Keyboard/HideKeyboard.js.map +1 -1
  67. package/lib/module/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.js +4 -3
  68. package/lib/module/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.js.map +1 -1
  69. package/lib/module/components/Reels/ReelsSeries/Model/SettingModal.js +3 -1
  70. package/lib/module/components/Reels/ReelsSeries/Model/SettingModal.js.map +1 -1
  71. package/lib/module/components/Reels/ReelsSeries/ReelsSeriesItem.js +37 -6
  72. package/lib/module/components/Reels/ReelsSeries/ReelsSeriesItem.js.map +1 -1
  73. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/QualityControl.js +9 -6
  74. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/QualityControl.js.map +1 -1
  75. package/lib/module/components/Reels/ReelsSeries/utils/quality.js +19 -15
  76. package/lib/module/components/Reels/ReelsSeries/utils/quality.js.map +1 -1
  77. package/lib/module/hooks/useSplashCache.js +120 -85
  78. package/lib/module/hooks/useSplashCache.js.map +1 -1
  79. package/lib/typescript/src/components/Auth/One/ForgotPassword/ForgotPassword.d.ts.map +1 -1
  80. package/lib/typescript/src/components/Auth/One/Login/LoginWithEmail.d.ts.map +1 -1
  81. package/lib/typescript/src/components/Auth/One/Login/LoginWithPhone.d.ts.map +1 -1
  82. package/lib/typescript/src/components/Auth/One/OTP/OTP.d.ts.map +1 -1
  83. package/lib/typescript/src/components/Auth/One/SignUp/SignUp.d.ts.map +1 -1
  84. package/lib/typescript/src/components/Auth/One/SplashScreen/SplashScreen.d.ts.map +1 -1
  85. package/lib/typescript/src/components/Auth/One/SplashScreen/components/SplashImage/SplashImage.d.ts +4 -0
  86. package/lib/typescript/src/components/Auth/One/SplashScreen/components/SplashImage/SplashImage.d.ts.map +1 -1
  87. package/lib/typescript/src/components/Auth/One/SplashScreen/components/SplashLottie/SplashLottie.d.ts.map +1 -1
  88. package/lib/typescript/src/components/Auth/One/SplashScreen/components/SplashVideo/SplashVideo.d.ts +1 -0
  89. package/lib/typescript/src/components/Auth/One/SplashScreen/components/SplashVideo/SplashVideo.d.ts.map +1 -1
  90. package/lib/typescript/src/components/Auth/One/index.d.ts.map +1 -1
  91. package/lib/typescript/src/components/Auth/Two/AuthHeader/AuthHeader.d.ts.map +1 -1
  92. package/lib/typescript/src/components/Auth/Two/Login/EmailOrPhoneLogin.d.ts +47 -0
  93. package/lib/typescript/src/components/Auth/Two/Login/EmailOrPhoneLogin.d.ts.map +1 -0
  94. package/lib/typescript/src/components/Auth/Two/index.d.ts +33 -73
  95. package/lib/typescript/src/components/Auth/Two/index.d.ts.map +1 -1
  96. package/lib/typescript/src/components/Auth/index.d.ts +33 -73
  97. package/lib/typescript/src/components/Auth/index.d.ts.map +1 -1
  98. package/lib/typescript/src/components/BackgroundLayout/{BackgroundLayout.d.ts → One/One.d.ts} +5 -5
  99. package/lib/typescript/src/components/BackgroundLayout/One/One.d.ts.map +1 -0
  100. package/lib/typescript/src/components/BackgroundLayout/{BackgroundLayoutOne.d.ts → Two/Two.d.ts} +4 -3
  101. package/lib/typescript/src/components/BackgroundLayout/Two/Two.d.ts.map +1 -0
  102. package/lib/typescript/src/components/BackgroundLayout/index.d.ts +20 -0
  103. package/lib/typescript/src/components/BackgroundLayout/index.d.ts.map +1 -0
  104. package/lib/typescript/src/components/ContentView/One/components/AboutSection.d.ts +3 -3
  105. package/lib/typescript/src/components/ContentView/One/components/AboutSection.d.ts.map +1 -1
  106. package/lib/typescript/src/components/ContentView/One/components/GenreTags.d.ts +1 -1
  107. package/lib/typescript/src/components/ContentView/One/components/GenreTags.d.ts.map +1 -1
  108. package/lib/typescript/src/components/ContentView/Two/components/AboutSection.d.ts +1 -1
  109. package/lib/typescript/src/components/ContentView/Two/components/AboutSection.d.ts.map +1 -1
  110. package/lib/typescript/src/components/ContentView/Two/components/Details.d.ts.map +1 -1
  111. package/lib/typescript/src/components/ContentView/Two/components/GenreTags.d.ts +1 -1
  112. package/lib/typescript/src/components/ContentView/Two/components/GenreTags.d.ts.map +1 -1
  113. package/lib/typescript/src/components/ContentView/Two/components/SectionTabs.d.ts +1 -1
  114. package/lib/typescript/src/components/ContentView/Two/components/SectionTabs.d.ts.map +1 -1
  115. package/lib/typescript/src/components/ContentView/Two/components/Title.d.ts +1 -1
  116. package/lib/typescript/src/components/ContentView/Two/components/Title.d.ts.map +1 -1
  117. package/lib/typescript/src/components/Input/Input.d.ts +4 -2
  118. package/lib/typescript/src/components/Input/Input.d.ts.map +1 -1
  119. package/lib/typescript/src/components/Input/InputThree.d.ts.map +1 -1
  120. package/lib/typescript/src/components/Input/InputTwo.d.ts.map +1 -1
  121. package/lib/typescript/src/components/Input/{PhoneNumberInput.d.ts → PhoneInput/One/One.d.ts} +4 -4
  122. package/lib/typescript/src/components/Input/PhoneInput/One/One.d.ts.map +1 -0
  123. package/lib/typescript/src/components/Input/{PhoneNumberInputTwo.d.ts → PhoneInput/Two/Two.d.ts} +4 -4
  124. package/lib/typescript/src/components/Input/PhoneInput/Two/Two.d.ts.map +1 -0
  125. package/lib/typescript/src/components/Input/PhoneInput/index.d.ts +12 -0
  126. package/lib/typescript/src/components/Input/PhoneInput/index.d.ts.map +1 -0
  127. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.d.ts +4 -2
  128. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.d.ts.map +1 -1
  129. package/lib/typescript/src/components/Reels/ReelsSeries/Model/SettingModal.d.ts +5 -3
  130. package/lib/typescript/src/components/Reels/ReelsSeries/Model/SettingModal.d.ts.map +1 -1
  131. package/lib/typescript/src/components/Reels/ReelsSeries/ReelsSeriesItem.d.ts.map +1 -1
  132. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/QualityControl.d.ts +5 -12
  133. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/QualityControl.d.ts.map +1 -1
  134. package/lib/typescript/src/components/Reels/ReelsSeries/types.d.ts +4 -0
  135. package/lib/typescript/src/components/Reels/ReelsSeries/types.d.ts.map +1 -1
  136. package/lib/typescript/src/components/Reels/ReelsSeries/utils/quality.d.ts +1 -4
  137. package/lib/typescript/src/components/Reels/ReelsSeries/utils/quality.d.ts.map +1 -1
  138. package/lib/typescript/src/hooks/useSplashCache.d.ts +7 -10
  139. package/lib/typescript/src/hooks/useSplashCache.d.ts.map +1 -1
  140. package/package.json +1 -1
  141. package/lib/module/components/Auth/Two/Login/AuthLoginShell.js +0 -138
  142. package/lib/module/components/Auth/Two/Login/AuthLoginShell.js.map +0 -1
  143. package/lib/module/components/Auth/Two/Login/LoginWithEmail.js +0 -224
  144. package/lib/module/components/Auth/Two/Login/LoginWithEmail.js.map +0 -1
  145. package/lib/module/components/Auth/Two/Login/LoginWithPhone.js +0 -143
  146. package/lib/module/components/Auth/Two/Login/LoginWithPhone.js.map +0 -1
  147. package/lib/module/components/BackgroundLayout/BackgroundLayout.js.map +0 -1
  148. package/lib/module/components/BackgroundLayout/BackgroundLayoutOne.js.map +0 -1
  149. package/lib/module/components/Input/PhoneNumberInput.js.map +0 -1
  150. package/lib/module/components/Input/PhoneNumberInputTwo.js.map +0 -1
  151. package/lib/typescript/src/components/Auth/Two/Login/AuthLoginShell.d.ts +0 -17
  152. package/lib/typescript/src/components/Auth/Two/Login/AuthLoginShell.d.ts.map +0 -1
  153. package/lib/typescript/src/components/Auth/Two/Login/LoginWithEmail.d.ts +0 -52
  154. package/lib/typescript/src/components/Auth/Two/Login/LoginWithEmail.d.ts.map +0 -1
  155. package/lib/typescript/src/components/Auth/Two/Login/LoginWithPhone.d.ts +0 -37
  156. package/lib/typescript/src/components/Auth/Two/Login/LoginWithPhone.d.ts.map +0 -1
  157. package/lib/typescript/src/components/BackgroundLayout/BackgroundLayout.d.ts.map +0 -1
  158. package/lib/typescript/src/components/BackgroundLayout/BackgroundLayoutOne.d.ts.map +0 -1
  159. package/lib/typescript/src/components/Input/PhoneNumberInput.d.ts.map +0 -1
  160. package/lib/typescript/src/components/Input/PhoneNumberInputTwo.d.ts.map +0 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  import React, { useState, useEffect, useRef, useCallback, useMemo, memo } from 'react';
4
4
  import { View, Dimensions, StyleSheet } from 'react-native';
5
- import { Video } from 'react-native-video';
5
+ import { SelectedVideoTrackType, Video } from 'react-native-video';
6
6
  import { GestureDetector, GestureHandlerRootView } from 'react-native-gesture-handler';
7
7
  import { videoRef, videoControlsStyles, PAUSE_ICON_TIMEOUT, LIKE_ANIM_TIMEOUT, UNLOCK_MODAL_DELAY, useOverlayThresholds, useIsInOverlay, useCreateTapGesture, useCombinedGesture } from "../utils/Controls/index.js";
8
8
  import { clearTimeoutSafely, setTimeoutSafely } from "../utils/index.js";
@@ -46,10 +46,14 @@ const ReelItem = ({
46
46
  const [currentTime, setCurrentTime] = useState(0);
47
47
  const [duration, setDuration] = useState(0);
48
48
  const [playbackRate, setPlaybackRate] = useState(1);
49
- const [videoQuality, setVideoQuality] = useState('Auto');
49
+ const [videoQuality, setVideoQuality] = useState({
50
+ quality: 'Auto',
51
+ url: ''
52
+ });
50
53
  const [isLiked, setIsLiked] = useState(() => Boolean(data.isLiked));
51
54
  const [likesCount, setLikesCount] = useState(() => Number(data.likes) || 0);
52
55
  const [hasError, setHasError] = useState(false);
56
+ const [activeResolution, setActiveResolution] = useState('');
53
57
 
54
58
  // Refs
55
59
  const timeoutRef = useRef(null);
@@ -91,12 +95,17 @@ const ReelItem = ({
91
95
  autoScrolledRef.current = false;
92
96
  }, [reel.episodeId]);
93
97
 
94
- // Reset video timing state when episode changes
98
+ // Reset video timing and quality state when episode changes
95
99
  useEffect(() => {
96
100
  setCurrentTime(0);
97
101
  setDuration(0);
98
102
  setBuffering(true);
99
103
  setHasError(false);
104
+ setVideoQuality({
105
+ quality: 'Auto',
106
+ url: ''
107
+ });
108
+ setActiveResolution('');
100
109
  }, [reel.episodeId]);
101
110
 
102
111
  // Sync like state from parent when episode changes or parent updates data
@@ -214,9 +223,12 @@ const ReelItem = ({
214
223
  const settingsProps = useMemo(() => ({
215
224
  playbackRate,
216
225
  quality: videoQuality,
226
+ currentQuality: activeResolution,
217
227
  onPlaybackRateChange: setPlaybackRate,
218
- onQualityChange: setVideoQuality
219
- }), [playbackRate, videoQuality]);
228
+ onQualityChange: quality => {
229
+ setVideoQuality(quality);
230
+ }
231
+ }), [playbackRate, videoQuality, activeResolution]);
220
232
  const handleVideoEnd = useCallback(() => {
221
233
  if (!autoScroll || isLocked || autoScrolledRef.current) {
222
234
  return;
@@ -283,10 +295,24 @@ const ReelItem = ({
283
295
  setHasError(false);
284
296
  },
285
297
  onLoad: info => {
298
+ console.log('info', JSON.stringify(info, null, 2));
286
299
  if (Number(info.duration) > 0 && Number(info.duration) < 100000) {
287
300
  setDuration(Number(info.duration));
288
301
  }
289
302
  setHasError(false);
303
+
304
+ // Get initial selected quality
305
+ const selectedTrack = info.videoTracks?.find(t => t.selected);
306
+ if (selectedTrack?.height) {
307
+ setActiveResolution(`${selectedTrack.height}p`);
308
+ }
309
+ },
310
+ onVideoTracks: e => {
311
+ console.log('e', JSON.stringify(e, null, 2));
312
+ const selectedTrack = e.videoTracks?.find(t => t.selected);
313
+ if (selectedTrack?.height) {
314
+ setActiveResolution(`${selectedTrack.height}p`);
315
+ }
290
316
  },
291
317
  onProgress: p => {
292
318
  setCurrentTime(p.currentTime);
@@ -300,7 +326,8 @@ const ReelItem = ({
300
326
  currentTime: p.currentTime,
301
327
  duration: safeDuration,
302
328
  isVideoCompleted,
303
- totalWatchTime
329
+ totalWatchTime,
330
+ currentQuality: activeResolution
304
331
  });
305
332
  if (p.currentTime >= MIN_VIEW_DURATION_SEC && !viewCountedRef.current) {
306
333
  viewCountedRef.current = true;
@@ -315,6 +342,10 @@ const ReelItem = ({
315
342
  controls: false,
316
343
  controlsStyles: videoControlsStyles,
317
344
  ignoreSilentSwitch: "ignore",
345
+ selectedVideoTrack: {
346
+ type: videoQuality.quality === 'Auto' ? SelectedVideoTrackType.AUTO : SelectedVideoTrackType.RESOLUTION,
347
+ value: videoQuality.quality === 'Auto' ? undefined : Number(videoQuality.quality.replace('p', ''))
348
+ },
318
349
  playInBackground: false,
319
350
  onError: () => {
320
351
  setBuffering(false);
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","useEffect","useRef","useCallback","useMemo","memo","View","Dimensions","StyleSheet","Video","GestureDetector","GestureHandlerRootView","videoRef","videoControlsStyles","PAUSE_ICON_TIMEOUT","LIKE_ANIM_TIMEOUT","UNLOCK_MODAL_DELAY","useOverlayThresholds","useIsInOverlay","useCreateTapGesture","useCombinedGesture","clearTimeoutSafely","setTimeoutSafely","MediaControlsProvider","FastImage","jsx","_jsx","jsxs","_jsxs","INITIAL_MODAL_STATE","type","isVisible","MIN_VIEW_DURATION_SEC","ReelItem","reel","data","autoScroll","videoHeight","onLikePress","onSharePress","onBackPress","isFullScreen","preload","activeEpisodeIndex","onEpisodeSelect","onSearchPress","onLikeMorePress","onEpisodeUnlockPress","onViewCount","theme","onWatchProgress","onAutoScrollNext","buffering","setBuffering","isPaused","setIsPaused","showPauseIcon","setShowPauseIcon","modal","setModal","unlockModalVisible","setUnlockModalVisible","unlockModalDismissed","setUnlockModalDismissed","showLikeAnim","setShowLikeAnim","currentTime","setCurrentTime","duration","setDuration","playbackRate","setPlaybackRate","videoQuality","setVideoQuality","isLiked","setIsLiked","Boolean","likesCount","setLikesCount","Number","likes","hasError","setHasError","timeoutRef","likeAnimTimeoutRef","viewCountedRef","autoScrolledRef","isLocked","videoUri","videoUrl","thumbnail","rightThreshold","bottomThreshold","finalPause","showCenterControls","closeUnlockModal","closeAllModals","openUnlockModal","current","episodeId","prev","handleLikePress","newLiked","count","newCount","Math","max","id","liked","handleTogglePlay","handleEpisodeSelect","episode","setTimeout","handleLockedTap","isInOverlay","createTapGesture","singleTap","doubleTap","combinedGesture","unlockProps","onClose","contentProps","series","activeIndex","videoProps","paused","likesProps","showAnimation","actionsProps","onLike","onLikeMore","onShare","onUnLock","onUnlockPress","navigationProps","onBack","onSearch","settingsProps","quality","onPlaybackRateChange","onQualityChange","handleVideoEnd","style","styles","container","height","children","unlock","content","video","actions","navigation","settings","flex","gesture","source","uri","priority","high","resizeMode","cover","defaultSource","require","absoluteFillObject","ref","undefined","repeat","poster","posterResizeMode","rate","onLoadStart","onBuffer","isBuffering","onReadyForDisplay","onLoad","info","onProgress","p","safeDuration","seekableDuration","totalWatchTime","isVideoCompleted","onEnd","controls","controlsStyles","ignoreSilentSwitch","playInBackground","onError","areEqual","next","prevLikes","nextLikes","width","get","create","overflow"],"sourceRoot":"../../../../../src","sources":["components/Reels/ReelsSeries/ReelsSeriesItem.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useState","useEffect","useRef","useCallback","useMemo","memo","View","Dimensions","StyleSheet","SelectedVideoTrackType","Video","GestureDetector","GestureHandlerRootView","videoRef","videoControlsStyles","PAUSE_ICON_TIMEOUT","LIKE_ANIM_TIMEOUT","UNLOCK_MODAL_DELAY","useOverlayThresholds","useIsInOverlay","useCreateTapGesture","useCombinedGesture","clearTimeoutSafely","setTimeoutSafely","MediaControlsProvider","FastImage","jsx","_jsx","jsxs","_jsxs","INITIAL_MODAL_STATE","type","isVisible","MIN_VIEW_DURATION_SEC","ReelItem","reel","data","autoScroll","videoHeight","onLikePress","onSharePress","onBackPress","isFullScreen","preload","activeEpisodeIndex","onEpisodeSelect","onSearchPress","onLikeMorePress","onEpisodeUnlockPress","onViewCount","theme","onWatchProgress","onAutoScrollNext","buffering","setBuffering","isPaused","setIsPaused","showPauseIcon","setShowPauseIcon","modal","setModal","unlockModalVisible","setUnlockModalVisible","unlockModalDismissed","setUnlockModalDismissed","showLikeAnim","setShowLikeAnim","currentTime","setCurrentTime","duration","setDuration","playbackRate","setPlaybackRate","videoQuality","setVideoQuality","quality","url","isLiked","setIsLiked","Boolean","likesCount","setLikesCount","Number","likes","hasError","setHasError","activeResolution","setActiveResolution","timeoutRef","likeAnimTimeoutRef","viewCountedRef","autoScrolledRef","isLocked","videoUri","videoUrl","thumbnail","rightThreshold","bottomThreshold","finalPause","showCenterControls","closeUnlockModal","closeAllModals","openUnlockModal","current","episodeId","prev","handleLikePress","newLiked","count","newCount","Math","max","id","liked","handleTogglePlay","handleEpisodeSelect","episode","setTimeout","handleLockedTap","isInOverlay","createTapGesture","singleTap","doubleTap","combinedGesture","unlockProps","onClose","contentProps","series","activeIndex","videoProps","paused","likesProps","showAnimation","actionsProps","onLike","onLikeMore","onShare","onUnLock","onUnlockPress","navigationProps","onBack","onSearch","settingsProps","currentQuality","onPlaybackRateChange","onQualityChange","handleVideoEnd","style","styles","container","height","children","unlock","content","video","actions","navigation","settings","flex","gesture","source","uri","priority","high","resizeMode","cover","defaultSource","require","absoluteFillObject","ref","undefined","repeat","poster","posterResizeMode","rate","onLoadStart","onBuffer","isBuffering","onReadyForDisplay","onLoad","info","console","log","JSON","stringify","selectedTrack","videoTracks","find","t","selected","onVideoTracks","e","onProgress","p","safeDuration","seekableDuration","totalWatchTime","isVideoCompleted","onEnd","controls","controlsStyles","ignoreSilentSwitch","selectedVideoTrack","AUTO","RESOLUTION","value","replace","playInBackground","onError","areEqual","next","prevLikes","nextLikes","width","get","create","overflow"],"sourceRoot":"../../../../../src","sources":["components/Reels/ReelsSeries/ReelsSeriesItem.tsx"],"mappings":"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","ignoreList":[]}
@@ -12,7 +12,8 @@ const QualityControl = ({
12
12
  onQualityChange,
13
13
  videoUrl,
14
14
  qualities: externalQualities,
15
- loading: externalLoading
15
+ loading: externalLoading,
16
+ currentQuality
16
17
  }) => {
17
18
  const isControlled = typeof externalQualities !== 'undefined';
18
19
  const [qualities, setQualities] = useState(externalQualities ?? DEFAULT_QUALITIES);
@@ -45,8 +46,7 @@ const QualityControl = ({
45
46
  const qualityOptions = await getVideoQualities(videoUrl);
46
47
  if (!isMounted.current) return;
47
48
  if (qualityOptions.length > 0) {
48
- const qualityStrings = ['Auto', ...qualityOptions.map(q => q.quality).filter((v, i, self) => self.indexOf(v) === i).sort((a, b) => parseInt(b, 10) - parseInt(a, 10))];
49
- setQualities(qualityStrings);
49
+ setQualities(qualityOptions);
50
50
  } else {
51
51
  setQualities(DEFAULT_QUALITIES);
52
52
  }
@@ -61,7 +61,9 @@ const QualityControl = ({
61
61
  }, [videoUrl, isControlled]);
62
62
  const isLoading = isControlled ? Boolean(externalLoading) : loading;
63
63
  const renderedQualities = qualities && qualities.length > 0 ? qualities : DEFAULT_QUALITIES;
64
- if (!isControlled && isLoading) {
64
+
65
+ // Show loading indicator if we are fetching and only have the default "Auto" option
66
+ if (isLoading && renderedQualities.length <= 1) {
65
67
  return /*#__PURE__*/_jsxs(View, {
66
68
  style: styles.loadingContainer,
67
69
  children: [/*#__PURE__*/_jsx(ActivityIndicator, {
@@ -78,7 +80,8 @@ const QualityControl = ({
78
80
  return /*#__PURE__*/_jsx(View, {
79
81
  style: styles.container,
80
82
  children: renderedQualities.map((quality, index) => {
81
- const isSelected = activeQuality === quality;
83
+ // Fix: Use label comparison instead of object reference comparison
84
+ const isSelected = activeQuality?.quality === quality.quality;
82
85
  return /*#__PURE__*/_jsx(TouchableOpacity, {
83
86
  activeOpacity: 0.8,
84
87
  style: [styles.optionButton, {
@@ -90,7 +93,7 @@ const QualityControl = ({
90
93
  color: isSelected ? theme.colors.buttonText : theme.colors.textPrimary,
91
94
  fontWeight: isSelected ? '700' : '400'
92
95
  }],
93
- children: quality
96
+ children: quality.quality === 'Auto' && currentQuality ? `Auto (${currentQuality})` : quality.quality
94
97
  })
95
98
  }, index.toString());
96
99
  })
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","useEffect","useRef","View","Text","TouchableOpacity","StyleSheet","ActivityIndicator","moderateScale","verticalScale","RFValue","DEFAULT_QUALITIES","getVideoQualities","jsx","_jsx","jsxs","_jsxs","QualityControl","activeQuality","theme","onQualityChange","videoUrl","qualities","externalQualities","loading","externalLoading","isControlled","setQualities","setLoading","isMounted","current","fetchQualities","includes","qualityOptions","length","qualityStrings","map","q","quality","filter","v","i","self","indexOf","sort","a","b","parseInt","err","console","error","isLoading","Boolean","renderedQualities","style","styles","loadingContainer","children","size","color","colors","button","loadingText","textSecondary","container","index","isSelected","activeOpacity","optionButton","backgroundColor","surfaceDisabled","onPress","optionText","buttonText","textPrimary","fontWeight","toString","memo","create","flexDirection","flexWrap","justifyContent","gap","width","paddingVertical","paddingHorizontal","borderRadius","alignItems","marginBottom","fontSize","flex","marginTop"],"sourceRoot":"../../../../../../../src","sources":["components/Reels/ReelsSeries/components/VideoControls/QualityControl.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useState","useEffect","useRef","View","Text","TouchableOpacity","StyleSheet","ActivityIndicator","moderateScale","verticalScale","RFValue","DEFAULT_QUALITIES","getVideoQualities","jsx","_jsx","jsxs","_jsxs","QualityControl","activeQuality","theme","onQualityChange","videoUrl","qualities","externalQualities","loading","externalLoading","currentQuality","isControlled","setQualities","setLoading","isMounted","current","fetchQualities","includes","qualityOptions","length","err","console","error","isLoading","Boolean","renderedQualities","style","styles","loadingContainer","children","size","color","colors","button","loadingText","textSecondary","container","map","quality","index","isSelected","activeOpacity","optionButton","backgroundColor","surfaceDisabled","onPress","optionText","buttonText","textPrimary","fontWeight","toString","memo","create","flexDirection","flexWrap","justifyContent","gap","width","paddingVertical","paddingHorizontal","borderRadius","alignItems","marginBottom","fontSize","flex","marginTop"],"sourceRoot":"../../../../../../../src","sources":["components/Reels/ReelsSeries/components/VideoControls/QualityControl.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAC1D,SACEC,IAAI,EACJC,IAAI,EACJC,gBAAgB,EAChBC,UAAU,EACVC,iBAAiB,QACZ,cAAc;AACrB,SAASC,aAAa,EAAEC,aAAa,QAAQ,2BAA2B;AACxE,SAASC,OAAO,QAAQ,kCAAkC;AAE1D,SACEC,iBAAiB,EACjBC,iBAAiB,QAEZ,wBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAa7B,MAAMC,cAA6C,GAAGA,CAAC;EACrDC,aAAa;EACbC,KAAK;EACLC,eAAe;EACfC,QAAQ;EACRC,SAAS,EAAEC,iBAAiB;EAC5BC,OAAO,EAAEC,eAAe;EACxBC;AACF,CAAC,KAAK;EACJ,MAAMC,YAAY,GAAG,OAAOJ,iBAAiB,KAAK,WAAW;EAC7D,MAAM,CAACD,SAAS,EAAEM,YAAY,CAAC,GAAG5B,QAAQ,CACxCuB,iBAAiB,IAAKZ,iBACxB,CAAC;EACD,MAAM,CAACa,OAAO,EAAEK,UAAU,CAAC,GAAG7B,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAM8B,SAAS,GAAG5B,MAAM,CAAC,IAAI,CAAC;EAE9BD,SAAS,CAAC,MAAM;IACd6B,SAAS,CAACC,OAAO,GAAG,IAAI;IACxB,OAAO,MAAM;MACXD,SAAS,CAACC,OAAO,GAAG,KAAK;IAC3B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA9B,SAAS,CAAC,MAAM;IACd,IAAI0B,YAAY,EAAE;MAChBC,YAAY,CACVL,iBAAiB,IAAKZ,iBACxB,CAAC;IACH;EACF,CAAC,EAAE,CAACY,iBAAiB,EAAEI,YAAY,CAAC,CAAC;;EAErC;EACA1B,SAAS,CAAC,MAAM;IACd,IAAI0B,YAAY,EAAE;IAElB,MAAMK,cAAc,GAAG,MAAAA,CAAA,KAAY;MACjC,IAAI,CAACX,QAAQ,IAAI,CAACA,QAAQ,CAACY,QAAQ,CAAC,OAAO,CAAC,EAAE;QAC5C,IAAIH,SAAS,CAACC,OAAO,EACnBH,YAAY,CAACjB,iBAA+C,CAAC;QAC/D;MACF;MAEAkB,UAAU,CAAC,IAAI,CAAC;MAEhB,IAAI;QACF,MAAMK,cAAc,GAAG,MAAMtB,iBAAiB,CAACS,QAAQ,CAAC;QACxD,IAAI,CAACS,SAAS,CAACC,OAAO,EAAE;QAExB,IAAIG,cAAc,CAACC,MAAM,GAAG,CAAC,EAAE;UAC7BP,YAAY,CAACM,cAAc,CAAC;QAC9B,CAAC,MAAM;UACLN,YAAY,CAACjB,iBAA+C,CAAC;QAC/D;MACF,CAAC,CAAC,OAAOyB,GAAG,EAAE;QACZC,OAAO,CAACC,KAAK,CAAC,4BAA4B,EAAEF,GAAG,CAAC;QAChD,IAAIN,SAAS,CAACC,OAAO,EACnBH,YAAY,CAACjB,iBAA+C,CAAC;MACjE,CAAC,SAAS;QACR,IAAImB,SAAS,CAACC,OAAO,EAAEF,UAAU,CAAC,KAAK,CAAC;MAC1C;IACF,CAAC;IAEDG,cAAc,CAAC,CAAC;EAClB,CAAC,EAAE,CAACX,QAAQ,EAAEM,YAAY,CAAC,CAAC;EAE5B,MAAMY,SAAS,GAAGZ,YAAY,GAAGa,OAAO,CAACf,eAAe,CAAC,GAAGD,OAAO;EACnE,MAAMiB,iBAAiB,GACrBnB,SAAS,IAAIA,SAAS,CAACa,MAAM,GAAG,CAAC,GAAGb,SAAS,GAAGX,iBAAiB;;EAEnE;EACA,IAAI4B,SAAS,IAAIE,iBAAiB,CAACN,MAAM,IAAI,CAAC,EAAE;IAC9C,oBACEnB,KAAA,CAACb,IAAI;MAACuC,KAAK,EAAEC,MAAM,CAACC,gBAAiB;MAAAC,QAAA,gBACnC/B,IAAA,CAACP,iBAAiB;QAACuC,IAAI,EAAC,OAAO;QAACC,KAAK,EAAE5B,KAAK,CAAC6B,MAAM,CAACC;MAAO,CAAE,CAAC,eAC9DnC,IAAA,CAACV,IAAI;QACHsC,KAAK,EAAE,CAACC,MAAM,CAACO,WAAW,EAAE;UAAEH,KAAK,EAAE5B,KAAK,CAAC6B,MAAM,CAACG;QAAc,CAAC,CAAE;QAAAN,QAAA,EACpE;MAED,CAAM,CAAC;IAAA,CACH,CAAC;EAEX;EAEA,oBACE/B,IAAA,CAACX,IAAI;IAACuC,KAAK,EAAEC,MAAM,CAACS,SAAU;IAAAP,QAAA,EAC3BJ,iBAAiB,CAACY,GAAG,CAAC,CAACC,OAAO,EAAEC,KAAK,KAAK;MACzC;MACA,MAAMC,UAAU,GAAGtC,aAAa,EAAEoC,OAAO,KAAKA,OAAO,CAACA,OAAO;MAE7D,oBACExC,IAAA,CAACT,gBAAgB;QAEfoD,aAAa,EAAE,GAAI;QACnBf,KAAK,EAAE,CACLC,MAAM,CAACe,YAAY,EACnB;UACEC,eAAe,EAAEH,UAAU,GACvBrC,KAAK,CAAC6B,MAAM,CAACC,MAAM,GACnB9B,KAAK,CAAC6B,MAAM,CAACY;QACnB,CAAC,CACD;QACFC,OAAO,EAAEA,CAAA,KAAMzC,eAAe,CAACkC,OAAO,CAAE;QAAAT,QAAA,eAExC/B,IAAA,CAACV,IAAI;UACHsC,KAAK,EAAE,CACLC,MAAM,CAACmB,UAAU,EACjB;YACEf,KAAK,EAAES,UAAU,GACbrC,KAAK,CAAC6B,MAAM,CAACe,UAAU,GACvB5C,KAAK,CAAC6B,MAAM,CAACgB,WAAW;YAC5BC,UAAU,EAAET,UAAU,GAAG,KAAK,GAAG;UACnC,CAAC,CACD;UAAAX,QAAA,EAEDS,OAAO,CAACA,OAAO,KAAK,MAAM,IAAI5B,cAAc,GACzC,SAASA,cAAc,GAAG,GAC1B4B,OAAO,CAACA;QAAO,CACf;MAAC,GA1BFC,KAAK,CAACW,QAAQ,CAAC,CA2BJ,CAAC;IAEvB,CAAC;EAAC,CACE,CAAC;AAEX,CAAC;AAED,4BAAenE,KAAK,CAACoE,IAAI,CAAClD,cAAc,CAAC;AAEzC,MAAM0B,MAAM,GAAGrC,UAAU,CAAC8D,MAAM,CAAC;EAC/BhB,SAAS,EAAE;IACTiB,aAAa,EAAE,KAAK;IACpBC,QAAQ,EAAE,MAAM;IAChBC,cAAc,EAAE,QAAQ;IACxBC,GAAG,EAAEhE,aAAa,CAAC,EAAE;EACvB,CAAC;EACDkD,YAAY,EAAE;IACZe,KAAK,EAAE,KAAK;IACZC,eAAe,EAAEjE,aAAa,CAAC,EAAE,CAAC;IAClCkE,iBAAiB,EAAEnE,aAAa,CAAC,EAAE,CAAC;IACpCoE,YAAY,EAAEpE,aAAa,CAAC,CAAC,CAAC;IAC9BqE,UAAU,EAAE,QAAQ;IACpBN,cAAc,EAAE,QAAQ;IACxBO,YAAY,EAAErE,aAAa,CAAC,EAAE;EAChC,CAAC;EACDqD,UAAU,EAAE;IACViB,QAAQ,EAAErE,OAAO,CAAC,EAAE;EACtB,CAAC;EACDkC,gBAAgB,EAAE;IAChBoC,IAAI,EAAE,CAAC;IACPT,cAAc,EAAE,QAAQ;IACxBM,UAAU,EAAE,QAAQ;IACpBH,eAAe,EAAEjE,aAAa,CAAC,EAAE;EACnC,CAAC;EACDyC,WAAW,EAAE;IACX+B,SAAS,EAAExE,aAAa,CAAC,EAAE,CAAC;IAC5BsE,QAAQ,EAAErE,OAAO,CAAC,EAAE;EACtB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,15 +1,14 @@
1
1
  "use strict";
2
2
 
3
- export const DEFAULT_QUALITIES = ['Auto', '1080p', '720p', '480p', '360p'];
3
+ export const DEFAULT_QUALITIES = [{
4
+ quality: 'Auto',
5
+ url: ''
6
+ }];
4
7
 
5
- // Simple in-memory cache to avoid fetching the same playlist multiple times
8
+ // Simple in-memory cache
6
9
  const qualitiesCache = {};
7
-
8
- /**
9
- * Fetches available video qualities from m3u8 playlist.
10
- */
11
10
  export const getVideoQualities = async m3u8Url => {
12
- // Return cached result if available to avoid repeated network calls
11
+ // Return cached result
13
12
  if (qualitiesCache[m3u8Url]) {
14
13
  return qualitiesCache[m3u8Url];
15
14
  }
@@ -20,25 +19,30 @@ export const getVideoQualities = async m3u8Url => {
20
19
  const lines = text.split('\n');
21
20
  for (let i = 0; i < lines.length; i++) {
22
21
  if (lines?.[i]?.includes('#EXT-X-STREAM-INF')) {
23
- // Example line:
24
- // #EXT-X-STREAM-INF:BANDWIDTH=800000,RESOLUTION=640x360,...
25
22
  const resolutionMatch = lines?.[i]?.match(/RESOLUTION=\d+x(\d+)/);
26
23
  const url = lines[i + 1]?.trim();
27
24
  if (resolutionMatch && url) {
28
25
  qualities.push({
29
26
  quality: `${resolutionMatch[1]}p`,
30
- url
27
+ url: new URL(url, m3u8Url).toString() // handle relative URLs
31
28
  });
32
29
  }
33
30
  }
34
31
  }
32
+ const sortedQualities = qualities.sort((a, b) => parseInt(b.quality, 10) - parseInt(a.quality, 10));
35
33
 
36
- // Cache the result (even if empty) so we don't re-fetch for this URL
37
- qualitiesCache[m3u8Url] = qualities;
38
- return qualities;
34
+ // Add Auto option at the top
35
+ const finalQualities = [{
36
+ quality: 'Auto',
37
+ url: m3u8Url // master playlist
38
+ }, ...sortedQualities];
39
+ qualitiesCache[m3u8Url] = finalQualities;
40
+ return finalQualities;
39
41
  } catch (error) {
40
- console.error('Error fetching video qualities:', error);
41
- return [];
42
+ return [{
43
+ quality: 'Auto',
44
+ url: m3u8Url
45
+ }];
42
46
  }
43
47
  };
44
48
  //# sourceMappingURL=quality.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_QUALITIES","qualitiesCache","getVideoQualities","m3u8Url","res","fetch","text","qualities","lines","split","i","length","includes","resolutionMatch","match","url","trim","push","quality","error","console"],"sourceRoot":"../../../../../../src","sources":["components/Reels/ReelsSeries/utils/quality.ts"],"mappings":";;AAKA,OAAO,MAAMA,iBAAiB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;;AAE1E;AACA,MAAMC,cAA+C,GAAG,CAAC,CAAC;;AAE1D;AACA;AACA;AACA,OAAO,MAAMC,iBAAiB,GAAG,MAC/BC,OAAe,IACc;EAC7B;EACA,IAAIF,cAAc,CAACE,OAAO,CAAC,EAAE;IAC3B,OAAOF,cAAc,CAACE,OAAO,CAAC;EAChC;EAEA,IAAI;IACF,MAAMC,GAAG,GAAG,MAAMC,KAAK,CAACF,OAAO,CAAC;IAChC,MAAMG,IAAI,GAAG,MAAMF,GAAG,CAACE,IAAI,CAAC,CAAC;IAC7B,MAAMC,SAA0B,GAAG,EAAE;IACrC,MAAMC,KAAK,GAAGF,IAAI,CAACG,KAAK,CAAC,IAAI,CAAC;IAE9B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,KAAK,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;MACrC,IAAIF,KAAK,GAAGE,CAAC,CAAC,EAAEE,QAAQ,CAAC,mBAAmB,CAAC,EAAE;QAC7C;QACA;QACA,MAAMC,eAAe,GAAGL,KAAK,GAAGE,CAAC,CAAC,EAAEI,KAAK,CAAC,sBAAsB,CAAC;QACjE,MAAMC,GAAG,GAAGP,KAAK,CAACE,CAAC,GAAG,CAAC,CAAC,EAAEM,IAAI,CAAC,CAAC;QAChC,IAAIH,eAAe,IAAIE,GAAG,EAAE;UAC1BR,SAAS,CAACU,IAAI,CAAC;YAAEC,OAAO,EAAE,GAAGL,eAAe,CAAC,CAAC,CAAC,GAAG;YAAEE;UAAI,CAAC,CAAC;QAC5D;MACF;IACF;;IAEA;IACAd,cAAc,CAACE,OAAO,CAAC,GAAGI,SAAS;IAEnC,OAAOA,SAAS;EAClB,CAAC,CAAC,OAAOY,KAAK,EAAE;IACdC,OAAO,CAACD,KAAK,CAAC,iCAAiC,EAAEA,KAAK,CAAC;IACvD,OAAO,EAAE;EACX;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["DEFAULT_QUALITIES","quality","url","qualitiesCache","getVideoQualities","m3u8Url","res","fetch","text","qualities","lines","split","i","length","includes","resolutionMatch","match","trim","push","URL","toString","sortedQualities","sort","a","b","parseInt","finalQualities","error"],"sourceRoot":"../../../../../../src","sources":["components/Reels/ReelsSeries/utils/quality.ts"],"mappings":";;AAKA,OAAO,MAAMA,iBAAkC,GAAG,CAChD;EACEC,OAAO,EAAE,MAAM;EACfC,GAAG,EAAE;AACP,CAAC,CACF;;AAED;AACA,MAAMC,cAA+C,GAAG,CAAC,CAAC;AAE1D,OAAO,MAAMC,iBAAiB,GAAG,MAC/BC,OAAe,IACc;EAC7B;EACA,IAAIF,cAAc,CAACE,OAAO,CAAC,EAAE;IAC3B,OAAOF,cAAc,CAACE,OAAO,CAAC;EAChC;EAEA,IAAI;IACF,MAAMC,GAAG,GAAG,MAAMC,KAAK,CAACF,OAAO,CAAC;IAChC,MAAMG,IAAI,GAAG,MAAMF,GAAG,CAACE,IAAI,CAAC,CAAC;IAC7B,MAAMC,SAA0B,GAAG,EAAE;IACrC,MAAMC,KAAK,GAAGF,IAAI,CAACG,KAAK,CAAC,IAAI,CAAC;IAE9B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,KAAK,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;MACrC,IAAIF,KAAK,GAAGE,CAAC,CAAC,EAAEE,QAAQ,CAAC,mBAAmB,CAAC,EAAE;QAC7C,MAAMC,eAAe,GAAGL,KAAK,GAAGE,CAAC,CAAC,EAAEI,KAAK,CAAC,sBAAsB,CAAC;QACjE,MAAMd,GAAG,GAAGQ,KAAK,CAACE,CAAC,GAAG,CAAC,CAAC,EAAEK,IAAI,CAAC,CAAC;QAEhC,IAAIF,eAAe,IAAIb,GAAG,EAAE;UAC1BO,SAAS,CAACS,IAAI,CAAC;YACbjB,OAAO,EAAE,GAAGc,eAAe,CAAC,CAAC,CAAC,GAAG;YACjCb,GAAG,EAAE,IAAIiB,GAAG,CAACjB,GAAG,EAAEG,OAAO,CAAC,CAACe,QAAQ,CAAC,CAAC,CAAE;UACzC,CAAC,CAAC;QACJ;MACF;IACF;IAEA,MAAMC,eAAe,GAAGZ,SAAS,CAACa,IAAI,CACpC,CAACC,CAAC,EAAEC,CAAC,KAAKC,QAAQ,CAACD,CAAC,CAACvB,OAAO,EAAE,EAAE,CAAC,GAAGwB,QAAQ,CAACF,CAAC,CAACtB,OAAO,EAAE,EAAE,CAC5D,CAAC;;IAED;IACA,MAAMyB,cAA+B,GAAG,CACtC;MACEzB,OAAO,EAAE,MAAM;MACfC,GAAG,EAAEG,OAAO,CAAE;IAChB,CAAC,EACD,GAAGgB,eAAe,CACnB;IAEDlB,cAAc,CAACE,OAAO,CAAC,GAAGqB,cAAc;IACxC,OAAOA,cAAc;EACvB,CAAC,CAAC,OAAOC,KAAK,EAAE;IACd,OAAO,CACL;MACE1B,OAAO,EAAE,MAAM;MACfC,GAAG,EAAEG;IACP,CAAC,CACF;EACH;AACF,CAAC","ignoreList":[]}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  /**
4
- * @author Naresh
5
- * @lastModified Fri 17 Oct 2025 at 09:55 PM
4
+ * @author Naresh Dhamu
5
+ * @lastModified Thu 12 Jun 2025 at 09:22 AM
6
6
  */
7
7
 
8
8
  import { useEffect, useRef, useState } from 'react';
@@ -11,125 +11,160 @@ import CryptoJS from 'crypto-js';
11
11
  import { MMKV } from 'react-native-mmkv';
12
12
  import NetInfo from '@react-native-community/netinfo';
13
13
  import { useSplashStore } from "../store/splashStore.js";
14
- const mmkvStorage = new MMKV();
15
- const activeDownloadTasks = new Map();
16
- const DEFAULT_EXTENSION = 'bin';
17
- const CACHE_FILE_PREFIX = 'splash_';
18
- const isNetworkOnline = async () => {
14
+ const storage = new MMKV();
15
+ const pendingDownloads = new Map();
16
+ const FALLBACK_EXT = 'bin';
17
+ const FILE_PREFIX = 'splash_';
18
+ const pathKey = slot => `splash_path__${slot}`;
19
+ const extKey = slot => `splash_ext__${slot}`;
20
+ const isOnline = async () => {
19
21
  const state = await NetInfo.fetch();
20
22
  return !!state.isConnected;
21
23
  };
22
- const getUrlExtension = url => {
24
+ const extractExt = url => {
23
25
  try {
24
- if (!url || typeof url !== 'string') return DEFAULT_EXTENSION;
25
- const cleanUrl = url.split('?')[0];
26
- const dot = cleanUrl?.lastIndexOf('.') ?? -1;
27
- if (dot === -1) return DEFAULT_EXTENSION;
28
- const ext = cleanUrl?.substring(dot + 1).toLowerCase() ?? DEFAULT_EXTENSION;
29
- if (!/^[a-z0-9]+$/i.test(ext)) return DEFAULT_EXTENSION;
30
- return ext;
26
+ const clean = url.split('?')[0] ?? '';
27
+ const dot = clean.lastIndexOf('.');
28
+ if (dot === -1) return FALLBACK_EXT;
29
+ const ext = clean.substring(dot + 1).toLowerCase();
30
+ return /^[a-z0-9]+$/.test(ext) ? ext : FALLBACK_EXT;
31
31
  } catch {
32
- return DEFAULT_EXTENSION;
32
+ return FALLBACK_EXT;
33
33
  }
34
34
  };
35
- const buildCachePath = (url, cacheKey, extension) => {
36
- const ext = extension.replace(/^\./, '') || DEFAULT_EXTENSION;
37
- const hash = CryptoJS.MD5(`${url}|${cacheKey}|${ext}`).toString();
38
- return `${RNFS.CachesDirectoryPath}/${CACHE_FILE_PREFIX}${hash}.${ext}`;
35
+ const buildFilePath = (url, slot, ext) => {
36
+ const cleanExt = ext.replace(/^\./, '') || FALLBACK_EXT;
37
+ const hash = CryptoJS.MD5(`${url}|${slot}|${cleanExt}`).toString();
38
+ return `${RNFS.CachesDirectoryPath}/${FILE_PREFIX}${hash}.${cleanExt}`;
39
39
  };
40
- const downloadAndCacheFile = async (url, extension, cacheKey, force) => {
40
+ const fetchAndCache = async (url, slot, forceRefresh) => {
41
41
  if (!url?.trim()) return null;
42
- const localFile = buildCachePath(url, cacheKey, extension);
43
- if (activeDownloadTasks.has(localFile)) {
44
- return activeDownloadTasks.get(localFile);
42
+ const ext = extractExt(url);
43
+ const targetPath = buildFilePath(url, slot, ext);
44
+ if (pendingDownloads.has(targetPath)) {
45
+ return pendingDownloads.get(targetPath);
45
46
  }
46
47
  const task = (async () => {
47
- let oldFile = null;
48
- try {
49
- const savedPath = mmkvStorage.getString(cacheKey);
50
- oldFile = savedPath && savedPath !== localFile ? savedPath : null;
51
- if (!force && savedPath === localFile) {
52
- const exists = await RNFS.exists(localFile);
53
- if (exists) return localFile;
48
+ const cachedPath = storage.getString(pathKey(slot)) ?? null;
49
+ const cachedExt = storage.getString(extKey(slot)) ?? ext;
50
+ const stalePath = cachedPath && cachedPath !== targetPath ? cachedPath : null;
51
+ const staleExt = stalePath ? cachedExt : ext;
52
+ if (!forceRefresh && cachedPath === targetPath) {
53
+ if (await RNFS.exists(targetPath)) {
54
+ return {
55
+ filePath: targetPath,
56
+ fileExt: cachedExt
57
+ };
58
+ }
59
+ }
60
+ if (!(await isOnline())) {
61
+ if (cachedPath && (await RNFS.exists(cachedPath))) {
62
+ return {
63
+ filePath: cachedPath,
64
+ fileExt: cachedExt
65
+ };
54
66
  }
55
- if (!(await isNetworkOnline())) {
56
- return oldFile && (await RNFS.exists(oldFile)) ? oldFile : null;
67
+ if (stalePath && (await RNFS.exists(stalePath))) {
68
+ return {
69
+ filePath: stalePath,
70
+ fileExt: staleExt
71
+ };
57
72
  }
58
- const result = await RNFS.downloadFile({
73
+ console.warn(`[SplashCache] Offline no cached file for slot: ${slot}`);
74
+ return null;
75
+ }
76
+ try {
77
+ const response = await RNFS.downloadFile({
59
78
  fromUrl: url,
60
- toFile: localFile,
79
+ toFile: targetPath,
61
80
  cacheable: true,
62
- readTimeout: 15000,
63
- connectionTimeout: 10000
64
- }).promise.catch(() => null);
65
- if (!result || result.statusCode !== 200) {
66
- const code = result?.statusCode ?? 'unknown';
67
- throw new Error(`RNFS download failed (status: ${code})`);
81
+ readTimeout: 15_000,
82
+ connectionTimeout: 10_000
83
+ }).promise;
84
+ if (response.statusCode !== 200) {
85
+ throw new Error(`HTTP ${response.statusCode}`);
68
86
  }
69
- mmkvStorage.set(cacheKey, localFile);
70
- if (oldFile && (await RNFS.exists(oldFile))) {
71
- await RNFS.unlink(oldFile).catch(() => {});
87
+ storage.set(pathKey(slot), targetPath);
88
+ storage.set(extKey(slot), ext);
89
+ if (stalePath && (await RNFS.exists(stalePath))) {
90
+ await RNFS.unlink(stalePath).catch(() => {});
72
91
  }
73
- return localFile;
92
+ return {
93
+ filePath: targetPath,
94
+ fileExt: ext
95
+ };
74
96
  } catch (err) {
75
- console.warn('[SplashCache] download failed:', url, err);
97
+ console.warn(`[SplashCache] Download failed for slot "${slot}":`, err);
98
+ }
99
+ if (stalePath && (await RNFS.exists(stalePath))) {
100
+ return {
101
+ filePath: stalePath,
102
+ fileExt: staleExt
103
+ };
76
104
  }
77
- if (oldFile && (await RNFS.exists(oldFile))) {
78
- return oldFile;
105
+ if (cachedPath && (await RNFS.exists(cachedPath))) {
106
+ return {
107
+ filePath: cachedPath,
108
+ fileExt: cachedExt
109
+ };
79
110
  }
80
111
  return null;
81
112
  })().finally(() => {
82
- activeDownloadTasks.delete(localFile);
113
+ pendingDownloads.delete(targetPath);
83
114
  });
84
- activeDownloadTasks.set(localFile, task);
115
+ pendingDownloads.set(targetPath, task);
85
116
  return task;
86
117
  };
118
+ const LOADING_STATE = {
119
+ isLoading: true,
120
+ logoPath: null,
121
+ backgroundPath: null,
122
+ logoExt: ''
123
+ };
87
124
  export const useSplashCache = ({
88
125
  logoUrl,
89
126
  backgroundUrl,
90
- forceDownload = false
127
+ forceRefresh = false
91
128
  }) => {
92
- const [loadState, setLoadState] = useState({
93
- isReady: false,
94
- error: null
129
+ const [state, setState] = useState(LOADING_STATE);
130
+ const persistRef = useRef({
131
+ logo: useSplashStore.getState().setLogoPath,
132
+ background: useSplashStore.getState().setBackdropPath
95
133
  });
96
- const setLogoPath = useSplashStore(s => s.setLogoPath);
97
- const setBackdropPath = useSplashStore(s => s.setBackdropPath);
98
- const isMountedRef = useRef(true);
134
+ persistRef.current.logo = useSplashStore(s => s.setLogoPath);
135
+ persistRef.current.background = useSplashStore(s => s.setBackdropPath);
136
+ const mounted = useRef(true);
99
137
  useEffect(() => {
100
- isMountedRef.current = true;
101
- const syncAssets = async () => {
102
- try {
103
- const [logoLocalPath, backdropLocalPath] = await Promise.all([logoUrl ? downloadAndCacheFile(logoUrl, getUrlExtension(logoUrl), 'splash_logo', forceDownload) : Promise.resolve(null), backgroundUrl ? downloadAndCacheFile(backgroundUrl, getUrlExtension(backgroundUrl), 'splash_background', forceDownload) : Promise.resolve(null)]);
104
- if (!isMountedRef.current) return;
105
- if (logoLocalPath) setLogoPath?.(logoLocalPath);
106
- if (backdropLocalPath) setBackdropPath?.(backdropLocalPath);
107
- setLoadState({
108
- isReady: true,
109
- error: null
110
- });
111
- } catch (err) {
112
- if (!isMountedRef.current) return;
113
- const error = err instanceof Error ? err : new Error('Splash cache failed');
114
- setLoadState({
115
- isReady: true,
116
- error
117
- });
118
- }
138
+ mounted.current = true;
139
+ setState(LOADING_STATE);
140
+ const sync = async () => {
141
+ const [logoAsset, backgroundAsset] = await Promise.all([logoUrl ? fetchAndCache(logoUrl, 'logo', forceRefresh) : null, backgroundUrl ? fetchAndCache(backgroundUrl, 'background', forceRefresh) : null]);
142
+ if (!mounted.current) return;
143
+ setState({
144
+ isLoading: false,
145
+ logoPath: logoAsset?.filePath ?? null,
146
+ backgroundPath: backgroundAsset?.filePath ?? null,
147
+ logoExt: logoAsset?.fileExt ?? ''
148
+ });
149
+ if (logoAsset?.filePath) persistRef.current.logo(logoAsset.filePath);
150
+ if (backgroundAsset?.filePath) persistRef.current.background(backgroundAsset.filePath);
119
151
  };
120
- syncAssets();
152
+ sync().catch(() => {
153
+ if (mounted.current) setState(prev => ({
154
+ ...prev,
155
+ isLoading: false
156
+ }));
157
+ });
121
158
  return () => {
122
- isMountedRef.current = false;
159
+ mounted.current = false;
123
160
  };
124
- }, [logoUrl, backgroundUrl, forceDownload, setLogoPath, setBackdropPath]);
125
- const logoLocalPath = useSplashStore(s => s.logo.localPath);
126
- const backdropLocalPath = useSplashStore(s => s.backdrop.localPath);
161
+ }, [logoUrl, backgroundUrl, forceRefresh]);
127
162
  return {
128
- state: loadState,
129
- isLoading: !loadState.isReady,
163
+ isLoading: state.isLoading,
164
+ logoExt: state.logoExt,
130
165
  data: {
131
- logoPath: logoLocalPath,
132
- backgroundPath: backdropLocalPath
166
+ logoPath: state.logoPath,
167
+ backgroundPath: state.backgroundPath
133
168
  }
134
169
  };
135
170
  };