agora-appbuilder-core 4.0.0-beta.57 → 4.0.0-beta.58
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/src/components/HostControlView.tsx +9 -4
- package/template/src/components/ParticipantsView.tsx +14 -6
- package/template/src/components/RTMConfigure.tsx +1 -8
- package/template/src/components/SettingsView.tsx +6 -2
- package/template/src/components/chat-messages/useChatMessages.tsx +26 -17
- package/template/src/components/livestream/LiveStreamContext.tsx +10 -3
- package/template/src/components/livestream/Types.ts +24 -11
- package/template/src/components/livestream/views/LiveStreamAttendeeLandingTile.tsx +31 -11
- package/template/src/components/meeting-info-invite/MeetingInfoGridTile.tsx +10 -13
- package/template/src/components/participants/AllAudienceParticipants.tsx +4 -5
- package/template/src/components/participants/AllHostParticipants.tsx +5 -6
- package/template/src/components/participants/Participant.tsx +9 -2
- package/template/src/components/participants/UserActionMenuOptions.tsx +38 -24
- package/template/src/components/participants/WaitingRoomParticipants.tsx +10 -3
- package/template/src/components/popups/InvitePopup.tsx +8 -3
- package/template/src/components/popups/StartScreenSharePopup.native.tsx +22 -25
- package/template/src/components/popups/StopRecordingPopup.tsx +10 -4
- package/template/src/components/popups/StopScreenSharePopup.native.tsx +14 -4
- package/template/src/components/popups/WhiteboardClearAllPopup.tsx +12 -4
- package/template/src/components/useUserPreference.tsx +9 -9
- package/template/src/components/virtual-background/VBButton.tsx +3 -1
- package/template/src/components/virtual-background/VBCard.native.tsx +26 -6
- package/template/src/components/virtual-background/VBCard.tsx +26 -6
- package/template/src/components/virtual-background/VBPanel.tsx +8 -4
- package/template/src/components/virtual-background/VideoPreview.native.tsx +2 -1
- package/template/src/components/virtual-background/VideoPreview.tsx +2 -1
- package/template/src/components/whiteboard/StrokeWidthTool.tsx +4 -2
- package/template/src/components/whiteboard/WhiteboardToolBox.tsx +60 -22
- package/template/src/components/whiteboard/WhiteboardView.tsx +2 -1
- package/template/src/components/whiteboard/WhiteboardWidget.tsx +50 -15
- package/template/src/language/default-labels/commonLabels.ts +3 -2
- package/template/src/language/default-labels/precallScreenLabels.ts +3 -0
- package/template/src/language/default-labels/videoCallScreenLabels.ts +675 -287
- package/template/src/pages/video-call/DefaultLayouts.ts +6 -2
- package/template/src/pages/video-call/NameWithMicIcon.tsx +3 -3
- package/template/src/pages/video-call/SidePanelHeader.tsx +15 -7
- package/template/src/subComponents/ChatBubble.tsx +2 -3
- package/template/src/subComponents/ChatContainer.tsx +4 -8
- package/template/src/subComponents/ChatInput.ios.tsx +8 -2
- package/template/src/subComponents/ChatInput.tsx +8 -2
- package/template/src/subComponents/EndcallPopup.tsx +15 -14
- package/template/src/subComponents/LanguageSelector.tsx +2 -1
- package/template/src/subComponents/LayoutIconDropdown.tsx +8 -4
- package/template/src/subComponents/NetworkQualityPill.tsx +5 -2
- package/template/src/subComponents/RemoteAudioMute.tsx +3 -3
- package/template/src/subComponents/RemoteMutePopup.tsx +23 -9
- package/template/src/subComponents/RemoteVideoMute.tsx +3 -3
- package/template/src/subComponents/RemoveMeetingPopup.tsx +10 -6
- package/template/src/subComponents/RemoveScreensharePopup.tsx +10 -4
- package/template/src/subComponents/caption/Caption.tsx +2 -1
- package/template/src/subComponents/caption/CaptionContainer.tsx +7 -3
- package/template/src/subComponents/caption/DownloadTranscriptBtn.tsx +2 -1
- package/template/src/subComponents/caption/LanguageSelectorPopup.tsx +16 -7
- package/template/src/subComponents/caption/Transcript.tsx +2 -1
- package/template/src/subComponents/chat/ChatParticipants.tsx +6 -4
- package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +0 -9
- package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +0 -5
- package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +1 -6
package/package.json
CHANGED
|
@@ -17,6 +17,11 @@ import TertiaryButton from '../atoms/TertiaryButton';
|
|
|
17
17
|
import Spacer from '../atoms/Spacer';
|
|
18
18
|
import RemoteMutePopup from '../subComponents/RemoteMutePopup';
|
|
19
19
|
import {calculatePosition} from '../utils/common';
|
|
20
|
+
import {
|
|
21
|
+
I18nMuteType,
|
|
22
|
+
peoplePanelMuteAllMicBtnText,
|
|
23
|
+
peoplePanelTurnoffAllCameraBtnText,
|
|
24
|
+
} from '../language/default-labels/videoCallScreenLabels';
|
|
20
25
|
|
|
21
26
|
export interface MuteAllAudioButtonProps {
|
|
22
27
|
render?: (onPress: () => void) => JSX.Element;
|
|
@@ -27,7 +32,7 @@ export const MuteAllAudioButton = (props: MuteAllAudioButtonProps) => {
|
|
|
27
32
|
const audioBtnRef = useRef(null);
|
|
28
33
|
const [modalPosition, setModalPosition] = useState({});
|
|
29
34
|
const muteRemoteAudio = useRemoteMute();
|
|
30
|
-
const muteAllAudioButton = useString(
|
|
35
|
+
const muteAllAudioButton = useString(peoplePanelMuteAllMicBtnText)();
|
|
31
36
|
const onPressAction = () => muteRemoteAudio(MUTE_REMOTE_TYPE.audio);
|
|
32
37
|
const {width: globalWidth, height: globalHeight} = useWindowDimensions();
|
|
33
38
|
const showAudioModal = () => {
|
|
@@ -60,7 +65,7 @@ export const MuteAllAudioButton = (props: MuteAllAudioButtonProps) => {
|
|
|
60
65
|
) : (
|
|
61
66
|
<>
|
|
62
67
|
<RemoteMutePopup
|
|
63
|
-
type=
|
|
68
|
+
type={I18nMuteType.audio}
|
|
64
69
|
actionMenuVisible={showAudioMuteModal}
|
|
65
70
|
setActionMenuVisible={setShowAudioMuteModal}
|
|
66
71
|
name={null}
|
|
@@ -88,7 +93,7 @@ export const MuteAllVideoButton = (props: MuteAllVideoButtonProps) => {
|
|
|
88
93
|
const [modalPosition, setModalPosition] = useState({});
|
|
89
94
|
const muteRemoteVideo = useRemoteMute();
|
|
90
95
|
const {width: globalWidth, height: globalHeight} = useWindowDimensions();
|
|
91
|
-
const muteAllVideoButton = useString(
|
|
96
|
+
const muteAllVideoButton = useString(peoplePanelTurnoffAllCameraBtnText)();
|
|
92
97
|
const onPressAction = () => muteRemoteVideo(MUTE_REMOTE_TYPE.video);
|
|
93
98
|
const showVideoModal = () => {
|
|
94
99
|
videoBtnRef?.current?.measure(
|
|
@@ -120,7 +125,7 @@ export const MuteAllVideoButton = (props: MuteAllVideoButtonProps) => {
|
|
|
120
125
|
) : (
|
|
121
126
|
<>
|
|
122
127
|
<RemoteMutePopup
|
|
123
|
-
type=
|
|
128
|
+
type={I18nMuteType.video}
|
|
124
129
|
actionMenuVisible={showVideoMuteModal}
|
|
125
130
|
setActionMenuVisible={setShowVideoMuteModal}
|
|
126
131
|
name={null}
|
|
@@ -41,6 +41,14 @@ import {getGridLayoutName} from '../pages/video-call/DefaultLayouts';
|
|
|
41
41
|
import {PeopleHeader} from '../pages/video-call/SidePanelHeader';
|
|
42
42
|
import useCaptionWidth from '../../src/subComponents/caption/useCaptionWidth';
|
|
43
43
|
import WaitingRoomParticipants from './participants/WaitingRoomParticipants';
|
|
44
|
+
import {
|
|
45
|
+
peoplePanelAudienceSectionHeaderText,
|
|
46
|
+
peoplePanelHostSectionHeaderText,
|
|
47
|
+
peoplePanelInThisMeetingLabel,
|
|
48
|
+
peoplePanelNoAudienceJoinedContent,
|
|
49
|
+
peoplePanelNoHostJoinedContent,
|
|
50
|
+
peoplePanelNoUsersJoinedContent,
|
|
51
|
+
} from '../../src/language/default-labels/videoCallScreenLabels';
|
|
44
52
|
|
|
45
53
|
const ParticipantView = props => {
|
|
46
54
|
const {activeUids, customContent, defaultContent} = useContent();
|
|
@@ -53,12 +61,12 @@ const ParticipantView = props => {
|
|
|
53
61
|
const {sidePanel, setSidePanel} = useSidePanel();
|
|
54
62
|
const {rtcProps} = useContext(PropsContext);
|
|
55
63
|
const {showHeader = true} = props;
|
|
56
|
-
const hostLabel = useString(
|
|
57
|
-
const audienceLabel = useString(
|
|
58
|
-
const meetingParticpantsLabel = useString(
|
|
59
|
-
const noHostJoinedYet = useString(
|
|
60
|
-
const noAudienceJoinedYet = useString(
|
|
61
|
-
const noUsersJoinedYet = useString(
|
|
64
|
+
const hostLabel = useString(peoplePanelHostSectionHeaderText)();
|
|
65
|
+
const audienceLabel = useString(peoplePanelAudienceSectionHeaderText)();
|
|
66
|
+
const meetingParticpantsLabel = useString(peoplePanelInThisMeetingLabel)();
|
|
67
|
+
const noHostJoinedYet = useString(peoplePanelNoHostJoinedContent)();
|
|
68
|
+
const noAudienceJoinedYet = useString(peoplePanelNoAudienceJoinedContent)();
|
|
69
|
+
const noUsersJoinedYet = useString(peoplePanelNoUsersJoinedContent)();
|
|
62
70
|
const {
|
|
63
71
|
data: {isHost},
|
|
64
72
|
} = useRoomInfo();
|
|
@@ -42,6 +42,7 @@ import {useRoomInfo} from '../components/room-info/useRoomInfo';
|
|
|
42
42
|
import LocalEventEmitter, {
|
|
43
43
|
LocalEventsEnum,
|
|
44
44
|
} from '../rtm-events-api/LocalEvents';
|
|
45
|
+
import {PSTNUserLabel} from '../language/default-labels/videoCallScreenLabels';
|
|
45
46
|
export enum UserType {
|
|
46
47
|
ScreenShare = 'screenshare',
|
|
47
48
|
}
|
|
@@ -75,14 +76,6 @@ const RtmConfigure = (props: any) => {
|
|
|
75
76
|
const [hasUserJoinedRTM, setHasUserJoinedRTM] = useState<boolean>(false);
|
|
76
77
|
const [onlineUsersCount, setTotalOnlineUsers] = useState<number>(0);
|
|
77
78
|
|
|
78
|
-
//commented for v1 release
|
|
79
|
-
// const userText = useString('remoteUserDefaultLabel')();
|
|
80
|
-
const userText = 'User';
|
|
81
|
-
const pstnUserLabel = useString('pstnUserLabel')();
|
|
82
|
-
//commented for v1 release
|
|
83
|
-
//const getScreenShareName = useString('screenshareUserName');
|
|
84
|
-
const getScreenShareName = (name: string) => `${name}'s screenshare`;
|
|
85
|
-
|
|
86
79
|
let engine = useRef<RtmEngine>(null!);
|
|
87
80
|
const timerValueRef: any = useRef(5);
|
|
88
81
|
|
|
@@ -49,11 +49,15 @@ import {whiteboardContext} from './whiteboard/WhiteboardConfigure';
|
|
|
49
49
|
import InlineNotification from '../../src/atoms/InlineNotification';
|
|
50
50
|
import {useRoomInfo} from './room-info/useRoomInfo';
|
|
51
51
|
import {useString} from '../../src/utils/useString';
|
|
52
|
+
import {
|
|
53
|
+
settingPanelNameCantbeChangedInfo,
|
|
54
|
+
settingPanelNameInputLabel,
|
|
55
|
+
} from '../../src/language/default-labels/videoCallScreenLabels';
|
|
52
56
|
|
|
53
57
|
interface EditNameProps {}
|
|
54
58
|
const EditName: React.FC = (props?: EditNameProps) => {
|
|
55
|
-
const yournameLabel = useString(
|
|
56
|
-
const nameCantbeChangedInfo = useString(
|
|
59
|
+
const yournameLabel = useString(settingPanelNameInputLabel)();
|
|
60
|
+
const nameCantbeChangedInfo = useString(settingPanelNameCantbeChangedInfo)();
|
|
57
61
|
const {
|
|
58
62
|
data: {isHost},
|
|
59
63
|
} = useRoomInfo();
|
|
@@ -29,6 +29,15 @@ import {useSidePanel} from '../../utils/useSidePanel';
|
|
|
29
29
|
import getUniqueID from '../../utils/getUniqueID';
|
|
30
30
|
import {trimText} from '../../utils/common';
|
|
31
31
|
import {useString} from '../../utils/useString';
|
|
32
|
+
import {
|
|
33
|
+
publicChatToastHeading,
|
|
34
|
+
multiplePublicChatToastHeading,
|
|
35
|
+
multiplePrivateChatToastHeading,
|
|
36
|
+
privateChatToastHeading,
|
|
37
|
+
multiplePublicAndPrivateChatToastHeading,
|
|
38
|
+
multiplePublicAndPrivateChatToastSubHeading,
|
|
39
|
+
multiplePublicChatToastSubHeading,
|
|
40
|
+
} from '../../language/default-labels/videoCallScreenLabels';
|
|
32
41
|
|
|
33
42
|
enum ChatMessageActionEnum {
|
|
34
43
|
Create = 'Create_Chat_Message',
|
|
@@ -99,34 +108,34 @@ const ChatMessagesProvider = (props: ChatMessagesProviderProps) => {
|
|
|
99
108
|
const individualActiveRef = useRef<string | number>();
|
|
100
109
|
|
|
101
110
|
//public single
|
|
102
|
-
const fromText = useString(
|
|
111
|
+
const fromText = useString(publicChatToastHeading);
|
|
103
112
|
|
|
104
113
|
//public multple
|
|
105
|
-
const
|
|
106
|
-
|
|
114
|
+
const multiplePublicChatToastHeadingTT = useString(
|
|
115
|
+
multiplePublicChatToastHeading,
|
|
107
116
|
)();
|
|
108
|
-
const
|
|
117
|
+
const multiplePublicChatToastSubHeadingTT = useString<{
|
|
109
118
|
count: number;
|
|
110
119
|
from: string;
|
|
111
|
-
}>(
|
|
120
|
+
}>(multiplePublicChatToastSubHeading);
|
|
112
121
|
|
|
113
122
|
//private single
|
|
114
|
-
const privateMessageLabel = useString(
|
|
123
|
+
const privateMessageLabel = useString(privateChatToastHeading)();
|
|
115
124
|
|
|
116
125
|
//private multiple
|
|
117
|
-
const
|
|
118
|
-
|
|
126
|
+
const multiplePrivateChatToastHeadingTT = useString<{count: number}>(
|
|
127
|
+
multiplePrivateChatToastHeading,
|
|
119
128
|
);
|
|
120
129
|
|
|
121
130
|
//multiple private and public toast
|
|
122
|
-
const
|
|
123
|
-
|
|
131
|
+
const multiplePublicAndPrivateChatToastHeadingTT = useString(
|
|
132
|
+
multiplePublicAndPrivateChatToastHeading,
|
|
124
133
|
)();
|
|
125
|
-
const
|
|
134
|
+
const multiplePublicAndPrivateChatToastSubHeadingTT = useString<{
|
|
126
135
|
publicChatCount: number;
|
|
127
136
|
privateChatCount: number;
|
|
128
137
|
from: string;
|
|
129
|
-
}>(
|
|
138
|
+
}>(multiplePublicAndPrivateChatToastSubHeading);
|
|
130
139
|
|
|
131
140
|
useEffect(() => {
|
|
132
141
|
callActiveRef.current.callActive = callActive;
|
|
@@ -252,16 +261,16 @@ const ChatMessagesProvider = (props: ChatMessagesProviderProps) => {
|
|
|
252
261
|
leadingIconName: 'chat-nav',
|
|
253
262
|
text1:
|
|
254
263
|
privateMessages && privateMessages.length
|
|
255
|
-
?
|
|
256
|
-
:
|
|
264
|
+
? multiplePublicAndPrivateChatToastHeadingTT
|
|
265
|
+
: multiplePublicChatToastHeadingTT,
|
|
257
266
|
text2:
|
|
258
267
|
privateMessages && privateMessages.length
|
|
259
|
-
?
|
|
268
|
+
? multiplePublicAndPrivateChatToastSubHeadingTT({
|
|
260
269
|
publicChatCount: publicMessages.length,
|
|
261
270
|
privateChatCount: privateMessages.length,
|
|
262
271
|
from: fromNames,
|
|
263
272
|
})
|
|
264
|
-
:
|
|
273
|
+
: multiplePublicChatToastSubHeadingTT({
|
|
265
274
|
count: publicMessages.length,
|
|
266
275
|
from: fromNames,
|
|
267
276
|
}),
|
|
@@ -288,7 +297,7 @@ const ChatMessagesProvider = (props: ChatMessagesProviderProps) => {
|
|
|
288
297
|
secondaryBtn: null,
|
|
289
298
|
type: 'info',
|
|
290
299
|
leadingIconName: 'chat-nav',
|
|
291
|
-
text1:
|
|
300
|
+
text1: multiplePrivateChatToastHeadingTT({
|
|
292
301
|
count: privateMessages.length,
|
|
293
302
|
}),
|
|
294
303
|
text2: ``,
|
|
@@ -22,6 +22,11 @@ import TertiaryButton from '../../atoms/TertiaryButton';
|
|
|
22
22
|
import PrimaryButton from '../../atoms/PrimaryButton';
|
|
23
23
|
import {trimText} from '../../utils/common';
|
|
24
24
|
import {useString} from '../../utils/useString';
|
|
25
|
+
import {
|
|
26
|
+
livestreamRequestAlreadyProcessed,
|
|
27
|
+
livestreamToastApprovalBtnText,
|
|
28
|
+
livestreamToastDenyBtnText,
|
|
29
|
+
} from '../../language/default-labels/videoCallScreenLabels';
|
|
25
30
|
|
|
26
31
|
const LiveStreamContext = createContext(null as unknown as liveStreamContext);
|
|
27
32
|
|
|
@@ -30,7 +35,9 @@ export const LiveStreamContextConsumer = LiveStreamContext.Consumer;
|
|
|
30
35
|
export const LiveStreamContextProvider: React.FC<
|
|
31
36
|
liveStreamPropsInterface
|
|
32
37
|
> = props => {
|
|
33
|
-
const requestAlreadyProcessed = useString(
|
|
38
|
+
const requestAlreadyProcessed = useString(
|
|
39
|
+
livestreamRequestAlreadyProcessed,
|
|
40
|
+
)();
|
|
34
41
|
|
|
35
42
|
const raiseHandRequestReceivedToastHeading = useString(
|
|
36
43
|
LSNotificationObject.RAISE_HAND_RECEIVED.text1TranslationKey,
|
|
@@ -157,8 +164,8 @@ export const LiveStreamContextProvider: React.FC<
|
|
|
157
164
|
|
|
158
165
|
const [isPendingRequestToReview, setPendingRequestToReview] = useState(false);
|
|
159
166
|
|
|
160
|
-
const allowToBePresenter = useString(
|
|
161
|
-
const deny = useString(
|
|
167
|
+
const allowToBePresenter = useString(livestreamToastApprovalBtnText)();
|
|
168
|
+
const deny = useString(livestreamToastDenyBtnText)();
|
|
162
169
|
const showToast = (
|
|
163
170
|
text: string,
|
|
164
171
|
text2: string,
|
|
@@ -21,6 +21,19 @@ export interface raiseHandItemInterface {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
import {UidType} from '../../../agora-rn-uikit';
|
|
24
|
+
import {
|
|
25
|
+
livestreamPromoteAsCoHostToastHeading,
|
|
26
|
+
livestreamRaiseHandApprovedRequestRecallToastHeading,
|
|
27
|
+
livestreamRaiseHandRequestAcceptedToastHeading,
|
|
28
|
+
livestreamRaiseHandRequestAcceptedToastSubHeading,
|
|
29
|
+
livestreamRaiseHandRequestRecallLocalToastHeading,
|
|
30
|
+
livestreamRaiseHandRequestRecallToastHeading,
|
|
31
|
+
livestreamRaiseHandRequestReceivedToastHeading,
|
|
32
|
+
livestreamRaiseHandRequestReceivedToastSubHeading,
|
|
33
|
+
livestreamRaiseHandRequestRejectedToastHeading,
|
|
34
|
+
livestreamRaiseHandRequestToastHeading,
|
|
35
|
+
livestreamRaiseHandRequestToastSubHeading,
|
|
36
|
+
} from '../../language/default-labels/videoCallScreenLabels';
|
|
24
37
|
|
|
25
38
|
export enum requestStatus {
|
|
26
39
|
AwaitingAction = 'AWAITING_ACTION',
|
|
@@ -59,31 +72,31 @@ interface LSNotificationObjectInterface {
|
|
|
59
72
|
}
|
|
60
73
|
export const LSNotificationObject: LSNotificationObjectInterface = {
|
|
61
74
|
[LiveStreamControlMessageEnum.raiseHandRequest]: {
|
|
62
|
-
text1TranslationKey:
|
|
63
|
-
text2TranslationKey:
|
|
75
|
+
text1TranslationKey: livestreamRaiseHandRequestToastHeading,
|
|
76
|
+
text2TranslationKey: livestreamRaiseHandRequestToastSubHeading,
|
|
64
77
|
},
|
|
65
78
|
[LiveStreamControlMessageEnum.raiseHandRequestReceived]: {
|
|
66
|
-
text1TranslationKey:
|
|
67
|
-
text2TranslationKey:
|
|
79
|
+
text1TranslationKey: livestreamRaiseHandRequestReceivedToastHeading,
|
|
80
|
+
text2TranslationKey: livestreamRaiseHandRequestReceivedToastSubHeading,
|
|
68
81
|
},
|
|
69
82
|
[LiveStreamControlMessageEnum.raiseHandRequestAccepted]: {
|
|
70
|
-
text1TranslationKey:
|
|
71
|
-
text2TranslationKey:
|
|
83
|
+
text1TranslationKey: livestreamRaiseHandRequestAcceptedToastHeading,
|
|
84
|
+
text2TranslationKey: livestreamRaiseHandRequestAcceptedToastSubHeading,
|
|
72
85
|
},
|
|
73
86
|
[LiveStreamControlMessageEnum.raiseHandRequestRejected]: {
|
|
74
|
-
text1TranslationKey:
|
|
87
|
+
text1TranslationKey: livestreamRaiseHandRequestRejectedToastHeading,
|
|
75
88
|
},
|
|
76
89
|
[LiveStreamControlMessageEnum.raiseHandRequestRecall]: {
|
|
77
|
-
text1TranslationKey:
|
|
90
|
+
text1TranslationKey: livestreamRaiseHandRequestRecallToastHeading,
|
|
78
91
|
},
|
|
79
92
|
[LiveStreamControlMessageEnum.raiseHandRequestRecallLocal]: {
|
|
80
|
-
text1TranslationKey:
|
|
93
|
+
text1TranslationKey: livestreamRaiseHandRequestRecallLocalToastHeading,
|
|
81
94
|
},
|
|
82
95
|
[LiveStreamControlMessageEnum.raiseHandApprovedRequestRecall]: {
|
|
83
|
-
text1TranslationKey:
|
|
96
|
+
text1TranslationKey: livestreamRaiseHandApprovedRequestRecallToastHeading,
|
|
84
97
|
},
|
|
85
98
|
[LiveStreamControlMessageEnum.promoteAsCoHost]: {
|
|
86
|
-
text1TranslationKey:
|
|
99
|
+
text1TranslationKey: livestreamPromoteAsCoHostToastHeading,
|
|
87
100
|
},
|
|
88
101
|
};
|
|
89
102
|
|
|
@@ -13,6 +13,19 @@ import TertiaryButton from '../../../atoms/TertiaryButton';
|
|
|
13
13
|
import ThemeConfig from '../../../theme';
|
|
14
14
|
import {useString} from '../../../utils/useString';
|
|
15
15
|
import {TextDataInterface} from '../../../language/default-labels';
|
|
16
|
+
import {
|
|
17
|
+
livestreamingAttendeeChatWithOthersInfoHeading,
|
|
18
|
+
livestreamingAttendeeChatWithOthersInfoSubHeading,
|
|
19
|
+
livestreamingAttendeeInviteOthersText,
|
|
20
|
+
livestreamingAttendeeJoinWithActivitiesInfoHeading,
|
|
21
|
+
livestreamingAttendeeJoinWithActivitiesInfoSubHeading,
|
|
22
|
+
livestreamingAttendeePresentYourScreenInfoHeading,
|
|
23
|
+
livestreamingAttendeePresentYourScreenInfoSubHeading,
|
|
24
|
+
livestreamingAttendeeRaiseHandInfoHeading,
|
|
25
|
+
livestreamingAttendeeRaiseHandInfoSubHeading,
|
|
26
|
+
livestreamingAttendeeWaitingForHostToJoinText,
|
|
27
|
+
livestreamingAttendeeWhatYouCanDoText,
|
|
28
|
+
} from '../../../language/default-labels/videoCallScreenLabels';
|
|
16
29
|
|
|
17
30
|
interface Feature {
|
|
18
31
|
id: number;
|
|
@@ -26,29 +39,32 @@ const features: Feature[] = [
|
|
|
26
39
|
id: 1,
|
|
27
40
|
icon: 'raise-hand',
|
|
28
41
|
tint: $config.SEMANTIC_WARNING,
|
|
29
|
-
titleTranslationKey:
|
|
30
|
-
descriptionTranslationKey:
|
|
42
|
+
titleTranslationKey: livestreamingAttendeeRaiseHandInfoHeading,
|
|
43
|
+
descriptionTranslationKey: livestreamingAttendeeRaiseHandInfoSubHeading,
|
|
31
44
|
},
|
|
32
45
|
{
|
|
33
46
|
id: 2,
|
|
34
47
|
icon: 'chat-filled',
|
|
35
|
-
titleTranslationKey:
|
|
48
|
+
titleTranslationKey: livestreamingAttendeeChatWithOthersInfoHeading,
|
|
36
49
|
tint: $config.SEMANTIC_SUCCESS,
|
|
37
|
-
descriptionTranslationKey:
|
|
50
|
+
descriptionTranslationKey:
|
|
51
|
+
livestreamingAttendeeChatWithOthersInfoSubHeading,
|
|
38
52
|
},
|
|
39
53
|
{
|
|
40
54
|
id: 3,
|
|
41
55
|
icon: 'screen-share',
|
|
42
|
-
titleTranslationKey:
|
|
56
|
+
titleTranslationKey: livestreamingAttendeePresentYourScreenInfoHeading,
|
|
43
57
|
tint: $config.PRIMARY_ACTION_BRAND_COLOR,
|
|
44
|
-
descriptionTranslationKey:
|
|
58
|
+
descriptionTranslationKey:
|
|
59
|
+
livestreamingAttendeePresentYourScreenInfoSubHeading,
|
|
45
60
|
},
|
|
46
61
|
{
|
|
47
62
|
id: 4,
|
|
48
63
|
icon: 'celebration',
|
|
49
|
-
titleTranslationKey:
|
|
64
|
+
titleTranslationKey: livestreamingAttendeeJoinWithActivitiesInfoHeading,
|
|
50
65
|
tint: $config.SEMANTIC_ERROR,
|
|
51
|
-
descriptionTranslationKey:
|
|
66
|
+
descriptionTranslationKey:
|
|
67
|
+
livestreamingAttendeeJoinWithActivitiesInfoSubHeading,
|
|
52
68
|
},
|
|
53
69
|
];
|
|
54
70
|
function FeatureTile({feature}: {feature: Feature}) {
|
|
@@ -89,9 +105,13 @@ function FeatureTile({feature}: {feature: Feature}) {
|
|
|
89
105
|
export default function LiveStreamAttendeeLandingTile() {
|
|
90
106
|
const isMobile = isMobileUA();
|
|
91
107
|
const {copyShareLinkToClipboard, getShareLink} = useShareLink();
|
|
92
|
-
const inviteOtherAttendee = useString(
|
|
93
|
-
|
|
94
|
-
|
|
108
|
+
const inviteOtherAttendee = useString(
|
|
109
|
+
livestreamingAttendeeInviteOthersText,
|
|
110
|
+
)();
|
|
111
|
+
const whatYouCanDoHere = useString(livestreamingAttendeeWhatYouCanDoText)();
|
|
112
|
+
const waitingForHostToJoin = useString(
|
|
113
|
+
livestreamingAttendeeWaitingForHostToJoinText,
|
|
114
|
+
)();
|
|
95
115
|
return (
|
|
96
116
|
<View style={style.tileBackdrop}>
|
|
97
117
|
<ScrollView contentContainerStyle={{flexGrow: 1}}>
|
|
@@ -13,23 +13,22 @@ import {isMobileUA, isValidReactComponent} from '../../utils/common';
|
|
|
13
13
|
import Avatar from '../../atoms/Avatar';
|
|
14
14
|
import {useCustomization} from 'customization-implementation';
|
|
15
15
|
import {useString} from '../../utils/useString';
|
|
16
|
+
import {
|
|
17
|
+
inviteTileCopyInviteBtnText,
|
|
18
|
+
inviteTileNoElseJoinedYetText,
|
|
19
|
+
inviteTileWelcomeText,
|
|
20
|
+
} from '../../language/default-labels/videoCallScreenLabels';
|
|
16
21
|
|
|
17
22
|
const waveHandEmoji = '👋';
|
|
18
23
|
|
|
19
24
|
export default function MeetingInfoGridTile() {
|
|
20
25
|
const isMobile = isMobileUA();
|
|
21
|
-
const welcomeLabel = useString(
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const copyInviteButton = isMobile
|
|
25
|
-
? inviteOthersButtonLabel
|
|
26
|
-
: copyInviteButtonLabel;
|
|
26
|
+
const welcomeLabel = useString(inviteTileWelcomeText)();
|
|
27
|
+
const copyInviteButtonLabel = useString(inviteTileCopyInviteBtnText)();
|
|
28
|
+
const copyInviteButton = copyInviteButtonLabel;
|
|
27
29
|
const {copyShareLinkToClipboard} = useShareLink();
|
|
28
30
|
const username = useGetName();
|
|
29
|
-
const noOneElseJoinedYet = useString(
|
|
30
|
-
const noOneElseJoinedYetInviteOthers = useString(
|
|
31
|
-
'noOneElseJoinedYetInviteOthers',
|
|
32
|
-
)();
|
|
31
|
+
const noOneElseJoinedYet = useString(inviteTileNoElseJoinedYetText)();
|
|
33
32
|
const {InvitePopupContent, InvitePopupTitle} = useCustomization(data => {
|
|
34
33
|
let components: {
|
|
35
34
|
InvitePopupContent?: React.ComponentType;
|
|
@@ -101,9 +100,7 @@ export default function MeetingInfoGridTile() {
|
|
|
101
100
|
{isMobile && <Spacer size={10} />}
|
|
102
101
|
<View style={{flexDirection: 'row'}}>
|
|
103
102
|
<Text style={[style.subheading, {flexShrink: 1}]}>
|
|
104
|
-
{
|
|
105
|
-
? noOneElseJoinedYetInviteOthers
|
|
106
|
-
: noOneElseJoinedYet}
|
|
103
|
+
{noOneElseJoinedYet}
|
|
107
104
|
</Text>
|
|
108
105
|
</View>
|
|
109
106
|
</>
|
|
@@ -13,6 +13,7 @@ import {useLiveStreamDataContext} from '../contexts/LiveStreamDataContext';
|
|
|
13
13
|
import {useScreenContext} from '../contexts/ScreenShareContext';
|
|
14
14
|
import ScreenshareParticipants from './ScreenshareParticipants';
|
|
15
15
|
import hexadecimalTransparency from '../../utils/hexadecimalTransparency';
|
|
16
|
+
import {videoRoomUserFallbackText} from '../../language/default-labels/videoCallScreenLabels';
|
|
16
17
|
|
|
17
18
|
const AllAudienceParticipants = (props: any) => {
|
|
18
19
|
const {screenShareData} = useScreenContext();
|
|
@@ -25,9 +26,7 @@ const AllAudienceParticipants = (props: any) => {
|
|
|
25
26
|
} = props;
|
|
26
27
|
const {defaultContent} = useContent();
|
|
27
28
|
const {localUid} = useContext(chatContext);
|
|
28
|
-
|
|
29
|
-
//const participantListPlaceholder = useString('participantListPlaceholder')();
|
|
30
|
-
const remoteUserDefaultLabel = 'User';
|
|
29
|
+
const remoteUserDefaultLabel = useString(videoRoomUserFallbackText)();
|
|
31
30
|
const getParticipantName = (uid: UidType) => {
|
|
32
31
|
return defaultContent[uid]?.name || remoteUserDefaultLabel;
|
|
33
32
|
};
|
|
@@ -70,7 +69,7 @@ const AllAudienceParticipants = (props: any) => {
|
|
|
70
69
|
) : (
|
|
71
70
|
<>
|
|
72
71
|
{/**Audience should see his name first */}
|
|
73
|
-
{uids.filter(
|
|
72
|
+
{uids.filter(i => i === localUid).length ? (
|
|
74
73
|
<>
|
|
75
74
|
<Participant
|
|
76
75
|
isLocal={true}
|
|
@@ -102,7 +101,7 @@ const AllAudienceParticipants = (props: any) => {
|
|
|
102
101
|
)}
|
|
103
102
|
{/* Others Audience in the call */}
|
|
104
103
|
{uids
|
|
105
|
-
.filter(
|
|
104
|
+
.filter(i => i !== localUid)
|
|
106
105
|
.map((uid: any, index: number) => (
|
|
107
106
|
<>
|
|
108
107
|
<Participant
|
|
@@ -9,13 +9,12 @@ import Spacer from '../../atoms/Spacer';
|
|
|
9
9
|
import {useVideoMeetingData} from '../contexts/VideoMeetingDataContext';
|
|
10
10
|
import {useScreenContext} from '../contexts/ScreenShareContext';
|
|
11
11
|
import hexadecimalTransparency from '../../utils/hexadecimalTransparency';
|
|
12
|
+
import {videoRoomUserFallbackText} from '../../language/default-labels/videoCallScreenLabels';
|
|
12
13
|
|
|
13
14
|
export default function AllHostParticipants(props: any) {
|
|
14
15
|
const localUid = useLocalUid();
|
|
15
16
|
const {screenShareData} = useScreenContext();
|
|
16
|
-
|
|
17
|
-
//const remoteUserDefaultLabel = useString('remoteUserDefaultLabel')();
|
|
18
|
-
const remoteUserDefaultLabel = 'User';
|
|
17
|
+
const remoteUserDefaultLabel = useString(videoRoomUserFallbackText)();
|
|
19
18
|
const {defaultContent} = useContent();
|
|
20
19
|
const getParticipantName = (uid: UidType) => {
|
|
21
20
|
return defaultContent[uid]?.name || remoteUserDefaultLabel;
|
|
@@ -67,7 +66,7 @@ export default function AllHostParticipants(props: any) {
|
|
|
67
66
|
<>
|
|
68
67
|
<Spacer size={4} />
|
|
69
68
|
{/* User should see his name first */}
|
|
70
|
-
{uids.filter(
|
|
69
|
+
{uids.filter(uid => uid === localUid).length > 0 ? (
|
|
71
70
|
<>
|
|
72
71
|
<Participant
|
|
73
72
|
isLocal={true}
|
|
@@ -89,10 +88,10 @@ export default function AllHostParticipants(props: any) {
|
|
|
89
88
|
{/* Others Users in the call */}
|
|
90
89
|
{uids
|
|
91
90
|
.filter(
|
|
92
|
-
|
|
91
|
+
uid => uid !== localUid && defaultContent[uid].type === 'rtc',
|
|
93
92
|
)
|
|
94
93
|
.map(
|
|
95
|
-
|
|
94
|
+
uid => (
|
|
96
95
|
// defaultContent[uid]?.type === 'screenshare' ? (
|
|
97
96
|
// <ScreenshareParticipants
|
|
98
97
|
// name={getParticipantName(uid)}
|
|
@@ -48,6 +48,11 @@ import {getPinnedLayoutName} from '../../pages/video-call/DefaultLayouts';
|
|
|
48
48
|
import UserActionMenuOptionsOptions from './UserActionMenuOptions';
|
|
49
49
|
|
|
50
50
|
import WaitingRoomButton from '../../subComponents/waiting-rooms/WaitingRoomControls';
|
|
51
|
+
import {useString} from '../../utils/useString';
|
|
52
|
+
import {
|
|
53
|
+
peoplePanelMeText,
|
|
54
|
+
peoplePanelPresenterText,
|
|
55
|
+
} from '../../language/default-labels/videoCallScreenLabels';
|
|
51
56
|
interface ParticipantInterface {
|
|
52
57
|
isLocal: boolean;
|
|
53
58
|
name: string;
|
|
@@ -64,6 +69,8 @@ interface ParticipantInterface {
|
|
|
64
69
|
}
|
|
65
70
|
|
|
66
71
|
const Participant = (props: ParticipantInterface) => {
|
|
72
|
+
const metext = useString(peoplePanelMeText)();
|
|
73
|
+
const presentertext = useString(peoplePanelPresenterText)();
|
|
67
74
|
const {coHostUids} = useContext(LiveStreamContext);
|
|
68
75
|
const [isHovered, setIsHovered] = React.useState(false);
|
|
69
76
|
const [actionMenuVisible, setActionMenuVisible] = React.useState(false);
|
|
@@ -113,11 +120,11 @@ const Participant = (props: ParticipantInterface) => {
|
|
|
113
120
|
<Text style={styles.participantNameText} numberOfLines={1}>
|
|
114
121
|
{name}
|
|
115
122
|
</Text>
|
|
116
|
-
{isLocal && <Text style={styles.subText}>{
|
|
123
|
+
{isLocal && <Text style={styles.subText}>{metext}</Text>}
|
|
117
124
|
{!isLocal &&
|
|
118
125
|
$config.EVENT_MODE &&
|
|
119
126
|
coHostUids.indexOf(user.uid) !== -1 ? (
|
|
120
|
-
<Text style={styles.subText}>{
|
|
127
|
+
<Text style={styles.subText}>{presentertext}</Text>
|
|
121
128
|
) : (
|
|
122
129
|
<></>
|
|
123
130
|
)}
|