diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index 7e257db..0000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": [] -} \ No newline at end of file diff --git a/index.css b/index.css index fae9aad..33afb97 100644 --- a/index.css +++ b/index.css @@ -2075,31 +2075,9 @@ height: 64px; display: flex; align-items: center; - justify-content: space-between; flex-shrink: 0; } -.comp2-inquiry-btn { - display: flex; - align-items: center; - gap: 6px; - padding: 8px 16px; - background: transparent; - border: 1px solid rgba(255, 255, 255, 0.3); - border-radius: 8px; - color: rgba(255, 255, 255, 0.8); - font-size: 14px; - text-decoration: none; - cursor: pointer; - transition: background 0.2s, border-color 0.2s, color 0.2s; -} - -.comp2-inquiry-btn:hover { - background: rgba(255, 255, 255, 0.1); - border-color: rgba(255, 255, 255, 0.6); - color: #fff; -} - .comp2-back-btn { display: flex; align-items: center; diff --git a/src/pages/Dashboard/CompletionContent.tsx b/src/pages/Dashboard/CompletionContent.tsx index 39688ab..4da046e 100755 --- a/src/pages/Dashboard/CompletionContent.tsx +++ b/src/pages/Dashboard/CompletionContent.tsx @@ -331,17 +331,6 @@ const CompletionContent: React.FC = ({ {t('completion.back')} - - - - - 문의하기 -
diff --git a/src/pages/Dashboard/DashboardContent.tsx b/src/pages/Dashboard/DashboardContent.tsx index 474d7ae..056e6f1 100755 --- a/src/pages/Dashboard/DashboardContent.tsx +++ b/src/pages/Dashboard/DashboardContent.tsx @@ -480,6 +480,7 @@ const DashboardContent: React.FC = ({ onNavigate }) => { const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); const [showMockData, setShowMockData] = useState(false); + const [retryTrigger, setRetryTrigger] = useState(0); // 계정 관련 state const [accounts, setAccounts] = useState([]); @@ -576,7 +577,8 @@ const DashboardContent: React.FC = ({ onNavigate }) => { setDashboardData(null); return; } - throw new Error(errorData.detail || `API Error: ${response.status}`); + setError({ code: errorData.code || 'API_ERROR', message: errorData.detail || `API Error: ${response.status}`, reconnect_url: errorData.reconnect_url }); + return; } const data: DashboardResponse = await response.json(); @@ -591,7 +593,7 @@ const DashboardContent: React.FC = ({ onNavigate }) => { setError(null); } catch (err) { console.error('Dashboard API Error:', err); - setError(err instanceof Error ? err.message : 'Unknown error'); + setError({ code: 'UNKNOWN', message: err instanceof Error ? err.message : 'Unknown error' }); setDashboardData(null); } finally { setIsLoading(false); @@ -599,7 +601,7 @@ const DashboardContent: React.FC = ({ onNavigate }) => { }; fetchDashboardData(); - }, [mode, selectedAccountId, accountsLoaded]); + }, [mode, selectedAccountId, accountsLoaded, retryTrigger]); if (isLoading) { return ( @@ -688,6 +690,14 @@ const DashboardContent: React.FC = ({ onNavigate }) => { 연동하러 가기 → )} + {(error.code === 'YOUTUBE_API_FAILED' || error.code === 'DASHBOARD_DATA_ERROR') && ( + + )}
)}