diff --git a/app/mobile/src/session/conversation/topicItem/binaryAsset/BinaryAsset.jsx b/app/mobile/src/session/conversation/topicItem/binaryAsset/BinaryAsset.jsx index fcb1d4a9..f9800f4d 100644 --- a/app/mobile/src/session/conversation/topicItem/binaryAsset/BinaryAsset.jsx +++ b/app/mobile/src/session/conversation/topicItem/binaryAsset/BinaryAsset.jsx @@ -13,8 +13,9 @@ export function BinaryAsset({ asset, dismiss }) { const download = async () => { try { - const url = asset.encrypted ? `file://${asset.decrypted}` : asset.data; - await actions.download(asset.label, asset.extension, url); + const ext = asset.extension.toLowerCase(); + const url = asset.encrypted ? asset.decrypted : asset.data; + await actions.download(asset.label, ext, asset.encrypted, url); } catch (err) { Alert.alert( diff --git a/app/mobile/src/session/conversation/topicItem/binaryAsset/useBinaryAsset.hook.js b/app/mobile/src/session/conversation/topicItem/binaryAsset/useBinaryAsset.hook.js index bb2a38bf..61212247 100644 --- a/app/mobile/src/session/conversation/topicItem/binaryAsset/useBinaryAsset.hook.js +++ b/app/mobile/src/session/conversation/topicItem/binaryAsset/useBinaryAsset.hook.js @@ -31,37 +31,33 @@ export function useBinaryAsset() { }, [dimensions]); const actions = { - download: async (label, extension, url) => { + download: async (label, extension, cached, url) => { if (!state.downloading) { try { updateState({ downloading: true }); - const blob = await RNFetchBlob.config({ fileCache: true }).fetch("GET", url); - const src = blob.path(); - if (Platform.OS === 'ios') { - const path = `${RNFetchBlob.fs.dirs.DocumentDir}` - const dst = `${path}/${label}.${extension.toLowerCase()}` - if (RNFetchBlob.fs.exists(dst)) { - RNFetchBlob.fs.unlink(dst); - } - await RNFetchBlob.fs.mv(src, dst); - try { - await Share.open({ url: dst, message: `${label}.${extension}`, subject: `${label}.${extension}` }) - } - catch (err) { - console.log(err); - } - RNFetchBlob.fs.unlink(dst); + let src; + if (cached) { + src = url } else { - const path = `${RNFetchBlob.fs.dirs.DownloadDir}` - const dst = `${path}/${label}.${extension.toLowerCase()}` - if (RNFetchBlob.fs.exists(dst)) { - RNFetchBlob.fs.unlink(dst); - } - await RNFetchBlob.fs.mv(src, dst); + const blob = await RNFetchBlob.config({ fileCache: true }).fetch("GET", url); + src = blob.path(); + } + + const path = `${RNFetchBlob.fs.dirs.DocumentDir}` + const dst = `${path}/${label}.${extension.toLowerCase()}` + if (RNFetchBlob.fs.exists(dst)) { RNFetchBlob.fs.unlink(dst); } + await RNFetchBlob.fs.mv(src, dst); + try { + await Share.open({ url: dst, message: `${label}.${extension}`, subject: `${label}.${extension}` }) + } + catch (err) { + console.log(err); + } + RNFetchBlob.fs.unlink(dst); updateState({ downloading: false }); }