@applicaster/quick-brick-player 13.0.0-alpha.1692038547 → 13.0.0-alpha.1697545405

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": "13.0.0-alpha.1692038547",
3
+ "version": "13.0.0-alpha.1697545405",
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": "13.0.0-rc.28",
40
- "@applicaster/quick-brick-tv-transport-controls": "13.0.0-rc.31",
41
- "@applicaster/zapp-react-native-tvos-app": "13.0.0-alpha.1692038547",
42
- "@applicaster/zapp-react-native-ui-components": "13.0.0-alpha.1692038547",
43
- "@applicaster/zapp-react-native-utils": "13.0.0-alpha.1692038547",
39
+ "@applicaster/quick-brick-mobile-transport-controls": "13.0.0-rc.46",
40
+ "@applicaster/quick-brick-tv-transport-controls": "13.0.0-rc.46",
41
+ "@applicaster/zapp-react-native-tvos-app": "13.0.0-alpha.1697545405",
42
+ "@applicaster/zapp-react-native-ui-components": "13.0.0-alpha.1697545405",
43
+ "@applicaster/zapp-react-native-utils": "13.0.0-alpha.1697545405",
44
44
  "keymirror": "^0.1.1",
45
45
  "query-string": "7.1.3",
46
46
  "react-native-web-linear-gradient": "1.1.2",
@@ -64,9 +64,9 @@
64
64
  "@types/node": "*",
65
65
  "@types/react-native": "0.69.6",
66
66
  "immer": "*",
67
- "react": "17.0.2",
67
+ "react": "*",
68
68
  "react-hot-loader": "*",
69
- "react-native": "0.68.6",
69
+ "react-native": "*",
70
70
  "react-native-fs": "*",
71
71
  "react-native-gesture-handler": "*",
72
72
  "react-native-linear-gradient": "*",
@@ -55,6 +55,11 @@ const useMuteUnmuteListeners = (playerId, player, asset, setImageUri) =>
55
55
  return;
56
56
  }
57
57
 
58
+ // initial state setup - show correct mute/unmute icon based on current state
59
+ if (player?.playerState?.isReadyToPlay) {
60
+ setImageUri(player.getIsMuted() ? asset.active : asset.inactive);
61
+ }
62
+
58
63
  // active action = muted, inactive = unmuted
59
64
  return player.addListener({
60
65
  id: liveImageButtonsListenerKey,
@@ -73,10 +78,17 @@ const useMuteUnmuteListeners = (playerId, player, asset, setImageUri) =>
73
78
  setImageUri(player?.getIsMuted() ? asset.active : asset.inactive);
74
79
  },
75
80
  onPlayerClose: () => {
76
- setImageUri(null);
81
+ if (isCurrentPlayer(playerId)) {
82
+ setImageUri(null);
83
+ }
77
84
  },
78
85
  onVideoEnd: () => {
79
- setImageUri(null);
86
+ if (isCurrentPlayer(playerId)) {
87
+ setImageUri(null);
88
+ }
89
+ },
90
+ onPlayerResume: () => {
91
+ setImageUri(player?.getIsMuted() ? asset.active : asset.inactive);
80
92
  },
81
93
  },
82
94
  });
@@ -93,7 +105,7 @@ const styles = StyleSheet.create({
93
105
  },
94
106
  });
95
107
 
