agora-appbuilder-core 4.0.24 → 4.0.25-beta-2
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 +1 -1
- package/template/agora-rn-uikit/.eslintrc.js +0 -5
- package/template/agora-rn-uikit/package-lock.json +6116 -23528
- package/template/agora-rn-uikit/package.json +14 -14
- package/template/agora-rn-uikit/src/AgoraUIKit.tsx +6 -6
- package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +6 -6
- package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +40 -79
- package/template/agora-rn-uikit/src/Contexts/RenderContext.tsx +10 -0
- package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +17 -26
- package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +0 -1
- package/template/agora-rn-uikit/src/Controls/Icons.ts +0 -51
- package/template/agora-rn-uikit/src/Controls/Local/EndCall.tsx +4 -6
- package/template/agora-rn-uikit/src/Controls/Local/FullScreen.tsx +1 -3
- package/template/agora-rn-uikit/src/Controls/Local/LocalAudioMute.tsx +2 -5
- package/template/agora-rn-uikit/src/Controls/Local/LocalVideoMute.tsx +2 -5
- package/template/agora-rn-uikit/src/Controls/Local/Recording.tsx +2 -0
- package/template/agora-rn-uikit/src/Controls/Local/SwitchCamera.tsx +6 -7
- package/template/agora-rn-uikit/src/Controls/LocalControls.tsx +5 -5
- package/template/agora-rn-uikit/src/Controls/Remote/RemoteAudioMute.tsx +4 -5
- package/template/agora-rn-uikit/src/Controls/Remote/RemoteSwap.tsx +1 -3
- package/template/agora-rn-uikit/src/Controls/Remote/RemoteVideoMute.tsx +4 -5
- package/template/agora-rn-uikit/src/Controls/RemoteControls.tsx +2 -2
- package/template/agora-rn-uikit/src/Reducer/ActiveSpeakerDetected.ts +11 -0
- package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +7 -8
- package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +7 -8
- package/template/agora-rn-uikit/src/Reducer/LocalPermissionState.ts +7 -6
- package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +8 -7
- package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +9 -9
- package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +8 -7
- package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +13 -14
- package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +7 -6
- package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +7 -6
- package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +6 -5
- package/template/agora-rn-uikit/src/Reducer/UserPin.ts +3 -20
- package/template/agora-rn-uikit/src/Reducer/index.ts +1 -2
- package/template/agora-rn-uikit/src/Rtc/Create.tsx +125 -122
- package/template/agora-rn-uikit/src/Rtc/Join.tsx +27 -46
- package/template/agora-rn-uikit/src/RtcConfigure.tsx +77 -175
- package/template/agora-rn-uikit/src/Utils/quality.tsx +0 -8
- package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +12 -56
- package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +17 -47
- package/template/agora-rn-uikit/src/Views/MinVideoView.tsx +11 -19
- package/template/agora-rn-uikit/src/index.ts +9 -16
- package/template/customization-api/typeDefinition.ts +1 -4
- package/template/customization-api/utils.ts +1 -0
- package/template/defaultConfig.js +2 -0
- package/template/global.d.ts +2 -0
- package/template/src/AppRoutes.tsx +1 -7
- package/template/src/auth/AuthProvider.tsx +70 -24
- package/template/src/auth/useIDPAuth.electron.tsx +59 -2
- package/template/src/auth/useIDPAuth.native.tsx +59 -2
- package/template/src/auth/useIDPAuth.tsx +60 -2
- package/template/src/auth/useTokenAuth.tsx +66 -4
- package/template/src/components/DeviceConfigure.tsx +74 -68
- package/template/src/components/GraphQLProvider.tsx +0 -1
- package/template/src/components/contexts/WaitingRoomContext.tsx +11 -4
- package/template/src/components/recording-bot/RecordingBotRoute.tsx +1 -1
- package/template/src/components/useUserPreference.tsx +56 -9
- package/template/src/components/whiteboard/WhiteboardConfigure.tsx +4 -1
- package/template/src/components/whiteboard/WhiteboardToolBox.tsx +185 -24
- package/template/src/components/whiteboard/WhiteboardWidget.tsx +47 -6
- package/template/src/logger/AppBuilderLogger.tsx +94 -36
- package/template/src/logger/transports/customer-transport.ts +7 -3
- package/template/src/pages/VideoCall.tsx +3 -5
- package/template/src/subComponents/SelectDevice.tsx +14 -52
- package/template/src/subComponents/caption/useSTTAPI.tsx +39 -3
- package/template/src/subComponents/recording/useRecording.tsx +69 -20
- package/template/src/subComponents/waiting-rooms/useWaitingRoomAPI.ts +30 -8
- package/template/src/utils/common.tsx +6 -1
- package/template/src/utils/useCreateRoom.ts +21 -2
- package/template/src/utils/useFindActiveSpeaker.ts +12 -5
- package/template/src/utils/useGetMeetingPhrase.ts +44 -1
- package/template/src/utils/useJoinRoom.ts +29 -2
- package/template/src/utils/useMutePSTN.ts +29 -0
- package/template/agora-rn-uikit/src/Contexts/ContentContext.tsx +0 -10
- package/template/agora-rn-uikit/src/Contexts/DispatchContext.tsx +0 -22
- package/template/agora-rn-uikit/src/Reducer/ActiveSpeaker.ts +0 -30
- package/template/agora-rn-uikit/src/Reducer/UserSecondaryPin.ts +0 -23
- package/template/agora-rn-uikit/src/Utils/isBotUser.ts +0 -15
|
@@ -22,24 +22,24 @@
|
|
|
22
22
|
"url": "https://github.com/AgoraIO-Community/ReactNative-UIKit/issues"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
|
-
"react": "
|
|
26
|
-
"react-native": "0.
|
|
27
|
-
"react-native-agora": "
|
|
25
|
+
"react": "^16.9.0",
|
|
26
|
+
"react-native": "^0.61.5",
|
|
27
|
+
"react-native-agora": "^3.0.1-rc.4"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@babel/core": "^7.
|
|
31
|
-
"@babel/runtime": "^7.
|
|
30
|
+
"@babel/core": "^7.6.2",
|
|
31
|
+
"@babel/runtime": "^7.6.2",
|
|
32
32
|
"@react-native-community/eslint-config": "^1.0.0",
|
|
33
33
|
"@types/jest": "^24.0.24",
|
|
34
|
-
"@types/react-native": "0.
|
|
35
|
-
"@types/react-test-renderer": "
|
|
36
|
-
"@typescript-eslint/eslint-plugin": "
|
|
37
|
-
"@typescript-eslint/parser": "
|
|
38
|
-
"babel-jest": "^
|
|
39
|
-
"eslint": "^
|
|
40
|
-
"jest": "^
|
|
41
|
-
"metro-react-native-babel-preset": "0.
|
|
42
|
-
"react-test-renderer": "
|
|
34
|
+
"@types/react-native": "^0.62.0",
|
|
35
|
+
"@types/react-test-renderer": "16.9.2",
|
|
36
|
+
"@typescript-eslint/eslint-plugin": "^2.27.0",
|
|
37
|
+
"@typescript-eslint/parser": "^2.27.0",
|
|
38
|
+
"babel-jest": "^24.9.0",
|
|
39
|
+
"eslint": "^6.5.1",
|
|
40
|
+
"jest": "^24.9.0",
|
|
41
|
+
"metro-react-native-babel-preset": "^0.58.0",
|
|
42
|
+
"react-test-renderer": "16.11.0",
|
|
43
43
|
"prettier": "^2.0.4",
|
|
44
44
|
"typescript": "^3.8.3"
|
|
45
45
|
},
|
|
@@ -3,7 +3,7 @@ import {ScrollView, View} from 'react-native';
|
|
|
3
3
|
import RtcConfigure from './RtcConfigure';
|
|
4
4
|
import MaxVideoView from './Views/MaxVideoView';
|
|
5
5
|
import MinVideoView from './Views/MinVideoView';
|
|
6
|
-
import {
|
|
6
|
+
import {RenderConsumer} from './Contexts/RenderContext';
|
|
7
7
|
import {PropsProvider, PropsInterface} from './Contexts/PropsContext';
|
|
8
8
|
|
|
9
9
|
import styles from './Style';
|
|
@@ -16,12 +16,12 @@ const AgoraUIKit: React.FC<PropsInterface> = (props) => {
|
|
|
16
16
|
<PropsProvider value={props}>
|
|
17
17
|
<View style={{backgroundColor: '#000', flex: 1}}>
|
|
18
18
|
<RtcConfigure>
|
|
19
|
-
<
|
|
20
|
-
{({
|
|
19
|
+
<RenderConsumer>
|
|
20
|
+
{({renderList, activeUids}) => {
|
|
21
21
|
const [maxUid, ...minUids] = activeUids;
|
|
22
22
|
return (
|
|
23
23
|
<>
|
|
24
|
-
<MaxVideoView user={
|
|
24
|
+
<MaxVideoView user={renderList[maxUid]} key={maxUid} />
|
|
25
25
|
<ScrollView
|
|
26
26
|
showsHorizontalScrollIndicator={false}
|
|
27
27
|
horizontal={true}
|
|
@@ -29,7 +29,7 @@ const AgoraUIKit: React.FC<PropsInterface> = (props) => {
|
|
|
29
29
|
{minUids.map((minUid) => (
|
|
30
30
|
<MinVideoView
|
|
31
31
|
showOverlay
|
|
32
|
-
user={
|
|
32
|
+
user={renderList[minUid]}
|
|
33
33
|
key={minUid}
|
|
34
34
|
/>
|
|
35
35
|
))}
|
|
@@ -37,7 +37,7 @@ const AgoraUIKit: React.FC<PropsInterface> = (props) => {
|
|
|
37
37
|
</>
|
|
38
38
|
);
|
|
39
39
|
}}
|
|
40
|
-
</
|
|
40
|
+
</RenderConsumer>
|
|
41
41
|
<LocalControls />
|
|
42
42
|
</RtcConfigure>
|
|
43
43
|
</View>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React, {useContext, createContext} from 'react';
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
2
|
+
import RenderContext from './RenderContext';
|
|
3
|
+
import {RenderInterface} from './PropsContext';
|
|
4
4
|
import {UidType} from './RtcContext';
|
|
5
5
|
|
|
6
|
-
export const LocalContext = createContext<
|
|
7
|
-
{} as
|
|
6
|
+
export const LocalContext = createContext<RenderInterface>(
|
|
7
|
+
{} as RenderInterface,
|
|
8
8
|
);
|
|
9
9
|
export const LocalProvider = LocalContext.Provider;
|
|
10
10
|
export const LocalConsumer = LocalContext.Consumer;
|
|
@@ -15,12 +15,12 @@ interface LocalUserContextInterface {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
const LocalUserContext: React.FC<LocalUserContextInterface> = (props) => {
|
|
18
|
-
const {
|
|
18
|
+
const {renderList} = useContext(RenderContext);
|
|
19
19
|
if (!props?.localUid) {
|
|
20
20
|
console.error('Error: local user id is empty');
|
|
21
21
|
return null;
|
|
22
22
|
}
|
|
23
|
-
let localUser:
|
|
23
|
+
let localUser: RenderInterface = renderList[props?.localUid];
|
|
24
24
|
if (!localUser) {
|
|
25
25
|
console.error("Error: we couldn't find the local user data");
|
|
26
26
|
return null;
|
|
@@ -1,44 +1,26 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import {StyleProp, ViewStyle} from 'react-native';
|
|
3
|
-
import {
|
|
3
|
+
import {RtcEngineEvents} from 'react-native-agora/lib/typescript/src/common/RtcEvents';
|
|
4
4
|
import {EncryptionMode} from 'react-native-agora';
|
|
5
5
|
import {VideoProfile} from '../Utils/quality';
|
|
6
6
|
import {UidType} from './RtcContext';
|
|
7
7
|
|
|
8
8
|
/* User role for live streaming mode */
|
|
9
|
-
export enum
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* 2: (Default) Audience. An audience member can only receive streams.
|
|
16
|
-
*/
|
|
17
|
-
ClientRoleAudience = 2,
|
|
9
|
+
export enum ClientRole {
|
|
10
|
+
/* 1: A host can both send and receive streams. */
|
|
11
|
+
Broadcaster = 1,
|
|
12
|
+
/* 2: The default role. An audience can only receive streams. */
|
|
13
|
+
Audience = 2,
|
|
18
14
|
}
|
|
19
15
|
|
|
20
16
|
/* Mode for RTC (Live or Broadcast) */
|
|
21
|
-
export enum
|
|
22
|
-
/**
|
|
23
|
-
*
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
*/
|
|
29
|
-
ChannelProfileLiveBroadcasting = 1,
|
|
30
|
-
/**
|
|
31
|
-
* 2: Gaming. This profile is deprecated.
|
|
32
|
-
*/
|
|
33
|
-
ChannelProfileGame = 2,
|
|
34
|
-
/**
|
|
35
|
-
* Cloud gaming. The scenario is optimized for latency. Use this profile if the use case requires frequent interactions between users.
|
|
36
|
-
*/
|
|
37
|
-
ChannelProfileCloudGaming = 3,
|
|
38
|
-
/**
|
|
39
|
-
* @ignore
|
|
40
|
-
*/
|
|
41
|
-
ChannelProfileCommunication1v1 = 4,
|
|
17
|
+
export enum ChannelProfile {
|
|
18
|
+
/** 0: (Default) The Communication profile.
|
|
19
|
+
* Use this profile in one-on-one calls or group calls, where all users can talk freely. */
|
|
20
|
+
Communication = 0,
|
|
21
|
+
/** 1: The Live-Broadcast profile.
|
|
22
|
+
* Users in a live-broadcast channel have a role as either host or audience. A host can both send and receive streams; an audience can only receive streams. */
|
|
23
|
+
LiveBroadcasting = 1,
|
|
42
24
|
}
|
|
43
25
|
|
|
44
26
|
// disabled is intentionally kept as the 1st item in the enum.
|
|
@@ -63,38 +45,23 @@ export enum PermissionState {
|
|
|
63
45
|
export const toggleHelper = (state: ToggleState) =>
|
|
64
46
|
state === ToggleState.enabled ? ToggleState.disabled : ToggleState.enabled;
|
|
65
47
|
|
|
66
|
-
export interface
|
|
67
|
-
//uikit and core
|
|
48
|
+
export interface DefaultRenderInterface {
|
|
68
49
|
uid: UidType;
|
|
69
50
|
audio: ToggleState;
|
|
70
51
|
video: ToggleState;
|
|
71
52
|
streamType: 'high' | 'low';
|
|
72
53
|
type: 'rtc';
|
|
73
54
|
permissionStatus?: PermissionState;
|
|
74
|
-
audioForceDisabled?: boolean;
|
|
75
|
-
videoForceDisabled?: boolean;
|
|
76
55
|
//applicable only to the screenshare
|
|
77
56
|
parentUid?: UidType;
|
|
78
|
-
//uikit and core
|
|
79
|
-
|
|
80
|
-
//core only
|
|
81
|
-
name: string;
|
|
82
|
-
screenUid: number;
|
|
83
|
-
offline: boolean;
|
|
84
|
-
lastMessageTimeStamp: number;
|
|
85
|
-
isInWaitingRoom?: boolean;
|
|
86
|
-
//core only
|
|
87
57
|
}
|
|
88
|
-
export interface
|
|
89
|
-
type: T extends
|
|
58
|
+
export interface CustomRenderInterface<T> {
|
|
59
|
+
type: T extends DefaultRenderInterface['type'] ? never : T;
|
|
90
60
|
}
|
|
91
|
-
|
|
92
|
-
extends CustomContentInterface<string> {
|
|
61
|
+
interface ExtenedRenderInterface extends CustomRenderInterface<string> {
|
|
93
62
|
[key: string]: any;
|
|
94
63
|
}
|
|
95
|
-
export type
|
|
96
|
-
| DefaultContentInterface
|
|
97
|
-
| ExtenedContentInterface;
|
|
64
|
+
export type RenderInterface = DefaultRenderInterface | ExtenedRenderInterface;
|
|
98
65
|
|
|
99
66
|
interface remoteBtnStylesInterface {
|
|
100
67
|
muteRemoteAudio?: StyleProp<ViewStyle>;
|
|
@@ -137,13 +104,17 @@ export interface RtcPropsInterface {
|
|
|
137
104
|
dual?: boolean | null;
|
|
138
105
|
profile?: VideoProfile;
|
|
139
106
|
initialDualStreamMode?: DualStreamMode;
|
|
140
|
-
role?:
|
|
107
|
+
role?: ClientRole /* Set local user's role between audience and host. Use with mode set to livestreaming. (default: host) */;
|
|
141
108
|
callActive?: boolean;
|
|
142
109
|
encryption?: {
|
|
143
110
|
key: string;
|
|
144
|
-
mode:
|
|
145
|
-
|
|
111
|
+
mode:
|
|
112
|
+
| EncryptionMode.AES128XTS
|
|
113
|
+
| EncryptionMode.AES256XTS
|
|
114
|
+
| EncryptionMode.AES128ECB;
|
|
146
115
|
};
|
|
116
|
+
preferredCameraId?: string;
|
|
117
|
+
preferredMicrophoneId?: string;
|
|
147
118
|
// commented for v1 release
|
|
148
119
|
// lifecycle?: {
|
|
149
120
|
// useBeforeJoin?: () => () => Promise<void>;
|
|
@@ -152,13 +123,6 @@ export interface RtcPropsInterface {
|
|
|
152
123
|
geoFencing?: boolean;
|
|
153
124
|
audioRoom?: boolean;
|
|
154
125
|
activeSpeaker?: boolean;
|
|
155
|
-
preventJoin?: boolean;
|
|
156
|
-
|
|
157
|
-
//core only
|
|
158
|
-
screenShareUid?: number;
|
|
159
|
-
screenShareToken?: string;
|
|
160
|
-
recordingBot?: false;
|
|
161
|
-
//core only
|
|
162
126
|
}
|
|
163
127
|
|
|
164
128
|
export interface CallbacksInterface {
|
|
@@ -166,26 +130,24 @@ export interface CallbacksInterface {
|
|
|
166
130
|
FullScreen(): void; //?
|
|
167
131
|
SwitchCamera(): void; //Not in reducer
|
|
168
132
|
UpdateDualStreamMode(mode: DualStreamMode): void;
|
|
169
|
-
UserJoined:
|
|
170
|
-
UserOffline:
|
|
133
|
+
UserJoined: RtcEngineEvents['UserJoined'];
|
|
134
|
+
UserOffline: RtcEngineEvents['UserOffline'];
|
|
171
135
|
SwapVideo(uid: UidType): void;
|
|
172
136
|
DequeVideo(uid: UidType): void;
|
|
173
|
-
UserMuteRemoteAudio(uid: UidType, muted:
|
|
174
|
-
UserMuteRemoteVideo(uid: UidType, muted:
|
|
175
|
-
LocalMuteAudio(muted: ToggleState
|
|
176
|
-
LocalMuteVideo(muted: ToggleState
|
|
137
|
+
UserMuteRemoteAudio(uid: UidType, muted: RenderInterface['audio']): void;
|
|
138
|
+
UserMuteRemoteVideo(uid: UidType, muted: RenderInterface['video']): void;
|
|
139
|
+
LocalMuteAudio(muted: ToggleState): void;
|
|
140
|
+
LocalMuteVideo(muted: ToggleState): void;
|
|
177
141
|
LocalPermissionState(
|
|
178
|
-
permissionState:
|
|
142
|
+
permissionState: RenderInterface['permissionStatus'],
|
|
179
143
|
): void;
|
|
180
|
-
RemoteAudioStateChanged:
|
|
181
|
-
RemoteVideoStateChanged:
|
|
182
|
-
|
|
183
|
-
|
|
144
|
+
RemoteAudioStateChanged: RtcEngineEvents['RemoteAudioStateChanged'];
|
|
145
|
+
RemoteVideoStateChanged: RtcEngineEvents['RemoteVideoStateChanged'];
|
|
146
|
+
ActiveSpeakerDetected: RtcEngineEvents['ActiveSpeaker'];
|
|
147
|
+
JoinChannelSuccess: RtcEngineEvents['JoinChannelSuccess'];
|
|
148
|
+
UpdateRenderList(uid: UidType, user: Partial<RenderInterface>): void;
|
|
184
149
|
AddCustomContent(uid: UidType, data: any): void;
|
|
185
|
-
RemoveCustomContent(uid: UidType): void;
|
|
186
150
|
UserPin(Uid: UidType): void;
|
|
187
|
-
UserSecondaryPin(Uid: UidType): void;
|
|
188
|
-
ActiveSpeaker(Uid: UidType): void;
|
|
189
151
|
}
|
|
190
152
|
|
|
191
153
|
export type CustomCallbacksInterface = CallbacksInterface;
|
|
@@ -194,20 +156,19 @@ export interface PropsInterface {
|
|
|
194
156
|
rtcProps: RtcPropsInterface;
|
|
195
157
|
styleProps?: Partial<StylePropInterface>;
|
|
196
158
|
callbacks?: Partial<CallbacksInterface>;
|
|
197
|
-
mode?:
|
|
159
|
+
mode?: ChannelProfile;
|
|
198
160
|
}
|
|
199
161
|
|
|
200
|
-
const initialValue:
|
|
162
|
+
const initialValue: PropsInterface = {
|
|
201
163
|
rtcProps: {
|
|
202
164
|
appId: '',
|
|
203
165
|
channel: '',
|
|
204
166
|
geoFencing: true,
|
|
205
167
|
audioRoom: false,
|
|
206
|
-
preventJoin: true,
|
|
207
168
|
},
|
|
208
169
|
};
|
|
209
170
|
|
|
210
|
-
const PropsContext = React.createContext<
|
|
171
|
+
const PropsContext = React.createContext<PropsInterface>(initialValue);
|
|
211
172
|
|
|
212
173
|
export const PropsProvider = PropsContext.Provider;
|
|
213
174
|
export const PropsConsumer = PropsContext.Consumer;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {RenderStateInterface} from './RtcContext';
|
|
3
|
+
|
|
4
|
+
const RenderContext = React.createContext<RenderStateInterface>(
|
|
5
|
+
{} as RenderStateInterface,
|
|
6
|
+
);
|
|
7
|
+
|
|
8
|
+
export const RenderProvider = RenderContext.Provider;
|
|
9
|
+
export const RenderConsumer = RenderContext.Consumer;
|
|
10
|
+
export default RenderContext;
|
|
@@ -1,37 +1,19 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import {CallbacksInterface} from './PropsContext';
|
|
3
|
-
import
|
|
4
|
-
import type {DualStreamMode,
|
|
3
|
+
import RtcEngine from 'react-native-agora';
|
|
4
|
+
import type {DualStreamMode, RenderInterface} from './PropsContext';
|
|
5
5
|
|
|
6
6
|
export type UidType = number;
|
|
7
7
|
|
|
8
|
-
export interface
|
|
9
|
-
[key: number]:
|
|
8
|
+
export interface RenderObjects {
|
|
9
|
+
[key: number]: RenderInterface;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
uid: UidType;
|
|
15
|
-
component: boolean | React.ComponentType | JSXElement;
|
|
16
|
-
props: any;
|
|
17
|
-
onStage?: boolean; //true by default
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export interface CustomContentObjects {
|
|
21
|
-
[key: number]: CustomContentInferface;
|
|
22
|
-
}
|
|
23
|
-
export interface ContentStateInterface {
|
|
24
|
-
customContent?: CustomContentObjects;
|
|
25
|
-
setCustomContent: (
|
|
26
|
-
uid: CustomContentInferface['uid'],
|
|
27
|
-
component: CustomContentInferface['component'],
|
|
28
|
-
props?: CustomContentInferface['props'],
|
|
29
|
-
onStage?: CustomContentInferface['onStage'],
|
|
30
|
-
) => void;
|
|
31
|
-
defaultContent: ContentObjects;
|
|
12
|
+
export interface RenderStateInterface {
|
|
13
|
+
renderList: RenderObjects;
|
|
32
14
|
activeUids: Array<UidType>;
|
|
15
|
+
activeSpeaker?: UidType;
|
|
33
16
|
pinnedUid?: UidType;
|
|
34
|
-
secondaryPinnedUid?: UidType;
|
|
35
17
|
lastJoinedUid?: UidType;
|
|
36
18
|
}
|
|
37
19
|
|
|
@@ -40,10 +22,19 @@ export interface ActionInterface<T extends keyof CallbacksInterface> {
|
|
|
40
22
|
value: Parameters<CallbacksInterface[T]>;
|
|
41
23
|
}
|
|
42
24
|
|
|
25
|
+
export type DispatchType = <
|
|
26
|
+
T extends keyof CallbacksInterface,
|
|
27
|
+
V extends Parameters<CallbacksInterface[T]>,
|
|
28
|
+
>(action: {
|
|
29
|
+
type: T;
|
|
30
|
+
value: V;
|
|
31
|
+
}) => void;
|
|
32
|
+
|
|
43
33
|
export type ActionType<T extends keyof CallbacksInterface> = ActionInterface<T>;
|
|
44
34
|
|
|
45
35
|
export interface RtcContextInterface {
|
|
46
|
-
|
|
36
|
+
RtcEngine: RtcEngine;
|
|
37
|
+
dispatch: DispatchType;
|
|
47
38
|
setDualStreamMode: React.Dispatch<React.SetStateAction<DualStreamMode>>;
|
|
48
39
|
}
|
|
49
40
|
|
|
@@ -26,7 +26,6 @@ interface BtnTemplateBasicInterface {
|
|
|
26
26
|
disabled?: boolean;
|
|
27
27
|
}
|
|
28
28
|
interface BtnTemplateInterfaceWithName extends BtnTemplateBasicInterface {
|
|
29
|
-
//@ts-ignore
|
|
30
29
|
name?: keyof IconsInterface;
|
|
31
30
|
}
|
|
32
31
|
interface BtnTemplateInterfaceWithIcon extends BtnTemplateBasicInterface {
|
|
@@ -9,43 +9,9 @@ export interface IconsInterface {
|
|
|
9
9
|
'demote-outlined': string;
|
|
10
10
|
'lower-hand': string;
|
|
11
11
|
'raise-hand': string;
|
|
12
|
-
'white-board': string;
|
|
13
|
-
ains: string;
|
|
14
|
-
'vb-blur': string;
|
|
15
|
-
'vb-color': string;
|
|
16
|
-
'vb-image': string;
|
|
17
|
-
vb: string;
|
|
18
|
-
'turn-off-stt': string;
|
|
19
|
-
'live-caption-mode': string;
|
|
20
|
-
done: string;
|
|
21
|
-
warning: string;
|
|
22
|
-
'noise-cancellation': string;
|
|
23
|
-
'whiteboard-new': string;
|
|
24
|
-
chat_attachment_pdf: string;
|
|
25
|
-
chat_attachment_image: string;
|
|
26
|
-
chat_attachment_doc: string;
|
|
27
|
-
chat_attachment_unknown: string;
|
|
28
|
-
chat_emoji_fill: string;
|
|
29
|
-
chat_emoji: string;
|
|
30
12
|
}
|
|
31
13
|
|
|
32
14
|
const icons: IconsInterface = {
|
|
33
|
-
'whiteboard-new':
|
|
34
|
-
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANWSURBVHgB7ZuBcdswDEWhXgdIN1C6QNNO4HSCbBB3gmYDuxPEncC+LuJs4GwgbxBvgAIVXcs2KQKU5MgS3h3PdzIBif8gUIQoAMMwjDQQMad2A8YxJModtQIPLFksMP5HTVUcNKEqkAAzjPMMY8RFj5Q5jA0a9Eoh0BuMCWX0iAX6AMNBm1d+w1igaHhAHQWOaTbD8LQe4hHGAg12ijoKGBNdR08W60AOJ/TDTvk3h+tmm2XZrcbgY+gPLJPYEkphhsIPUOIViMS5o581tSGthFcUPS+g5OwWc5GzgWGJw9ySQFtQ4ntQHFrkMKsUcZgjgVxCzmF4/JJ2dOkl+GdosfdG7Ql7UJ1LmNbnCt8zasu6Dhts4dmhKzDhoRCFSwo8FNqKuk4hepGTsMOHQqzcPXWdvEAPwA6XFHhSKqnr2EuBsL7OHCIpeq5VoGfUsVH4zsXj7aNAqK8UMncK/+vOBaIuN24grb+oQ12dmVkqfHvzWp2BWCA6PKG2QH9u4MeFn9iwaodp0ZMr/Bc+B3UGUYGwjBZNTphBIugJ/wji6JGOV22A+oTJFJgQTaij0J4j5KiRATZDFU2oYw5KQo4aGWC5LmsCR6AokSt8JtWZQ86qfVLei714ju3c8VeI80SNk3gO7TGHSyBRFMskvZ96OZoW1YjAcuaRTM0FRp52UUbyW4qQw/YM6k8+RdnyYImVaMLDLCm5ldk2+bkr5LQ9g/gFaNZQfNutFcLk0JCQ8/YMZBfBEbHA5uxv5xxaInSi9gx0FzPHBkAHqM+lNtBfUErZgllAB6jHqzZIvzBNNB3Nki1fRz8FcufiaOIXAb46eOGEmUCHSMabnRr4HNE7peg7/Ca4CNlHyY5Ot4MLIBlvLwR6LyTjHdIWvE4wgSKYQBFMoAgmUAQTKIIJFMEEijBagaQrKJFAOMzPGkVjOhVoG+g3hYHAkeOi5yHQ5bXOOFRs52re4zVFEl1rFmifXBUhVNo9ejt7ulidQLnLdczcV/dT+/ZJs0ATGCcFifO5esCXpHm7/kXqMT2Dv0D8fnrwTCC34foexiXSP3F8m8290zx15Ez+FcKz2lDg6YxTyjc35jOkn0NNqX2hJt7adkFSauZbKPcS/En5wMUwDMMwDMMw4C9ycj0K0Sb6NAAAAABJRU5ErkJggg==',
|
|
35
|
-
'noise-cancellation':
|
|
36
|
-
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANxSURBVHgB7ZvxddowEMaPvv5fRlA2yAjuBMkGYYPSCeJMAJ0AMkGyAWzQdAKzAXSCr6dafjjGtiRbxgLu9949g5Fk+8vJOukUIkEQBEEQBEEQ/JlQBACY8uGRTZlTH9omk8mObhkWRrFt0MxKl/Fsc8G2N6JfLvwA92wZ7Ogy945tqlKbKV0qlQdxIbN5kmlzXaqjveiJxoRvYGZu5sGz3hr+bFrae0YPcQcDRy/YeNRR6M60oc15S539KALxRZPKjSSO9R7RnVlLu1r4t1LZDGN2MZyOPk5exOVSdCe1tD1F7jGaBQXgC3libuKZPyaVn7RHaVdXNBIcNx348IutOJ6PQpjSX6iJDC3xy5AeNAROHoS872dsKZstAFNs/8tj7GE2AD5dzDcyPdAV4CQQ9+01H+7YXtl2luJamBddnuu90oXj7EF64sg244/f2X42FCuESc0LMwqQT2vQpct7j2JGqCV/3FZ+2sYmTIm5Oc7IE2+BSrxYvo9OKSQpPCcxI7Gic4BjsJh51DnLMI88Ym8LSeYu7fTxIE0RjKUUJ4eW8zuKEZwxUEQ+P6tOZJfwWEzr60FRUzOg6O9zn4HkqgUqUQwgKXnylW4A9pgtdUxQ3IoHdUYEsiACWRCBLAQRCMeFtAyOOawhQD4pLaLnZ4oBnC7Ct2Y1cUwVdeHBci9ZpXxCPQnhQdOa76ql/Dt150/TD0YMVTn9jXoSQqCPmnNJU2ETxW7Jn7VlM4OqOfeXxgafUy0FK0udIVLPb9VKFAs4zZFZd1cg4OYF1GdrnbO9g4P61G/qUK+64eDkIeGwuIX6F3+QjEqQDVTGW/SiWdlr9LvmzmXmbES4N6bZsb171NXeoio/3UW1AavBE4Kkfztcd0WxYbpL3RKn09Jmx2v+QD2KYgTNq4XBM6y6zYZrpRQzfIO/G248mCe1eI5z8mA00B7jrPq4P/KYa9EkDmLtWlXwedJY9yBP8Fg4h31nyTi7yPoAe7S8Nx71ZASdlupOzbmZKdOW38ow4gpCL+A/pfBFv+8UXTrolwurQ3tUStcE7NMKV2FWuAavacIIpd8tGw9RdFk9tF/2vxd0AfnLuK4L6nOX+fINDU73XGsSigDJalgQgSyIQBZEIAsikAURyEIsAl3FrvxBQb53sGBJwikmqpboWRAEQRCC8A+7wtIN3wzWKgAAAABJRU5ErkJggg==',
|
|
37
|
-
warning:
|
|
38
|
-
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAADNUlEQVR4Ae2c0W0TQRCG/zXxe0pwOoAOLh0kEkQ8kgpIKoioAKggvAEJUkwFuAPoADrABcQssxs7SqSsvXu3Mztx5pMsnew7Rxn/s9/tns+AYRiGYRiGYRiGYRjGtuCvMKHHLhTjoJBYtGtc0WZ38wSmGOPYHWIOZYygkWu8xap4AYcDeu4EClGXwNC2VKzfD7w0xw5eUAr/QBH6ErjA+8Qroa3PoQxVBfQXeEPj3cGaXTp/eae1FaCmhWPrLvCDCjhZu6OjFn4WW1mFUPQkMIhjU/ECPo6RaoSiIoFrxJFCjVB0JPDmnK8ENUJpXsAoDuA5ylEhlKYtnC2OFAqE0jaBueJIoUAozRLYQxxpdrDXSijtElgujnXv1UwoTQo4QBwpOv917QyGDfEWHiyOFI2EIp/AoeJI0UgoogmsKo4UwkKRTWC5OGb0EU+LjhAWilgBe4hj372ix0schu2C40SFItLCxeIgIVDh9u69xwW1vss/XkooMglc4IxFHCkEhcJewJg+H9tXmrP4t5nhT2Bo3VYICIW1gMtrHBO0g10obAWM7TOisa81I5xzfruBL4HS4kgTVq/ZPkiWAjYUR4oTGk5qLl7cwpPAluJI4ZIX7AdRvYAKxJGiW86GqlK1gGrEkYJSWFsodROoRxwpqgulWgEViiNFVaHUS2BNcXjs3p2GxW1XMdkVhVJlNSYOzq7ytCmsqHh8XG7XX8X2OHZH+ISBDC4g2zUOfubL1etBS17DW1i/OFJUEcqgBIpc4+DG08LrEX6hJ8MSyD/jKL8mUspAofQuIPuMIyRjdU2EtsFH57/0X73u1cLs4vD4Tm11bx3PX8a0d+Cht1D6JZBbHCP8hSy9hVKcQCFxzOkD2l8N7nHm4PAT/IRLqbOSA8oL+I2KJ3XaEm7xcnHy30GGWRh3Sw4oKiDLjEMbC5y61/iQu3t2AR/xjKOUIqHkS+TxzjhKKRJKVgIFB3FNZAklL4HbPu49TFYKNyZwefOz9HmZCiiBG+uTm0B1d4qz4/O+pLmxgNFGHu/wtAj/82nOjvmnMZ/JwGOSyT/dPwJRhTGmGn+fwTAMwzAMwzAMwzCMLeA/aQAlpfLwqQYAAAAASUVORK5CYII=',
|
|
39
|
-
vb: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAEfSURBVHgB7VNbEcIwELwwCCgOkIADggMcgAQcVAI4KBJAARLAQeugdXBc6KVzpE2a5Ls7szNtsrebywNgQSoQsSWe+XtLrIlvYsFjJ+xhNQXPD5q5gJD5kfgKmZsFxISMzD26cqq7LHNe7YVYmQ6Mzo5Lc9tdKGDK3IZK1CIkzpzFsmVrUOE0Xjx/k+cyF2DNS1HkQ+vU/A4dIroo2UDzfxsKkOazAcL8LMbunoDKNY/ZosGcCwth8Lf/YmuyHpo1vYg5jf0V1W4NJj40e+c1JAAnHpqaKTCrOhL3xB1xSzRjHbEhfohPpdSD9dpo6P8OER2UgdvjojZ6SGi1wjxcXS/lCUDIQ0fbs5EDK58Q8jC6pmuP8AD9oaaigQWp+AKsAoDF7uWeIAAAAABJRU5ErkJggg==',
|
|
40
|
-
'vb-image':
|
|
41
|
-
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAB20lEQVRIie2UPWsUURSGn2siwcRsdgU/EkjnT5BgsZVgxCaNCiqIIi4WRrD1F6RQxMKAgTRWahkIikktRtzSD1IpCIIEsfAjCQQei5zRyZDdmVjnheHcc+5733fuzLkXdrFTqJ/UEzE+pLbVp+reqF1Rv6rjkTfUl+ozdV8Vg4mIh9W36kK2UG2qi+qZnHhbfaXWona5iskR9V1evANvqiiurlcRf18UV/vVlno3Yr/aow7kxdULZQYfthEfVpfdxK+Iy+pwzF+qJB7k/DcfjPhE/aE2I29G/jjyO5m42igzyMSvqedjvKJOF3jT6kr2+SLW1Td53p6iQUppVW0BD4CPUV4DagVqDViNNb/VOrAAWLaDlrqWtWvU7qsb6g31aMQN9V7MD6mv46mXGfwVjz4/qA6o827FfNR74qAtqUNdxUM0L95WJ3NzY9ExY4U1FzNx9VwVk/3qLePKqAr1bPGgpQ7ElFIyOuo0cAo4BowAfcA68AVoAy+A59EcJ4GRlNKjMoM+4DZwEzgAfAeWgM8xbgCjwPEYf2Oz66ZSSt2vijCYiR85p06ovR14vTE/F/yHRU6nHfwEFoGrpW/zD7PAeEppsIpB98PSBSmlLZrbbh24/r8Gu9gx/gBohhCCgI16xQAAAABJRU5ErkJggg==',
|
|
42
|
-
'vb-color':
|
|
43
|
-
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAvVBMVEUAAAAAAAAAAAAAAABAQEAgICAcHBwaGhogICAeHh4mGiYhISEfHx8eGB4aGh8eGR4cHCAeHiIdHSEbGx8fGx8eGiIeHiEdHSAdGiAdGh8cGh8cGh8cHB4bGyAcHCAdGx8cHB4eGx4dGx0dGx8bGx8cGh8bGh8bGyAdHB8dGx4cGx8cHB8cHB8cHB8cHB4bGx4bGx8cGiAbGx8cGyAcGh8cGh8cGx8cGyAcGyAcGyAcGx8dGx8cGx8cGx////9owITRAAAAPnRSTlMAAQIDBAgJChARFBcZKzIzNzw9QkJERUdhYmNkZWhvcnd5enuCioyer7K0tba3ubq8wcXJy8zOz9DR09bY2WCHnYUAAAABYktHRD5JZADjAAAAuklEQVQoz52R2RKCMAxFiyLu+4KCiiuKAm6oqOT/f0sMbaEwvnAfMpNzm9xpS0heSb3N0XtfduOayDt7oHotSgk+/UAsq8H5DATZFcq7QdhNFI0WgG3Ei/avUUiZFoCgicYI5zVFpyXUGg0TMjqg4fLdwLLuaDz4bp7lo/GMd7MsB41TNmP1J9yro6Gm+bUVXVB2k9S35lX2VIOA0bMkPrrBz7dFo2CwGT39gX2aM8x8rayajn9bSiS/vu5rPfA8hChsAAAAAElFTkSuQmCC',
|
|
44
|
-
'vb-blur':
|
|
45
|
-
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAABWUlEQVRIieWUP0oDYRDF36gRxMZOUQRbIZBIPICYxsZKm1SxtMoBvIBN0qRJrpDaY6iQwt5CCGiUFGLjv5+Fm2SyZDdfFATJg4VvmDdvZmeGkWYCwB6w7uxd4CAkdiEwx6KkeWd3JD2Hl/jXAOpA3dlVoOHsBlBN4nvMBea06EuyZwFAFshF7xpQc74SUI5x/QwGfCAHZPs+v6YZDVdxOZa/JddzM7sBzpzf8zOadj6AARWgDVwCpakEAhKcMIpPYD8kdrCmwA5QiN5NoOl4R7E4k3TsYgd8oADk+z4/gzcNZ/ASE3waU9yje3v+u6SPsb+TBGAb6LkW3QGrIbHB0wY29N2qV0ktM+v9OEH/rphZBShKOpW0EqN1JdXM7Nrz41qp5zqq+kLSUgKlCGylaaQCOGQy8mkak67praS0XnckPUxb+AiAzejWtIEucA9cAefA2q/E/wW+AK4bGrj694GPAAAAAElFTkSuQmCC',
|
|
46
|
-
ains: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYAgMAAACdGdVrAAAACVBMVEUAAAD///////9zeKVjAAAAA3RSTlMAZr+SD6biAAAAAWJLR0QB/wIt3gAAADVJREFUCNdjYEADjA5giqkBk2J0agRJMjU1NaBTjE5NTUBJIAfEhVJQQawaYIZhtQjmCCQAAMpYF99YsyCnAAAAAElFTkSuQmCC',
|
|
47
|
-
'white-board':
|
|
48
|
-
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAABeElEQVRIie3Uz4tNcRjH8c/XlRgjkiKzUNyr/EjK1n/g/5C/wI8F+ROklNjMjZKysrDT2GuahcjCxqCIJMKUppfFPeo6fWfuGZrdfDbn9Dzf8/48z3POeZINTVBpB7Avybkkp5IsJ3me5GYp5c1/u+EQPuMXnuEplvAVJ1d4poddXQ0OYojjY7EZvMewcn6AV1jG5X/t6gA+4E4ld8vfurQW8F5cw098xNGxXK+5bsHDMYMvXcC7G/D35l0MsX8sP8BLnK6YPJgEP4x3DXgW/VZ+gLcN7FvL5CqmJhncbcZxpJIbh2ubrKRNlVhJMt2GJ5lLMtM6O53kwqpVt0B9vMYL7Fil8j+amziWisl27FkXeMuoExw71xN+Ap9wD1u7wvtdx4JtuGi0Kq50Nbi+1pkbLcZHtVztM+1VYk+SnCml/GiBp3A+ybEkC107uDGpcpzFvNGPxmhVVLvbXInNJlls7peS3G5X3mgxyeMk90sp852q31BNvwGhl1TXx/9xfQAAAABJRU5ErkJggg==',
|
|
49
15
|
profile:
|
|
50
16
|
'data:image/png;base64,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',
|
|
51
17
|
'no-mic':
|
|
@@ -66,23 +32,6 @@ const icons: IconsInterface = {
|
|
|
66
32
|
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADvSURBVHgB5ZRREcIwDIZbB5MQCZOABBxQCUMBSJgEHCBhczAJlTAJITmyo1dW2vTKC/x3ubVZky9JbzPmr4SInmySdcemCR7I7nFQmAhFAcxrAE7ilyBhJ75pBxCu+VxfC3FbpR8Ai2zzI5OEq4wAxAcZgJctmBJxuzFE/GsTQAqy+ZoAJPAggblxVQMAX/LRuHxrwFsnQWIsBtChkcwlACj30icgkEveR9VecV8pCJR0cMMyMeQYQfIAJYR1khj1z08NUUsJGUyNlJCLqVEhZNqDWAXE0QMSr2dr7cyF0Jrv40z70XxD+Px2nPkZPQCoHCglmaLpAgAAAABJRU5ErkJggg==',
|
|
67
33
|
'raise-hand':
|
|
68
34
|
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADxSURBVHgB5ZTtEYIwDIYD5391gzqBjIAbOIojsIFuoBs4AmyAG+AIblATDSdW+pFSf3g+d+81V0jeNrQA/BVa644EKcGCNapFFfqFQi1IvvxZgEfJ43wwR3HN8cqVnI9N8uoKRx6tXLGc2HbQUjKaLGEiuWVe8ejtcaxBMpIYYCvPqP1XDOjI4rBF7SRJPeUgri2x6oOxWpnNAMKhe/C43RliPpzaosb3QqzBFbVhgyNI0X6o7xdzEgQ7uIGdBp7/p7Ug52MHJ8fqO5ZJeKv0+/EMRYEETKgExSuIIdAk/AZbTOjE0DdpB0U71EHclp/kDilNkhWhg0nUAAAAAElFTkSuQmCC',
|
|
69
|
-
'turn-off-stt':
|
|
70
|
-
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAECSURBVHgBzVQLEcIwDE25CZgDhoNJQMJQADiYA4YCcDAsoIA6GChYHQAKSnJLj1LaXvncwbt710/SlyzpCvAP0FrnxBTHFbIPcMs+JfLMLF2NzI6KQ4OskVdPPMVjhTTZkeDRK2g57YUQCt7ECL6MJEFuQhGxF6ZJqRlS3TqeS2vf1K+HoZ5PUbQvE86Qulrzemo6bN2MPFmQ7TXbWxaskBveq3wHooLss0B2+o4DiYecHwSdS906vjt3zyCDMNbW/AKJiAkW9oKbIPHSSxj+ppcF5549ylRGzoQFMZMJhEEPhUYuY4KmTtRJBXGMkSefQdgLFGrA/6kuKPjsk0fkd7gBEy7vamLyRFEAAAAASUVORK5CYII=',
|
|
71
|
-
'live-caption-mode':
|
|
72
|
-
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADUSURBVHgB5VPtDYIwEL0S/ssIHYERGEE3qBPoBuIGMgFsAk6iI7hBfadHUpsirZFfvOSlxx333RKtDmoUrLUax4nS8QDPSik+KXMMBqwoHUb4Qu4Z78i0pwRIZ8X4ndGfkVM4q8GhHdWFZwT90amGu+l836kKW0c+gCWCVfS5tJa+AQ412ItsA/YKvAX0PfvOVfgz8ikDso4tbcEdve9b4egNZqhiA/LV0SI38BsQiJfReP/EVRjanryEmmaw6Ay5gtKZUSw0eA0F7MS4oTQM4rtWPAFxAE4MEjNhpQAAAABJRU5ErkJggg==',
|
|
73
|
-
done: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABDSURBVHgB1c3BDQAgCAPAjuIIbKQjuJmjOIKjICS+TBPCkyZ99QhAvahqs64M3lZhoxB8KH7Ax/7hgeC9oxlidoQ6ue+PS8aRUCPDAAAAAElFTkSuQmCC',
|
|
74
|
-
chat_attachment_pdf:
|
|
75
|
-
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAEnklEQVR4Ae2dS2wTRxjH/+O4EXU5tBLlIVLEtoc+pFaBnlooQqJBbS8k6qUSlQhVUa9Vc6h6KlUPVQ8IOHNIDnCOufEUj/C6EFCQIByIw0sICaEIhYCQ8bBfFstrYyf2zuzO7Oz3kyztOrOR9/vN4xt7dhdgGIZhGIZhGCZrCGigVHqwFnk5DMhef/ddWERpaiq8e1UKuX/Lpk0jsIQcFAmCX7niB38zLAt+E3qFFMOnxsb+hiUoC/CDvxf2B74OWcFuWySoCwD6kUJskaBDQGqxQUKmBRCmJWReAGFSAgt4jSkJLCCECQksoIGkJbCAJiQpgQW0ICkJLGABkpDAAhYhbgksoA3ilMAC2iQuCSygA+KQwAI6RLcEFhABnRJYQERIwsmzZwehiPMCcrn4TlFA7IAizgvo7u5GbEhshiLOC3h/+fJYW4EqzgvI5/NY3dODQqEAG8kjA5CEFStXwkY4CzIMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzBMpHtFyMHv1kJiGFL0+nupuko+TPm9ZZhd9zVmtmxDVLwPVivdb6Pjg+eDXxFX0hz4RmbXb8CjH39BFFQFdN4FSbHXpeATS8fPY0npJkwQQYBM5b0hFqNwfRwm4EH4Nbnnz2CC+BZmFd4BtjZpLHNPgTtTwORE/fvLVgAbv32zfLUsHdfIJ1/4r8/RkkcPgXMnYDMxClgKDPzc+u8UnP3/+gG+FeyTgIXKFw8Co4fq36PgL3QMibNcQHJdEAWcXlUo4H/9H7SURqi2h8sS/X6gd/0B10hmbSgFc2gw2KaA/zoEfPlVsL2xDzhWrC9PreK/P4Nt6sa2/xZsU9mxE292X8SBPdbX9mYkPwhT7R6/WNtv1gLCkJzRg7X9ge1wCTNZ0GJBbyRcs9d8BJdIbnk6ZSzEp/7AuXWg9v74pcWPDY8HreTtGgpeYXZ8D9tJRkB1wG2keKiWBWUUMxdo0CA6drz9QXPNh7XtZvMBgsaV2+mTmVwWVM1qGtPLdvimr7Z9Y6J5mcsXUpkFJdcCogS+mqaGZ9TnjsMl7LxGjAbsPSPBbDo86FJKGk5hHcDei/Ro4K5C/f7RYvB1hGPEJ2ButjaBajVwhqEuarRJgBf6Mm7yWu2YOyWkkRgFPA3SzHYhAZ2UJ0jM5ATSTISZsJiBg1SWvA0TdC5AyKtwkOfexzBBBAHY6VoreLKhD3OfrYcJOhYgRo5MIyfXQYgiUg4tS6ElKY9/+AmmUH6GTOnufYkMk/yylEaEmEZ2Ue6K1QVITCOzCOWERMMPMvIMsorAYSiiLqD8Yh+ySpd6IqIswPM8vx8Up5ExcgIj3qpV01BEz2/CZeHPDeDkDLkFM5Wu3D/QgBYBnufXBCG1fKBU4J+rjtpPaFsV4fX0+GNBxXkJFf8cg3PVg5aHeYYp3bv3O6Sg2/o6tYQd1MVSzdcYfEK7AIIe8Cm7Xu4WQv3OsnbgJxl5sVNXt1P3nxEj809afUv2+5O1bTY+6rYlNLufn2C+PINyeV+Q6TEMwzAMwzAMw+jhFRM1de8F+M56AAAAAElFTkSuQmCC',
|
|
76
|
-
chat_attachment_doc:
|
|
77
|
-
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAFR0lEQVR4Ae2dTWwbRRTH/+OYUEUUIiSK26ZRjATi4EotXCJVCpa4IERpjsAB0lNz4ICEBBIg1RxAwIUgcSinRFzokYKEckG4LUW9oEaCA+JQG1pUjumHqjaNPd2X9ciTzdrb9ezuzNrvd2n98Zr4/d68+ai9BhiGYRiGYRiGGTUEEqDRuDaDolwG5CHv5iQconH5sn5zTQr51YtzcytwhAIM8ZPfvuQlvwrHkh/CISHF8i/nz5+EIxgL8JL/JdxP/DZkGzVXJJgLAOaRQ1yRkISA3OKChJEWQNiWMPICCJsSWEAHWxJYgIYNCSwgQNYSWEAIWUpgAT3ISgIL6EMWElhABGlLYAEPQJoSWMADkpYEFhCDNCSwgJgkLYEFDECSEljAgJCEn8+dW4AhQy+gUEjvJQqIt2DI0AsYHx9HakhUYcjQC3hiz55UR4EpQy+gWCxi/9QUJiYm4CJFjAAk4clSCS7CqyDLsADLsADLsADLsADLsADLsADLsADLsADLsADLsADLsADLsADLsADLsADLsADLsADLsADLsADLDHStiFJNztyTWJaAc9eGiMO+R1p45ZnbOPHcTQxK+cB+o+ttxA6m5G9IXEKOEx/kqCehNreOQTAVELsFeZWfu2tDRPHj3xP4/VqKb+DqQ2wBMqfXhoii/s8u2IAn4Q4379pJRSpvzHrdm5oPBJrUjTvAr03gz//7x05P+vGVEvCYV5TXvbif/gK+W4sX96/X0r+o+3+6TGoCjsyEP0YJObYSnpjFWeCTl3be//KzwHvV3nHvV/3HdY50fo9TF4EPV+EsqY87ShhVsYIqtb7oV6pOMPnXOyNGjzuz4Fe3TjD59PP0ONdJXcDb3wNPfQYcXuq2H0rip1qy6faJ2e7tz+t+DFU8xamqJwn68+i2nvwPVv3nqzhqWy5XP5HZzENJfHWlOxqoRR0sdf8+Pdl9HvVuPY4kKhY1AXryKdnfXOwd5yqZTv1qQlVUNAGKsMn2QrMrjkaLkqW3sahJ2lUyX3vpk6haKel9/UqPVYs+j6jnH9QERK2uXIX3AZbJXEBY1erVXenxOQp9lKhRpI+mipufv4gkUwHUu/V+r9qNPi+E7R9oPa8E6Mtamhv6xeWBzARQhX77WjeRtFb/ozMCaCSopNIIobW9IrjU1Fc6+sRLMYuBJSrtG1wfGbGPUh8/KWXUc35Y6FYkJZaOIfSjCbqvemp7CwluxOgxFadXP8XpLevreX+E9IoLiwnj6NPekfQL8c8tTI+jU/+QHiVB799U+R+t7jxSoCODR3d1q386cJZEo+XN0zsTSWt9uk9VfzCO2ltU8m2SigBqDcHjAKpKSuKFZu842oCdXvN3u6p1kKjfmv3X+bTbpUTTmZGKo7ZG9/X7eS6QmoBBoYQPcnxAiXY92WEMMgnHb5Q5YPfDbdggtgAhkNNNf3+eL23ABrEFtIDjGLJR8EblFqozdmbq2ALWa6LZFjgsBXJw1tiffbtbW29JeXf2Bmxh/B0yjSv/Re4LhpnM35ayAyGaGF2MW7G5AIkmRhZhvCBJ4CxInsWoInAGhpgL2NxYwqgyJowXIsYCyuWy1wdFHSNGQWClvHdvE4Ykcxy9KYZubxDBenus8DESIBEB5bJXCUIm8gvlAu+1JlH9RGL/IVOemvLmgvbQS2h7r9F/rcmQyJd56jSuXn0HUtBlfScxXKxvVX6CyScSF0DQF3zKsVZNCPMry7qBt8goiuNJtZ1t/zJSZOubVh+S895m7ZiLX3XbE9rdb20wW2exubnkr/QYhmEYhmEYhmGS4T4UntJm2xhgXwAAAABJRU5ErkJggg==',
|
|
78
|
-
chat_attachment_image:
|
|
79
|
-
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAFM0lEQVR4Ae2d22scVRzHv2d2djfZXBqLuaxJwLVoES1WHwQtlogPoiCWQnzxQUsFrw9SRPBBjX9AbX0QER/aBy2lguBLoRDRNkgebbWh9dJsIAkpMSbbbdbNbmZ3nDNxyybNbmd35sw5M/v7QCA7ZzjsfD/nnLmc2RmAIAiCIAiCIIhWg8ED0umFe6GbJwBzr/WxBwqRnp6u/njRZOZnz+zffxKKoMElG+GXf7HCH4Fi4W/DXmayEz9OTHwMRXAtwAr/GNQPfhNmGWOqSHAvADiAAKKKBC8EBBYVJLS0AI5sCS0vgCNTAgn4H1kSSEAVMiSQgC34LYEEbIOfEkhADfySQALq4IcEEnAHREsgAQ4QKYEEOESUBBLQACIkkIAG8VoCCWgCLyWQgCbhEn64cOFVuCT0AjRN3CYysFfgktALiMViEIaJEbgk9AJ6+/qE9gK3hF6ArusYHBpCIpGAiuhoAbiE/oEBqAgdBUmGBEiGBEiGBEiGBEiGBEiGBEiGBEiGBEiGBEiGBEjGl2tB2VIE4zfvwpKho1BW3/l98TU81XkD3ZESRCM8DR7+6ZVezBdjgQifM11ow+nlXvu7i0Z4IhOrOwITfDUFU8N4VvxP34Qnw1tTUFkyohAN7YTrwHuBaEiAZEiAZEiAZEI5J9zDruNg/CiS7C+0sRyulPbhbPF1ZEz15oVD1wN4+G+3vYmUdskOn/Ng5Gdr2Vt2mWqETsDzsS9vBV9NG1vFwdhRqIZSQ1A+O4n8jUn7/3jHQ2jvfgKa3t1IFXZrr0VSuwbVUEJA7p9zWJoZw3phdtPyaHwYXX2j2Dl8xHFda2an3dq3o9ZymUgfgpZnP8XC74dvC5/Dl/Fy/ueUhfKummVXjH1QDakCnIbL11n801kv+K74nt0LtsKXnV1/A6ohTcBSeqyhlp39+4wjCRmzH5+vfWEdej5pf+bBp8uP2Mt4mWr4vg8oG1l7vM8unkGjcAmcvvvri+NBnyqMIQj4KoCHP395FIV/p9AsTiUEBd+GIKMwh9lLz7oKvwKXsHD1sC006PgigIfPW/52RzrNkls+Z9fZrISIMY1YfhzRwiS00iJkIXwIKuSmcP3qa56Gf6tuqzdxCYMPf+v4hE0v/oq21a+gGZueJ4pSbA/yXUdQjvTBT4T3gPmpUSHhV6hIcNIT4rlvkMh8cFv4nEjxN3Qsv4Oo1Sv8RLgAP8bpigRjba7mOjz8eO5U3XqYmUP7zWO+SgjNxThbwtT2EpyEX42fEkJ1NZQPdVslNBp+Bb8khO5ydLWEZsOvwCWIJpQzYraEy89h9z3WDJgu8IfaHhDaOeH14gr+mLuGolGEyoR6Up6Hr7qE0N8VobqElrgtRWUJLXNfUEVCvpCHSggX0B7tgirYEubVkuBeAGMz9YoHdzwAlSiVS44lDHc/eqdVMnCJewEmZuoVv/zYR0r1Ao4TCbFIAo8PvFS/IrCLcIkHQ5B5vl7pzkQS7z/9NfYkR6AStSTw4Ps7duOFXR+iM3Z3/UoYvodLXL9HLJ1O91hnmytoRXQtlUomZ+AC1z0glUpZ4yD7CS2GxnDSbfh2PfACgx2CBzukAJEpR7RP4AGeCLD64Yw1m+HJFwoE1rZ60fo5np0HpIaGjlvzX6GXULa2cWNbvcGTl3lWk56bexcm44/1DdTrDR2QsVu+h+FzPBfA4S/4NCOlMcbcP1lWDayDDJ0d8mrY2VQzBGK/aTVqHrBO1l5U8VW3NeFn9/YJZuk8DOP4xpEeQRAEQRAEQRCEN/wHfTpF+u7LGxoAAAAASUVORK5CYII=',
|
|
80
|
-
chat_attachment_unknown:
|
|
81
|
-
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAADEElEQVR4Ae3dbU4TQRzH8d+0a5uQSDDKU1qU9QR4AULiAYSXvlJu4A3EE4gngHe+RA9gFDgAnIA2seILNTb4qk3bcbatSTFA2c5s/7O7v88r+oZ059tuZx8yCxARERERUd4oOFCrfV9FoPcAvWZezsEjtbOz0ZenWul3T9fX9+GJAiwNBr93YgZ/A54N/hXWlFZ7n4+PX8MT1gHM4L+F/wN/ie5hx5cI9gGATaSQLxFcBEgtHyLkOkBEOkLuA0QkIzDAkFQEBhghEYEB/jPtCAxwhWlGYIBrTCsCA9xgGhEYYIykIzDALSQZgQFuKakIDBBDEhEYICbXERhgAi4jMMCEogifjo5ewlLmAxQKyW2ignoBS5kPUCqVkBiNDVjKfID5hYVEvwW2Mh8gCAJUqlXMzMzARwFyIIqwuLQEH3EWJIwBhDGAMAYQxgDCGEAYAwhjAGEMIIwBhDGAMAYQxgDCGEAYAwhjAGEMIIwBhDGAsInWinh/cLCqdHHP/Ond2hBxlMslzN9/gEplGZMKVypW623Evig/HPwTpHjg/2m12micn6PVbuFxuAoJsXdBBQSpWxtinB8/f+Hi4g8kxA6gtU7l2hDj/G42IYE/wkOdThcSGEAYAwhjAGEMIIwBhDGAMAYQxgDCGEAYAwhjAGEMIIwBhDGAMAYQNkkAmSsXCQuCIiRMEuAUGTQ7excS4l+SVN1tZOxbsLS4gHtzMpe5Ywd4vrVVNxGeKIUPSLlyudy/JeXRwxVIsX6GTO3rN40cs70vyH4WpFQd+WW9K7YPoFFHbinrCYmD4wB9iLxS+AhL9gE67V3kVVFZT0SsA4RhaPaD6gtypqCwHy4v12HJzamIjsrcscEYzV6x8AYOOAkQhuaToLSTN5QKZltdfPojzk7GhdWq+S3oZT5Cz2zjYFvdcPIwz1G1RuOVOV8RLeubqVvYEe1io0++w8GPOA8QiR7wqYvdHaXsV5b1g5lkBGrb1W7n0n9GgvpPWr2jN83B2jMfH3V7rejovn+A2T1Ep7M7mOkRERERERG58RfsH+jT00AlhAAAAABJRU5ErkJggg==',
|
|
82
|
-
chat_emoji_fill:
|
|
83
|
-
'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzUwNTFfNTQ5MjApIj4KPG1hc2sgaWQ9Im1hc2swXzUwNTFfNTQ5MjAiIHN0eWxlPSJtYXNrLXR5cGU6YWxwaGEiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjAiIHk9IjAiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+CjxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0iI0Q5RDlEOSIvPgo8L21hc2s+CjxnIG1hc2s9InVybCgjbWFzazBfNTA1MV81NDkyMCkiPgo8cGF0aCBkPSJNMjEgMTJDMjEgMTYuOTcwNiAxNi45NzA2IDIxIDEyIDIxQzcuMDI5NDQgMjEgMyAxNi45NzA2IDMgMTJDMyA3LjAyOTQ0IDcuMDI5NDQgMyAxMiAzQzE2Ljk3MDYgMyAyMSA3LjAyOTQ0IDIxIDEyWiIgZmlsbD0iI0ZGQUIwMCIvPgo8cGF0aCBkPSJNOS41NDUwMyAyMS4xNjg1QzguMjc3IDIwLjgyODggNy4xNDk1OSAyMC4yNjg4IDYuMTYyOCAxOS40ODg2QzUuMTc1OTkgMTguNzA4MyA0LjM4MDQ0IDE3Ljc5NTIgMy43NzYxNSAxNi43NDkxQzMuMTcxODUgMTUuNzAyOSAyLjc3ODM5IDE0LjU1NzcgMi41OTU3NyAxMy4zMTM1QzIuNDEzMTQgMTIuMDY5MiAyLjQ5MTcxIDEwLjgxMzEgMi44MzE0OCA5LjU0NTAzQzMuMTcxMjUgOC4yNzcgMy43MzEyNCA3LjE0OTU5IDQuNTExNDQgNi4xNjI4QzUuMjkxNjYgNS4xNzU5OSA2LjIwNDgyIDQuMzgwNDQgNy4yNTA5NCAzLjc3NjE1QzguMjk3MDggMy4xNzE4NSA5LjQ0MjI4IDIuNzc4MzkgMTAuNjg2NSAyLjU5NTc3QzExLjkzMDggMi40MTMxNCAxMy4xODY5IDIuNDkxNzEgMTQuNDU1IDIuODMxNDhDMTUuNzIzIDMuMTcxMjUgMTYuODUwNCAzLjczMTI0IDE3LjgzNzIgNC41MTE0NEMxOC44MjQgNS4yOTE2NiAxOS42MTk2IDYuMjA0ODIgMjAuMjIzOCA3LjI1MDk0QzIwLjgyODEgOC4yOTcwOCAyMS4yMjE2IDkuNDQyMjggMjEuNDA0MiAxMC42ODY1QzIxLjU4NjkgMTEuOTMwOCAyMS41MDgzIDEzLjE4NjkgMjEuMTY4NSAxNC40NTVDMjAuODI4OCAxNS43MjMgMjAuMjY4OCAxNi44NTA0IDE5LjQ4ODYgMTcuODM3MkMxOC43MDgzIDE4LjgyNCAxNy43OTUyIDE5LjYxOTYgMTYuNzQ5MSAyMC4yMjM4QzE1LjcwMjkgMjAuODI4MSAxNC41NTc3IDIxLjIyMTYgMTMuMzEzNSAyMS40MDQyQzEyLjA2OTIgMjEuNTg2OSAxMC44MTMxIDIxLjUwODMgOS41NDUwMyAyMS4xNjg1Wk05LjkzMTI5IDE5LjcyMDVDMTIuMDg2NiAyMC4yOTggMTQuMTEyNiAyMC4wMzkzIDE2LjAwOTMgMTguOTQ0MkMxNy45MDU5IDE3Ljg0OTIgMTkuMTQzIDE2LjIyNCAxOS43MjA1IDE0LjA2ODdDMjAuMjk4IDExLjkxMzQgMjAuMDM5MyA5Ljg4NzQxIDE4Ljk0NDIgNy45OTA3NUMxNy44NDkyIDYuMDk0MDkgMTYuMjI0IDQuODU3IDE0LjA2ODcgNC4yNzk0OUMxMS45MTM0IDMuNzAxOTcgOS44ODc0MSAzLjk2MDczIDcuOTkwNzUgNS4wNTU3N0M2LjA5NDA5IDYuMTUwODEgNC44NTcgNy43NzU5OCA0LjI3OTQ5IDkuOTMxMjlDMy43MDE5NyAxMi4wODY2IDMuOTYwNzMgMTQuMTEyNiA1LjA1NTc3IDE2LjAwOTNDNi4xNTA4MSAxNy45MDU5IDcuNzc1OTggMTkuMTQzIDkuOTMxMjkgMTkuNzIwNVpNMTAuNjU3MyAxNy4wMTA5QzExLjUyMzUgMTcuMjQzIDEyLjM3NzUgMTcuMjUyIDEzLjIxOTEgMTcuMDM3OUMxNC4wNjA4IDE2LjgyMzkgMTQuODA0MiAxNi40MjY2IDE1LjQ0OTMgMTUuODQ2M0MxNS41ODc3IDE1LjY5NTEgMTUuNjMyMSAxNS41MTc3IDE1LjU4MjYgMTUuMzE0MUMxNS41MzMgMTUuMTEwNSAxNS40MDQ5IDE0Ljk4MSAxNS4xOTgzIDE0LjkyNTdMNy43NjczNSAxMi45MzQ2QzcuNTYwNzMgMTIuODc5MiA3LjM4NTA3IDEyLjkyNzMgNy4yNDAzNiAxMy4wNzg4QzcuMDk1NjcgMTMuMjMwMyA3LjA0NTQ1IDEzLjQwNjIgNy4wODk3MiAxMy42MDYzQzcuMzU4MTggMTQuNDMxNSA3LjgwNzA4IDE1LjE0ODIgOC40MzY0MiAxNS43NTY0QzkuMDY1NzggMTYuMzY0NiA5LjgwNjA5IDE2Ljc4MjggMTAuNjU3MyAxNy4wMTA5WiIgZmlsbD0iIzExMTExMSIvPgo8cGF0aCBkPSJNMTAuNzQ2MiAxMC4yNTY2QzEwLjQzNTcgMTAuNTY5NiAxMC4wNTU2IDEwLjcyNjEgOS42MDU5OCAxMC43MjYxQzkuMTU2MzQgMTAuNzI2MSA4Ljc3NjI3IDEwLjU3MDggOC40NjU3NSAxMC4yNjAzQzguMTU1MjUgOS45NDk4MiA4IDkuNTY3NCA4IDkuMTEzMDVDOCA4LjY1ODcgOC4xNTUyNSA4LjI3NjI3IDguNDY1NzUgNy45NjU3N0M4Ljc3NjI3IDcuNjU1MjYgOS4xNTg3IDcuNSA5LjYxMzA1IDcuNUMxMC4wNTcyIDcuNSAxMC40MzQ3IDcuNjU3NjEgMTAuNzQ1NiA3Ljk3MjgyQzExLjA1NjUgOC4yODgwNCAxMS4yMTIgOC42NjkyMiAxMS4yMTIgOS4xMTYzN0MxMS4yMTIgOS41NjM1MiAxMS4wNTY3IDkuOTQzNiAxMC43NDYyIDEwLjI1NjZaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMTYuNzQ2MiAxMS43NTY2QzE2LjQzNTcgMTIuMDY5NiAxNi4wNTU2IDEyLjIyNjEgMTUuNjA2IDEyLjIyNjFDMTUuMTU2MyAxMi4yMjYxIDE0Ljc3NjMgMTIuMDcwOCAxNC40NjU4IDExLjc2MDNDMTQuMTU1MyAxMS40NDk4IDE0IDExLjA2NzQgMTQgMTAuNjEzQzE0IDEwLjE1ODcgMTQuMTU1MyA5Ljc3NjI3IDE0LjQ2NTggOS40NjU3N0MxNC43NzYzIDkuMTU1MjYgMTUuMTU4NyA5IDE1LjYxMyA5QzE2LjA1NzIgOSAxNi40MzQ3IDkuMTU3NjEgMTYuNzQ1NiA5LjQ3MjgyQzE3LjA1NjUgOS43ODgwNCAxNy4yMTIgMTAuMTY5MiAxNy4yMTIgMTAuNjE2NEMxNy4yMTIgMTEuMDYzNSAxNy4wNTY3IDExLjQ0MzYgMTYuNzQ2MiAxMS43NTY2WiIgZmlsbD0iYmxhY2siLz4KPC9nPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzUwNTFfNTQ5MjAiPgo8cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==',
|
|
84
|
-
chat_emoji:
|
|
85
|
-
'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPG1hc2sgaWQ9Im1hc2swXzUwNTFfNTQ5MDMiIHN0eWxlPSJtYXNrLXR5cGU6YWxwaGEiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjAiIHk9IjAiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+CjxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0iI0Q5RDlEOSIvPgo8L21hc2s+CjxnIG1hc2s9InVybCgjbWFzazBfNTA1MV81NDkwMykiPgo8cGF0aCBkPSJNMTUuNDA2MSAxMC44MDc3QzE1Ljc2OTkgMTAuODA3NyAxNi4wNzg1IDEwLjY4MDMgMTYuMzMxNyAxMC40MjU2QzE2LjU4NDkgMTAuMTcwOSAxNi43MTE1IDkuODYxNTggMTYuNzExNSA5LjQ5NzdDMTYuNzExNSA5LjEzMzgzIDE2LjU4NDEgOC44MjUzIDE2LjMyOTQgOC41NzIxQzE2LjA3NDcgOC4zMTg5IDE1Ljc2NTQgOC4xOTIzIDE1LjQwMTYgOC4xOTIzQzE1LjAzNzcgOC4xOTIzIDE0LjcyOTIgOC4zMTk2NiAxNC40NzYgOC41NzQzOEMxNC4yMjI3IDguODI5MDggMTQuMDk2MSA5LjEzODM3IDE0LjA5NjEgOS41MDIyNUMxNC4wOTYxIDkuODY2MTIgMTQuMjIzNSAxMC4xNzQ3IDE0LjQ3ODIgMTAuNDI3OUMxNC43MzI5IDEwLjY4MTEgMTUuMDQyMiAxMC44MDc3IDE1LjQwNjEgMTAuODA3N1pNOC41OTg0IDEwLjgwNzdDOC45NjIyNyAxMC44MDc3IDkuMjcwOCAxMC42ODAzIDkuNTI0IDEwLjQyNTZDOS43NzcyMiAxMC4xNzA5IDkuOTAzODMgOS44NjE1OCA5LjkwMzgzIDkuNDk3N0M5LjkwMzgzIDkuMTMzODMgOS43NzY0NyA4LjgyNTMgOS41MjE3NSA4LjU3MjFDOS4yNjcwMyA4LjMxODkgOC45NTc3NCA4LjE5MjMgOC41OTM4OCA4LjE5MjNDOC4yMzAwMSA4LjE5MjMgNy45MjE0NyA4LjMxOTY2IDcuNjY4MjUgOC41NzQzOEM3LjQxNTA1IDguODI5MDggNy4yODg0NSA5LjEzODM3IDcuMjg4NDUgOS41MDIyNUM3LjI4ODQ1IDkuODY2MTIgNy40MTU4MSAxMC4xNzQ3IDcuNjcwNTMgMTAuNDI3OUM3LjkyNTI0IDEwLjY4MTEgOC4yMzQ1MyAxMC44MDc3IDguNTk4NCAxMC44MDc3Wk0xMi4wMDE2IDIxLjVDMTAuNjg3NyAyMS41IDkuNDUyNjggMjEuMjUwNiA4LjI5NjU1IDIwLjc1MkM3LjE0MDQgMjAuMjUzMyA2LjEzNDcyIDE5LjU3NjUgNS4yNzk1IDE4LjcyMTdDNC40MjQyNyAxNy44NjY5IDMuNzQ3MjEgMTYuODYxNiAzLjI0ODMzIDE1LjcwNkMyLjc0OTQ0IDE0LjU1MDQgMi41IDEzLjMxNTYgMi41IDEyLjAwMTdDMi41IDEwLjY4NzcgMi43NDkzMyA5LjQ1MjY4IDMuMjQ4IDguMjk2NTVDMy43NDY2NyA3LjE0MDQgNC40MjM0MiA2LjEzNDcyIDUuMjc4MjUgNS4yNzk1QzYuMTMzMSA0LjQyNDI3IDcuMTM4MzQgMy43NDcyMSA4LjI5Mzk4IDMuMjQ4MzNDOS40NDk1OSAyLjc0OTQ0IDEwLjY4NDQgMi41IDExLjk5ODMgMi41QzEzLjMxMjIgMi41IDE0LjU0NzMgMi43NDkzMyAxNS43MDM0IDMuMjQ4QzE2Ljg1OTYgMy43NDY2NyAxNy44NjUyIDQuNDIzNDIgMTguNzIwNSA1LjI3ODI1QzE5LjU3NTcgNi4xMzMxIDIwLjI1MjcgNy4xMzgzNCAyMC43NTE2IDguMjkzOThDMjEuMjUwNSA5LjQ0OTU5IDIxLjUgMTAuNjg0NCAyMS41IDExLjk5ODNDMjEuNSAxMy4zMTIyIDIxLjI1MDYgMTQuNTQ3MyAyMC43NTIgMTUuNzAzNEMyMC4yNTMzIDE2Ljg1OTYgMTkuNTc2NSAxNy44NjUyIDE4LjcyMTcgMTguNzIwNUMxNy44NjY5IDE5LjU3NTcgMTYuODYxNiAyMC4yNTI3IDE1LjcwNiAyMC43NTE2QzE0LjU1MDQgMjEuMjUwNSAxMy4zMTU2IDIxLjUgMTIuMDAxNiAyMS41Wk0xMiAyMEMxNC4yMzMzIDIwIDE2LjEyNSAxOS4yMjUgMTcuNjc1IDE3LjY3NUMxOS4yMjUgMTYuMTI1IDIwIDE0LjIzMzMgMjAgMTJDMjAgOS43NjY2NCAxOS4yMjUgNy44NzQ5OCAxNy42NzUgNi4zMjQ5OEMxNi4xMjUgNC43NzQ5OCAxNC4yMzMzIDMuOTk5OTggMTIgMy45OTk5OEM5Ljc2NjY0IDMuOTk5OTggNy44NzQ5OCA0Ljc3NDk4IDYuMzI0OTggNi4zMjQ5OEM0Ljc3NDk4IDcuODc0OTggMy45OTk5OCA5Ljc2NjY0IDMuOTk5OTggMTJDMy45OTk5OCAxNC4yMzMzIDQuNzc0OTggMTYuMTI1IDYuMzI0OTggMTcuNjc1QzcuODc0OTggMTkuMjI1IDkuNzY2NjQgMjAgMTIgMjBaTTEyIDE3LjE5MjNDMTIuODk3NSAxNy4xOTIzIDEzLjcyNTQgMTYuOTc5OCAxNC40ODM3IDE2LjU1NDhDMTUuMjQyIDE2LjEyOTggMTUuODU3OCAxNS41NTMyIDE2LjMzMTEgMTQuODI1QzE2LjQyNTcgMTQuNjQyOSAxNi40MjI3IDE0LjQ1OTkgMTYuMzIyMSAxNC4yNzU5QzE2LjIyMTQgMTQuMDkyIDE2LjA2NDEgMTQgMTUuODUgMTRIOC4xNUM3LjkzNTkgMTQgNy43Nzg1MiAxNC4wOTIgNy42Nzc4OCAxNC4yNzU5QzcuNTc3MjQgMTQuNDU5OSA3LjU3NDI1IDE0LjY0MjkgNy42Njg5IDE0LjgyNUM4LjE0MjIgMTUuNTUzMiA4Ljc2MTg1IDE2LjEyOTggOS41Mjc4NSAxNi41NTQ4QzEwLjI5MzkgMTYuOTc5OCAxMS4xMTc5IDE3LjE5MjMgMTIgMTcuMTkyM1oiIGZpbGw9IndoaXRlIi8+CjwvZz4KPC9zdmc+Cg==',
|
|
86
35
|
};
|
|
87
36
|
|
|
88
37
|
export default icons;
|
|
@@ -3,24 +3,22 @@ import PropsContext from '../../Contexts/PropsContext';
|
|
|
3
3
|
import RtcContext from '../../Contexts/RtcContext';
|
|
4
4
|
import BtnTemplate from '../BtnTemplate';
|
|
5
5
|
import styles from '../../Style';
|
|
6
|
-
import DispatchContext from '../../Contexts/DispatchContext';
|
|
7
6
|
|
|
8
|
-
interface EndCallProps
|
|
9
|
-
btnText?: string
|
|
7
|
+
interface EndCallProps{
|
|
8
|
+
btnText?: string
|
|
10
9
|
}
|
|
11
10
|
|
|
12
11
|
function EndCall(props?: EndCallProps) {
|
|
13
12
|
const {styleProps} = useContext(PropsContext);
|
|
14
13
|
const {localBtnStyles} = styleProps || {};
|
|
15
14
|
const {endCall} = localBtnStyles || {};
|
|
16
|
-
const {dispatch} = useContext(
|
|
15
|
+
const {dispatch} = useContext(RtcContext);
|
|
17
16
|
|
|
18
17
|
return (
|
|
19
18
|
<BtnTemplate
|
|
20
|
-
//@ts-ignore
|
|
21
19
|
name={'callEnd'}
|
|
22
20
|
btnText={props?.btnText || 'Hang Up'}
|
|
23
|
-
color=
|
|
21
|
+
color='#FD0845'
|
|
24
22
|
style={{...styles.endCall, ...(endCall as object)}}
|
|
25
23
|
onPress={() =>
|
|
26
24
|
dispatch({
|
|
@@ -3,16 +3,14 @@ import PropsContext from '../../Contexts/PropsContext';
|
|
|
3
3
|
import RtcContext from '../../Contexts/RtcContext';
|
|
4
4
|
import BtnTemplate from '../BtnTemplate';
|
|
5
5
|
import styles from '../../Style';
|
|
6
|
-
import DispatchContext from '../../Contexts/DispatchContext';
|
|
7
6
|
|
|
8
7
|
function FullScreen() {
|
|
9
8
|
const {styleProps} = useContext(PropsContext);
|
|
10
9
|
const {localBtnStyles} = styleProps || {};
|
|
11
10
|
const {fullScreen} = localBtnStyles || {};
|
|
12
|
-
const {dispatch} = useContext(
|
|
11
|
+
const {dispatch} = useContext(RtcContext);
|
|
13
12
|
return (
|
|
14
13
|
<BtnTemplate
|
|
15
|
-
//@ts-ignore
|
|
16
14
|
name={'fullscreen'}
|
|
17
15
|
style={{...styles.localBtn, ...(fullScreen as object)}}
|
|
18
16
|
onPress={() => {
|
|
@@ -4,7 +4,6 @@ import RtcContext from '../../Contexts/RtcContext';
|
|
|
4
4
|
import BtnTemplate from '../BtnTemplate';
|
|
5
5
|
import styles from '../../Style';
|
|
6
6
|
import {LocalContext} from '../../Contexts/LocalUserContext';
|
|
7
|
-
import DispatchContext from '../../Contexts/DispatchContext';
|
|
8
7
|
|
|
9
8
|
interface LocalAudioMuteProps {
|
|
10
9
|
btnText?: string;
|
|
@@ -16,13 +15,11 @@ function LocalAudioMute(props: LocalAudioMuteProps) {
|
|
|
16
15
|
const {localBtnStyles, remoteBtnStyles} = styleProps || {};
|
|
17
16
|
const {muteLocalAudio} = localBtnStyles || {};
|
|
18
17
|
const {muteRemoteAudio} = remoteBtnStyles || {};
|
|
19
|
-
const {
|
|
20
|
-
const {dispatch} = useContext(DispatchContext);
|
|
18
|
+
const {RtcEngine, dispatch} = useContext(RtcContext);
|
|
21
19
|
const local = useContext(LocalContext);
|
|
22
20
|
|
|
23
21
|
return (
|
|
24
22
|
<BtnTemplate
|
|
25
|
-
//@ts-ignore
|
|
26
23
|
name={local.audio === ToggleState.enabled ? 'mic' : 'micOff'}
|
|
27
24
|
btnText={btnText}
|
|
28
25
|
style={{
|
|
@@ -49,7 +46,7 @@ function LocalAudioMute(props: LocalAudioMuteProps) {
|
|
|
49
46
|
});
|
|
50
47
|
|
|
51
48
|
try {
|
|
52
|
-
await
|
|
49
|
+
await RtcEngine.muteLocalAudioStream(
|
|
53
50
|
localState === ToggleState.enabled,
|
|
54
51
|
);
|
|
55
52
|
// Enable UI
|
|
@@ -4,7 +4,6 @@ import RtcContext from '../../Contexts/RtcContext';
|
|
|
4
4
|
import BtnTemplate from '../BtnTemplate';
|
|
5
5
|
import styles from '../../Style';
|
|
6
6
|
import {LocalContext} from '../../Contexts/LocalUserContext';
|
|
7
|
-
import DispatchContext from '../../Contexts/DispatchContext';
|
|
8
7
|
|
|
9
8
|
interface LocalVideoMuteProps {
|
|
10
9
|
btnText?: string;
|
|
@@ -17,13 +16,11 @@ function LocalVideoMute(props: LocalVideoMuteProps) {
|
|
|
17
16
|
const {localBtnStyles, remoteBtnStyles} = styleProps || {};
|
|
18
17
|
const {muteLocalVideo} = localBtnStyles || {};
|
|
19
18
|
const {muteRemoteVideo} = remoteBtnStyles || {};
|
|
20
|
-
const {
|
|
21
|
-
const {dispatch} = useContext(DispatchContext);
|
|
19
|
+
const {RtcEngine, dispatch} = useContext(RtcContext);
|
|
22
20
|
const local = useContext(LocalContext);
|
|
23
21
|
|
|
24
22
|
return (
|
|
25
23
|
<BtnTemplate
|
|
26
|
-
//@ts-ignore
|
|
27
24
|
name={local.video === ToggleState.enabled ? 'videocam' : 'videocamOff'}
|
|
28
25
|
btnText={btnText}
|
|
29
26
|
style={{
|
|
@@ -50,7 +47,7 @@ function LocalVideoMute(props: LocalVideoMuteProps) {
|
|
|
50
47
|
});
|
|
51
48
|
|
|
52
49
|
try {
|
|
53
|
-
await
|
|
50
|
+
await RtcEngine.muteLocalVideoStream(
|
|
54
51
|
localState === ToggleState.enabled ? true : false,
|
|
55
52
|
);
|
|
56
53
|
console.log('muted video', localState);
|