fix(mediaPlaybackSpeed): mediaRef is possibly undefined when 1 patch breaks

This commit is contained in:
D3SOX 2024-06-06 11:58:25 +02:00
parent a8eea4dc7a
commit c9459e9cf7
No known key found for this signature in database
GPG key ID: 39EC1673FC37B048

View file

@ -25,48 +25,50 @@ export default definePlugin({
description: "Adds an icon to change the playback speed of media embeds", description: "Adds an icon to change the playback speed of media embeds",
authors: [Devs.D3SOX], authors: [Devs.D3SOX],
playbackSpeedComponent: ErrorBoundary.wrap((mediaRef: RefObject<HTMLMediaElement>) => { playbackSpeedComponent: (mediaRef: RefObject<HTMLMediaElement> | undefined) => {
const changeSpeed = (speed: number) => { const changeSpeed = (speed: number) => {
const media = mediaRef.current; const media = mediaRef?.current;
if (media) { if (media) {
media.playbackRate = speed; media.playbackRate = speed;
} }
}; };
return ( return (
<Tooltip text="Playback speed"> <ErrorBoundary noop>
{tooltipProps => ( <Tooltip text="Playback speed">
<button {tooltipProps => (
{...tooltipProps} <button
className={cl("icon")} {...tooltipProps}
onClick={e => { className={cl("icon")}
ContextMenuApi.openContextMenu(e, () => onClick={e => {
<Menu.Menu ContextMenuApi.openContextMenu(e, () =>
navId="vc-playback-speed" <Menu.Menu
onClose={() => FluxDispatcher.dispatch({ type: "CONTEXT_MENU_CLOSE" })} navId="vc-playback-speed"
aria-label="Playback speed control" onClose={() => FluxDispatcher.dispatch({ type: "CONTEXT_MENU_CLOSE" })}
> aria-label="Playback speed control"
<Menu.MenuGroup
label="Playback speed"
> >
{speeds.map(speed => ( <Menu.MenuGroup
<Menu.MenuItem label="Playback speed"
key={speed} >
id={"speed-" + speed} {speeds.map(speed => (
label={`${speed}x`} <Menu.MenuItem
action={() => changeSpeed(speed)} key={speed}
/> id={"speed-" + speed}
))} label={`${speed}x`}
</Menu.MenuGroup> action={() => changeSpeed(speed)}
</Menu.Menu> />
); ))}
}}> </Menu.MenuGroup>
<SpeedIcon/> </Menu.Menu>
</button> );
)} }}>
</Tooltip> <SpeedIcon/>
</button>
)}
</Tooltip>
</ErrorBoundary>
); );
}), },
patches: [ patches: [
// voice message embeds // voice message embeds