about summary refs log tree commit diff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/images.ts22
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)
+}