agora-appbuilder-core 4.0.26-beta-2 → 4.0.26-beta-3

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": "agora-appbuilder-core",
3
- "version": "4.0.26-beta-2",
3
+ "version": "4.0.26-beta-3",
4
4
  "description": "React Native template for RTE app builder",
5
5
  "main": "index.js",
6
6
  "files": [
@@ -9,7 +9,7 @@
9
9
  ],
10
10
  "scripts": {
11
11
  "vercel-build": "npm run dev-setup && cd template && npm run web:build && cd .. && npm run copy-vercel",
12
- "uikit": "rm -rf template/agora-rn-uikit && git clone https://github.com/AgoraIO-Community/ReactNative-UIKit.git template/agora-rn-uikit && cd template/agora-rn-uikit && git checkout uikit-sdk-update-with-api-changes-profiles",
12
+ "uikit": "rm -rf template/agora-rn-uikit && git clone https://github.com/AgoraIO-Community/ReactNative-UIKit.git template/agora-rn-uikit && cd template/agora-rn-uikit && git checkout appbuilder-uikit-3.0.26",
13
13
  "deps": "cd template && npm i --force",
14
14
  "dev-setup": "npm run uikit && npm run deps && node devSetup.js",
15
15
  "web-build": "cd template && npm run web:build && cd .. && npm run copy-vercel",
@@ -69,7 +69,7 @@ export interface DefaultContentInterface {
69
69
  audio: ToggleState;
70
70
  video: ToggleState;
71
71
  streamType: 'high' | 'low';
72
- type: 'rtc';
72
+ type: 'rtc' | 'screenshare';
73
73
  permissionStatus?: PermissionState;
74
74
  audioForceDisabled?: boolean;
75
75
  videoForceDisabled?: boolean;
@@ -15,7 +15,7 @@ export default function UserJoined(
15
15
  let stateUpdate = {};
16
16
  //default type will be rtc
17
17
  let typeData = {
18
- type: 'rtc',
18
+ type: '',
19
19
  };
20
20
  if (
21
21
  state.defaultContent[newUid as unknown as number] &&
@@ -65,11 +65,17 @@ export {default as ToolbarMenu} from '../src/atoms/ToolbarMenu';
65
65
  export type {
66
66
  ToolbarPresetAlign,
67
67
  ToolbarDefaultItem,
68
- ToolbarDefaultItemConfig,
68
+ ToolbarDefaultItemsConfig,
69
+ ToolbarHideCallback,
70
+ ToolbarMoreButtonFields,
71
+ ToolbarMoreDefaultItem,
72
+ ToolbarItemsConfig,
73
+ TopToolbarItemsConfig,
74
+ BottomToolbarItemsConfig,
75
+ TopToolbarDefaultKeys,
76
+ BottomToolbarDefaultKeys,
69
77
  ToolbarItemAlign,
70
78
  ToolbarItemHide,
71
- ToolbarDefaultItemName,
72
- ToolbarCustomItem,
73
79
  ToolbarPresetProps,
74
80
  } from '../src/atoms/ToolbarPreset';
75
81
  export {default as TranscriptPanel} from '../src/subComponents/caption/Transcript';
@@ -1,64 +1,64 @@
1
1
  const DefaultConfig = {
2
- PROJECT_ID: "",
3
- APP_ID: "",
4
- PRODUCT_ID: "helloworld",
5
- APP_NAME: "HelloWorld",
6
- LOGO: "data:image/png;base64,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",
7
- ICON: "logoSquare.png",
8
- FRONTEND_ENDPOINT: "",
9
- BACKEND_ENDPOINT: "https://managedservices-preprod.rteappbuilder.com",
2
+ PROJECT_ID: '',
3
+ APP_ID: '',
4
+ PRODUCT_ID: 'helloworld',
5
+ APP_NAME: 'HelloWorld',
6
+ LOGO: 'data:image/png;base64,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',
7
+ ICON: 'logoSquare.png',
8
+ FRONTEND_ENDPOINT: '',
9
+ BACKEND_ENDPOINT: 'https://managedservices-preprod.rteappbuilder.com',
10
10
  PSTN: false,
11
11
  PRECALL: true,
12
12
  CHAT: true,
13
13
  CLOUD_RECORDING: false,
14
- RECORDING_MODE: "WEB",
14
+ RECORDING_MODE: 'WEB',
15
15
  SCREEN_SHARING: true,
16
- LANDING_SUB_HEADING: "The Real-Time Engagement Platform",
16
+ LANDING_SUB_HEADING: 'The Real-Time Engagement Platform',
17
17
  ENCRYPTION_ENABLED: false,
18
18
  ENABLE_GOOGLE_OAUTH: false,
19
19
  ENABLE_APPLE_OAUTH: false,
20
20
  ENABLE_SLACK_OAUTH: false,
21
21
  ENABLE_MICROSOFT_OAUTH: false,
22
- GOOGLE_CLIENT_ID: "",
23
- MICROSOFT_CLIENT_ID: "",
24
- SLACK_CLIENT_ID: "",
25
- APPLE_CLIENT_ID: "",
22
+ GOOGLE_CLIENT_ID: '',
23
+ MICROSOFT_CLIENT_ID: '',
24
+ SLACK_CLIENT_ID: '',
25
+ APPLE_CLIENT_ID: '',
26
26
  GEO_FENCING: true,
27
- GEO_FENCING_INCLUDE_AREA: "GLOBAL",
28
- GEO_FENCING_EXCLUDE_AREA: "",
27
+ GEO_FENCING_INCLUDE_AREA: 'GLOBAL',
28
+ GEO_FENCING_EXCLUDE_AREA: '',
29
29
  LOG_ENABLED: true,
30
30
  EVENT_MODE: false,
31
31
  RAISE_HAND: false,
32
32
  AUDIO_ROOM: false,
33
- BG: "",
34
- PRIMARY_FONT_COLOR: "#363636",
35
- SECONDARY_FONT_COLOR: "#FFFFFF",
36
- PROFILE: "720p_3",
37
- SCREEN_SHARE_PROFILE: "1080p_2",
33
+ BG: '',
34
+ PRIMARY_FONT_COLOR: '#363636',
35
+ SECONDARY_FONT_COLOR: '#FFFFFF',
36
+ PROFILE: '720p_3',
37
+ SCREEN_SHARE_PROFILE: '1080p_2',
38
38
  ICON_TEXT: true,
39
- PRIMARY_ACTION_BRAND_COLOR: "#099DFD",
40
- PRIMARY_ACTION_TEXT_COLOR: "#FFFFFF",
41
- SECONDARY_ACTION_COLOR: "#FFFFFF",
42
- FONT_COLOR: "#FFFFFF",
43
- BACKGROUND_COLOR: "#111111",
44
- VIDEO_AUDIO_TILE_COLOR: "#222222",
45
- VIDEO_AUDIO_TILE_OVERLAY_COLOR: "#000004",
46
- VIDEO_AUDIO_TILE_TEXT_COLOR: "#FFFFFF",
47
- VIDEO_AUDIO_TILE_AVATAR_COLOR: "#BDD0DB",
48
- SEMANTIC_ERROR: "#FF414D",
49
- SEMANTIC_SUCCESS: "#36B37E",
50
- SEMANTIC_WARNING: "#FFAB00",
51
- SEMANTIC_NEUTRAL: "#808080",
52
- INPUT_FIELD_BACKGROUND_COLOR: "#181818",
53
- INPUT_FIELD_BORDER_COLOR: "#262626",
54
- CARD_LAYER_1_COLOR: "#1D1D1D",
55
- CARD_LAYER_2_COLOR: "#262626",
56
- CARD_LAYER_3_COLOR: "#2D2D2D",
57
- CARD_LAYER_4_COLOR: "#333333",
58
- CARD_LAYER_5_COLOR: "#808080",
59
- HARD_CODED_BLACK_COLOR: "#000000",
60
- ICON_BG_COLOR: "#242529",
61
- TOOLBAR_COLOR: "#111111",
39
+ PRIMARY_ACTION_BRAND_COLOR: '#099DFD',
40
+ PRIMARY_ACTION_TEXT_COLOR: '#FFFFFF',
41
+ SECONDARY_ACTION_COLOR: '#FFFFFF',
42
+ FONT_COLOR: '#FFFFFF',
43
+ BACKGROUND_COLOR: '#111111',
44
+ VIDEO_AUDIO_TILE_COLOR: '#222222',
45
+ VIDEO_AUDIO_TILE_OVERLAY_COLOR: '#000004',
46
+ VIDEO_AUDIO_TILE_TEXT_COLOR: '#FFFFFF',
47
+ VIDEO_AUDIO_TILE_AVATAR_COLOR: '#BDD0DB',
48
+ SEMANTIC_ERROR: '#FF414D',
49
+ SEMANTIC_SUCCESS: '#36B37E',
50
+ SEMANTIC_WARNING: '#FFAB00',
51
+ SEMANTIC_NEUTRAL: '#808080',
52
+ INPUT_FIELD_BACKGROUND_COLOR: '#181818',
53
+ INPUT_FIELD_BORDER_COLOR: '#262626',
54
+ CARD_LAYER_1_COLOR: '#1D1D1D',
55
+ CARD_LAYER_2_COLOR: '#262626',
56
+ CARD_LAYER_3_COLOR: '#2D2D2D',
57
+ CARD_LAYER_4_COLOR: '#333333',
58
+ CARD_LAYER_5_COLOR: '#808080',
59
+ HARD_CODED_BLACK_COLOR: '#000000',
60
+ ICON_BG_COLOR: '#242529',
61
+ TOOLBAR_COLOR: '#111111',
62
62
  ACTIVE_SPEAKER: true,
63
63
  ENABLE_IDP_AUTH: false,
64
64
  ENABLE_TOKEN_AUTH: false,
@@ -70,14 +70,15 @@ const DefaultConfig = {
70
70
  ENABLE_WHITEBOARD: false,
71
71
  ENABLE_WHITEBOARD_FILE_UPLOAD: false,
72
72
  ENABLE_WAITING_ROOM: false,
73
- WHITEBOARD_APPIDENTIFIER: "",
74
- WHITEBOARD_REGION: "",
73
+ WHITEBOARD_APPIDENTIFIER: '',
74
+ WHITEBOARD_REGION: '',
75
75
  ENABLE_NOISE_CANCELLATION_BY_DEFAULT: false,
76
- CHAT_ORG_NAME: "",
77
- CHAT_APP_NAME: "",
78
- CHAT_URL: "",
79
- CLI_VERSION: "3.0.25",
80
- CORE_VERSION: "4.0.25",
76
+ CHAT_ORG_NAME: '',
77
+ CHAT_APP_NAME: '',
78
+ CHAT_URL: '',
79
+ CLI_VERSION: '3.0.26-beta-3',
80
+ CORE_VERSION: '4.0.26-beta-3',
81
+ DISABLE_LANDSCAPE_MODE: false,
81
82
  };
82
83
 
83
84
  module.exports = DefaultConfig;
@@ -165,6 +165,7 @@ interface ConfigInterface {
165
165
  ENABLE_NOISE_CANCELLATION_BY_DEFAULT: boolean;
166
166
  CLI_VERSION: string;
167
167
  CORE_VERSION: string;
168
+ DISABLE_LANDSCAPE_MODE: boolean;
168
169
  }
169
170
  declare var $config: ConfigInterface;
170
171
  declare module 'customization' {
@@ -86,7 +86,7 @@ const AppWrapper = (props: AppWrapperProps) => {
86
86
  // @ts-ignore textAlign not supported by TS definitions but is applied to web regardless
87
87
  style={[{flex: 1}, Platform.select({web: {textAlign: 'left'}})]}>
88
88
  <StatusBar hidden={true} />
89
- {/* <BlockUI /> */}
89
+ {$config.DISABLE_LANDSCAPE_MODE && <BlockUI />}
90
90
  <StorageProvider>
91
91
  <LanguageProvider>
92
92
  <GraphQLProvider>
@@ -23,6 +23,7 @@ export interface AppBuilderSdkApiInterface {
23
23
  userName?: string,
24
24
  preference?: {
25
25
  disableShareTile: boolean;
26
+ disableVideoProcessors: boolean;
26
27
  },
27
28
  ) => Promise<meetingData>;
28
29
  joinPrecall: (
@@ -31,6 +32,7 @@ export interface AppBuilderSdkApiInterface {
31
32
  skipPrecall?: boolean,
32
33
  preference?: {
33
34
  disableShareTile: boolean;
35
+ disableVideoProcessors: boolean;
34
36
  },
35
37
  ) => Promise<
36
38
  [
@@ -1,38 +1,30 @@
1
1
  import {type BeautyEffects} from 'customization-api';
2
- import {useBeautyEffect} from '../components/beauty-effect/useBeautyEffects';
3
- import {isWeb} from '../utils/common';
2
+ import {
3
+ useBeautyEffect,
4
+ type BeautyProcessorType,
5
+ } from '../components/beauty-effect/useBeautyEffects';
4
6
 
5
7
  export interface BeautyEffectInterface {
6
- isBeautyEffectsON: boolean;
7
- beautyEffects: BeautyEffects;
8
8
  applyBeautyEffect: (config: BeautyEffects) => void;
9
9
  removeBeautyEffect: () => void;
10
+ beautyProcessor: BeautyProcessorType;
10
11
  }
11
12
 
12
13
  export const useBeautyEffects: () => BeautyEffectInterface = () => {
13
- const {
14
- rednessLevel,
15
- lighteningContrastLevel,
16
- lighteningLevel,
17
- smoothnessLevel,
18
- sharpnessLevel,
19
- applyBeautyEffect,
20
- removeBeautyEffect,
21
- beautyEffectsOn,
22
- } = useBeautyEffect();
14
+ const {applyBeautyEffect, removeBeautyEffect, beautyProcessor} =
15
+ useBeautyEffect();
23
16
 
24
- const beautyEffects = {
25
- lighteningContrastLevel,
26
- lighteningLevel,
27
- smoothnessLevel,
28
- sharpnessLevel,
29
- rednessLevel,
30
- };
17
+ // const beautyEffects = {
18
+ // lighteningContrastLevel,
19
+ // lighteningLevel,
20
+ // smoothnessLevel,
21
+ // sharpnessLevel,
22
+ // rednessLevel,
23
+ // };
31
24
 
32
25
  return {
33
- isBeautyEffectsON: beautyEffectsOn,
34
- beautyEffects,
35
26
  applyBeautyEffect,
36
27
  removeBeautyEffect,
28
+ beautyProcessor,
37
29
  };
38
30
  };
@@ -7,6 +7,7 @@ import {
7
7
  Option,
8
8
  useVB,
9
9
  type VBMode,
10
+ type VBProcessorType,
10
11
  } from '../../src/components/virtual-background/useVB';
11
12
 
12
13
  import {useSidePanel} from '../utils/useSidePanel';
@@ -27,6 +28,7 @@ export interface virtualBackgroundInterface {
27
28
  isVirtualBackgroundPanelOpen: boolean;
28
29
  hideVirtualBackgroundPanel: () => void;
29
30
  showVirtualBackgroundPanel: () => void;
31
+ virtualBackgroundProcessor: VBProcessorType;
30
32
  }
31
33
 
32
34
  export const useVirtualBackground: () => virtualBackgroundInterface = () => {
@@ -42,6 +44,7 @@ export const useVirtualBackground: () => virtualBackgroundInterface = () => {
42
44
  setIsVBActive,
43
45
  applyVirtualBackgroundToMainView,
44
46
  applyVirtualBackgroundToPreviewView,
47
+ vbProcessor,
45
48
  } = useVB();
46
49
 
47
50
  const {setSidePanel} = useSidePanel();
@@ -144,5 +147,6 @@ export const useVirtualBackground: () => virtualBackgroundInterface = () => {
144
147
  isVirtualBackgroundPanelOpen: isVBActive,
145
148
  hideVirtualBackgroundPanel,
146
149
  showVirtualBackgroundPanel,
150
+ virtualBackgroundProcessor: vbProcessor,
147
151
  };
148
152
  };
@@ -68,56 +68,34 @@ export interface ToolbarMoreDefaultItem extends ToolbarDefaultItem {
68
68
 
69
69
  export type ToolbarPresetAlign = 'top' | 'bottom' | 'right' | 'left';
70
70
 
71
- export interface ToolbarMoreMenuCustomItem {
72
- componentName: string;
73
- title: string;
74
- onPress: () => void;
75
- iconBase64?: string;
76
- hide?: ToolbarItemHide;
77
- order?: number;
78
- }
79
- export interface ToolbarBottomPresetProps {
80
- align: 'bottom';
81
- items?:
82
- | {
83
- [key: string]: ToolbarDefaultItem;
84
- }
85
- | {
86
- ['more']?: ToolbarMoreDefaultItem;
87
- }
88
- | {
89
- [key in BottomToolbarDefaultKeys]?: ToolbarDefaultItem;
90
- };
91
- snapPointsMinMax?: [number, number];
92
- }
93
- export interface ToolbarTopPresetProps {
94
- align: 'top';
95
- items?:
96
- | {
97
- [key in TopToolbarDefaultKeys]?: ToolbarDefaultItem;
98
- }
99
- | {
100
- [key: string]: ToolbarDefaultItem;
101
- };
102
- }
103
- export interface ToolbarRightPresetProps {
104
- align: 'right';
105
- items?: {
106
- [key in TopToolbarDefaultKeys]?: ToolbarDefaultItem;
107
- };
108
- }
109
- export interface ToolbarLeftPresetProps {
110
- align: 'left';
111
- items?: {
112
- [key in TopToolbarDefaultKeys]?: ToolbarDefaultItem;
113
- };
114
- }
71
+ export type ToolbarDefaultItemsConfig = {
72
+ [key: string]: ToolbarDefaultItem;
73
+ };
74
+
75
+ export type TopToolbarItemsConfig =
76
+ | {
77
+ [key in TopToolbarDefaultKeys]?: ToolbarDefaultItem;
78
+ };
115
79
 
116
- export type ToolbarPresetProps =
117
- | ToolbarBottomPresetProps
118
- | ToolbarTopPresetProps
119
- | ToolbarLeftPresetProps
120
- | ToolbarRightPresetProps;
80
+ export type BottomToolbarItemsConfig =
81
+ | {
82
+ [key in BottomToolbarDefaultKeys]?: ToolbarDefaultItem;
83
+ }
84
+ | {
85
+ ['more']?: ToolbarMoreDefaultItem;
86
+ };
87
+
88
+ export type ToolbarItemsConfig =
89
+ | TopToolbarItemsConfig
90
+ | BottomToolbarItemsConfig
91
+ | ToolbarDefaultItemsConfig;
92
+
93
+ export type ToolbarPresetProps = {
94
+ align: 'top' | 'bottom' | 'left' | 'right';
95
+ items?: ToolbarItemsConfig;
96
+ //applicable only for bottom bar
97
+ snapPointsMinMax?: [number, number];
98
+ };
121
99
 
122
100
  const ToolbarPreset = (props: ToolbarPresetProps) => {
123
101
  const {align} = props;
@@ -29,6 +29,7 @@ type SdkApiContextInterface = {
29
29
  skipPrecall: boolean;
30
30
  preference: {
31
31
  disableShareTile: boolean;
32
+ disableVideoProcessors: boolean;
32
33
  };
33
34
  promise: extractPromises<_InternalSDKMethodEventsMap['join']>;
34
35
  }
@@ -3,7 +3,7 @@ import React, {useState} from 'react';
3
3
  import {useEffect, useRef} from 'react';
4
4
  import AgoraRTC, {ILocalVideoTrack} from 'agora-rtc-sdk-ng';
5
5
  import BeautyExtension from 'agora-extension-beauty-effect';
6
- import {useRtc} from 'customization-api';
6
+ import {useRoomInfo, useRtc} from 'customization-api';
7
7
  import {useVB} from '../virtual-background/useVB';
8
8
 
9
9
  export type BeautyEffects = {
@@ -14,6 +14,10 @@ export type BeautyEffects = {
14
14
  rednessLevel?: Number;
15
15
  };
16
16
 
17
+ export type BeautyProcessorType = ReturnType<
18
+ BeautyExtension['_createProcessor']
19
+ > | null;
20
+
17
21
  const extension = new BeautyExtension();
18
22
  AgoraRTC.registerExtensions([extension]);
19
23
  const beautyProcessor = extension.createProcessor();
@@ -35,6 +39,7 @@ type BeautyEffectContextValue = {
35
39
  setRednessLevel: React.Dispatch<React.SetStateAction<number>>;
36
40
  applyBeautyEffect: (config?: BeautyEffects) => void;
37
41
  removeBeautyEffect: () => void;
42
+ beautyProcessor: BeautyProcessorType;
38
43
  };
39
44
  export type LighteningContrastLevel = 0 | 1 | 2;
40
45
 
@@ -54,6 +59,7 @@ export const BeautyEffectsContext =
54
59
  setRednessLevel: () => {},
55
60
  applyBeautyEffect: () => {},
56
61
  removeBeautyEffect: () => {},
62
+ beautyProcessor: null,
57
63
  });
58
64
 
59
65
  const BeautyEffectProvider: React.FC = ({children}) => {
@@ -65,21 +71,25 @@ const BeautyEffectProvider: React.FC = ({children}) => {
65
71
  const [sharpnessLevel, setSharpnessLevel] = useState<number>(0.5);
66
72
  const [rednessLevel, setRednessLevel] = useState<number>(0.5);
67
73
 
74
+ const {roomPreference} = useRoomInfo();
75
+
68
76
  const {vbProcessor} = useVB();
69
77
 
70
78
  const {RtcEngineUnsafe} = useRtc();
71
79
  //@ts-ignore
72
80
  const localVideoTrack = RtcEngineUnsafe?.localStream?.video;
73
81
 
74
- if ($config.ENABLE_VIRTUAL_BACKGROUND) {
75
- localVideoTrack
76
- ?.pipe(beautyProcessor)
77
- .pipe(vbProcessor)
78
- .pipe(localVideoTrack?.processorDestination);
79
- } else {
80
- localVideoTrack
81
- ?.pipe(beautyProcessor)
82
- .pipe(localVideoTrack?.processorDestination);
82
+ if (!roomPreference?.disableVideoProcessors) {
83
+ if ($config.ENABLE_VIRTUAL_BACKGROUND) {
84
+ localVideoTrack
85
+ ?.pipe(beautyProcessor)
86
+ .pipe(vbProcessor)
87
+ .pipe(localVideoTrack?.processorDestination);
88
+ } else {
89
+ localVideoTrack
90
+ ?.pipe(beautyProcessor)
91
+ .pipe(localVideoTrack?.processorDestination);
92
+ }
83
93
  }
84
94
 
85
95
  useEffect(() => {
@@ -130,6 +140,7 @@ const BeautyEffectProvider: React.FC = ({children}) => {
130
140
  setRednessLevel,
131
141
  applyBeautyEffect,
132
142
  removeBeautyEffect,
143
+ beautyProcessor,
133
144
  }}>
134
145
  {children}
135
146
  </BeautyEffectsContext.Provider>
@@ -116,6 +116,7 @@ export const RoomInfoDefaultValue: RoomInfoContextInterface = {
116
116
  },
117
117
  roomPreference: {
118
118
  disableShareTile: false,
119
+ disableVideoProcessors: false,
119
120
  },
120
121
  };
121
122
 
@@ -188,6 +188,7 @@ const UserPreferenceProvider = (props: {children: React.ReactNode}) => {
188
188
  if (value?.screenShareUid) {
189
189
  updateRenderListState(value?.screenShareUid, {
190
190
  name: getScreenShareName(value?.name || userText),
191
+ type: 'screenshare',
191
192
  });
192
193
  }
193
194
  }
@@ -210,6 +211,7 @@ const UserPreferenceProvider = (props: {children: React.ReactNode}) => {
210
211
  updateRenderListState(localUid, {name: displayName || userText});
211
212
  updateRenderListState(screenShareUid, {
212
213
  name: getScreenShareName(displayName || userText),
214
+ type: 'screenshare',
213
215
  });
214
216
 
215
217
  if (hasUserJoinedRTM) {
@@ -29,6 +29,9 @@ export type Option = {
29
29
  isSelected?: boolean;
30
30
  };
31
31
 
32
+ export type VBProcessorType = ReturnType<
33
+ VirtualBackgroundExtension['_createProcessor']
34
+ > | null;
32
35
  // processors for the main view and preview view
33
36
  let mainViewProcessor: ReturnType<
34
37
  VirtualBackgroundExtension['_createProcessor']
@@ -82,9 +85,7 @@ type VBContextValue = {
82
85
  setOptions: React.Dispatch<React.SetStateAction<Option[]>>;
83
86
  applyVirtualBackgroundToMainView;
84
87
  applyVirtualBackgroundToPreviewView;
85
- vbProcessor: ReturnType<
86
- VirtualBackgroundExtension['_createProcessor']
87
- > | null;
88
+ vbProcessor: VBProcessorType;
88
89
  };
89
90
 
90
91
  export const VBContext = React.createContext<VBContextValue>({
@@ -129,10 +130,6 @@ const VBProvider: React.FC = ({children}) => {
129
130
  let processor =
130
131
  useRef<ReturnType<VirtualBackgroundExtension['_createProcessor']>>(null);
131
132
 
132
- useEffect(() => {
133
- initializeProcessors();
134
- }, []);
135
-
136
133
  //if vitrual got closed by some other settings/chat panel then update the state
137
134
  //ex: user open vitrual background using more menu and then open chat will hide the vitrual background panel
138
135
  //so we need to update the state
@@ -142,6 +139,10 @@ const VBProvider: React.FC = ({children}) => {
142
139
  }
143
140
  }, [sidePanel]);
144
141
 
142
+ React.useEffect(() => {
143
+ initializeProcessors();
144
+ }, []);
145
+
145
146
  /* VB Change modes */
146
147
  React.useEffect(() => {
147
148
  if (!isLocalVideoON) {
@@ -76,6 +76,8 @@ export enum I18nDeviceStatus {
76
76
  ON = 1,
77
77
  }
78
78
 
79
+ export const blockLandscapeModeMessageText = 'blockLandscapeModeMessageText';
80
+
79
81
  export const toolbarItemPeopleText = 'toolbarItemPeopleText';
80
82
  export const toolbarItemChatText = 'toolbarItemChatText';
81
83
  export const toolbarItemSettingText = 'toolbarItemSettingText';
@@ -529,6 +531,8 @@ export const videoRoomPeopleCountTooltipAttendeeText =
529
531
  `video${room}PeopleCountTooltipAttendeeText` as const;
530
532
 
531
533
  export interface I18nVideoCallScreenLabelsInterface {
534
+ [blockLandscapeModeMessageText]?: I18nBaseType;
535
+
532
536
  [toolbarItemPeopleText]?: I18nBaseType;
533
537
  [toolbarItemChatText]?: I18nBaseType;
534
538
  [toolbarItemSettingText]?: I18nBaseType;
@@ -840,6 +844,9 @@ export interface I18nVideoCallScreenLabelsInterface {
840
844
  }
841
845
 
842
846
  export const VideoCallScreenLabels: I18nVideoCallScreenLabelsInterface = {
847
+ [blockLandscapeModeMessageText]:
848
+ 'Please change to portrait mode to further access our application.',
849
+
843
850
  [toolbarItemPeopleText]: 'People',
844
851
  [toolbarItemChatText]: 'Chat',
845
852
  [toolbarItemSettingText]: 'Settings',
@@ -137,10 +137,6 @@ const ActionSheet = props => {
137
137
  default:
138
138
  }
139
139
  };
140
- // const orientation = useOrientation();
141
- // if (orientation === 'LANDSCAPE') {
142
- // return <></>;
143
- // }
144
140
  return (
145
141
  <>
146
142
  {showOverlay && (
@@ -26,12 +26,7 @@ import {videoView} from '../../../theme.json';
26
26
  import {ToolbarProvider, ToolbarPosition} from '../../utils/useToolbar';
27
27
  import SDKEvents from '../../utils/SdkEvents';
28
28
  import {useRoomInfo} from '../../components/room-info/useRoomInfo';
29
- import {
30
- ToolbarCustomItem,
31
- controlMessageEnum,
32
- useCaption,
33
- useUserName,
34
- } from 'customization-api';
29
+ import {controlMessageEnum, useCaption, useUserName} from 'customization-api';
35
30
  import events, {PersistanceLevel} from '../../rtm-events-api';
36
31
  import VideoCallMobileView from './VideoCallMobileView';
37
32
  import CaptionContainer from '../../subComponents/caption/CaptionContainer';
@@ -4,9 +4,16 @@ import {useOrientation} from '../utils/useOrientation';
4
4
  import ThemeConfig from '../theme';
5
5
  import {isMobileUA} from '../utils/common';
6
6
  import Popup from './../atoms/Popup';
7
+ import {useString} from '../utils/useString';
8
+ import {blockLandscapeModeMessageText} from '../language/default-labels/videoCallScreenLabels';
7
9
 
8
10
  export default function BlockUI() {
11
+ const blockLandscapeModeMessageTextLabel = useString(
12
+ blockLandscapeModeMessageText,
13
+ )();
14
+
9
15
  const [isBlockModalVisible, setBlockModalVisible] = useState(true);
16
+
10
17
  const orientation = useOrientation();
11
18
  if (!isMobileUA()) {
12
19
  return <></>;
@@ -25,7 +32,7 @@ export default function BlockUI() {
25
32
  <View style={styles.blockui__wrapper}>
26
33
  <View style={styles.blockui__body}>
27
34
  <Text style={styles.blockui__content}>
28
- Please change to portrait mode to further access our application.
35
+ {blockLandscapeModeMessageTextLabel}
29
36
  </Text>
30
37
  </View>
31
38
  </View>
@@ -763,7 +763,29 @@ const RecordingProvider = (props: RecordingProviderProps) => {
763
763
  if (!hasUserJoinedRTM) {
764
764
  return;
765
765
  }
766
- const areUsersInChannel = hostUids?.length > 0 || audienceUids?.length > 0;
766
+
767
+ const areUsersInChannel = hostUids.length > 0 || audienceUids.length > 0;
768
+ logger.debug(
769
+ LogSource.Internals,
770
+ 'RECORDING',
771
+ 'Recording-bot: areUsersInChannel',
772
+ areUsersInChannel,
773
+ );
774
+
775
+ // console.log('bot hostUids', hostUids);
776
+ // console.log('bot audienceUids', audienceUids);
777
+ // old code
778
+ // /**
779
+ // * The below check makes sure we are only looking at hostuids
780
+ // * It fixes the below issue
781
+ // * In case of screenshare it so happens sometimes that in
782
+ // * initial render for the bot - the hostuid contains the uid which is
783
+ // * actually a screenshare uid. The data is yet not populated whether
784
+ // * its pure host or screenshare uid
785
+ // * To only consider uids which are purely host we filter the uids as below
786
+ // */
787
+ // const areUsersInChannel =
788
+ // areHostsInChannel.length > 0 || audienceUids?.length > 0;
767
789
 
768
790
  if (areUsersInChannel) {
769
791
  /**
@@ -13,6 +13,7 @@ export interface SdkMethodEvents {
13
13
  username?: string,
14
14
  preference?: {
15
15
  disableShareTile: boolean;
16
+ disableVideoProcessors: boolean;
16
17
  },
17
18
  ): RoomInfoContextInterface['data'];
18
19
  microphoneDevice: (deviceId: deviceId) => void;
@@ -81,6 +81,7 @@ const JOIN_CHANNEL_PHRASE = gql`
81
81
 
82
82
  export interface joinRoomPreference {
83
83
  disableShareTile: boolean;
84
+ disableVideoProcessors: boolean;
84
85
  }
85
86
 
86
87
  export default function useJoinRoom() {
@@ -1,28 +1,59 @@
1
- import {useState, useLayoutEffect} from 'react';
2
- import {Dimensions} from 'react-native';
1
+ import {useState, useEffect} from 'react';
3
2
 
4
3
  const isPortrait = () => {
5
- const dim = Dimensions.get('window');
6
- // This 20 is added to adjust for keyboard autocomplete suggestion area height
7
- return dim.height + 20 >= dim.width;
4
+ try {
5
+ if (
6
+ window?.screen?.orientation?.type === 'portrait-primary' ||
7
+ window?.screen?.orientation?.type === 'portrait-secondary'
8
+ ) {
9
+ return true;
10
+ }
11
+ return false;
12
+ } catch (error) {
13
+ console.log('screen orientation window api not supported error: ', error);
14
+ return true;
15
+ }
8
16
  };
9
17
 
10
18
  /**
11
19
  * A React Hook which updates when the orientation changes
12
20
  * @returns whether the user is in 'PORTRAIT' or 'LANDSCAPE'
13
21
  */
22
+
14
23
  export function useOrientation(): 'PORTRAIT' | 'LANDSCAPE' {
15
- // State to hold the connection status
16
24
  const [orientation, setOrientation] = useState<'PORTRAIT' | 'LANDSCAPE'>(
17
25
  isPortrait() ? 'PORTRAIT' : 'LANDSCAPE',
18
26
  );
19
27
 
20
- useLayoutEffect(() => {
21
- const subscription = Dimensions.addEventListener('change', () => {
22
- setOrientation(isPortrait() ? 'PORTRAIT' : 'LANDSCAPE');
23
- });
28
+ const onOrientationChange = (event: any) => {
29
+ try {
30
+ console.log('screen orientation changed to -> ', event?.target?.type);
31
+ if (
32
+ event?.target?.type === 'portrait-primary' ||
33
+ event?.target?.type === 'portrait-secondary'
34
+ ) {
35
+ setOrientation('PORTRAIT');
36
+ } else {
37
+ setOrientation('LANDSCAPE');
38
+ }
39
+ } catch (error) {
40
+ console.log('screen orientation window api not supported error: ', error);
41
+ setOrientation('PORTRAIT');
42
+ }
43
+ };
24
44
 
25
- return () => subscription?.remove();
45
+ useEffect(() => {
46
+ window?.screen?.orientation?.addEventListener(
47
+ 'change',
48
+ onOrientationChange,
49
+ );
50
+ return () => {
51
+ window?.screen.orientation?.removeEventListener(
52
+ 'change',
53
+ onOrientationChange,
54
+ );
55
+ };
26
56
  }, []);
57
+
27
58
  return orientation;
28
59
  }