From bc9d97ed8a495bd7bd5473356d370350ecd65890 Mon Sep 17 00:00:00 2001 From: KhooLy <73142442+KhooLy@users.noreply.github.com> Date: Sat, 1 Aug 2026 16:24:18 +0300 Subject: [PATCH] Deactivate torrents when Android playback stops --- .../com/fluxa/app/player/TorrentStreamManager.kt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/player/src/androidMain/kotlin/com/fluxa/app/player/TorrentStreamManager.kt b/player/src/androidMain/kotlin/com/fluxa/app/player/TorrentStreamManager.kt index 3045f18..884718b 100644 --- a/player/src/androidMain/kotlin/com/fluxa/app/player/TorrentStreamManager.kt +++ b/player/src/androidMain/kotlin/com/fluxa/app/player/TorrentStreamManager.kt @@ -50,6 +50,7 @@ class TorrentStreamManager private constructor() { @Volatile private var pendingSettings = defaultSettings() @Volatile private var appContext: Context? = null @Volatile private var engine: TorrentServerEngine? = null + @Volatile private var activeTorrentLink: String? = null private val _status = MutableStateFlow(TorrentStreamStatus()) val status: StateFlow = _status.asStateFlow() @@ -65,8 +66,8 @@ class TorrentStreamManager private constructor() { } } - fun configurePreferences(speedPreset: String?) { - val newSettings = TorrentSettings(preloadSize = speedPreset.toPreloadSizeMb()) + fun configurePreferences(speedPreset: String?, cacheLimitMb: Long? = null) { + val newSettings = TorrentSettings(preloadSize = speedPreset.toPreloadSizeMb(), cacheLimitMb = cacheLimitMb) if (newSettings == pendingSettings) return pendingSettings = newSettings scope.launch { @@ -155,6 +156,7 @@ class TorrentStreamManager private constructor() { }.onFailure { Log.w(TAG, "background addTorrent failed", it) } } startStatusPolling(plan.normalizedLink, videoId) + activeTorrentLink = plan.normalizedLink callback(TorrentStreamResult.Success(plan.streamUrl)) } catch (e: Exception) { Log.e(TAG, "Torrent stream failed", e) @@ -167,6 +169,12 @@ class TorrentStreamManager private constructor() { statusJob?.cancel() statusJob = null _status.value = TorrentStreamStatus() + activeTorrentLink?.let { link -> + scope.launch { + runCatching { api.removeTorrent(TorrentRequest(action = "deactivate", link = link)) } + } + } + activeTorrentLink = null } fun shutdown() {