From 7aa29bd398f6c758dd1bdcfbfce706b005826629 Mon Sep 17 00:00:00 2001 From: smanylov Date: Fri, 13 Feb 2026 14:16:39 +0700 Subject: [PATCH] add return null when fetch failed --- src/app/actions/action.ts | 10 +++- src/app/actions/searchActions.ts | 7 ++- src/app/actions/session.ts | 11 +++-- .../hooks/react-query/useUserSearchData.ts | 48 +++++++++++++++++++ src/app/ui/header/headerPanel.tsx | 4 +- src/app/ui/payment/user-usage.tsx | 12 ++--- src/app/ui/search/recent-searches.tsx | 17 ++----- src/app/ui/search/search-stats.tsx | 18 ++----- src/app/ui/settings/subscription-settings.tsx | 8 ++-- 9 files changed, 86 insertions(+), 49 deletions(-) create mode 100644 src/app/hooks/react-query/useUserSearchData.ts diff --git a/src/app/actions/action.ts b/src/app/actions/action.ts index af3ea8b..f4c7f13 100644 --- a/src/app/actions/action.ts +++ b/src/app/actions/action.ts @@ -25,6 +25,8 @@ export async function getUserData() { if (response.ok) { return await response.json(); + } else { + return null } } catch (error) { return null @@ -60,6 +62,8 @@ export async function getUserFilesInfo() { } else { throw parsed.message_code; } + } else { + return null } } catch (error) { return null @@ -94,9 +98,11 @@ export async function fetchTariffs() { return [] } + } else { + return null } } catch (error) { - console.error('error'); + return null } } @@ -113,6 +119,8 @@ export async function getBuildData() { if (response.ok) { return await response.json(); + } else { + return null } } catch (error) { return null; diff --git a/src/app/actions/searchActions.ts b/src/app/actions/searchActions.ts index 1a4a8fb..ac481d8 100644 --- a/src/app/actions/searchActions.ts +++ b/src/app/actions/searchActions.ts @@ -114,14 +114,13 @@ export async function getSearchStats() { } }); - - if (response.ok) { let parsed = await response.json(); - return parsed; + } else { + return null; } } catch (error) { - console.error('error'); + return null; } } \ No newline at end of file diff --git a/src/app/actions/session.ts b/src/app/actions/session.ts index 76a2191..dbd8b07 100644 --- a/src/app/actions/session.ts +++ b/src/app/actions/session.ts @@ -97,7 +97,12 @@ export async function getSessionData(type: 'token' | 'email'): Promise { + return useQuery({ + queryKey: ['userSearchData'], + queryFn: getSearchStats, + select: (data): UserSearchData | null => { + if (!data) { + return { + allCountForPeriod: 0, + image: { + count: 0, + fileType: 'image' + }, + video: { + count: 0, + fileType: 'video' + }, + audio: { + count: 0, + fileType: 'audio' + }, + document: { + count: 0, + fileType: 'document' + } + }; + } + + return data; + }, + retry: false + }); +}; \ No newline at end of file diff --git a/src/app/ui/header/headerPanel.tsx b/src/app/ui/header/headerPanel.tsx index 0c842a1..bca4a72 100644 --- a/src/app/ui/header/headerPanel.tsx +++ b/src/app/ui/header/headerPanel.tsx @@ -16,7 +16,7 @@ export default function HeaderPanel() {
{/* */} - {typeof userData?.tariffInfo.tokens === 'number' && ( + {typeof userData?.tariffInfo?.tokens === 'number' && ( - {userData?.tariffInfo.tokens} + {userData?.tariffInfo?.tokens} {t('tokens')} diff --git a/src/app/ui/payment/user-usage.tsx b/src/app/ui/payment/user-usage.tsx index 3fb17b5..2e5a443 100644 --- a/src/app/ui/payment/user-usage.tsx +++ b/src/app/ui/payment/user-usage.tsx @@ -15,27 +15,27 @@ export default function UserUsage() {
- {userData?.tariffInfo.currentFileCounts} / {userData?.tariffInfo.maxFileCounts} + {userData?.tariffInfo?.currentFileCounts} / {userData?.tariffInfo?.maxFileCounts}
Файлов в месяц
- {convertBytes(userData?.tariffInfo.currentFileOnDisk ?? 0)} / {convertBytes(userData?.tariffInfo.maxFileOnDisk ?? 0)} + {convertBytes(userData?.tariffInfo?.currentFileOnDisk ?? 0)} / {convertBytes(userData?.tariffInfo?.maxFileOnDisk ?? 0)}
Объём хранилища
@@ -43,13 +43,13 @@ export default function UserUsage() {
- {userData?.tariffInfo.tokens ?? 0} + {userData?.tariffInfo?.tokens ?? 0}
Токенов на балансе
- {userData?.tariffInfo.tariffName ? userData?.tariffInfo.tariffName : 'ERROR'} + {userData?.tariffInfo?.tariffName ? userData?.tariffInfo?.tariffName : 'ERROR'}
Текущий план
diff --git a/src/app/ui/search/recent-searches.tsx b/src/app/ui/search/recent-searches.tsx index 120fb68..54e0135 100644 --- a/src/app/ui/search/recent-searches.tsx +++ b/src/app/ui/search/recent-searches.tsx @@ -1,21 +1,10 @@ 'use client' import { IconImageFile, IconDocument, IconAudioFile, IconVideoFile } from '@/app/ui/icons/icons'; -import { useQuery } from '@tanstack/react-query'; -import { getSearchStats } from '@/app/actions/searchActions'; +import { useUserSearchData } from '@/app/hooks/react-query/useUserSearchData'; export function RecentSearches() { - const { - data: userSearchData, - isLoading, - isError, - error, - } = useQuery({ - queryKey: ['userSearchData'], - queryFn: () => { - return getSearchStats(); - }, - }); + const { data: userSearchData, isLoading, isError, error, } = useUserSearchData() return (
@@ -46,7 +35,7 @@ export function RecentSearches() { audio
-
{userSearchData?.audio?.count ? userSearchData?.audi?.count : 0} поисков
+
{userSearchData?.audio?.count ? userSearchData?.audio?.count : 0} поисков
date
diff --git a/src/app/ui/search/search-stats.tsx b/src/app/ui/search/search-stats.tsx index 9055c11..387ee8d 100644 --- a/src/app/ui/search/search-stats.tsx +++ b/src/app/ui/search/search-stats.tsx @@ -1,21 +1,9 @@ 'use client' -import { useQuery } from '@tanstack/react-query'; -import { getSearchStats } from '@/app/actions/searchActions'; -import { useEffect } from 'react'; +import { useUserSearchData } from '@/app/hooks/react-query/useUserSearchData'; export function SearchStats() { - const { - data: userSearchData, - isLoading, - isError, - error, - } = useQuery({ - queryKey: ['userSearchData'], - queryFn: () => { - return getSearchStats(); - }, - }); + const { data: userSearchData, isLoading, isError, error, } = useUserSearchData() return (
@@ -40,7 +28,7 @@ export function SearchStats() {
Аудио - {userSearchData?.audio?.count ? userSearchData?.audi?.count : 0} + {userSearchData?.audio?.count ? userSearchData?.audio?.count : 0}
diff --git a/src/app/ui/settings/subscription-settings.tsx b/src/app/ui/settings/subscription-settings.tsx index 8fa51e0..beaef02 100644 --- a/src/app/ui/settings/subscription-settings.tsx +++ b/src/app/ui/settings/subscription-settings.tsx @@ -32,18 +32,18 @@ export default function SubscriptionSettings() {
-

Подписка {userData?.tariffInfo.tariffName}

-

📅 Активна до {dateHandler(userData?.tariffInfo.endTariff)}

+

Подписка {userData?.tariffInfo?.tariffName}

+

📅 Активна до {dateHandler(userData?.tariffInfo?.endTariff)}

-
{userData?.tariffInfo.maxFileCounts}
+
{userData?.tariffInfo?.maxFileCounts}

файлов в месяц

💾 Хранилище
- {userData?.tariffInfo.maxFileOnDisk ? convertBytes(userData?.tariffInfo.maxFileOnDisk) : 0} + {userData?.tariffInfo?.maxFileOnDisk ? convertBytes(userData?.tariffInfo?.maxFileOnDisk) : 0}
🔌 API доступ