diff options
Diffstat (limited to 'src/view/com/util/forms/PostDropdownBtn.tsx')
-rw-r--r-- | src/view/com/util/forms/PostDropdownBtn.tsx | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/view/com/util/forms/PostDropdownBtn.tsx b/src/view/com/util/forms/PostDropdownBtn.tsx index 193bb9bd7..1f2e067c2 100644 --- a/src/view/com/util/forms/PostDropdownBtn.tsx +++ b/src/view/com/util/forms/PostDropdownBtn.tsx @@ -18,6 +18,7 @@ import {getTranslatorLink} from '#/locale/helpers' import {usePostDeleteMutation} from '#/state/queries/post' import {useMutedThreads, useToggleThreadMute} from '#/state/muted-threads' import {useLanguagePrefs} from '#/state/preferences' +import {useHiddenPosts, useHiddenPostsApi} from '#/state/preferences' import {logger} from '#/logger' import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' @@ -50,9 +51,12 @@ let PostDropdownBtn = ({ const mutedThreads = useMutedThreads() const toggleThreadMute = useToggleThreadMute() const postDeleteMutation = usePostDeleteMutation() + const hiddenPosts = useHiddenPosts() + const {hidePost} = useHiddenPostsApi() 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) @@ -98,6 +102,10 @@ let PostDropdownBtn = ({ Linking.openURL(translatorUrl) }, [translatorUrl]) + const onHidePost = React.useCallback(() => { + hidePost({uri: postUri}) + }, [postUri, hidePost]) + const dropdownItems: NativeDropdownItem[] = [ { label: _(msg`Translate`), @@ -159,6 +167,27 @@ let PostDropdownBtn = ({ web: 'comment-slash', }, }, + hasSession && + !isAuthor && + !isPostHidden && { + label: _(msg`Hide post`), + onPress() { + openModal({ + name: 'confirm', + title: _(msg`Hide this post?`), + message: _(msg`This will hide this post from your feeds.`), + onPressConfirm: onHidePost, + }) + }, + testID: 'postDropdownHideBtn', + icon: { + ios: { + name: 'eye.slash', + }, + android: 'ic_menu_delete', + web: ['far', 'eye-slash'], + }, + }, { label: 'separator', }, |