Files
WebDrop/web/src/features/item/summary.ts
T
2026-10-02 00:59:37 +08:00

31 lines
920 B
TypeScript

import type { Item } from '@/core-bridge/types';
import type { IconName } from '@/ui/Icon';
const FILE_ICON = {
image: 'image',
video: 'video',
audio: 'file',
text: 'text',
archive: 'archive',
none: 'file',
} as const satisfies Record<string, IconName>;
export function iconOf(item: Item): IconName {
return item.kind === 'text' ? 'text' : FILE_ICON[item.preview];
}
/** 列表里的一行标题:文件名,或文本的第一行 */
export function titleOf(item: Item): string {
if (item.kind === 'file') return item.name;
return item.text.split('\n').find((l) => l.trim() !== '')?.trim() ?? '(空)';
}
export function shortDevice(name: string | undefined): string {
return (name ?? '未知设备').split(' · ')[0] ?? '未知设备';
}
/** 当前版本号:旧版本数 + 1 */
export function versionOf(item: Item): number {
return item.kind === 'file' ? (item.versions?.length ?? 0) + 1 : 1;
}