Show your own name on your tile

Instead of the word "You".
This commit is contained in:
Robin
2024-08-01 15:46:14 -04:00
parent f89342713a
commit 00d8100dfe
5 changed files with 20 additions and 36 deletions

View File

@@ -161,7 +161,6 @@
"exit_full_screen": "Exit full screen",
"full_screen": "Full screen",
"mute_for_me": "Mute for me",
"sfu_participant_local": "You",
"volume": "Volume"
}
}

View File

@@ -45,28 +45,14 @@ import {
startWith,
switchMap,
} from "rxjs";
import { useTranslation } from "react-i18next";
import { useEffect } from "react";
import { ViewModel } from "./ViewModel";
import { useReactiveState } from "../useReactiveState";
import { alwaysShowSelf } from "../settings/settings";
export interface NameData {
/**
* The display name of the participant.
*/
displayName: string;
/**
* The text to be shown on the participant's name tag.
*/
nameTag: string;
}
// TODO: Move this naming logic into the view model
export function useNameData(vm: MediaViewModel): NameData {
const { t } = useTranslation();
export function useDisplayName(vm: MediaViewModel): string {
const [displayName, setDisplayName] = useReactiveState(
() => vm.member?.rawDisplayName ?? "[👻]",
[vm.member],
@@ -83,11 +69,8 @@ export function useNameData(vm: MediaViewModel): NameData {
};
}
}, [vm.member, setDisplayName]);
const nameTag = vm.local
? t("video_tile.sfu_participant_local")
: displayName;
return { displayName, nameTag };
return displayName;
}
function observeTrackReference(

View File

@@ -46,7 +46,7 @@ import { useObservableEagerState } from "observable-hooks";
import styles from "./GridTile.module.css";
import {
UserMediaViewModel,
useNameData,
useDisplayName,
LocalUserMediaViewModel,
RemoteUserMediaViewModel,
} from "../state/MediaViewModel";
@@ -60,7 +60,6 @@ interface TileProps {
targetWidth: number;
targetHeight: number;
displayName: string;
nameTag: string;
showSpeakingIndicators: boolean;
}
@@ -79,7 +78,7 @@ const UserMediaTile = forwardRef<HTMLDivElement, UserMediaTileProps>(
menuStart,
menuEnd,
className,
nameTag,
displayName,
...props
},
ref,
@@ -134,12 +133,12 @@ const UserMediaTile = forwardRef<HTMLDivElement, UserMediaTileProps>(
className={styles.muteIcon}
/>
}
nameTag={nameTag}
displayName={displayName}
primaryButton={
<Menu
open={menuOpen}
onOpenChange={setMenuOpen}
title={nameTag}
title={displayName}
trigger={
<button aria-label={t("common.options")}>
<OverflowHorizontalIcon aria-hidden width={20} height={20} />
@@ -156,7 +155,7 @@ const UserMediaTile = forwardRef<HTMLDivElement, UserMediaTileProps>(
);
return (
<ContextMenu title={nameTag} trigger={tile} hasAccessibleAlternative>
<ContextMenu title={displayName} trigger={tile} hasAccessibleAlternative>
{menu}
</ContextMenu>
);
@@ -282,7 +281,7 @@ interface GridTileProps {
export const GridTile = forwardRef<HTMLDivElement, GridTileProps>(
({ vm, onOpenProfile, ...props }, ref) => {
const nameData = useNameData(vm);
const displayName = useDisplayName(vm);
if (vm instanceof LocalUserMediaViewModel) {
return (
@@ -290,12 +289,19 @@ export const GridTile = forwardRef<HTMLDivElement, GridTileProps>(
ref={ref}
vm={vm}
onOpenProfile={onOpenProfile}
displayName={displayName}
{...props}
{...nameData}
/>
);
} else {
return <RemoteUserMediaTile ref={ref} vm={vm} {...props} {...nameData} />;
return (
<RemoteUserMediaTile
ref={ref}
vm={vm}
displayName={displayName}
{...props}
/>
);
}
},
);

View File

@@ -39,7 +39,6 @@ interface Props extends ComponentProps<typeof animated.div> {
videoEnabled: boolean;
unencryptedWarning: boolean;
nameTagLeadingIcon?: ReactNode;
nameTag: string;
displayName: string;
primaryButton?: ReactNode;
}
@@ -58,7 +57,6 @@ export const MediaView = forwardRef<HTMLDivElement, Props>(
videoEnabled,
unencryptedWarning,
nameTagLeadingIcon,
nameTag,
displayName,
primaryButton,
...props
@@ -100,7 +98,7 @@ export const MediaView = forwardRef<HTMLDivElement, Props>(
<div className={styles.nameTag}>
{nameTagLeadingIcon}
<Text as="span" size="sm" weight="medium" className={styles.name}>
{nameTag}
{displayName}
</Text>
{unencryptedWarning && (
<Tooltip

View File

@@ -44,7 +44,7 @@ import {
MediaViewModel,
ScreenShareViewModel,
UserMediaViewModel,
useNameData,
useDisplayName,
} from "../state/MediaViewModel";
import { useInitial } from "../useInitial";
import { useMergedRefs } from "../useMergedRefs";
@@ -60,7 +60,6 @@ interface SpotlightItemBaseProps {
video: TrackReferenceOrPlaceholder;
member: RoomMember | undefined;
unencryptedWarning: boolean;
nameTag: string;
displayName: string;
}
@@ -125,7 +124,7 @@ const SpotlightItem = forwardRef<HTMLDivElement, SpotlightItemProps>(
({ vm, targetWidth, targetHeight, intersectionObserver, snap }, theirRef) => {
const ourRef = useRef<HTMLDivElement | null>(null);
const ref = useMergedRefs(ourRef, theirRef);
const { displayName, nameTag } = useNameData(vm);
const displayName = useDisplayName(vm);
const video = useObservableEagerState(vm.video);
const unencryptedWarning = useObservableEagerState(vm.unencryptedWarning);
@@ -153,7 +152,6 @@ const SpotlightItem = forwardRef<HTMLDivElement, SpotlightItemProps>(
video,
member: vm.member,
unencryptedWarning,
nameTag,
displayName,
};