@@ -14,7 +14,7 @@ import androidx.compose.runtime.mutableStateListOf
1414import androidx.compose.runtime.mutableStateOf
1515import androidx.compose.runtime.setValue
1616import androidx.compose.ui.util.fastAny
17- import androidx.compose.ui.util.fastMap
17+ import androidx.compose.ui.util.fastMapNotNull
1818import androidx.media3.common.C
1919import androidx.media3.common.Format
2020import androidx.media3.common.MediaItem
@@ -57,6 +57,7 @@ import com.flixclusive.core.ui.player.util.getCacheFactory
5757import com.flixclusive.core.ui.player.util.getLoadControl
5858import com.flixclusive.core.ui.player.util.getRenderers
5959import com.flixclusive.core.ui.player.util.handleError
60+ import com.flixclusive.core.ui.player.util.isOffSubtitle
6061import com.flixclusive.core.util.exception.safeCall
6162import com.flixclusive.core.util.log.errorLog
6263import com.flixclusive.core.util.log.infoLog
@@ -72,6 +73,7 @@ import okhttp3.OkHttpClient
7273import java.util.Locale
7374import kotlin.math.max
7475import kotlin.time.Duration.Companion.seconds
76+ import com.flixclusive.core.locale.R as LocaleR
7577
7678/* * toleranceBeforeUs – The maximum time that the actual position seeked to may precede the
7779 * requested seek position, in microseconds. Must be non-negative. */
@@ -332,8 +334,6 @@ class FlixclusivePlayerManager(
332334 initialPlaybackPosition,
333335 )
334336
335- mediaItem
336-
337337 prepare()
338338 playWhenReady = this @FlixclusivePlayerManager.playWhenReady
339339 }
@@ -495,10 +495,18 @@ class FlixclusivePlayerManager(
495495 },
496496 ).addOffSubtitle(context)
497497
498+ val offSubtitleLabel = context.getString(LocaleR .string.off_subtitles)
499+
498500 // Cloudstream3 logic for unique subtitle names
499501 return sortedSubtitles
500- .fastMap { subtitle ->
502+ .fastMapNotNull { subtitle ->
503+ if (subtitle.isOffSubtitle(context)) {
504+ availableSubtitles.add(subtitle)
505+ return @fastMapNotNull null
506+ }
507+
501508 val subtitleName = subtitle.language.toUniqueSubtitleLanguage()
509+ availableSubtitles.add(subtitle.copy(language = subtitleName))
502510
503511 val subtitleConfiguration =
504512 SubtitleConfiguration
@@ -507,8 +515,6 @@ class FlixclusivePlayerManager(
507515 .setLanguage(subtitleName)
508516 .build()
509517
510- availableSubtitles.add(subtitle.copy(language = subtitleName))
511-
512518 val format =
513519 Format
514520 .Builder ()
@@ -532,13 +538,15 @@ class FlixclusivePlayerManager(
532538 )
533539 }
534540
541+ val subtitleDataSource = when (subtitle.type) {
542+ SubtitleSource .ONLINE -> okHttpDataSource
543+ else -> localDataSource
544+ }
545+
535546 val factory =
536547 ProgressiveMediaSource
537548 .Factory (
538- when (subtitle.type) {
539- SubtitleSource .ONLINE -> okHttpDataSource
540- else -> localDataSource
541- },
549+ subtitleDataSource,
542550 extractorFactory,
543551 )
544552
0 commit comments