From ea81c5e2b589bd29103b171beabdd56750fb8c1b Mon Sep 17 00:00:00 2001 From: R Midhun Suresh Date: Thu, 2 Oct 2025 13:49:21 +0530 Subject: [PATCH] Use hook in AudioPlayer component --- src/components/views/messages/MAudioBody.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/views/messages/MAudioBody.tsx b/src/components/views/messages/MAudioBody.tsx index 8cbf7b3aa8..e0dda762e2 100644 --- a/src/components/views/messages/MAudioBody.tsx +++ b/src/components/views/messages/MAudioBody.tsx @@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com Please see LICENSE files in the repository root for full details. */ -import React, { type JSX, useEffect, useMemo } from "react"; +import React, { type JSX, useEffect } from "react"; import { logger } from "matrix-js-sdk/src/logger"; import { type IContent } from "matrix-js-sdk/src/matrix"; import { type MediaEventContent } from "matrix-js-sdk/src/types"; @@ -21,6 +21,7 @@ import RoomContext, { TimelineRenderingType } from "../../../contexts/RoomContex import MediaProcessingError from "./shared/MediaProcessingError"; import { AudioPlayerViewModel } from "../../../viewmodels/audio/AudioPlayerViewModel"; import { AudioPlayerView } from "../../../shared-components/audio/AudioPlayerView"; +import { useAutoDisposedViewModel } from "../../../viewmodels/base/useAutoDisposedViewModel"; interface IState { error?: boolean; @@ -69,7 +70,6 @@ export default class MAudioBody extends React.PureComponent public componentWillUnmount(): void { this.state.playback?.destroy(); - this.state.audioPlayerVm?.dispose(); } protected get showFileBody(): boolean { @@ -133,7 +133,7 @@ interface AudioPlayerProps { * AudioPlayer component that initializes the AudioPlayerViewModel and renders the AudioPlayerView. */ function AudioPlayer({ playback, mediaName }: AudioPlayerProps): JSX.Element { - const vm = useMemo(() => new AudioPlayerViewModel({ playback, mediaName }), [playback, mediaName]); + const vm = useAutoDisposedViewModel(() => new AudioPlayerViewModel({ playback, mediaName })); useEffect(() => { return () => {