diff --git a/src/view/com/profile/ProfileMenu.tsx b/src/view/com/profile/ProfileMenu.tsx
index 7c6db1ed..0baa4f39 100644
--- a/src/view/com/profile/ProfileMenu.tsx
+++ b/src/view/com/profile/ProfileMenu.tsx
@@ -58,6 +58,11 @@ let ProfileMenu = ({
)
const blockPromptControl = Prompt.usePromptControl()
+ const loggedOutWarningPromptControl = Prompt.usePromptControl()
+
+ const showLoggedOutWarning = React.useMemo(() => {
+ return !!profile.labels?.find(label => label.val === '!no-unauthenticated')
+ }, [profile.labels])
const invalidateProfileQuery = React.useCallback(() => {
queryClient.invalidateQueries({
@@ -192,7 +197,13 @@ let ProfileMenu = ({
+ onPress={() => {
+ if (showLoggedOutWarning) {
+ loggedOutWarningPromptControl.open()
+ } else {
+ onPressShare()
+ }
+ }}>
Share
@@ -310,6 +321,16 @@ let ProfileMenu = ({
}
confirmButtonColor={profile.viewer?.blocking ? undefined : 'negative'}
/>
+
+
)
}
diff --git a/src/view/com/util/forms/PostDropdownBtn.tsx b/src/view/com/util/forms/PostDropdownBtn.tsx
index 84a047c4..8fc3d9ea 100644
--- a/src/view/com/util/forms/PostDropdownBtn.tsx
+++ b/src/view/com/util/forms/PostDropdownBtn.tsx
@@ -85,11 +85,13 @@ let PostDropdownBtn = ({
const {mutedWordsDialogControl} = useGlobalDialogsControlContext()
const deletePromptControl = useDialogControl()
const hidePromptControl = useDialogControl()
+ const loggedOutWarningPromptControl = useDialogControl()
const rootUri = record.reply?.root?.uri || postUri
const isThreadMuted = mutedThreads.includes(rootUri)
const isPostHidden = hiddenPosts && hiddenPosts.includes(postUri)
const isAuthor = postAuthor.did === currentAccount?.did
+
const href = React.useMemo(() => {
const urip = new AtUri(postUri)
return makeProfileLink(postAuthor, 'post', urip.rkey)
@@ -167,6 +169,17 @@ let PostDropdownBtn = ({
hidePost({uri: postUri})
}, [postUri, hidePost])
+ const shouldShowLoggedOutWarning = React.useMemo(() => {
+ return !!postAuthor.labels?.find(
+ label => label.val === '!no-unauthenticated',
+ )
+ }, [postAuthor])
+
+ const onSharePost = React.useCallback(() => {
+ const url = toShareUrl(href)
+ shareUrl(url)
+ }, [href])
+
return (
@@ -217,8 +230,11 @@ let PostDropdownBtn = ({
testID="postDropdownShareBtn"
label={isWeb ? _(msg`Copy link to post`) : _(msg`Share`)}
onPress={() => {
- const url = toShareUrl(href)
- shareUrl(url)
+ if (shouldShowLoggedOutWarning) {
+ loggedOutWarningPromptControl.open()
+ } else {
+ onSharePost()
+ }
}}>
{isWeb ? _(msg`Copy link to post`) : _(msg`Share`)}
@@ -342,6 +358,16 @@ let PostDropdownBtn = ({
onConfirm={onHidePost}
confirmButtonCta={_(msg`Hide`)}
/>
+
+
)
}