gerbil/src/utils/downloadUtils.ts

37 lines
998 B
TypeScript

import { formatFileSizeInMB } from '@/utils/fileSize';
import { KOBOLDAI_URLS } from '@/constants';
export const formatDownloadSize = (size: number, url?: string): string => {
if (!size) return '';
const isApproximateSize = url?.includes(KOBOLDAI_URLS.DOMAIN);
return isApproximateSize
? `~${formatFileSizeInMB(size)}`
: formatFileSizeInMB(size);
};
export const compareVersions = (versionA: string, versionB: string): number => {
const cleanVersion = (version: string): string =>
version.replace(/^v/, '').replace(/[^0-9.]/g, '');
const parseVersion = (version: string): number[] =>
cleanVersion(version)
.split('.')
.map((num) => parseInt(num, 10) || 0);
const a = parseVersion(versionA);
const b = parseVersion(versionB);
const maxLength = Math.max(a.length, b.length);
for (let i = 0; i < maxLength; i++) {
const aVal = a[i] || 0;
const bVal = b[i] || 0;
if (aVal !== bVal) {
return aVal - bVal;
}
}
return 0;
};