2026-06-28 18:31:05 +02:00
|
|
|
/* ── Format bytes to human-readable size ── */
|
|
|
|
|
export function formatBytes(bytes: number): string {
|
|
|
|
|
if (bytes === 0) return '0 B';
|
|
|
|
|
const units = ['B', 'KB', 'MB', 'GB', 'TB'];
|
|
|
|
|
const i = Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), units.length - 1);
|
|
|
|
|
const val = bytes / Math.pow(1024, i);
|
|
|
|
|
return val < 10 ? val.toFixed(1) + ' ' + units[i] : Math.round(val) + ' ' + units[i];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* ── Gateway link for CID ── */
|
|
|
|
|
export function gatewayLink(cid: string): string {
|
2026-07-05 16:57:29 +02:00
|
|
|
return `https://ipfs.maos.dedyn.io/${cid}`;
|
2026-06-28 18:31:05 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* ── Truncate CID for display ── */
|
|
|
|
|
export function truncateCid(cid: string, chars: number = 12): string {
|
|
|
|
|
if (cid.length <= chars) return cid;
|
|
|
|
|
return `${cid.slice(0, chars)}...`;
|
|
|
|
|
}
|