전체적인 리팩토링
This commit is contained in:
@@ -6,11 +6,13 @@ import {
|
||||
fetchDashboardActivity,
|
||||
fetchDashboardBalance,
|
||||
fetchDashboardIndices,
|
||||
fetchDashboardMarketHub,
|
||||
} from "@/features/dashboard/apis/dashboard.api";
|
||||
import type {
|
||||
DashboardActivityResponse,
|
||||
DashboardBalanceResponse,
|
||||
DashboardIndicesResponse,
|
||||
DashboardMarketHubResponse,
|
||||
} from "@/features/dashboard/types/dashboard.types";
|
||||
|
||||
interface UseDashboardDataResult {
|
||||
@@ -24,6 +26,8 @@ interface UseDashboardDataResult {
|
||||
activityError: string | null;
|
||||
balanceError: string | null;
|
||||
indicesError: string | null;
|
||||
marketHub: DashboardMarketHubResponse | null;
|
||||
marketHubError: string | null;
|
||||
lastUpdatedAt: string | null;
|
||||
refresh: () => Promise<void>;
|
||||
}
|
||||
@@ -50,6 +54,8 @@ export function useDashboardData(
|
||||
const [activityError, setActivityError] = useState<string | null>(null);
|
||||
const [balanceError, setBalanceError] = useState<string | null>(null);
|
||||
const [indicesError, setIndicesError] = useState<string | null>(null);
|
||||
const [marketHub, setMarketHub] = useState<DashboardMarketHubResponse | null>(null);
|
||||
const [marketHubError, setMarketHubError] = useState<string | null>(null);
|
||||
const [lastUpdatedAt, setLastUpdatedAt] = useState<string | null>(null);
|
||||
|
||||
const requestSeqRef = useRef(0);
|
||||
@@ -78,6 +84,7 @@ export function useDashboardData(
|
||||
Promise<DashboardBalanceResponse | null>,
|
||||
Promise<DashboardIndicesResponse>,
|
||||
Promise<DashboardActivityResponse | null>,
|
||||
Promise<DashboardMarketHubResponse>,
|
||||
] = [
|
||||
hasAccountNo
|
||||
? fetchDashboardBalance(credentials)
|
||||
@@ -86,9 +93,15 @@ export function useDashboardData(
|
||||
hasAccountNo
|
||||
? fetchDashboardActivity(credentials)
|
||||
: Promise.resolve(null),
|
||||
fetchDashboardMarketHub(credentials),
|
||||
];
|
||||
|
||||
const [balanceResult, indicesResult, activityResult] = await Promise.allSettled(tasks);
|
||||
const [
|
||||
balanceResult,
|
||||
indicesResult,
|
||||
activityResult,
|
||||
marketHubResult,
|
||||
] = await Promise.allSettled(tasks);
|
||||
if (requestSeq !== requestSeqRef.current) return;
|
||||
|
||||
let hasAnySuccess = false;
|
||||
@@ -136,6 +149,18 @@ export function useDashboardData(
|
||||
setIndicesError(indicesResult.reason instanceof Error ? indicesResult.reason.message : "시장 지수 조회에 실패했습니다.");
|
||||
}
|
||||
|
||||
if (marketHubResult.status === "fulfilled") {
|
||||
hasAnySuccess = true;
|
||||
setMarketHub(marketHubResult.value);
|
||||
setMarketHubError(null);
|
||||
} else {
|
||||
setMarketHubError(
|
||||
marketHubResult.reason instanceof Error
|
||||
? marketHubResult.reason.message
|
||||
: "시장 허브 조회에 실패했습니다.",
|
||||
);
|
||||
}
|
||||
|
||||
if (hasAnySuccess) {
|
||||
setLastUpdatedAt(new Date().toISOString());
|
||||
}
|
||||
@@ -192,6 +217,8 @@ export function useDashboardData(
|
||||
activityError,
|
||||
balanceError,
|
||||
indicesError,
|
||||
marketHub,
|
||||
marketHubError,
|
||||
lastUpdatedAt,
|
||||
refresh,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user