Activity notification settings (#8485)
Co-authored-by: Eric Bailey <git@esb.lol> Co-authored-by: Samuel Newman <mozzius@protonmail.com> Co-authored-by: hailey <me@haileyok.com>
This commit is contained in:
@@ -52,6 +52,7 @@ import {TimeElapsed} from '#/view/com/util/TimeElapsed'
|
||||
import {PreviewableUserAvatar, UserAvatar} from '#/view/com/util/UserAvatar'
|
||||
import {atoms as a, platform, useTheme} from '#/alf'
|
||||
import {Button, ButtonText} from '#/components/Button'
|
||||
import {BellRinging_Filled_Corner0_Rounded as BellRingingIcon} from '#/components/icons/BellRinging'
|
||||
import {
|
||||
ChevronBottom_Stroke2_Corner0_Rounded as ChevronDownIcon,
|
||||
ChevronTop_Stroke2_Corner0_Rounded as ChevronUpIcon,
|
||||
@@ -114,7 +115,9 @@ let NotificationFeedItem = ({
|
||||
case 'unverified': {
|
||||
return makeProfileLink(item.notification.author)
|
||||
}
|
||||
case 'reply': {
|
||||
case 'reply':
|
||||
case 'mention':
|
||||
case 'quote': {
|
||||
const uripReply = new AtUri(item.notification.uri)
|
||||
return `/profile/${uripReply.host}/post/${uripReply.rkey}`
|
||||
}
|
||||
@@ -126,6 +129,13 @@ let NotificationFeedItem = ({
|
||||
}
|
||||
break
|
||||
}
|
||||
case 'subscribed-post': {
|
||||
const posts: string[] = []
|
||||
for (const post of [item.notification, ...(item.additional ?? [])]) {
|
||||
posts.push(post.uri)
|
||||
}
|
||||
return `/notifications/activity?posts=${encodeURIComponent(posts.slice(0, 25).join(','))}`
|
||||
}
|
||||
}
|
||||
|
||||
return ''
|
||||
@@ -155,7 +165,10 @@ let NotificationFeedItem = ({
|
||||
href: makeProfileLink(author),
|
||||
moderation: moderateProfile(author, moderationOpts),
|
||||
})) || []),
|
||||
]
|
||||
].filter(
|
||||
(author, index, arr) =>
|
||||
arr.findIndex(au => au.profile.did === author.profile.did) === index,
|
||||
)
|
||||
}, [item, moderationOpts])
|
||||
|
||||
const niceTimestamp = niceDate(i18n, item.notification.indexedAt)
|
||||
@@ -503,6 +516,42 @@ let NotificationFeedItem = ({
|
||||
<Trans>{firstAuthorLink} reposted your repost</Trans>
|
||||
)
|
||||
icon = <RepostIcon size="xl" style={{color: t.palette.positive_600}} />
|
||||
} else if (item.type === 'subscribed-post') {
|
||||
const postsCount = 1 + (item.additional?.length || 0)
|
||||
a11yLabel = hasMultipleAuthors
|
||||
? _(
|
||||
msg`New posts from ${firstAuthorName} and ${plural(
|
||||
additionalAuthorsCount,
|
||||
{
|
||||
one: `${formattedAuthorsCount} other`,
|
||||
other: `${formattedAuthorsCount} others`,
|
||||
},
|
||||
)}`,
|
||||
)
|
||||
: _(
|
||||
msg`New ${plural(postsCount, {
|
||||
one: 'post',
|
||||
other: 'posts',
|
||||
})} from ${firstAuthorName}`,
|
||||
)
|
||||
notificationContent = hasMultipleAuthors ? (
|
||||
<Trans>
|
||||
New posts from {firstAuthorLink} and{' '}
|
||||
<Text style={[a.text_md, a.font_bold, a.leading_snug]}>
|
||||
<Plural
|
||||
value={additionalAuthorsCount}
|
||||
one={`${formattedAuthorsCount} other`}
|
||||
other={`${formattedAuthorsCount} others`}
|
||||
/>
|
||||
</Text>{' '}
|
||||
</Trans>
|
||||
) : (
|
||||
<Trans>
|
||||
New <Plural value={postsCount} one="post" other="posts" /> from{' '}
|
||||
{firstAuthorLink}
|
||||
</Trans>
|
||||
)
|
||||
icon = <BellRingingIcon size="xl" style={{color: t.palette.primary_500}} />
|
||||
} else {
|
||||
return null
|
||||
}
|
||||
@@ -613,7 +662,8 @@ let NotificationFeedItem = ({
|
||||
{item.type === 'post-like' ||
|
||||
item.type === 'repost' ||
|
||||
item.type === 'like-via-repost' ||
|
||||
item.type === 'repost-via-repost' ? (
|
||||
item.type === 'repost-via-repost' ||
|
||||
item.type === 'subscribed-post' ? (
|
||||
<View style={[a.pt_2xs]}>
|
||||
<AdditionalPostText post={item.subject} />
|
||||
</View>
|
||||
|
||||
@@ -96,7 +96,8 @@ let PostMeta = (opts: PostMetaOpts): React.ReactNode => {
|
||||
a.font_bold,
|
||||
t.atoms.text,
|
||||
a.leading_tight,
|
||||
{maxWidth: '70%', flexShrink: 0},
|
||||
a.flex_shrink_0,
|
||||
{maxWidth: '70%'},
|
||||
]}>
|
||||
{forceLTR(
|
||||
sanitizeDisplayName(
|
||||
|
||||
Reference in New Issue
Block a user