expose as PeekMenu
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
export type {
|
||||
MenuItemSpec,
|
||||
PreviewContent,
|
||||
} from '../../../modules/expo-bluesky-context-menu'
|
||||
export {
|
||||
Menu,
|
||||
MenuItem,
|
||||
MenuItemIcon,
|
||||
MenuItemText,
|
||||
Root,
|
||||
Trigger,
|
||||
} from '../../../modules/expo-bluesky-context-menu'
|
||||
@@ -0,0 +1,54 @@
|
||||
import {type ReactNode} from 'react'
|
||||
import {type StyleProp, View, type ViewStyle} from 'react-native'
|
||||
|
||||
import {type IconWithSvgMeta} from '#/components/icons/TEMPLATE'
|
||||
import {type PreviewContent} from '../../../modules/expo-bluesky-context-menu'
|
||||
|
||||
export type {
|
||||
MenuItemSpec,
|
||||
PreviewContent,
|
||||
} from '../../../modules/expo-bluesky-context-menu'
|
||||
|
||||
export function Root({
|
||||
children,
|
||||
style,
|
||||
}: {
|
||||
children: ReactNode
|
||||
style?: StyleProp<ViewStyle>
|
||||
}) {
|
||||
return <View style={style}>{children}</View>
|
||||
}
|
||||
|
||||
export function Trigger({
|
||||
children,
|
||||
}: {
|
||||
preview?: PreviewContent
|
||||
onPreviewPress?: () => void
|
||||
borderRadius?: number
|
||||
style?: StyleProp<ViewStyle>
|
||||
children: ReactNode
|
||||
}) {
|
||||
return <>{children}</>
|
||||
}
|
||||
|
||||
export function Menu(_: {children: ReactNode}): null {
|
||||
return null
|
||||
}
|
||||
|
||||
export function MenuItem(_: {
|
||||
id: string
|
||||
destructive?: boolean
|
||||
disabled?: boolean
|
||||
onSelect: () => void
|
||||
children: ReactNode
|
||||
}): null {
|
||||
return null
|
||||
}
|
||||
|
||||
export function MenuItemIcon(_: {icon: IconWithSvgMeta}): null {
|
||||
return null
|
||||
}
|
||||
|
||||
export function MenuItemText(_: {children: string}): null {
|
||||
return null
|
||||
}
|
||||
@@ -1,14 +1,13 @@
|
||||
import {type ReactNode} from 'react'
|
||||
import {type StyleProp, type ViewStyle} from 'react-native'
|
||||
import {msg} from '@lingui/core/macro'
|
||||
import {useLingui} from '@lingui/react'
|
||||
import {useLingui} from '@lingui/react/macro'
|
||||
|
||||
import {shareImageModal} from '#/lib/media/manip'
|
||||
import {useSaveImageToMediaLibrary} from '#/lib/media/save-image'
|
||||
import {ArrowShareRight_Stroke2_Corner2_Rounded as ShareIcon} from '#/components/icons/ArrowShareRight'
|
||||
import {Download_Stroke2_Corner0_Rounded as DownloadIcon} from '#/components/icons/Download'
|
||||
import * as PeekMenu from '#/components/PeekMenu'
|
||||
import {IS_IOS} from '#/env'
|
||||
import * as ContextMenu from '../../../../modules/expo-bluesky-context-menu'
|
||||
|
||||
/**
|
||||
* Wraps an image embed with the iOS peek-and-menu interaction. On non-iOS
|
||||
@@ -38,7 +37,7 @@ export function ImageContextMenu({
|
||||
style?: StyleProp<ViewStyle>
|
||||
children: ReactNode
|
||||
}) {
|
||||
const {_} = useLingui()
|
||||
const {t: l} = useLingui()
|
||||
const saveImage = useSaveImageToMediaLibrary()
|
||||
|
||||
if (!IS_IOS) {
|
||||
@@ -53,8 +52,8 @@ export function ImageContextMenu({
|
||||
}
|
||||
|
||||
return (
|
||||
<ContextMenu.Root style={style}>
|
||||
<ContextMenu.Trigger
|
||||
<PeekMenu.Root style={style}>
|
||||
<PeekMenu.Trigger
|
||||
preview={{
|
||||
type: 'image',
|
||||
uri: fullsizeUri,
|
||||
@@ -64,19 +63,17 @@ export function ImageContextMenu({
|
||||
borderRadius={borderRadius}
|
||||
onPreviewPress={onPreviewPress}>
|
||||
{children}
|
||||
</ContextMenu.Trigger>
|
||||
<ContextMenu.Menu>
|
||||
<ContextMenu.MenuItem id="save" onSelect={handleSave}>
|
||||
<ContextMenu.MenuItemIcon icon={DownloadIcon} />
|
||||
<ContextMenu.MenuItemText>
|
||||
{_(msg`Save image`)}
|
||||
</ContextMenu.MenuItemText>
|
||||
</ContextMenu.MenuItem>
|
||||
<ContextMenu.MenuItem id="share" onSelect={handleShare}>
|
||||
<ContextMenu.MenuItemIcon icon={ShareIcon} />
|
||||
<ContextMenu.MenuItemText>{_(msg`Share`)}</ContextMenu.MenuItemText>
|
||||
</ContextMenu.MenuItem>
|
||||
</ContextMenu.Menu>
|
||||
</ContextMenu.Root>
|
||||
</PeekMenu.Trigger>
|
||||
<PeekMenu.Menu>
|
||||
<PeekMenu.MenuItem id="save" onSelect={handleSave}>
|
||||
<PeekMenu.MenuItemIcon icon={DownloadIcon} />
|
||||
<PeekMenu.MenuItemText>{l`Save image`}</PeekMenu.MenuItemText>
|
||||
</PeekMenu.MenuItem>
|
||||
<PeekMenu.MenuItem id="share" onSelect={handleShare}>
|
||||
<PeekMenu.MenuItemIcon icon={ShareIcon} />
|
||||
<PeekMenu.MenuItemText>{l`Share`}</PeekMenu.MenuItemText>
|
||||
</PeekMenu.MenuItem>
|
||||
</PeekMenu.Menu>
|
||||
</PeekMenu.Root>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user