fix(mobile): handle file picker cancellation
This commit is contained in:
@@ -7,6 +7,7 @@ import type {
|
||||
} from '@/types/api';
|
||||
import { apiRequest, apiUrl, authHeaders, readTextPayload } from './api';
|
||||
import { getAuth } from './auth';
|
||||
import { fileSelectionFailure } from '../utils/file-selection';
|
||||
|
||||
const materialExtensions = ['.pdf', '.doc', '.docx', '.jpg', '.jpeg', '.png', '.webp'];
|
||||
|
||||
@@ -57,7 +58,7 @@ export const chooseCandidateFile = () =>
|
||||
size: Number(file.size || 0)
|
||||
});
|
||||
},
|
||||
fail: () => reject(new Error('未选择文件'))
|
||||
fail: (error) => reject(fileSelectionFailure(error, '文件'))
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import type {
|
||||
CaseUploadResponse
|
||||
} from '@/types/api';
|
||||
import { apiRequest, apiUrl, authHeaders, authenticatedFileUrl, readTextPayload } from './api';
|
||||
import { fileSelectionFailure } from '../utils/file-selection';
|
||||
|
||||
const audioExtensions = ['.mp3', '.wav', '.m4a', '.webm', '.aac', '.ogg'];
|
||||
|
||||
@@ -31,7 +32,7 @@ export const chooseCaseAudio = () =>
|
||||
size: Number(file.size || 0)
|
||||
});
|
||||
},
|
||||
fail: () => reject(new Error('未选择音频'))
|
||||
fail: (error) => reject(fileSelectionFailure(error, '音频'))
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ import type {
|
||||
} from '@/types/api';
|
||||
import { apiRequest, apiUrl, authHeaders, readTextPayload } from './api';
|
||||
import { getSelectedPosition } from './auth';
|
||||
import { fileSelectionFailure } from '../utils/file-selection';
|
||||
|
||||
type RawKnowledgeSnippet = KnowledgeSnippet & {
|
||||
title?: string;
|
||||
@@ -44,7 +45,7 @@ export const chooseKnowledgeMedia = () =>
|
||||
}
|
||||
resolve({ path, name, size, kind });
|
||||
},
|
||||
fail: () => reject(new Error('未选择附件'))
|
||||
fail: (error) => reject(fileSelectionFailure(error, '附件'))
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ import type {
|
||||
PersonalSpace,
|
||||
ServiceMemory
|
||||
} from '@/types/api';
|
||||
import { fileSelectionFailure } from '../utils/file-selection';
|
||||
import type { CaptureStatusHistory } from '@/types/api';
|
||||
import { apiRequest, apiUrl, authHeaders, readTextPayload } from './api';
|
||||
import { personalItemApiPath, personalSessionApiPath } from './personal-assistant-id';
|
||||
@@ -145,7 +146,7 @@ export const choosePersonalFile = () => new Promise<PersonalSelectedFile>((resol
|
||||
const path = file?.path || result.tempFilePaths?.[0] || '';
|
||||
if (!path) return reject(new Error('未获取到文件路径'));
|
||||
resolve({ path, name: file?.name || path.split('/').pop() || 'personal-file', size: Number(file?.size || 0) });
|
||||
}, fail: () => reject(new Error('未选择文件')) });
|
||||
}, fail: (error) => reject(fileSelectionFailure(error, '文件')) });
|
||||
});
|
||||
|
||||
export const uploadPersonalFile = (file: PersonalSelectedFile, title?: string, capturedAt?: string) =>
|
||||
|
||||
@@ -5,6 +5,7 @@ import type { SpeechCapture } from './speech-capture';
|
||||
import { estimateMpegAudioDuration } from './mpeg-audio-duration';
|
||||
import { dataUriToBlobUrl, decodeDataAudioUri, hasNativeAudioFileSupport, isDataAudioUri, removeNativeTempAudio, writeNativeTempAudio } from './speech-audio-source';
|
||||
import { applyTtsVoicePreference, getTtsDialectPreference, getTtsVoicePreference } from './tts-voice-preference';
|
||||
import { fileSelectionFailure } from '../utils/file-selection';
|
||||
|
||||
const audioExtensions = ['.mp3', '.wav', '.m4a', '.webm', '.aac', '.ogg'];
|
||||
|
||||
@@ -45,7 +46,7 @@ export const chooseSpeechAudio = () =>
|
||||
size: Number(file.size || 0)
|
||||
});
|
||||
},
|
||||
fail: () => reject(new Error('未选择音频'))
|
||||
fail: (error) => reject(fileSelectionFailure(error, '音频'))
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user