Option for large alt badges (#4571)
* add pref for large alt badge * add to settings * do the large badge bit * Tweak wording --------- Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
This commit is contained in:
		
							parent
							
								
									22c5aa4da4
								
							
						
					
					
						commit
						0f931933a7
					
				
					 9 changed files with 113 additions and 43 deletions
				
			
		| 
						 | 
				
			
			@ -5,7 +5,9 @@ import {AppBskyEmbedImages} from '@atproto/api'
 | 
			
		|||
import {msg} from '@lingui/macro'
 | 
			
		||||
import {useLingui} from '@lingui/react'
 | 
			
		||||
 | 
			
		||||
import {isWeb} from 'platform/detection'
 | 
			
		||||
import {isWeb} from '#/platform/detection'
 | 
			
		||||
import {useLargeAltBadgeEnabled} from '#/state/preferences/large-alt-badge'
 | 
			
		||||
import {atoms as a} from '#/alf'
 | 
			
		||||
 | 
			
		||||
type EventFunction = (index: number) => void
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -27,20 +29,21 @@ export const GalleryItem: FC<GalleryItemProps> = ({
 | 
			
		|||
  onLongPress,
 | 
			
		||||
}) => {
 | 
			
		||||
  const {_} = useLingui()
 | 
			
		||||
  const largeAltBadge = useLargeAltBadgeEnabled()
 | 
			
		||||
  const image = images[index]
 | 
			
		||||
  return (
 | 
			
		||||
    <View style={styles.fullWidth}>
 | 
			
		||||
    <View style={a.flex_1}>
 | 
			
		||||
      <Pressable
 | 
			
		||||
        onPress={onPress ? () => onPress(index) : undefined}
 | 
			
		||||
        onPressIn={onPressIn ? () => onPressIn(index) : undefined}
 | 
			
		||||
        onLongPress={onLongPress ? () => onLongPress(index) : undefined}
 | 
			
		||||
        style={styles.fullWidth}
 | 
			
		||||
        style={a.flex_1}
 | 
			
		||||
        accessibilityRole="button"
 | 
			
		||||
        accessibilityLabel={image.alt || _(msg`Image`)}
 | 
			
		||||
        accessibilityHint="">
 | 
			
		||||
        <Image
 | 
			
		||||
          source={{uri: image.thumb}}
 | 
			
		||||
          style={[styles.image, imageStyle]}
 | 
			
		||||
          style={[a.flex_1, a.rounded_xs, imageStyle]}
 | 
			
		||||
          accessible={true}
 | 
			
		||||
          accessibilityLabel={image.alt}
 | 
			
		||||
          accessibilityHint=""
 | 
			
		||||
| 
						 | 
				
			
			@ -49,7 +52,9 @@ export const GalleryItem: FC<GalleryItemProps> = ({
 | 
			
		|||
      </Pressable>
 | 
			
		||||
      {image.alt === '' ? null : (
 | 
			
		||||
        <View style={styles.altContainer}>
 | 
			
		||||
          <Text style={styles.alt} accessible={false}>
 | 
			
		||||
          <Text
 | 
			
		||||
            style={[styles.alt, largeAltBadge && a.text_xs]}
 | 
			
		||||
            accessible={false}>
 | 
			
		||||
            ALT
 | 
			
		||||
          </Text>
 | 
			
		||||
        </View>
 | 
			
		||||
| 
						 | 
				
			
			@ -59,13 +64,6 @@ export const GalleryItem: FC<GalleryItemProps> = ({
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
const styles = StyleSheet.create({
 | 
			
		||||
  fullWidth: {
 | 
			
		||||
    flex: 1,
 | 
			
		||||
  },
 | 
			
		||||
  image: {
 | 
			
		||||
    flex: 1,
 | 
			
		||||
    borderRadius: 4,
 | 
			
		||||
  },
 | 
			
		||||
  altContainer: {
 | 
			
		||||
    backgroundColor: 'rgba(0, 0, 0, 0.75)',
 | 
			
		||||
    borderRadius: 6,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,6 +8,7 @@ import {useLingui} from '@lingui/react'
 | 
			
		|||
import {HITSLOP_20} from '#/lib/constants'
 | 
			
		||||
import {parseAltFromGIFDescription} from '#/lib/gif-alt-text'
 | 
			
		||||
import {isWeb} from '#/platform/detection'
 | 
			
		||||
import {useLargeAltBadgeEnabled} from '#/state/preferences/large-alt-badge'
 | 
			
		||||
import {EmbedPlayerParams} from 'lib/strings/embed-player'
 | 
			
		||||
import {useAutoplayDisabled} from 'state/preferences'
 | 
			
		||||
import {atoms as a, useTheme} from '#/alf'
 | 
			
		||||
| 
						 | 
				
			
			@ -157,6 +158,7 @@ export function GifEmbed({
 | 
			
		|||
 | 
			
		||||
function AltText({text}: {text: string}) {
 | 
			
		||||
  const control = Prompt.usePromptControl()
 | 
			
		||||
  const largeAltBadge = useLargeAltBadgeEnabled()
 | 
			
		||||
 | 
			
		||||
  const {_} = useLingui()
 | 
			
		||||
  return (
 | 
			
		||||
| 
						 | 
				
			
			@ -169,7 +171,9 @@ function AltText({text}: {text: string}) {
 | 
			
		|||
        hitSlop={HITSLOP_20}
 | 
			
		||||
        onPress={control.open}
 | 
			
		||||
        style={styles.altContainer}>
 | 
			
		||||
        <Text style={styles.alt} accessible={false}>
 | 
			
		||||
        <Text
 | 
			
		||||
          style={[styles.alt, largeAltBadge && a.text_xs]}
 | 
			
		||||
          accessible={false}>
 | 
			
		||||
          <Trans>ALT</Trans>
 | 
			
		||||
        </Text>
 | 
			
		||||
      </TouchableOpacity>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,6 +21,7 @@ import {
 | 
			
		|||
import {ImagesLightbox, useLightboxControls} from '#/state/lightbox'
 | 
			
		||||
import {usePalette} from 'lib/hooks/usePalette'
 | 
			
		||||
import {FeedSourceCard} from 'view/com/feeds/FeedSourceCard'
 | 
			
		||||
import {atoms as a} from '#/alf'
 | 
			
		||||
import {ContentHider} from '../../../../components/moderation/ContentHider'
 | 
			
		||||
import {AutoSizedImage} from '../images/AutoSizedImage'
 | 
			
		||||
import {ImageLayoutGrid} from '../images/ImageLayoutGrid'
 | 
			
		||||
| 
						 | 
				
			
			@ -28,6 +29,7 @@ import {ExternalLinkEmbed} from './ExternalLinkEmbed'
 | 
			
		|||
import {ListEmbed} from './ListEmbed'
 | 
			
		||||
import {MaybeQuoteEmbed} from './QuoteEmbed'
 | 
			
		||||
import hairlineWidth = StyleSheet.hairlineWidth
 | 
			
		||||
import {useLargeAltBadgeEnabled} from '#/state/preferences/large-alt-badge'
 | 
			
		||||
 | 
			
		||||
type Embed =
 | 
			
		||||
  | AppBskyEmbedRecord.View
 | 
			
		||||
| 
						 | 
				
			
			@ -51,6 +53,7 @@ export function PostEmbeds({
 | 
			
		|||
}) {
 | 
			
		||||
  const pal = usePalette('default')
 | 
			
		||||
  const {openLightbox} = useLightboxControls()
 | 
			
		||||
  const largeAltBadge = useLargeAltBadgeEnabled()
 | 
			
		||||
 | 
			
		||||
  // quote post with media
 | 
			
		||||
  // =
 | 
			
		||||
| 
						 | 
				
			
			@ -130,10 +133,12 @@ export function PostEmbeds({
 | 
			
		|||
                dimensionsHint={aspectRatio}
 | 
			
		||||
                onPress={() => _openLightbox(0)}
 | 
			
		||||
                onPressIn={() => onPressIn(0)}
 | 
			
		||||
                style={[styles.singleImage]}>
 | 
			
		||||
                style={a.rounded_sm}>
 | 
			
		||||
                {alt === '' ? null : (
 | 
			
		||||
                  <View style={styles.altContainer}>
 | 
			
		||||
                    <Text style={styles.alt} accessible={false}>
 | 
			
		||||
                    <Text
 | 
			
		||||
                      style={[styles.alt, largeAltBadge && a.text_xs]}
 | 
			
		||||
                      accessible={false}>
 | 
			
		||||
                      ALT
 | 
			
		||||
                    </Text>
 | 
			
		||||
                  </View>
 | 
			
		||||
| 
						 | 
				
			
			@ -151,9 +156,6 @@ export function PostEmbeds({
 | 
			
		|||
              images={embed.images}
 | 
			
		||||
              onPress={_openLightbox}
 | 
			
		||||
              onPressIn={onPressIn}
 | 
			
		||||
              style={
 | 
			
		||||
                embed.images.length === 1 ? [styles.singleImage] : undefined
 | 
			
		||||
              }
 | 
			
		||||
            />
 | 
			
		||||
          </View>
 | 
			
		||||
        </ContentHider>
 | 
			
		||||
| 
						 | 
				
			
			@ -179,9 +181,6 @@ const styles = StyleSheet.create({
 | 
			
		|||
  imagesContainer: {
 | 
			
		||||
    marginTop: 8,
 | 
			
		||||
  },
 | 
			
		||||
  singleImage: {
 | 
			
		||||
    borderRadius: 8,
 | 
			
		||||
  },
 | 
			
		||||
  altContainer: {
 | 
			
		||||
    backgroundColor: 'rgba(0, 0, 0, 0.75)',
 | 
			
		||||
    borderRadius: 6,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue