From 5b2b281efb05fdc7658b09c8dcd97a6cd963164f Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 12 Dec 2024 17:12:00 +0100 Subject: [PATCH] Move fun to a Factory file --- .../impl/local/audio/MediaAudioView.kt | 17 +++-------- .../impl/local/player/ExoPlayerFactory.kt | 28 +++++++++++++++++++ .../impl/local/video/MediaVideoView.kt | 14 +++------- 3 files changed, 36 insertions(+), 23 deletions(-) create mode 100644 libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/player/ExoPlayerFactory.kt diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/audio/MediaAudioView.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/audio/MediaAudioView.kt index 073e5b2492..a9c052be14 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/audio/MediaAudioView.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/audio/MediaAudioView.kt @@ -67,10 +67,10 @@ import io.element.android.libraries.mediaviewer.api.helper.formatFileExtensionAn import io.element.android.libraries.mediaviewer.api.local.LocalMedia import io.element.android.libraries.mediaviewer.impl.local.LocalMediaViewState import io.element.android.libraries.mediaviewer.impl.local.PlayableState +import io.element.android.libraries.mediaviewer.impl.local.player.MediaPlayerControllerState +import io.element.android.libraries.mediaviewer.impl.local.player.MediaPlayerControllerView +import io.element.android.libraries.mediaviewer.impl.local.player.rememberExoPlayer import io.element.android.libraries.mediaviewer.impl.local.rememberLocalMediaViewState -import io.element.android.libraries.mediaviewer.impl.local.video.ExoPlayerForPreview -import io.element.android.libraries.mediaviewer.impl.local.video.MediaPlayerControllerState -import io.element.android.libraries.mediaviewer.impl.local.video.MediaPlayerControllerView import kotlinx.collections.immutable.toPersistentList import kotlinx.coroutines.delay @@ -83,16 +83,7 @@ fun MediaAudioView( info: MediaInfo?, modifier: Modifier = Modifier, ) { - val exoPlayer = if (LocalInspectionMode.current) { - remember { - ExoPlayerForPreview() - } - } else { - val context = LocalContext.current - remember { - ExoPlayer.Builder(context).build() - } - } + val exoPlayer = rememberExoPlayer() ExoPlayerMediaAudioView( localMediaViewState = localMediaViewState, bottomPaddingInPixels = bottomPaddingInPixels, diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/player/ExoPlayerFactory.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/player/ExoPlayerFactory.kt new file mode 100644 index 0000000000..0baf3d7e9d --- /dev/null +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/player/ExoPlayerFactory.kt @@ -0,0 +1,28 @@ +/* + * Copyright 2024 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only + * Please see LICENSE in the repository root for full details. + */ + +package io.element.android.libraries.mediaviewer.impl.local.player + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalInspectionMode +import androidx.media3.exoplayer.ExoPlayer + +@Composable +fun rememberExoPlayer(): ExoPlayer { + return if (LocalInspectionMode.current) { + remember { + ExoPlayerForPreview() + } + } else { + val context = LocalContext.current + remember { + ExoPlayer.Builder(context).build() + } + } +} diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/video/MediaVideoView.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/video/MediaVideoView.kt index f14fc9c77a..5dcdc0d338 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/video/MediaVideoView.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/video/MediaVideoView.kt @@ -45,6 +45,9 @@ import io.element.android.libraries.designsystem.utils.OnLifecycleEvent import io.element.android.libraries.mediaviewer.api.local.LocalMedia import io.element.android.libraries.mediaviewer.impl.local.LocalMediaViewState import io.element.android.libraries.mediaviewer.impl.local.PlayableState +import io.element.android.libraries.mediaviewer.impl.local.player.MediaPlayerControllerState +import io.element.android.libraries.mediaviewer.impl.local.player.MediaPlayerControllerView +import io.element.android.libraries.mediaviewer.impl.local.player.rememberExoPlayer import io.element.android.libraries.mediaviewer.impl.local.rememberLocalMediaViewState import kotlinx.coroutines.delay import kotlin.time.Duration.Companion.seconds @@ -57,16 +60,7 @@ fun MediaVideoView( localMedia: LocalMedia?, modifier: Modifier = Modifier, ) { - val exoPlayer = if (LocalInspectionMode.current) { - remember { - ExoPlayerForPreview() - } - } else { - val context = LocalContext.current - remember { - ExoPlayer.Builder(context).build() - } - } + val exoPlayer = rememberExoPlayer() ExoPlayerMediaVideoView( localMediaViewState = localMediaViewState, bottomPaddingInPixels = bottomPaddingInPixels,