nicolium: migrate notifications to tanstack/react-query

Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
nicole mikołajczyk
2026-02-23 22:51:10 +01:00
parent e3aaa580b5
commit 6ceee73b60
16 changed files with 581 additions and 685 deletions

View File

@@ -2,10 +2,10 @@ import React from 'react';
import { Helmet as ReactHelmet } from 'react-helmet-async';
import { useStatContext } from '@/contexts/stat-context';
import { useAppSelector } from '@/hooks/use-app-selector';
import { useInstance } from '@/hooks/use-instance';
import { usePendingUsersCount } from '@/queries/admin/use-accounts';
import { usePendingReportsCount } from '@/queries/admin/use-reports';
import { useNotificationsUnreadCount } from '@/queries/notifications/use-notifications';
import { useSettings } from '@/stores/settings';
import FaviconService from '@/utils/favicon-service';
@@ -20,13 +20,9 @@ const Helmet: React.FC<IHelmet> = ({ children }) => {
const { unreadChatsCount } = useStatContext();
const { data: awaitingApprovalCount = 0 } = usePendingUsersCount();
const { data: pendingReportsCount = 0 } = usePendingReportsCount();
const unreadCount = useAppSelector(
(state) =>
(state.notifications.unread || 0) +
unreadChatsCount +
awaitingApprovalCount +
pendingReportsCount,
);
const notificationCount = useNotificationsUnreadCount();
const unreadCount =
notificationCount + unreadChatsCount + awaitingApprovalCount + pendingReportsCount;
const { demetricator } = useSettings();
const hasUnreadNotifications = React.useMemo(

View File

@@ -38,7 +38,7 @@ const ScrollTopButton: React.FC<IScrollTopButton> = ({
// Whether we are scrolled above the `autoloadThreshold`.
const [scrolledTop, setScrolledTop] = useState<boolean>(false);
const visible = count > 0 && (autoloadThreshold ? scrolled : scrolledTop);
const visible = count > 0 && (!autoloadTimelines || scrolled);
const buttonMessage = intl.formatMessage(message, { count });
/** Number of pixels scrolled down from the top of the page. */

View File

@@ -8,7 +8,6 @@ import Stack from '@/components/ui/stack';
import { useStatContext } from '@/contexts/stat-context';
import ComposeButton from '@/features/ui/components/compose-button';
import ProfileDropdown from '@/features/ui/components/profile-dropdown';
import { useAppSelector } from '@/hooks/use-app-selector';
import { useFeatures } from '@/hooks/use-features';
import { useInstance } from '@/hooks/use-instance';
import { useOwnAccount } from '@/hooks/use-own-account';
@@ -16,6 +15,7 @@ import { useRegistrationStatus } from '@/hooks/use-registration-status';
import { useFollowRequestsCount } from '@/queries/accounts/use-follow-requests';
import { usePendingUsersCount } from '@/queries/admin/use-accounts';
import { usePendingReportsCount } from '@/queries/admin/use-reports';
import { useNotificationsUnreadCount } from '@/queries/notifications/use-notifications';
import { scheduledStatusesCountQueryOptions } from '@/queries/statuses/scheduled-statuses';
import { useDraftStatusesCountQuery } from '@/queries/statuses/use-draft-statuses';
import { useInteractionRequestsCount } from '@/queries/statuses/use-interaction-requests';
@@ -78,7 +78,7 @@ const SidebarNavigation: React.FC<ISidebarNavigation> = React.memo(({ shrink })
[!!account, features],
);
const notificationCount = useAppSelector((state) => state.notifications.unread);
const notificationCount = useNotificationsUnreadCount();
const followRequestsCount = useFollowRequestsCount().data ?? 0;
const interactionRequestsCount = useInteractionRequestsCount().data ?? 0;
const { data: awaitingApprovalCount = 0 } = usePendingUsersCount();

View File

@@ -12,6 +12,7 @@ import { useAppDispatch } from '@/hooks/use-app-dispatch';
import { useAppSelector } from '@/hooks/use-app-selector';
import { useFeatures } from '@/hooks/use-features';
import { useOwnAccount } from '@/hooks/use-own-account';
import { useNotificationsUnreadCount } from '@/queries/notifications/use-notifications';
import { useModalsActions } from '@/stores/modals';
import { useIsSidebarOpen, useUiStoreActions } from '@/stores/ui';
import { isStandalone } from '@/utils/state';
@@ -43,7 +44,7 @@ const ThumbNavigation: React.FC = React.memo((): JSX.Element => {
const { unreadChatsCount } = useStatContext();
const standalone = useAppSelector(isStandalone);
const notificationCount = useAppSelector((state) => state.notifications.unread);
const notificationCount = useNotificationsUnreadCount();
const handleOpenComposeModal = () => {
if (match?.params.groupId) {