@applicaster/quick-brick-player 12.0.0-alpha.4337072244 → 12.0.0-alpha.4342066143

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.4337072244",
3
+ "version": "12.0.0-alpha.4342066143",
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-alpha.4337072244",
41
- "@applicaster/zapp-react-native-tvos-app": "12.0.0-alpha.4337072244",
42
- "@applicaster/zapp-react-native-ui-components": "12.0.0-alpha.4337072244",
43
- "@applicaster/zapp-react-native-utils": "12.0.0-alpha.4337072244",
39
+ "@applicaster/quick-brick-mobile-transport-controls": "12.0.0-rc.68",
40
+ "@applicaster/quick-brick-tv-transport-controls": "12.0.0-rc.62",
41
+ "@applicaster/zapp-react-native-tvos-app": "12.0.0-alpha.4342066143",
42
+ "@applicaster/zapp-react-native-ui-components": "12.0.0-alpha.4342066143",
43
+ "@applicaster/zapp-react-native-utils": "12.0.0-alpha.4342066143",
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
  };
@@ -1106,7 +1106,11 @@ export default class VideoPlayer extends React.Component<
1106
1106
  style={getStyle(playerDimensions)}
1107
1107
  >
1108
1108
  <AudioPlayer
1109
- style={styles.playerSize}
1109
+ style={
1110
+ isTV()
1111
+ ? getStyle(playerDimensions)
1112
+ : styles.playerSize
1113
+ }
1110
1114
  audio_item={entry}
1111
1115
  plugin_configuration={this.getPluginConfiguration()}
1112
1116
  />
@@ -1133,7 +1137,11 @@ export default class VideoPlayer extends React.Component<
1133
1137
  {...nativeEvents}
1134
1138
  {...nativeProps}
1135
1139
  listener={this.props.listener}
1136
- style={styles.playerSize}
1140
+ style={
1141
+ isTV()
1142
+ ? getStyle(playerDimensions)
1143
+ : styles.playerSize
1144
+ }
1137
1145
  pluginConfiguration={this.getPluginConfiguration()}
1138
1146
  controller={this.props.controller}
1139
1147
  >