Refactor: Improve code organization
Refactor signInUtils.ts and networkUtils.ts into smaller, more manageable files.
This commit is contained in:
75
src/utils/auth/network/connectionVerifier.ts
Normal file
75
src/utils/auth/network/connectionVerifier.ts
Normal file
@@ -0,0 +1,75 @@
|
||||
|
||||
import { getSupabaseUrl } from '@/lib/supabase/config';
|
||||
|
||||
/**
|
||||
* 기본 서버 연결 상태 검사 유틸리티
|
||||
*/
|
||||
export const verifyServerConnection = async (): Promise<{
|
||||
connected: boolean;
|
||||
message: string;
|
||||
statusCode?: number;
|
||||
}> => {
|
||||
try {
|
||||
const start = Date.now();
|
||||
|
||||
// Supabase URL 가져오기
|
||||
const supabaseUrl = getSupabaseUrl();
|
||||
|
||||
if (!supabaseUrl) {
|
||||
return {
|
||||
connected: false,
|
||||
message: 'Supabase URL이 설정되지 않았습니다.'
|
||||
};
|
||||
}
|
||||
|
||||
// 캐시 방지용 쿼리 파라미터 추가
|
||||
const cacheParam = `?_nocache=${Date.now()}`;
|
||||
|
||||
// 서버 연결 상태 확인
|
||||
const response = await fetch(`${supabaseUrl}/auth/v1/${cacheParam}`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
signal: AbortSignal.timeout(8000)
|
||||
});
|
||||
|
||||
const elapsed = Date.now() - start;
|
||||
|
||||
// 200, 401, 404 응답도 서버가 살아있다는 신호로 간주
|
||||
if (response.ok || response.status === 401 || response.status === 404) {
|
||||
return {
|
||||
connected: true,
|
||||
message: `서버 연결 성공 (응답 시간: ${elapsed}ms)`,
|
||||
statusCode: response.status
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
connected: false,
|
||||
message: `서버 응답 오류: ${response.status} ${response.statusText}`,
|
||||
statusCode: response.status
|
||||
};
|
||||
}
|
||||
} catch (error: any) {
|
||||
console.error('서버 연결 확인 중 오류:', error);
|
||||
|
||||
let errorMessage = '알 수 없는 네트워크 오류';
|
||||
|
||||
if (error.message) {
|
||||
if (error.message.includes('Failed to fetch')) {
|
||||
errorMessage = '서버 연결 실패';
|
||||
} else if (error.message.includes('NetworkError')) {
|
||||
errorMessage = '네트워크 연결 실패';
|
||||
} else if (error.message.includes('timeout') || error.message.includes('timed out')) {
|
||||
errorMessage = '서버 응답 시간 초과';
|
||||
} else {
|
||||
errorMessage = error.message;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
connected: false,
|
||||
message: errorMessage
|
||||
};
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user