Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
0f36858
update proto file for translation
bhupendra1011 Aug 6, 2025
059f842
updated proto file
bhupendra1011 Aug 6, 2025
003614c
temp changes
bhupendra1011 Aug 8, 2025
ae9ef1c
updated dropdown for lang sel
bhupendra1011 Aug 20, 2025
b020a17
add tranlsate lang option in caption
bhupendra1011 Sep 4, 2025
f072a81
add stt update api
bhupendra1011 Sep 5, 2025
bb90bdc
update live caption when translaton seleced
bhupendra1011 Sep 8, 2025
2cb0298
add translate option to transctip side panel
bhupendra1011 Sep 9, 2025
958d1cc
sync spoken lang across users
bhupendra1011 Sep 11, 2025
3ea0740
sync translate config
bhupendra1011 Sep 12, 2025
dc0358b
fix lang change from sidepanel header
bhupendra1011 Sep 12, 2025
6f2593b
fix sync translation when spoke lang changes
bhupendra1011 Sep 12, 2025
097ba89
add translation popup
bhupendra1011 Sep 18, 2025
ce79288
fix qa issues
bhupendra1011 Sep 22, 2025
46f37db
fix layout of lang selector
bhupendra1011 Sep 29, 2025
b774edf
show selcted lang at top
bhupendra1011 Oct 8, 2025
11d520c
fix historical msg transaltion
bhupendra1011 Oct 14, 2025
e188f81
support for natiev utils
bhupendra1011 Oct 14, 2025
ed75025
wip stt bot per user
SupriyaAdep Oct 23, 2025
2fa1395
fix all code
SupriyaAdep Oct 24, 2025
1719c9e
update the loader
SupriyaAdep Oct 24, 2025
d5f9a11
add only acceptable menu actions
SupriyaAdep Oct 24, 2025
04e058a
fix controls
SupriyaAdep Oct 24, 2025
fdee99c
update labels
SupriyaAdep Oct 24, 2025
ad4b39d
fix uncomment code
SupriyaAdep Oct 24, 2025
0ec8feb
update comments
SupriyaAdep Oct 24, 2025
41334a8
add toast for error message
SupriyaAdep Oct 24, 2025
c3af103
update comments
SupriyaAdep Oct 24, 2025
57d86ab
add remote user state
SupriyaAdep Oct 27, 2025
2e77ac2
correct caption text
SupriyaAdep Oct 27, 2025
2aa5acf
update config.json
SupriyaAdep Oct 27, 2025
8374d4f
translation text window
SupriyaAdep Oct 27, 2025
057c137
add some wrapper
SupriyaAdep Oct 27, 2025
3c65681
add few debug logs
SupriyaAdep Oct 27, 2025
58f065b
update the translations view in local user caption panel
SupriyaAdep Oct 27, 2025
9a89c22
add transcript change notifications
SupriyaAdep Oct 27, 2025
f9005ca
change the text
SupriyaAdep Oct 27, 2025
9932054
update package uikit branch
SupriyaAdep Oct 27, 2025
ab6cc64
add orginial and translated
SupriyaAdep Oct 28, 2025
eee2674
add states
SupriyaAdep Oct 28, 2025
19bbfb6
lang code in translations
SupriyaAdep Oct 28, 2025
afdd201
fix the sanitized entry
SupriyaAdep Oct 28, 2025
043b4c5
fix empty taregt paylaod
SupriyaAdep Oct 28, 2025
a496d56
fix lang form
SupriyaAdep Oct 29, 2025
5f32d8c
add logs
SupriyaAdep Oct 29, 2025
862cc9b
download all translations
SupriyaAdep Oct 29, 2025
d07f8e4
attndee can also start stop
SupriyaAdep Oct 29, 2025
1bdb318
change form
SupriyaAdep Oct 29, 2025
ec25754
add changes
SupriyaAdep Oct 29, 2025
a1a4f4e
all can see stt
SupriyaAdep Nov 3, 2025
5a54548
add ui feedback
SupriyaAdep Nov 3, 2025
e24b020
add correct log
SupriyaAdep Nov 4, 2025
8431fb5
show translated text even if empty
SupriyaAdep Nov 5, 2025
a2bef81
add translate flag
SupriyaAdep Nov 6, 2025
1a52c2b
update logs
SupriyaAdep Nov 6, 2025
d4af3d5
update logs
SupriyaAdep Nov 6, 2025
a854ac9
add necessary logs
SupriyaAdep Nov 6, 2025
3958d9a
add correct native
SupriyaAdep Nov 6, 2025
93428f9
add correct language code
SupriyaAdep Nov 6, 2025
357c167
add translate icon
SupriyaAdep Nov 6, 2025
fdfe19e
add translate toggle mode for transcript
SupriyaAdep Nov 7, 2025
7ccc34a
remove sesion attr
SupriyaAdep Nov 7, 2025
aad7510
remove transcript filter on top
SupriyaAdep Nov 7, 2025
4d31269
set correct attributes
SupriyaAdep Nov 7, 2025
b25a755
fix sender bug
SupriyaAdep Nov 10, 2025
c138bfa
rever the config files
SupriyaAdep Nov 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion config.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"PRECALL": true,
"CHAT": true,
"CLOUD_RECORDING": true,
"RECORDING_MODE": "WEB",
"RECORDING_MODE": "MIX",
"SCREEN_SHARING": true,
"LANDING_SUB_HEADING": "The Real-Time Engagement Platform",
"ENCRYPTION_ENABLED": true,
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
],
"scripts": {
"vercel-build": "npm run dev-setup && cd template && npm run web:build && cd .. && npm run copy-vercel",
"uikit": "rm -rf template/agora-rn-uikit && git clone https://github.com/AgoraIO-Community/appbuilder-ui-kit.git template/agora-rn-uikit && cd template/agora-rn-uikit && git checkout appbuilder-uikit-3.1.8",
"uikit": "rm -rf template/agora-rn-uikit && git clone https://github.com/AgoraIO-Community/appbuilder-ui-kit.git template/agora-rn-uikit && cd template/agora-rn-uikit && git checkout appbuilder-uikit-3.1.11",
"deps": "cd template && npm i --force",
"dev-setup": "npm run uikit && npm run deps && node devSetup.js",
"web-build": "cd template && npm run web:build && cd .. && npm run copy-vercel",
Expand Down
2 changes: 1 addition & 1 deletion template/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
"nosleep.js": "0.12.0",
"npm": "^9.7.2",
"p-queue": "^7.3.4",
"protobufjs": "^7.2.3",
"protobufjs": "^7.2.5",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-is": "18.0.0",
Expand Down
4 changes: 4 additions & 0 deletions template/src/assets/font-styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@
-moz-osx-font-smoothing: grayscale;
}

