@applicaster/quick-brick-player 12.0.0-alpha.3893335783 → 12.0.0-alpha.4054240460

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applicaster/quick-brick-player",
3
- "version": "12.0.0-alpha.3893335783",
3
+ "version": "12.0.0-alpha.4054240460",
4
4
  "description": "Quick Brick Player",
5
5
  "main": "./src/index.ts",
6
6
  "types": "index.d.ts",
@@ -36,11 +36,11 @@
36
36
  },
37
37
  "homepage": "https://github.com/applicaster/quickbrick#readme",
38
38
  "dependencies": {
39
- "@applicaster/quick-brick-mobile-transport-controls": "12.0.0-rc.58",
40
- "@applicaster/quick-brick-tv-transport-controls": "12.0.0-rc.62",
41
- "@applicaster/zapp-react-native-tvos-app": "12.0.0-alpha.3893335783",
42
- "@applicaster/zapp-react-native-ui-components": "12.0.0-alpha.3893335783",
43
- "@applicaster/zapp-react-native-utils": "12.0.0-alpha.3893335783",
39
+ "@applicaster/quick-brick-mobile-transport-controls": "12.0.0-rc.79",
40
+ "@applicaster/quick-brick-tv-transport-controls": "12.0.0-alpha.4054240460",
41
+ "@applicaster/zapp-react-native-tvos-app": "12.0.0-alpha.4054240460",
42
+ "@applicaster/zapp-react-native-ui-components": "12.0.0-alpha.4054240460",
43
+ "@applicaster/zapp-react-native-utils": "12.0.0-alpha.4054240460",
44
44
  "keymirror": "^0.1.1",
45
45
  "query-string": "7.1.3",
46
46
  "react-native-web-linear-gradient": "1.1.2",
@@ -419,6 +419,7 @@ export default function DefaultLayout(props: LayoutProps) {
419
419
  startTimestamp={startTimestamp}
420
420
  endTimestamp={endTimestamp}
421
421
  isDateBasedLiveContent={isDateBasedLiveContent}
422
+ onSkipLive={onSkipLive}
422
423
  />
423
424
 
424
425
  {showCounter && timeLeft >= 0 && (
@@ -1,7 +1,6 @@
1
- // Disabling for now as lint can't recognise typescript definition here
2
1
  /* eslint-disable react/prop-types */
3
2
  import * as React from "react";
4
- import { StyleSheet, View } from "react-native";
3
+ import { Animated, StyleSheet, View } from "react-native";
5
4
  import LinearGradient from "../LinearGradient";
6
5
  import { getDominantColor, getPalettes } from "../../../utils/utils";
7
6
  import { useEffect } from "react";
@@ -11,7 +10,7 @@ type MagicBGProps = {
11
10
  image: string;
12
11
  fallbackUrl?: string;
13
12
  defaultColor: string;
14
- colors: string[]; // Updated to type string[] as it holds hex values
13
+ colors: string[];
15
14
  };
16
15
 
17
16
  const defaultColors = {
@@ -66,31 +65,46 @@ export const MagicBG: React.FC<MagicBGProps> = ({
66
65
  defaultColors.defaultGradientEnd,
67
66
  ]);
68
67
 
68
+ const [backgroundColorAnim] = React.useState(new Animated.Value(0)); // from 0 to 1
69
+ const [gradientOpacityAnim] = React.useState(new Animated.Value(0)); // from 0 to 1
70
+
69
71
  useEffect(() => {
72
+ const animateColors = () => {
73
+ Animated.timing(backgroundColorAnim, {
74
+ toValue: 1,
75
+ duration: 500,
76
+ useNativeDriver: false,
77
+ }).start();
78
+
79
+ Animated.timing(gradientOpacityAnim, {
80
+ toValue: 1,
81
+ duration: 500,
82
+ useNativeDriver: false,
83
+ }).start();
84
+ };
85
+
70
86
  const fetchColors = async () => {
71
- // Check if colors are provided and not empty
72
87
  if (colors && colors.length > 0) {
73
- // Use provided colors for gradient and dominant color
74
- setGradientColors(colors.slice(0, 2)); // First 2 colors for gradient
75
- setDominantColor(colors[0]); // First color as dominant
88
+ setGradientColors(colors.slice(0, 2));
89
+ setDominantColor(colors[0]);
90
+ animateColors();
76
91
  } else if (image) {
77
- // If no colors, try fetching from image
78
92
  try {
79
93
  const { gradientColors, dominantColor } =
80
94
  await fetchPaletteAndDominantColor(image);
81
95
 
82
96
  setGradientColors(gradientColors);
83
97
  setDominantColor(dominantColor);
98
+ animateColors();
84
99
  } catch (error) {
85
- // If image fetch fails, try fallback URL
86
100
  try {
87
101
  const { gradientColors, dominantColor } =
88
102
  await fetchPaletteAndDominantColor(fallbackUrl);
89
103
 
90
104
  setGradientColors(gradientColors);
91
105
  setDominantColor(dominantColor);
106
+ animateColors();
92
107
  } catch {
93
- // If everything fails, use default color
94
108
  setGradientColors([
95
109
  defaultColors.defaultGradientStart,
96
110
  defaultColors.defaultGradientEnd,
@@ -100,7 +114,6 @@ export const MagicBG: React.FC<MagicBGProps> = ({
100
114
  }
101
115
  }
102
116
  } else {
103
- // If no image or colors, use default color
104
117
  setGradientColors([
105
118
  defaultColors.defaultGradientStart,
106
119
  defaultColors.defaultGradientEnd,
@@ -113,11 +126,30 @@ export const MagicBG: React.FC<MagicBGProps> = ({
113
126
  fetchColors();
114
127
  }, []);
115
128
 
129
+ const interpolatedBackgroundColor = backgroundColorAnim.interpolate({
130
+ inputRange: [0, 1],
131
+ outputRange: ["black", dominantColor],
132
+ });
133
+
116
134
  return (
117
- <View style={[styles.container, { backgroundColor: dominantColor }]}>
135
+ <Animated.View
136
+ style={[
137
+ styles.container,
138
+ { backgroundColor: interpolatedBackgroundColor },
139
+ ]}
140
+ >
118
141
  <View style={styles.fullScreenOverlay} />
119
- <LinearGradient colors={gradientColors} style={styles.gradientOverlay} />
142
+
143
+ <Animated.View
144
+ style={[styles.gradientOverlay, { opacity: gradientOpacityAnim }]}
145
+ >
146
+ <LinearGradient
147
+ colors={gradientColors}
148
+ style={StyleSheet.absoluteFill}
149
+ />
150
+ </Animated.View>
151
+
120
152
  {children}
121
- </View>
153
+ </Animated.View>
122
154
  );
123
155
  };
@@ -22,6 +22,10 @@ export const addQueryParam = (
22
22
  return `${urlWithoutQuery}?${updatedQueryString}`;
23
23
  };
24
24
 
25
- export const isValidDate = (dateString: string): boolean => {
26
- return dateString.trim() !== "" && dayjs.utc(dateString).isValid();
25
+ export const isValidDate = (dateString: string | undefined): boolean => {
26
+ return (
27
+ typeof dateString === "string" &&
28
+ dateString.trim() !== "" &&
29
+ dayjs.utc(dateString).isValid()
30
+ );
27
31
  };
@@ -4,7 +4,7 @@
4
4
  import React from "react";
5
5
  import * as R from "ramda";
6
6
 
7
- import { findNodeHandle, NativeModules, StyleSheet, View } from "react-native";
7
+ import { findNodeHandle, StyleSheet, View } from "react-native";
8
8
  import TransportControlsMobile from "@applicaster/quick-brick-mobile-transport-controls";
9
9
  import TransportControlsTV from "@applicaster/quick-brick-tv-transport-controls";
10
10
 
@@ -42,15 +42,7 @@ import {
42
42
  AnimationComponent,
43
43
  ComponentAnimationType,
44
44
  } from "@applicaster/zapp-react-native-ui-components/Components/VideoModal/ModalAnimation";
45
-
46
- const RNPlayerManager = {
47
- QuickBrickPlayerPlugin: isApplePlatform()
48
- ? NativeModules.PlayerModule
49
- : NativeModules.QuickBrickDefaultPlayerModule,
50
- KalturaPlayerPlugin: isApplePlatform()
51
- ? NativeModules.KalturaPlayerModule
52
- : NativeModules.QBKalturaPlayerModule,
53
- };
45
+ import { RNPlayerManager } from "@applicaster/zapp-react-native-utils/appUtils/playerManager/nativePlayerManager";
54
46
 
55
47
  const styles = StyleSheet.create({
56
48
  container: { flex: 1 },
@@ -120,8 +112,6 @@ export default class VideoPlayer extends React.Component<
120
112
  }
121
113
 
122
114
  componentWillUnmount() {
123
- this.stopBackgroundPlayback();
124
-
125
115
  this.playbackStarted = false;
126
116
  this.handleAnalyticEvent(GENERAL_EVENT.session_end);
127
117
  this.onPlayerClosed();
@@ -166,6 +156,11 @@ export default class VideoPlayer extends React.Component<
166
156
  }
167
157
  }
168
158
 
159
+ // For close button
160
+ public closeNativePlayer = () => {
161
+ this.stopBackgroundPlayback();
162
+ };
163
+
169
164
  getPlayNextData = () => this.props.playNextData as PlayNextData;
170
165
 
171
166
  /**
@@ -344,7 +339,7 @@ export default class VideoPlayer extends React.Component<
344
339
  * Sets either subtitle language, or audio language if we have a selected a new locale.
345
340
  * If no locale is set it defaults to system language for audio, and leaves subtitles unaltered.
346
341
  */
347
- setLanguage = (selected = null) => {
342
+ selectTrack = (selected = null) => {
348
343
  const { trackType, id, language } = selected || {};
349
344
 
350
345
  const isOff = language === "Off";