Share menu (#7840)

* move post ctrls to #/components

* restructure post controls, basic share menu

* add border radius to searchable people list for android

* Revert "add border radius to searchable people list for android"

This reverts commit 417449086e25b82f5683b12f6405d972f48ce50e.

* add copy link to native share menu

* reorg files again

* open native share menu on long press

* Translation comments

Thanks @surfdude29

* abs path

* update type imports, remove forwardRef

* rm react import

* equal spacing of buttons, extract disco debug

* add better icon

* add right offset to share button for visual alignment

* Add recent chats to share menu (#7853)

* add recent chats to share menu

* Update RecentChats.tsx

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update RecentChats.tsx

* add fading edge on andriod

* tweak scrollview

* Add metrics and A/B alt icon to share menu (#8401)

* add metrics

* add a/b tested alt icon

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* More descriptive share text/icon on web (#7854)

* more descriptive share text on web

* revert dev mode changes

* add missing import

* use modified share icon everywhere

* Add back conflicting changes

---------

Co-authored-by: Eric Bailey <git@esb.lol>

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: Eric Bailey <git@esb.lol>
This commit is contained in:
Samuel Newman
2025-05-24 02:02:38 +03:00
committed by GitHub
parent 5aadb9e41b
commit c3f88e0a48
31 changed files with 1227 additions and 532 deletions
+19 -10
View File
@@ -12,6 +12,7 @@ import {type NavigationProp} from '#/lib/routes/types'
import {shareText, shareUrl} from '#/lib/sharing'
import {toShareUrl} from '#/lib/strings/url-helpers'
import {logger} from '#/logger'
import {isWeb} from '#/platform/detection'
import {type Shadow} from '#/state/cache/types'
import {useModalControls} from '#/state/modals'
import {
@@ -26,9 +27,11 @@ import {EventStopper} from '#/view/com/util/EventStopper'
import * as Toast from '#/view/com/util/Toast'
import {Button, ButtonIcon} from '#/components/Button'
import {useDialogControl} from '#/components/Dialog'
import {ArrowOutOfBox_Stroke2_Corner0_Rounded as Share} from '#/components/icons/ArrowOutOfBox'
import {CircleCheck_Stroke2_Corner0_Rounded as CircleCheck} from '#/components/icons/CircleCheck'
import {CircleX_Stroke2_Corner0_Rounded as CircleX} from '#/components/icons/CircleX'
import {ArrowOutOfBoxModified_Stroke2_Corner2_Rounded as ArrowOutOfBoxIcon} from '#/components/icons/ArrowOutOfBox'
import {ChainLink_Stroke2_Corner0_Rounded as ChainLinkIcon} from '#/components/icons/ChainLink'
import {CircleCheck_Stroke2_Corner0_Rounded as CircleCheckIcon} from '#/components/icons/CircleCheck'
import {CircleX_Stroke2_Corner0_Rounded as CircleXIcon} from '#/components/icons/CircleX'
import {Clipboard_Stroke2_Corner2_Rounded as ClipboardIcon} from '#/components/icons/Clipboard'
import {DotGrid_Stroke2_Corner0_Rounded as Ellipsis} from '#/components/icons/DotGrid'
import {Flag_Stroke2_Corner0_Rounded as Flag} from '#/components/icons/Flag'
import {ListSparkle_Stroke2_Corner0_Rounded as List} from '#/components/icons/ListSparkle'
@@ -236,7 +239,9 @@ let ProfileMenu = ({
<Menu.Group>
<Menu.Item
testID="profileHeaderDropdownShareBtn"
label={_(msg`Share`)}
label={
isWeb ? _(msg`Copy link to profile`) : _(msg`Share via...`)
}
onPress={() => {
if (showLoggedOutWarning) {
loggedOutWarningPromptControl.open()
@@ -245,9 +250,13 @@ let ProfileMenu = ({
}
}}>
<Menu.ItemText>
<Trans>Share</Trans>
{isWeb ? (
<Trans>Copy link to profile</Trans>
) : (
<Trans>Share via...</Trans>
)}
</Menu.ItemText>
<Menu.ItemIcon icon={Share} />
<Menu.ItemIcon icon={isWeb ? ChainLinkIcon : ArrowOutOfBoxIcon} />
</Menu.Item>
<Menu.Item
testID="profileHeaderDropdownSearchBtn"
@@ -329,7 +338,7 @@ let ProfileMenu = ({
<Menu.ItemText>
<Trans>Remove verification</Trans>
</Menu.ItemText>
<Menu.ItemIcon icon={CircleX} />
<Menu.ItemIcon icon={CircleXIcon} />
</Menu.Item>
) : (
<Menu.Item
@@ -339,7 +348,7 @@ let ProfileMenu = ({
<Menu.ItemText>
<Trans>Verify account</Trans>
</Menu.ItemText>
<Menu.ItemIcon icon={CircleCheck} />
<Menu.ItemIcon icon={CircleCheckIcon} />
</Menu.Item>
))}
{!isSelf && (
@@ -414,7 +423,7 @@ let ProfileMenu = ({
<Menu.ItemText>
<Trans>Copy at:// URI</Trans>
</Menu.ItemText>
<Menu.ItemIcon icon={Share} />
<Menu.ItemIcon icon={ClipboardIcon} />
</Menu.Item>
<Menu.Item
testID="profileHeaderDropdownShareDIDBtn"
@@ -423,7 +432,7 @@ let ProfileMenu = ({
<Menu.ItemText>
<Trans>Copy DID</Trans>
</Menu.ItemText>
<Menu.ItemIcon icon={Share} />
<Menu.ItemIcon icon={ClipboardIcon} />
</Menu.Item>
</Menu.Group>
</>