show torrent content size
This commit is contained in:
@@ -12,6 +12,7 @@ import { useDownloadTorrentMutation } from "../api/useDownloadTorrentMutation";
|
|||||||
import { useDeleteItemMutation } from "../api/useDeleteItemMutation";
|
import { useDeleteItemMutation } from "../api/useDeleteItemMutation";
|
||||||
import { useQueryClient } from "@tanstack/react-query";
|
import { useQueryClient } from "@tanstack/react-query";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
|
import { humanFileSize } from "../utils/humanFileSize";
|
||||||
|
|
||||||
export type ItemProps = {
|
export type ItemProps = {
|
||||||
item: ItemDetails;
|
item: ItemDetails;
|
||||||
@@ -105,6 +106,7 @@ export const Item = ({ item }: ItemProps) => {
|
|||||||
>
|
>
|
||||||
<DownloadSimpleIcon size={24} />
|
<DownloadSimpleIcon size={24} />
|
||||||
</button>
|
</button>
|
||||||
|
<span>{humanFileSize(torrent.size)}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
))
|
))
|
||||||
|
|||||||
23
web/src/utils/humanFileSize.ts
Normal file
23
web/src/utils/humanFileSize.ts
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
export const humanFileSize = (bytes: number, si = false, dp = 1): string => {
|
||||||
|
const thresh = si ? 1000 : 1024;
|
||||||
|
|
||||||
|
if (Math.abs(bytes) < thresh) {
|
||||||
|
return bytes + " B";
|
||||||
|
}
|
||||||
|
|
||||||
|
const units = si
|
||||||
|
? ["kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]
|
||||||
|
: ["KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"];
|
||||||
|
let u = -1;
|
||||||
|
const r = 10 ** dp;
|
||||||
|
|
||||||
|
do {
|
||||||
|
bytes /= thresh;
|
||||||
|
++u;
|
||||||
|
} while (
|
||||||
|
Math.round(Math.abs(bytes) * r) / r >= thresh &&
|
||||||
|
u < units.length - 1
|
||||||
|
);
|
||||||
|
|
||||||
|
return bytes.toFixed(dp) + " " + units[u];
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user