diff options
Diffstat (limited to 'src/view/com/lightbox/Lightbox.tsx')
-rw-r--r-- | src/view/com/lightbox/Lightbox.tsx | 46 |
1 files changed, 6 insertions, 40 deletions
diff --git a/src/view/com/lightbox/Lightbox.tsx b/src/view/com/lightbox/Lightbox.tsx index 677256191..003d01a94 100644 --- a/src/view/com/lightbox/Lightbox.tsx +++ b/src/view/com/lightbox/Lightbox.tsx @@ -1,59 +1,25 @@ -import React from 'react' -import * as MediaLibrary from 'expo-media-library' -import {msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' +import {useCallback} from 'react' -import {saveImageToMediaLibrary, shareImageModal} from '#/lib/media/manip' +import {shareImageModal} from '#/lib/media/manip' +import {useSaveImageToMediaLibrary} from '#/lib/media/save-image' import {useLightbox, useLightboxControls} from '#/state/lightbox' -import * as Toast from '../util/Toast' import ImageView from './ImageViewing' export function Lightbox() { const {activeLightbox} = useLightbox() const {closeLightbox} = useLightboxControls() - const onClose = React.useCallback(() => { + const onClose = useCallback(() => { closeLightbox() }, [closeLightbox]) - const {_} = useLingui() - const [permissionResponse, requestPermission] = MediaLibrary.usePermissions({ - granularPermissions: ['photo'], - }) - const saveImageToAlbumWithToasts = React.useCallback( - async (uri: string) => { - if (!permissionResponse || permissionResponse.granted === false) { - Toast.show( - _(msg`Permission to access camera roll is required.`), - 'info', - ) - if (permissionResponse?.canAskAgain) { - requestPermission() - } else { - Toast.show( - _( - msg`Permission to access camera roll was denied. Please enable it in your system settings.`, - ), - 'xmark', - ) - } - return - } - try { - await saveImageToMediaLibrary({uri}) - Toast.show(_(msg`Image saved`)) - } catch (e: any) { - Toast.show(_(msg`Failed to save image: ${String(e)}`), 'xmark') - } - }, - [permissionResponse, requestPermission, _], - ) + const saveImageToAlbum = useSaveImageToMediaLibrary() return ( <ImageView lightbox={activeLightbox} onRequestClose={onClose} - onPressSave={saveImageToAlbumWithToasts} + onPressSave={saveImageToAlbum} onPressShare={uri => shareImageModal({uri})} /> ) |