feat: switch from wails to tauri

This commit is contained in:
2025-07-13 13:24:13 -05:00
parent 0e5dede83a
commit 7fcb3e3f7c
72 changed files with 5985 additions and 2490 deletions

38
src/lib/format.ts Normal file
View File

@@ -0,0 +1,38 @@
/**
* Formats a number of bytes into a human-readable string using binary units (KiB, MiB, GiB, TiB).
*
* - For values less than 1024, returns the value in bytes (e.g., "512 B").
* - For larger values, converts to the appropriate unit and formats:
* - If the integer part is 1000 or more, shows no decimal (e.g., "1024 KiB").
* - If the decimal part is at least 0.1, shows one decimal place (e.g., 1228.8 KiB formats as "1.2 MiB").
* - Otherwise, shows no decimal (e.g., 1075.2 MiB == 1.05 GiB, formats as "1 GiB").
*
* @param v - The number of bytes to format.
* @returns The formatted string with the appropriate unit.
*/
export function formatBytes(v: number): string {
if (v < 1024) return `${v} B`;
const units = ["KiB", "MiB", "GiB", "TiB"];
let unitIndex = -1;
let value = v;
while (value >= 1024 && unitIndex < units.length - 1) {
value /= 1024;
unitIndex++;
}
const intValue = Math.floor(value);
const decimal = value - intValue;
if (intValue >= 1000) {
// More than 3 digits, no decimal
return `${intValue} ${units[unitIndex]}`;
} else if (decimal >= 0.1) {
// Show 1 decimal if decimal >= 0.1
return `${value.toFixed(1)} ${units[unitIndex]}`;
} else {
// No decimal
return `${intValue} ${units[unitIndex]}`;
}
}