From d97e75c62f39b874af97b40ebc7211841d9ce1b7 Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Thu, 4 May 2023 00:54:35 -0500 Subject: [APP-539] Rework lightbox and alt-image behaviors (#573) * Replace the long press on the lightbox with footer controls * Remove long-press from images in the feed * Tune the lightbox footer control ui * Replace the AltImageRead modal with the ability to view all alt text in the lightbox footer * Tune lightbox footer for iOS * Add alt text to the web lightbox * Fix lint * a11y slight changes --------- Co-authored-by: renahlee --- src/view/com/util/post-embeds/index.tsx | 47 +++++++-------------------------- 1 file changed, 10 insertions(+), 37 deletions(-) (limited to 'src/view/com/util/post-embeds/index.tsx') diff --git a/src/view/com/util/post-embeds/index.tsx b/src/view/com/util/post-embeds/index.tsx index 929c85adc..2dda9069e 100644 --- a/src/view/com/util/post-embeds/index.tsx +++ b/src/view/com/util/post-embeds/index.tsx @@ -1,11 +1,10 @@ -import React, {useCallback} from 'react' +import React from 'react' import { StyleSheet, StyleProp, View, ViewStyle, Image as RNImage, - Pressable, Text, } from 'react-native' import { @@ -20,7 +19,6 @@ import {ImageLayoutGrid} from '../images/ImageLayoutGrid' import {ImagesLightbox} from 'state/models/ui/shell' import {useStores} from 'state/index' import {usePalette} from 'lib/hooks/usePalette' -import {saveImageModal} from 'lib/media/manip' import {YoutubeEmbed} from './YoutubeEmbed' import {ExternalLinkEmbed} from './ExternalLinkEmbed' import {getYoutubeVideoId} from 'lib/strings/url-helpers' @@ -44,16 +42,6 @@ export function PostEmbeds({ const pal = usePalette('default') const store = useStores() - const onPressAltText = useCallback( - (alt: string) => { - store.shell.openModal({ - name: 'alt-text-image-read', - altText: alt, - }) - }, - [store.shell], - ) - if ( AppBskyEmbedRecordWithMedia.isView(embed) && AppBskyEmbedRecord.isViewRecord(embed.record.record) && @@ -103,20 +91,17 @@ export function PostEmbeds({ const {images} = embed if (images.length > 0) { - const uris = embed.images.map(img => img.fullsize) + const items = embed.images.map(img => ({uri: img.fullsize, alt: img.alt})) const openLightbox = (index: number) => { - store.shell.openLightbox(new ImagesLightbox(uris, index)) - } - const onLongPress = (index: number) => { - saveImageModal({uri: uris[index]}) + store.shell.openLightbox(new ImagesLightbox(items, index)) } const onPressIn = (index: number) => { - const firstImageToShow = uris[index] + const firstImageToShow = items[index].uri RNImage.prefetch(firstImageToShow) - uris.forEach(uri => { - if (firstImageToShow !== uri) { + items.forEach(item => { + if (firstImageToShow !== item.uri) { // First image already prefeched above - RNImage.prefetch(uri) + RNImage.prefetch(item.uri) } }) } @@ -129,20 +114,9 @@ export function PostEmbeds({ alt={alt} uri={thumb} onPress={() => openLightbox(0)} - onLongPress={() => onLongPress(0)} onPressIn={() => onPressIn(0)} style={styles.singleImage}> - {alt === '' ? null : ( - { - onPressAltText(alt) - }} - accessibilityRole="button" - accessibilityLabel="View alt text" - accessibilityHint="Opens modal with alt text"> - ALT - - )} + {alt === '' ? null : ALT} ) @@ -153,7 +127,6 @@ export function PostEmbeds({ @@ -209,8 +182,8 @@ const styles = StyleSheet.create({ paddingHorizontal: 10, paddingVertical: 3, position: 'absolute', - left: 10, - top: -26, + left: 6, + bottom: 6, width: 46, }, }) -- cgit 1.4.1