agora-appbuilder-core 4.0.26-beta-2 → 4.0.26-beta-4
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 +2 -2
- package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +1 -1
- package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +1 -1
- package/template/customization-api/sub-components.ts +9 -3
- package/template/defaultConfig.js +52 -51
- package/template/global.d.ts +1 -0
- package/template/src/AppWrapper.tsx +1 -1
- package/template/src/SDKAppWrapper.tsx +2 -0
- package/template/src/app-state/useBeautyEffects.ts +15 -23
- package/template/src/app-state/useVirtualBackground.ts +4 -0
- package/template/src/atoms/ToolbarPreset.tsx +27 -49
- package/template/src/components/SdkApiContext.tsx +1 -0
- package/template/src/components/beauty-effect/useBeautyEffects.tsx +21 -10
- package/template/src/components/room-info/useRoomInfo.tsx +1 -0
- package/template/src/components/useUserPreference.tsx +2 -0
- package/template/src/components/virtual-background/useVB.tsx +8 -7
- package/template/src/language/default-labels/videoCallScreenLabels.ts +7 -0
- package/template/src/pages/video-call/ActionSheet.tsx +0 -4
- package/template/src/pages/video-call/VideoCallScreen.tsx +1 -6
- package/template/src/subComponents/BlockUI.tsx +8 -1
- package/template/src/subComponents/recording/useRecording.tsx +23 -1
- package/template/src/utils/SdkMethodEvents.ts +1 -0
- package/template/src/utils/useJoinRoom.ts +1 -0
- package/template/src/utils/useOrientation.tsx +42 -11
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agora-appbuilder-core",
|
|
3
|
-
"version": "4.0.26-beta-
|
|
3
|
+
"version": "4.0.26-beta-4",
|
|
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-
|
|
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;
|
|
@@ -65,11 +65,17 @@ export {default as ToolbarMenu} from '../src/atoms/ToolbarMenu';
|
|
|
65
65
|
export type {
|
|
66
66
|
ToolbarPresetAlign,
|
|
67
67
|
ToolbarDefaultItem,
|
|
68
|
-
|
|
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:
|
|
5
|
-
APP_NAME:
|
|
6
|
-
LOGO:
|
|
7
|
-
ICON:
|
|
8
|
-
FRONTEND_ENDPOINT:
|
|
9
|
-
BACKEND_ENDPOINT:
|
|
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:
|
|
14
|
+
RECORDING_MODE: 'WEB',
|
|
15
15
|
SCREEN_SHARING: true,
|
|
16
|
-
LANDING_SUB_HEADING:
|
|
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:
|
|
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:
|
|
35
|
-
SECONDARY_FONT_COLOR:
|
|
36
|
-
PROFILE:
|
|
37
|
-
SCREEN_SHARE_PROFILE:
|
|
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:
|
|
40
|
-
PRIMARY_ACTION_TEXT_COLOR:
|
|
41
|
-
SECONDARY_ACTION_COLOR:
|
|
42
|
-
FONT_COLOR:
|
|
43
|
-
BACKGROUND_COLOR:
|
|
44
|
-
VIDEO_AUDIO_TILE_COLOR:
|
|
45
|
-
VIDEO_AUDIO_TILE_OVERLAY_COLOR:
|
|
46
|
-
VIDEO_AUDIO_TILE_TEXT_COLOR:
|
|
47
|
-
VIDEO_AUDIO_TILE_AVATAR_COLOR:
|
|
48
|
-
SEMANTIC_ERROR:
|
|
49
|
-
SEMANTIC_SUCCESS:
|
|
50
|
-
SEMANTIC_WARNING:
|
|
51
|
-
SEMANTIC_NEUTRAL:
|
|
52
|
-
INPUT_FIELD_BACKGROUND_COLOR:
|
|
53
|
-
INPUT_FIELD_BORDER_COLOR:
|
|
54
|
-
CARD_LAYER_1_COLOR:
|
|
55
|
-
CARD_LAYER_2_COLOR:
|
|
56
|
-
CARD_LAYER_3_COLOR:
|
|
57
|
-
CARD_LAYER_4_COLOR:
|
|
58
|
-
CARD_LAYER_5_COLOR:
|
|
59
|
-
HARD_CODED_BLACK_COLOR:
|
|
60
|
-
ICON_BG_COLOR:
|
|
61
|
-
TOOLBAR_COLOR:
|
|
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:
|
|
80
|
-
CORE_VERSION:
|
|
76
|
+
CHAT_ORG_NAME: '',
|
|
77
|
+
CHAT_APP_NAME: '',
|
|
78
|
+
CHAT_URL: '',
|
|
79
|
+
CLI_VERSION: '3.0.26-beta-4',
|
|
80
|
+
CORE_VERSION: '4.0.26-beta-4',
|
|
81
|
+
DISABLE_LANDSCAPE_MODE: false,
|
|
81
82
|
};
|
|
82
83
|
|
|
83
84
|
module.exports = DefaultConfig;
|
package/template/global.d.ts
CHANGED
|
@@ -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
|
-
{
|
|
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 {
|
|
3
|
-
|
|
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
|
-
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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
|
|
117
|
-
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
|
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;
|
|
@@ -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 (
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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>
|
|
@@ -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:
|
|
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',
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
/**
|
|
@@ -1,28 +1,59 @@
|
|
|
1
|
-
import {useState,
|
|
2
|
-
import {Dimensions} from 'react-native';
|
|
1
|
+
import {useState, useEffect} from 'react';
|
|
3
2
|
|
|
4
3
|
const isPortrait = () => {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
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
|
}
|