Changeset View
Changeset View
Standalone View
Standalone View
native/avatars/avatar-hooks.js
Show First 20 Lines • Show All 108 Lines • ▼ Show 20 Lines | try { | ||||
return selection; | return selection; | ||||
} catch (e) { | } catch (e) { | ||||
console.log(e); | console.log(e); | ||||
return undefined; | return undefined; | ||||
} | } | ||||
} | } | ||||
function useUploadSelectedMedia( | function useUploadSelectedMedia( | ||||
setProcessingOrUploadInProgress: (inProgress: boolean) => mixed, | setProcessingOrUploadInProgress?: (inProgress: boolean) => mixed, | ||||
): (selection: NativeMediaSelection) => Promise<?ImageAvatarDBContent> { | ): (selection: NativeMediaSelection) => Promise<?ImageAvatarDBContent> { | ||||
const processSelectedMedia = useProcessSelectedMedia(); | const processSelectedMedia = useProcessSelectedMedia(); | ||||
const uploadProcessedMedia = useUploadProcessedMedia(); | const uploadProcessedMedia = useUploadProcessedMedia(); | ||||
return React.useCallback( | return React.useCallback( | ||||
async (selection: NativeMediaSelection) => { | async (selection: NativeMediaSelection) => { | ||||
setProcessingOrUploadInProgress(true); | setProcessingOrUploadInProgress?.(true); | ||||
const urisToBeDisposed: Set<string> = new Set([selection.uri]); | const urisToBeDisposed: Set<string> = new Set([selection.uri]); | ||||
let processedMedia; | let processedMedia; | ||||
try { | try { | ||||
processedMedia = await processSelectedMedia(selection); | processedMedia = await processSelectedMedia(selection); | ||||
if (processedMedia.uploadURI) { | if (processedMedia.uploadURI) { | ||||
urisToBeDisposed.add(processedMedia.uploadURI); | urisToBeDisposed.add(processedMedia.uploadURI); | ||||
} | } | ||||
} catch (e) { | } catch (e) { | ||||
urisToBeDisposed.forEach(filesystem.unlink); | urisToBeDisposed.forEach(filesystem.unlink); | ||||
Alert.alert( | Alert.alert( | ||||
'Media processing failed', | 'Media processing failed', | ||||
'Unable to process selected media.', | 'Unable to process selected media.', | ||||
); | ); | ||||
setProcessingOrUploadInProgress(false); | setProcessingOrUploadInProgress?.(false); | ||||
return undefined; | return undefined; | ||||
} | } | ||||
if (!processedMedia.success) { | if (!processedMedia.success) { | ||||
urisToBeDisposed.forEach(filesystem.unlink); | urisToBeDisposed.forEach(filesystem.unlink); | ||||
Alert.alert( | Alert.alert( | ||||
'Media processing failed', | 'Media processing failed', | ||||
'Unable to process selected media.', | 'Unable to process selected media.', | ||||
); | ); | ||||
setProcessingOrUploadInProgress(false); | setProcessingOrUploadInProgress?.(false); | ||||
return undefined; | return undefined; | ||||
} | } | ||||
let uploadedMedia: UploadMultimediaResult; | let uploadedMedia: UploadMultimediaResult; | ||||
try { | try { | ||||
uploadedMedia = await uploadProcessedMedia(processedMedia); | uploadedMedia = await uploadProcessedMedia(processedMedia); | ||||
urisToBeDisposed.forEach(filesystem.unlink); | urisToBeDisposed.forEach(filesystem.unlink); | ||||
} catch { | } catch { | ||||
urisToBeDisposed.forEach(filesystem.unlink); | urisToBeDisposed.forEach(filesystem.unlink); | ||||
Alert.alert( | Alert.alert( | ||||
'Media upload failed', | 'Media upload failed', | ||||
'Unable to upload selected media. Please try again.', | 'Unable to upload selected media. Please try again.', | ||||
); | ); | ||||
setProcessingOrUploadInProgress(false); | setProcessingOrUploadInProgress?.(false); | ||||
return undefined; | return undefined; | ||||
} | } | ||||
if (!uploadedMedia.id) { | if (!uploadedMedia.id) { | ||||
return undefined; | return undefined; | ||||
} | } | ||||
return { | return { | ||||
▲ Show 20 Lines • Show All 142 Lines • Show Last 20 Lines |