diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/images.ts | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/lib/images.ts b/src/lib/images.ts index 9fc1cbc34..8d5eaded0 100644 --- a/src/lib/images.ts +++ b/src/lib/images.ts @@ -1,5 +1,9 @@ import RNFetchBlob from 'rn-fetch-blob' import ImageResizer from '@bam.tech/react-native-image-resizer' +import {Share} from 'react-native' +import RNFS from 'react-native-fs' + +import * as Toast from '../view/com/util/Toast' export interface DownloadAndResizeOpts { uri: string @@ -128,3 +132,21 @@ export function scaleDownDimensions(dim: Dim, max: Dim): Dim { } return {width: dim.width * hScale, height: dim.height * hScale} } + +export const saveImageModal = async ({uri}: {uri: string}) => { + const downloadResponse = await RNFetchBlob.config({ + fileCache: true, + }).fetch('GET', uri) + + const imagePath = downloadResponse.path() + const base64Data = await downloadResponse.readFile('base64') + const result = await Share.share({ + url: 'data:image/png;base64,' + base64Data, + }) + if (result.action === Share.sharedAction) { + Toast.show('Image saved to gallery') + } else if (result.action === Share.dismissedAction) { + // dismissed + } + RNFS.unlink(imagePath) +} |