Files
WebDrop/web/src/core-bridge/worker/resourceMetadata.ts
T

20 lines
1.1 KiB
TypeScript

import type { ChannelInfo, ShareInfo } from '../generated/api';
import type { SavedResource } from '../database';
/** Server-owned fields only: preserve local credentials, drafts, and user edit timestamps. */
export function channelCache(raw: ChannelInfo): Partial<SavedResource> {
return { name: raw.settings.name ?? undefined, creatorAccount: raw.creator_account ?? undefined,
createdAt: raw.created_at, expiresAt: raw.expires_at, seats: raw.settings.seats,
maxDownloads: raw.settings.file_max_downloads,
ttlSeconds: raw.settings.ttl_seconds, channelMetadata: raw };
}
export function shareCache(raw: ShareInfo): Partial<SavedResource> {
if (raw.state !== 'draft' && raw.state !== 'sealed') throw new Error('分享状态无效');
return { createdAt: raw.sealed_at ?? raw.created_at, expiresAt: raw.expires_at, state: raw.state,
ttlSeconds: raw.settings.ttl_seconds, maxVisitors: raw.settings.max_visitors,
maxDownloads: raw.settings.file_max_downloads || null, shareMetadata: raw };
}
export function isOfflineFailure(error: unknown): boolean {
return error instanceof Error && error.message === '网络连接失败';
}