55 lines
1.0 KiB
TypeScript
55 lines
1.0 KiB
TypeScript
import * as MediaLibrary from 'expo-media-library';
|
|
|
|
export type ExtendedAsset = MediaLibrary.Asset & {
|
|
exif?: Record<string, any>;
|
|
};
|
|
|
|
// 上传任务类型
|
|
export type UploadTask = {
|
|
file: File;
|
|
metadata: {
|
|
isCompressed: string;
|
|
type: string;
|
|
isThumbnail?: string;
|
|
[key: string]: any;
|
|
};
|
|
};
|
|
|
|
// 上传队列项
|
|
export type FileUploadItem = {
|
|
id: string;
|
|
name: string;
|
|
progress: number;
|
|
status: 'pending' | 'uploading' | 'done' | 'error';
|
|
error: string | null;
|
|
type: 'image' | 'video';
|
|
thumbnail: string | null;
|
|
};
|
|
|
|
// 确认上传返回
|
|
export type ConfirmUpload = {
|
|
file_id: string;
|
|
upload_url: string;
|
|
name: string;
|
|
size: number;
|
|
content_type: string;
|
|
file_path: string;
|
|
};
|
|
|
|
// 上传结果
|
|
export type UploadResult = {
|
|
originalUrl?: string;
|
|
compressedUrl: string;
|
|
file: File | null;
|
|
exif: any;
|
|
originalFile: ConfirmUpload;
|
|
compressedFile: ConfirmUpload;
|
|
thumbnail: string;
|
|
thumbnailFile: File;
|
|
};
|
|
|
|
// 上传URL响应类型
|
|
export type UploadUrlResponse = {
|
|
upload_url: string;
|
|
file_id: string;
|
|
}; |