.icon-lang-translate:before {
content: '\e9a4';
color: #fff;
}
.icon-spotlight:before {
content: '\e9a3';
color: #fff;
Expand Down
Binary file modified template/src/assets/fonts/icomoon.ttf
Binary file not shown.
2 changes: 1 addition & 1 deletion template/src/assets/selection.json

Large diffs are not rendered by default.

106 changes: 93 additions & 13 deletions template/src/atoms/ActionMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import {
StyleProp,
TextStyle,
Pressable,
ScrollView,
} from 'react-native';
import React, {SetStateAction, useState} from 'react';

Expand All @@ -35,7 +36,10 @@ export interface ActionMenuItem {
isBase64Icon?: boolean;
icon?: keyof IconsInterface;
onHoverIcon?: keyof IconsInterface;
endIcon?: keyof IconsInterface;
onHoverEndIcon?: keyof IconsInterface;
iconColor?: string;
endIconColor?: string;
textColor?: string;
title?: string;
titleStyle?: StyleProp<TextStyle>;
Expand All @@ -48,8 +52,10 @@ export interface ActionMenuItem {
onHoverContent?: JSX.Element;
disabled?: boolean;
iconSize?: number;
endIconSize?: number;
hide?: ToolbarItemHide;
type?: string;
iconPosition?: 'start' | 'end';
}
export interface ActionMenuProps {
from: string;
Expand All @@ -71,18 +77,23 @@ export interface UserActionMenuItemProps {
label: string;
icon?: keyof IconsInterface;
onHoverIcon?: keyof IconsInterface;
endIcon?: keyof IconsInterface;
onHoverEndIcon?: keyof IconsInterface;
toggleStatus?: boolean;
iconColor: string;
endIconColor?: string;
textColor: string;
onPress?: () => void;
onToggle?: () => void;
disabled?: boolean;
iconSize?: number;
endIconSize?: number;
isHovered?: boolean;
isExternalIcon?: boolean;
isBase64Icon?: boolean;
externalIconString?: string;
titleStyle?: StyleProp<TextStyle>;
iconPosition?: 'start' | 'end';
}

export const UserActionMenuItem = ({
Expand All @@ -92,42 +103,77 @@ export const UserActionMenuItem = ({
onPress,
onToggle,
iconColor,
endIconColor,
textColor,
iconSize = 20,
endIconSize = 20,
titleStyle = {},
disabled = false,
isHovered = false,
onHoverIcon,
endIcon,
onHoverEndIcon,
isExternalIcon = false,
isBase64Icon = false,
externalIconString = '',
iconPosition = 'start',
}: UserActionMenuItemProps) => {
const iconToShow = isHovered && onHoverIcon && !disabled ? onHoverIcon : icon;
const endIconToShow =
isHovered && onHoverEndIcon && !disabled ? onHoverEndIcon : endIcon;

const content = (
<>
<View style={styles.iconContainer}>
const renderIcon = (
iconName: keyof IconsInterface | undefined,
position: 'start' | 'end' = 'start',
size: number = 20,
color: string = iconColor,
) => {
if (!iconName) return null;

return (
<View
style={[
styles.iconContainer,
position === 'end' && styles.iconContainerEnd,
]}>
{isExternalIcon ? (
<ImageIcon
base64={isBase64Icon}
base64TintColor={iconColor}
base64TintColor={color}
iconType="plain"
iconSize={iconSize}
iconSize={size}
icon={externalIconString}
tintColor={iconColor}
tintColor={color}
/>
) : (
<ImageIcon
base64={isBase64Icon}
base64TintColor={iconColor}
base64TintColor={color}
iconType="plain"
iconSize={iconSize}
name={iconToShow}
tintColor={iconColor}
iconSize={size}
name={iconName}
tintColor={color}
/>
)}
</View>
<Text style={[styles.text, titleStyle, {color: textColor}]}>{label}</Text>
);
};

const content = (
<>
{renderIcon(iconToShow, 'start', iconSize, iconColor)}

<Text
style={[
styles.text,
titleStyle,
{color: textColor},
(iconPosition === 'end' || endIcon) && styles.textWithEndIcon,
]}>
{label}
</Text>

{renderIcon(endIconToShow, 'end', endIconSize, endIconColor || iconColor)}

{typeof toggleStatus === 'boolean' && (
<View style={styles.toggleContainer}>
Expand Down Expand Up @@ -187,6 +233,8 @@ const ActionMenu = (props: ActionMenuProps) => {
component: CustomActionItem = null,
icon = '',
onHoverIcon,
endIcon,
onHoverEndIcon,
isBase64Icon = false,
isExternalIcon = false,
externalIconString = '',
Expand All @@ -195,13 +243,16 @@ const ActionMenu = (props: ActionMenuProps) => {
closeActionMenu = () => {},
uid,
iconColor,
endIconColor,
textColor,
disabled = false,
onHoverCallback = undefined,
onHoverContent = undefined,
iconSize = 20,
endIconSize = 20,
titleStyle = {},
type = '',
iconPosition = 'start',
} = item;
return (
<PlatformWrapper key={props.from + '_' + title + index}>
Expand Down Expand Up @@ -262,18 +313,23 @@ const ActionMenu = (props: ActionMenuProps) => {
<UserActionMenuItem
label={label || title}
icon={icon}
endIcon={endIcon}
toggleStatus={toggleStatus}
iconColor={iconColor}
endIconColor={endIconColor}
textColor={textColor}
iconSize={iconSize}
endIconSize={endIconSize}
titleStyle={titleStyle}
disabled={disabled}
onToggle={onPress}
isHovered={isHovered}
isExternalIcon={isExternalIcon}
externalIconString={externalIconString}
iconPosition={iconPosition}
isBase64Icon={isBase64Icon}
onHoverIcon={onHoverIcon}
onHoverEndIcon={onHoverEndIcon}
/>
</TouchableOpacity>
)}
Expand All @@ -284,6 +340,21 @@ const ActionMenu = (props: ActionMenuProps) => {
});
};

const shouldUseScrollView = props?.containerStyle?.maxHeight !== undefined;

const renderScrollableContent = () => {
return shouldUseScrollView ? (
<ScrollView
style={{maxHeight: props.containerStyle.maxHeight}}
showsVerticalScrollIndicator={true}
nestedScrollEnabled={true}>
{renderItems()}
</ScrollView>
) : (
renderItems()
);
};

return (
<View>
{hoverMode ? (
Expand All @@ -293,7 +364,7 @@ const ActionMenu = (props: ActionMenuProps) => {
<div
onMouseEnter={() => props?.onHover && props.onHover(true)}
onMouseLeave={() => props?.onHover && props.onHover(false)}>
{renderItems()}
{renderScrollableContent()}
</div>
</View>
)
Expand All @@ -311,7 +382,7 @@ const ActionMenu = (props: ActionMenuProps) => {
</TouchableWithoutFeedback>
<View
style={[styles.modalView, props?.containerStyle, modalPosition]}>
{renderItems()}
{renderScrollableContent()}
</View>
</Modal>
)}
Expand Down Expand Up @@ -388,6 +459,15 @@ const styles = StyleSheet.create({
marginVertical: 12,
marginLeft: 12,
},
iconContainerEnd: {
marginLeft: 10,
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
},
textWithEndIcon: {
marginRight: 0,
},
toggleContainer: {
justifyContent: 'center',
alignItems: 'center',
Expand Down
1 change: 1 addition & 0 deletions template/src/atoms/CustomIcon.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ export interface IconsInterface {
'closed-caption': string;
globe: string;
'lang-select': string;
'lang-translate': string;
search: string;
captions: string;
'captions-off': string;
Expand Down
Loading