Skip to content

Commit 71d4d97

Browse files
authored
Fix empty download list when ratio is infinity (#8228)
2 parents faef65d + 0853b6d commit 71d4d97

File tree

4 files changed

+10
-6
lines changed

4 files changed

+10
-6
lines changed

Diff for: src/tribler/core/libtorrent/download_manager/download_state.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
from __future__ import annotations
77

88
import logging
9-
import math
109
from enum import Enum
1110
from typing import TYPE_CHECKING
1211

@@ -214,7 +213,8 @@ def get_all_time_ratio(self) -> float:
214213
return 0
215214

216215
if not self.all_time_download:
217-
return 0 if not self.all_time_upload else math.inf
216+
# We're returning -1 instead of infinity, as it avoids issues when JSON encoding.
217+
return 0 if not self.all_time_upload else -1
218218

219219
return self.all_time_upload / self.all_time_download
220220

Diff for: src/tribler/test_unit/core/libtorrent/download_manager/test_download_state.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import math
21
from io import StringIO
32
from pathlib import Path
43
from unittest.mock import Mock
@@ -116,7 +115,7 @@ def test_all_time_ratio_no_all_time_download_inf(self) -> None:
116115
"""
117116
state = DownloadState(Mock(), Mock(all_time_upload=200, all_time_download=0), None)
118117

119-
self.assertEqual(math.inf, state.get_all_time_ratio())
118+
self.assertEqual(-1, state.get_all_time_ratio())
120119

121120
def test_get_files_completion(self) -> None:
122121
"""

Diff for: src/tribler/ui/src/pages/Downloads/Details.tsx

+6-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,12 @@ export default function DownloadDetails({ selectedDownloads }: { selectedDownloa
6868
</div>
6969
<div className="flex flex-row">
7070
<div className="basis-1/4">{t('Ratio')}</div>
71-
<div className="basis-3/4">{download?.all_time_ratio.toFixed(2)} ({formatBytes(download?.all_time_upload)} upload; {formatBytes(download?.all_time_download)} dowload)</div>
71+
<div className="basis-3/4">{
72+
download.all_time_ratio < 0 ?
73+
String(`∞`) :
74+
download?.all_time_ratio.toFixed(2)}
75+
&nbsp;({formatBytes(download?.all_time_upload)} upload; {formatBytes(download?.all_time_download)} dowload)
76+
</div>
7277
</div>
7378
<div className="flex flex-row">
7479
<div className="basis-1/4">{t('Availability')}</div>

Diff for: src/tribler/ui/src/pages/Settings/Seeding.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export default function Seeding() {
3131
return (
3232
<div className="p-6 w-full">
3333
<RadioGroup
34-
defaultValue="forever"
34+
defaultValue={settings?.libtorrent?.download_defaults?.seeding_mode || "forever"}
3535
onValueChange={(value) => {
3636
if (settings) {
3737
setSettings({

0 commit comments

Comments
 (0)