Feed and notifs improvements (#498)

* Reduce frequency of the notifications sync

* Reduce frequency of home feed polling

* Ensure loading spinner is visible in notifications

* Render notifications loading spinner in the flatlist

* Fixes and performance improvements to notifications

* Render 30+ on notifications if at max

* Fix issue with repeating posts in home feed

* Dont check for unread notifs if we're already at max
This commit is contained in:
Paul Frazee 2023-04-19 20:11:10 -05:00 committed by GitHub
parent b24ba3adc9
commit 04e0ebe8fc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 130 additions and 150 deletions

View file

@ -203,9 +203,7 @@ export const DrawerContent = observer(() => {
)
}
label="Notifications"
count={
store.me.notifications.unreadCount + store.invitedUsers.numNotifs
}
count={store.me.notifications.unreadCountLabel}
bold={isAtNotifications}
onPress={onPressNotifications}
/>
@ -291,7 +289,7 @@ function MenuItem({
}: {
icon: JSX.Element
label: string
count?: number
count?: string
bold?: boolean
onPress: () => void
}) {
@ -307,14 +305,14 @@ function MenuItem({
<View
style={[
styles.menuItemCount,
count > 99
count.length > 2
? styles.menuItemCountHundreds
: count > 9
: count.length > 1
? styles.menuItemCountTens
: undefined,
]}>
<Text style={styles.menuItemCountLabel} numberOfLines={1}>
{count > 999 ? `${Math.round(count / 1000)}k` : count}
{count}
</Text>
</View>
) : undefined}

View file

@ -132,9 +132,7 @@ export const BottomBar = observer(({navigation}: BottomTabBarProps) => {
)
}
onPress={onPressNotifications}
notificationCount={
store.me.notifications.unreadCount + store.invitedUsers.numNotifs
}
notificationCount={store.me.notifications.unreadCountLabel}
/>
<Btn
testID="bottomBarProfileBtn"
@ -170,7 +168,7 @@ function Btn({
}: {
testID?: string
icon: JSX.Element
notificationCount?: number
notificationCount?: string
onPress?: (event: GestureResponderEvent) => void
onLongPress?: (event: GestureResponderEvent) => void
}) {

View file

@ -70,7 +70,7 @@ function BackBtn() {
}
interface NavItemProps {
count?: number
count?: string
href: string
icon: JSX.Element
iconFilled: JSX.Element
@ -95,7 +95,7 @@ const NavItem = observer(
<Link href={href} style={styles.navItem}>
<View style={[styles.navItemIconWrapper]}>
{isCurrent ? iconFilled : icon}
{typeof count === 'number' && count > 0 && (
{typeof count === 'string' && count && (
<Text type="button" style={styles.navItemCount}>
{count}
</Text>
@ -162,9 +162,7 @@ export const DesktopLeftNav = observer(function DesktopLeftNav() {
/>
<NavItem
href="/notifications"
count={
store.me.notifications.unreadCount + store.invitedUsers.numNotifs
}
count={store.me.notifications.unreadCountLabel}
icon={<BellIcon strokeWidth={2} size={24} style={pal.text} />}
iconFilled={
<BellIconSolid strokeWidth={1.5} size={24} style={pal.text} />