96
- export function AssetComponent(props: CellActionAssetComponentProps) {
108
+ function AssetImage(props: CellActionAssetComponentProps) {
97
109
  const { cellUUID: playerId, asset } = props;
98
110
  const [imageUri, setImageUri] = useState<Asset>(null);
99
111
 
@@ -108,3 +120,5 @@ export function AssetComponent(props: CellActionAssetComponentProps) {
108
120
 
109
121
  return <View />;
110
122
  }
123
+
124
+ export const AssetComponent = React.memo(AssetImage);
@@ -1,13 +1,14 @@
1
1
  import * as React from "react";
2
+ import { useEffect, useMemo, useState } from "react";
2
3
  import * as R from "ramda";
3
4
  import { View } from "react-native";
4
5
  import { dayjs } from "@applicaster/zapp-react-native-utils/dateUtils";
5
6
 
6
7
  import {
7
- ProgressBar,
8
8
  Controls,
9
- TransportInfo,
10
9
  CountDown,
10
+ ProgressBar,
11
+ TransportInfo,
11
12
  } from "@applicaster/quick-brick-mobile-transport-controls";
12
13
 
13
14
  import { playerManager } from "@applicaster/zapp-react-native-utils/appUtils";
@@ -15,23 +16,22 @@ import { playerManager } from "@applicaster/zapp-react-native-utils/appUtils";
15
16
  import { useIsTablet } from "@applicaster/zapp-react-native-utils/reactHooks";
16
17
  import {
17
18
  forwardButton,
19
+ PADDING_HORIZONTAL,
18
20
  playbackButton,
19
21
  rewindButton,
20
- skipToStartButton,
21
22
  skipToLiveButton,
22
- PADDING_HORIZONTAL,
23
- speedButton,
23
+ skipToStartButton,
24
24
  sleepButton,
25
+ speedButton,
25
26
  } from "./defaultLayoutsConts";
26
27
  import { AudioDescription } from "../AudioDescription";
27
28
  import { PlayerImageBackground } from "@applicaster/zapp-react-native-ui-components/Components/PlayerImageBackground";
28
29
  import { useLanguageData } from "@applicaster/zapp-react-native-utils/reactHooks/player";
29
30
  import { PlayNextData } from "@applicaster/zapp-react-native-ui-components/Components/PlayerContainer/PlayerContainer";
30
- import { useEffect, useMemo, useState } from "react";
31
31
  import {
32
- useModalAnimationContext,
33
32
  AnimationComponent,
34
33
  ComponentAnimationType,
34
+ useModalAnimationContext,
35
35
  } from "@applicaster/zapp-react-native-ui-components/Components/VideoModal/ModalAnimation";
36
36
  import DockedLayout from "./DockedLayout";
37
37
  import { isValidDate } from "../../Utils";
@@ -405,7 +405,7 @@ export default function DefaultLayout(props: LayoutProps) {
405
405
  layoutState={layoutState}
406
406
  />
407
407
  <Separator />
408
- {needsToShowProgressBar && (
408
+ {needsToShowProgressBar ? (
409
409
  <View>
410
410
  <ProgressBar
411
411
  content={entry}
@@ -422,17 +422,17 @@ export default function DefaultLayout(props: LayoutProps) {
422
422
  onSkipLive={onSkipLive}
423
423
  />
424
424
 
425
- {showCounter && timeLeft >= 0 && (
425
+ {showCounter && timeLeft >= 0 ? (
426
426
  <CountDown
427
427
  timeLeft={timeLeft}
428
428
  value={value}
429
429
  title={sleepTitle}
430
430
  />
431
- )}
431
+ ) : null}
432
432
 
433
433
  <Separator />
434
434
  </View>
435
- )}
435
+ ) : null}
436
436
  <Controls
437
437
  value={value}
438
438
  visible={true}
@@ -9,18 +9,18 @@ import * as R from "ramda";
9
9
  import { useIsTablet } from "@applicaster/zapp-react-native-utils/reactHooks";
10
10
 
11
11
  import {
12
+ Button,
12
13
  ContentInfo,
13
- ProgressBar,
14
14
  Controls,
15
- Button,
15
+ ProgressBar,
16
16
  } from "@applicaster/quick-brick-mobile-transport-controls";
17
17
 
18
18
  import { PlayNextData } from "@applicaster/zapp-react-native-ui-components/Components/PlayerContainer/PlayerContainer";
19
19
  import {
20
- useModalAnimationContext,
21
20
  AnimationComponent,
22
21
  ComponentAnimationType,
23
22
  PlayerAnimationStateEnum,
23
+ useModalAnimationContext,
24
24
  } from "@applicaster/zapp-react-native-ui-components/Components/VideoModal/ModalAnimation";
25
25
 
26
26
  type Dimensions = {
@@ -245,18 +245,18 @@ export default function DockedLayout(props: LayoutProps) {
245
245
  ]}
246
246
  >
247
247
  {!playerState.isLive &&
248
- (layoutState.docked || startComponentsAnimation) && (
249
- <ProgressBar
250
- content={entry}
251
- value={value}
252
- visible={visible}
253
- layoutState={layoutState}
254
- onPlayerSeek={onPlayerSeek}
255
- playerState={playerState}
256
- startComponentsAnimation={startComponentsAnimation}
257
- docked
258
- />
259
- )}
248
+ (layoutState.docked || startComponentsAnimation) ? (
249
+ <ProgressBar
250
+ content={entry}
251
+ value={value}
252
+ visible={visible}
253
+ layoutState={layoutState}
254
+ onPlayerSeek={onPlayerSeek}
255
+ playerState={playerState}
256
+ startComponentsAnimation={startComponentsAnimation}
257
+ docked
258
+ />
259
+ ) : null}
260
260
 
261
261
  <View style={styles.content}>
262
262
  <View
@@ -806,7 +806,6 @@ export default class VideoPlayer extends React.Component<
806
806
  nowPlayingEnabled,
807
807
  paused,
808
808
  seek,
809
- rate,
810
809
  textTrackId,
811
810
  liveSeekingEnabled,
812
811
  liveCatchUpEnabled,
@@ -817,7 +816,14 @@ export default class VideoPlayer extends React.Component<
817
816
  accessibilityProps: getAllAccessibilityProps(
818
817
  this.getPluginConfiguration()
819
818
  ),
820
- }; // rate temporary removed, because of bug with subtitles
819
+ };
820
+
821
+ if (!isAppleTV()) {
822
+ // TODO: Move to RN method and remove from props.
823
+ // Causes tvOS bug: native player passes rate on fast seek,
824
+ // RN returns it and it breaks playback.
825
+ nativeProps.rate = rate;
826
+ }
821
827
 
822
828
  if (
823
829
  this.isReactNativeMethodsSupported() &&
@@ -990,14 +996,14 @@ export default class VideoPlayer extends React.Component<
990
996
  const renderMobilePlayer = () => {
991
997
  return isFullScreenAudioPlayer && isAudioItem ? (
992
998
  <View style={containerStyle}>
993
- {(!castAction?.state?.connected || supportNativeCast) && (
999
+ {!castAction?.state?.connected || supportNativeCast ? (
994
1000
  <this.props.PlayerComponent
995
1001
  ref={this._assignRoot}
996
1002
  {...nativeEvents}
997
1003
  {...nativeProps}
998
1004
  listener={this.props.listener}
999
1005
  />
1000
- )}
1006
+ ) : null}
1001
1007
  <AudioPlayerWrapper {...sharedWrapperViewProps} />
1002
1008
  </View>
1003
1009
  ) : (
@@ -1012,7 +1018,7 @@ export default class VideoPlayer extends React.Component<
1012
1018
  return (
1013
1019
  <View style={styles.container}>
1014
1020
  <View style={[playerContainerStyles, playerDimensions]}>
1015
- {isAudioItem && (
1021
+ {isAudioItem ? (
1016
1022
  <AnimationComponent
1017
1023
  animationType={ComponentAnimationType.player}
1018
1024
  additionalData={{
@@ -1031,18 +1037,18 @@ export default class VideoPlayer extends React.Component<
1031
1037
  plugin_configuration={this.getPluginConfiguration()}
1032
1038
  />
1033
1039
  </AnimationComponent>
1034
- )}
1040
+ ) : null}
1035
1041
 
1036
- {shouldRenderBackground && (
1042
+ {shouldRenderBackground ? (
1037
1043
  <PlayerImageBackground
1038
1044
  imageKey={backgroundImageKey}
1039
1045
  configuration={this.getPluginConfiguration()}
1040
1046
  entry={entry}
1041
1047
  style={getBackgroundImageStyle(playerDimensions)}
1042
1048
  />
1043
- )}
1049
+ ) : null}
1044
1050
 
1045
- {(!castAction?.state?.connected || supportNativeCast) && (
1051
+ {!castAction?.state?.connected || supportNativeCast ? (
1046
1052
  <AnimationComponent
1047
1053
  animationType={ComponentAnimationType.player}
1048
1054
  additionalData={playerDimensions}
@@ -1064,7 +1070,7 @@ export default class VideoPlayer extends React.Component<
1064
1070
  {this.childrenWithPlayNext()}
1065
1071
  </this.props.PlayerComponent>
1066
1072
  </AnimationComponent>
1067
- )}
1073
+ ) : null}
1068
1074
  </View>
1069
1075
 
1070
1076
  {renderTransportControls(playerDimensions)}