mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
fix(android upload): handle transient imgur errors
This commit is contained in:
@@ -442,11 +442,41 @@ describe('useFileUpload', () => {
|
||||
});
|
||||
const call = vi.mocked(FileUploader.pickAndUploadMedia).mock.calls[0][0];
|
||||
expect(call?.providerOrder).toEqual(expect.arrayContaining(['catbox']));
|
||||
expect(call?.providerOrder).toEqual(expect.arrayContaining(['imgur']));
|
||||
expect(call?.providerOrder).toEqual(expect.arrayContaining(['imgbb']));
|
||||
expect(call?.providerOrder).toEqual(expect.arrayContaining(['imgur']));
|
||||
expect(onUploadComplete).toHaveBeenCalledWith('https://files.catbox.moe/random.jpg', 'random.jpg');
|
||||
});
|
||||
|
||||
it('surfaces Android provider errors with their stage', async () => {
|
||||
uploadModeRef.value = 'random';
|
||||
preferredProviderRef.value = 'catbox';
|
||||
vi.mocked(Capacitor.getPlatform).mockReturnValue('android');
|
||||
const error = new Error('All providers failed') as Error & { data: { attempts: unknown[] } };
|
||||
error.data = {
|
||||
attempts: [
|
||||
{
|
||||
provider: 'imgur',
|
||||
success: false,
|
||||
error: 'Provider error: CREATE_ALBUM_FAIL',
|
||||
stage: 'provider_error',
|
||||
elapsedMs: 2200,
|
||||
matchedSelectors: '#file-input',
|
||||
},
|
||||
],
|
||||
};
|
||||
vi.mocked(FileUploader.pickAndUploadMedia).mockRejectedValue(error);
|
||||
const { onUploadComplete, hook } = mountHook();
|
||||
|
||||
await act(async () => {
|
||||
await hook().handleUpload();
|
||||
});
|
||||
|
||||
expect(window.alert).toHaveBeenCalledWith(
|
||||
'upload_failed. upload_failed_all_providers: imgur: Provider error: CREATE_ALBUM_FAIL (stage=provider_error, 2200ms, tried=[#file-input])',
|
||||
);
|
||||
expect(onUploadComplete).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('random mode: Electron upload succeeds when orchestrator resolves', async () => {
|
||||
uploadModeRef.value = 'random';
|
||||
preferredProviderRef.value = 'catbox';
|
||||
|
||||
@@ -15,6 +15,7 @@ const ANDROID_STAGE_MAP: Record<string, UploadAttemptStage> = {
|
||||
chooser_not_triggered: 'file_input',
|
||||
upload_timed_out: 'timeout',
|
||||
blocked_detected: 'blocked',
|
||||
provider_error: 'provider_error',
|
||||
no_recipe: 'unknown',
|
||||
page_loaded: 'page_load',
|
||||
blocked: 'blocked',
|
||||
|
||||
Reference in New Issue
Block a user