'use client'; import type { ChangeEvent } from 'react'; import type { AppType } from '@/domain/entities'; import { useUploadStore } from '@/store/zustand/upload.store'; import { uploadVersionUseCase } from '@/application/use-cases/version.use-cases'; export function useUpload(appType: AppType, onSuccess: () => void) { const store = useUploadStore(); const handleFileChange = (e: ChangeEvent) => { const f = e.target.files?.[0]; if (!f) return; store.setFile(f); store.setParseWarning(''); if (f.name.endsWith('.apk')) store.setPlatform('ANDROID'); else if (f.name.endsWith('.ipa')) store.setPlatform('IOS'); }; const handleSubmit = async () => { const { file, platform, versionName, buildNumber, changelog, minOsVersion, isForceUpdate } = useUploadStore.getState(); if (!file) { store.setUploadError('请选择 APK/IPA 文件'); return; } store.setIsUploading(true); store.setUploadError(''); try { console.log('[useUpload] Uploading:', file.name, (file.size / 1024 / 1024).toFixed(1) + 'MB'); const result = await uploadVersionUseCase.execute({ file, appType, platform, versionName, buildNumber, changelog, minOsVersion, isForceUpdate, }); console.log('[useUpload] Success:', result); store.reset(); onSuccess(); } catch (err) { console.error('[useUpload] Failed:', err); store.setUploadError((err as Error)?.message || 'Upload failed'); } store.setIsUploading(false); }; return { handleFileChange, handleSubmit }; }