about summary refs log tree commit diff
path: root/src/view/com/util/PostEmbeds.tsx
diff options
context:
space:
mode:
authorAryan Goharzad <arrygoo@gmail.com>2023-01-25 18:25:34 -0500
committerGitHub <noreply@github.com>2023-01-25 17:25:34 -0600
commiteb33c3fa812cc087db14a6b6ba743e982b26c462 (patch)
treed098f7a804c67755f39e95bbbfd56887bacf476c /src/view/com/util/PostEmbeds.tsx
parentadf328b50ce98c5ebd3282fe897ddfdcd0de8011 (diff)
downloadvoidsky-eb33c3fa812cc087db14a6b6ba743e982b26c462.tar.zst
Saves image on long press (#83)
* Saves image on long press

* Adds save on long press

* Forking lightbox

* move to wrapper only to the bottom sheet to reduce impact of this change

* lint

* lint

* lint

* Use official `share` API

* Clean up cache after download

* comment

* comment

* Reduce swipe close velocity

* Updates per feedback

* lint

* bugfix

* Adds delayed press-in for TouchableOpacity
Diffstat (limited to 'src/view/com/util/PostEmbeds.tsx')
-rw-r--r--src/view/com/util/PostEmbeds.tsx9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/view/com/util/PostEmbeds.tsx b/src/view/com/util/PostEmbeds.tsx
index e3fca2538..1d8df038b 100644
--- a/src/view/com/util/PostEmbeds.tsx
+++ b/src/view/com/util/PostEmbeds.tsx
@@ -10,6 +10,7 @@ import {ImagesLightbox} from '../../../state/models/shell-ui'
 import {useStores} from '../../../state'
 import {usePalette} from '../../lib/hooks/usePalette'
 import {gradients} from '../../lib/styles'
+import {saveImageModal} from '../../../lib/images'
 
 type Embed =
   | AppBskyEmbedImages.Presented
@@ -31,6 +32,10 @@ export function PostEmbeds({
       const openLightbox = (index: number) => {
         store.shell.openLightbox(new ImagesLightbox(uris, index))
       }
+      const onLongPress = (index: number) => {
+        saveImageModal({uri: uris[index]})
+      }
+
       if (embed.images.length === 4) {
         return (
           <View style={[styles.imagesContainer, style]}>
@@ -38,6 +43,7 @@ export function PostEmbeds({
               type="four"
               uris={embed.images.map(img => img.thumb)}
               onPress={openLightbox}
+              onLongPress={onLongPress}
             />
           </View>
         )
@@ -48,6 +54,7 @@ export function PostEmbeds({
               type="three"
               uris={embed.images.map(img => img.thumb)}
               onPress={openLightbox}
+              onLongPress={onLongPress}
             />
           </View>
         )
@@ -58,6 +65,7 @@ export function PostEmbeds({
               type="two"
               uris={embed.images.map(img => img.thumb)}
               onPress={openLightbox}
+              onLongPress={onLongPress}
             />
           </View>
         )
@@ -67,6 +75,7 @@ export function PostEmbeds({
             <AutoSizedImage
               uri={embed.images[0].thumb}
               onPress={() => openLightbox(0)}
+              onLongPress={() => onLongPress(0)}
               containerStyle={styles.singleImage}
             />
           </View>