import React from 'react' import {View} from 'react-native' import {Image} from 'expo-image' import {requestMediaLibraryPermissionsAsync} from 'expo-image-picker' import {AppBskyGraphDefs} from '@atproto/api' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' import {saveImageToMediaLibrary} from '#/lib/media/manip' import {shareUrl} from '#/lib/sharing' import {logEvent} from '#/lib/statsig/statsig' import {getStarterPackOgCard} from '#/lib/strings/starter-pack' import {logger} from '#/logger' import {isNative, isWeb} from '#/platform/detection' import * as Toast from '#/view/com/util/Toast' import {atoms as a, useTheme} from '#/alf' import {Button, ButtonText} from '#/components/Button' import {DialogControlProps} from '#/components/Dialog' import * as Dialog from '#/components/Dialog' import {Loader} from '#/components/Loader' import {Text} from '#/components/Typography' interface Props { starterPack: AppBskyGraphDefs.StarterPackView link?: string imageLoaded?: boolean qrDialogControl: DialogControlProps control: DialogControlProps } export function ShareDialog(props: Props) { return ( ) } function ShareDialogInner({ starterPack, link, imageLoaded, qrDialogControl, control, }: Props) { const {_} = useLingui() const t = useTheme() const {isTabletOrDesktop} = useWebMediaQueries() const imageUrl = getStarterPackOgCard(starterPack) const onShareLink = async () => { if (!link) return shareUrl(link) logEvent('starterPack:share', { starterPack: starterPack.uri, shareType: 'link', }) control.close() } const onSave = async () => { const res = await requestMediaLibraryPermissionsAsync() if (!res) { Toast.show( _(msg`You must grant access to your photo library to save the image.`), 'xmark', ) return } try { await saveImageToMediaLibrary({uri: imageUrl}) Toast.show(_(msg`Image saved to your camera roll!`)) control.close() } catch (e: unknown) { Toast.show(_(msg`An error occurred while saving the QR code!`), 'xmark') logger.error('Failed to save QR code', {error: e}) return } } return ( <> {!imageLoaded || !link ? ( ) : ( Invite people to this starter pack! Share this starter pack and help people join your community on Bluesky. {isNative && ( )} )} ) }