import type { DmsPermissionResource } from '#/api/x/dms/permission';
import type { DmsPersonalFolderFile } from '#/api/x/dms/personalFolder';

export function personalFileDisplayName(file: DmsPermissionResource) {
  return file.fileName || file.documentName || file.name;
}

export function personalFileSize(sizeBytes?: number) {
  if (sizeBytes === undefined || sizeBytes === null) return '—';
  if (sizeBytes < 1024) return `${sizeBytes} B`;
  if (sizeBytes < 1024 ** 2) return `${(sizeBytes / 1024).toFixed(1)} KB`;
  if (sizeBytes < 1024 ** 3) return `${(sizeBytes / 1024 ** 2).toFixed(1)} MB`;
  return `${(sizeBytes / 1024 ** 3).toFixed(1)} GB`;
}

export function personalFileTone(fileName: string) {
  const name = fileName.toLowerCase();
  if (name.endsWith('.pdf')) return 'pdf';
  if (/\.(?:doc|docx)$/.test(name)) return 'word';
  if (/\.(?:xls|xlsx|csv)$/.test(name)) return 'excel';
  if (/\.(?:gif|jpe?g|png|webp)$/.test(name)) return 'image';
  return 'file';
}

export function personalFileExpired(file: DmsPersonalFolderFile, now = Date.now()) {
  if (!file.validTo) return false;
  const validTo = Date.parse(file.validTo);
  return !Number.isFinite(validTo) || validTo <= now;
}
