Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions src/credo/hospitalConnectService.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import Config from 'react-native-config';
//const HOSPITAL_INVITATION_URL =
//'http://192.168.0.115:8020?oob=eyJAdHlwZSI6ICJodHRwczovL2RpZGNvbW0ub3JnL291dC1vZi1iYW5kLzEuMS9pbnZpdGF0aW9uIiwgIkBpZCI6ICIxZTE4YjUzMi1lM2QxLTQxMDEtODU3ZC05NzljY2ViZjM3NjMiLCAibGFiZWwiOiAiXHVhYzE1XHViZDgxXHVjMGJjXHVjMTMxXHViY2QxXHVjNmQwIiwgImhhbmRzaGFrZV9wcm90b2NvbHMiOiBbImh0dHBzOi8vZGlkY29tbS5vcmcvZGlkZXhjaGFuZ2UvMS4wIl0sICJhY2NlcHQiOiBbImRpZGNvbW0vYWlwMjtlbnY9cmZjMTkiXSwgInNlcnZpY2VzIjogWyJkaWQ6cGVlcjoyLlZ6Nk1rZzNzVFY0VVZjUXV6Y1ZWMlZwMlBTTVZWSFl6VzNBZWZLU0xIVXNVVEFuTVkuRXo2TFNjdVo2eUJGNDFyNWJtU2s0cDVuN2NBQ1RwSEdYVXFxMVRlMkRLS21EcmI1Vy5TZXlKcFpDSTZJaU5rYVdSamIyMXRMVEFpTENKMElqb2laR2xrTFdOdmJXMTFibWxqWVhScGIyNGlMQ0p3Y21sdmNtbDBlU0k2TUN3aWNtVmphWEJwWlc1MFMyVjVjeUk2V3lJamEyVjVMVEVpWFN3aWNpSTZXMTBzSW5NaU9pSm9kSFJ3T2k4dk1Ua3lMakUyT0M0d0xqRXhOVG80TURJd0luMCJdfQ';

const POLL_INTERVAL = 3000;
const POLL_INTERVAL = 2000;

// 병원 초대 URL 가져오는 함수 (API 호출)
export async function getHospitalInvitation(passId, hospitalId) {
Expand Down Expand Up @@ -62,7 +62,7 @@ export async function connectToHospital(agent, invitationUrl) {
let globalTimer = null;

// Hospital Polling 함수 (타이머 반환)
export function startHospitalPolling({ agent, passId, hospitalId, onSuccess }) {
export function startHospitalPolling({ agent, passId, hospitalId }) {
if (globalTimer) {
clearInterval(globalTimer);
globalTimer = null;
Expand All @@ -79,7 +79,6 @@ export function startHospitalPolling({ agent, passId, hospitalId, onSuccess }) {
console.log('✅ 병원 연결 완료');
const vcList = await getAllVCs(agent);
console.log('📄 내 VC 목록:', vcList);
onSuccess?.();
} else {
console.log('⏳ 초대 정보 없음. 계속 대기 중...');
}
Expand Down
28 changes: 13 additions & 15 deletions src/pages/AccessRequestRolePage.js
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,12 @@ const AccessRequestRolePage = ({ route }) => {
let res;
try {
res = await createAccessPass(form);
showNormalAlert({
title: '방문증 신청 완료',
message: `방문증 신청이 완료되었습니다.\n메인 페이지로 이동합니다.`,
showCancel: false,
onConfirmHandler: navigateToHome,
});
console.log('방문증 신청 결과:', res?.data);
} catch (error) {
console.log('방문증 신청 중 오류 발생:', error);
Expand All @@ -146,14 +152,6 @@ const AccessRequestRolePage = ({ route }) => {
agent,
passId: res.data.passId,
hospitalId,
onSuccess: () => {
showNormalAlert({
title: '방문증 신청 완료',
message: `방문증 신청이 완료되었습니다.\n메인 페이지로 이동합니다.`,
showCancel: false,
onConfirmHandler: navigateToHome,
});
},
});
console.log('startHospitalPolling 호출 후 pollStopRef:', pollStopRef.current);
} catch (error) {
Expand All @@ -168,13 +166,13 @@ const AccessRequestRolePage = ({ route }) => {
};

// 🔁 컴포넌트 언마운트 시 polling 중단
useEffect(() => {
return () => {
if (pollStopRef.current) {
pollStopRef.current(); // clearInterval 호출
}
};
}, []);
// useEffect(() => {
// return () => {
// if (pollStopRef.current) {
// pollStopRef.current(); // clearInterval 호출
// }
// };
// }, []);

return (
<>
Expand Down
4 changes: 2 additions & 2 deletions src/pages/MainPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ function isQrAvailable(item) {
}

const MainPage = () => {
const { setLoading, userInfo } = useAuthStore();
const { loading, setLoading, userInfo } = useAuthStore();
const showNormalAlert = useNormalAlertStore.getState().showNormalAlert;

// 임시: 상태변수로 출입 권한 제어
Expand Down Expand Up @@ -148,7 +148,7 @@ const MainPage = () => {
}
};
fetchData();
}, [setLoading, myAccessList]),
}, [setLoading]),
);

// hospitalNameList, myAccessList 준비되면 userVC 생성
Expand Down
34 changes: 32 additions & 2 deletions src/pages/MyAccessListPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -176,12 +176,42 @@ const MyAccessListPage = () => {
const getHospitalName = (hospitalId) => getHospitalNameByList(hospitalId, hospitalNameList);

// 만료/거절 제외 & 시작일 오름차순 정렬
// 상태 우선순위 함수 추가
const getStatusPriority = (startedAt, expiredAt, issuanceStatus) => {
const status = getApprovalStatus(startedAt, expiredAt, issuanceStatus);
switch (status) {
case '출입\n가능':
return 0;
case '출입\n대기':
return 1;
case '발급중':
return 2;
case '승인\n대기':
return 3;
default:
return 99;
}
};

// 정렬 및 필터링
const filteredAndSortedList = (myAccessList || [])
.filter((item) => {
const status = getApprovalStatus(item.startedAt, item.expiredAt, item.issuanceStatus);
return status !== '만료' && status !== '거절';
return (
status === '출입\n가능' ||
status === '출입\n대기' ||
status === '발급중' ||
status === '승인\n대기'
);
})
.sort((a, b) => new Date(a.startedAt) - new Date(b.startedAt));
.sort((a, b) => {
const aPriority = getStatusPriority(a.startedAt, a.expiredAt, a.issuanceStatus);
const bPriority = getStatusPriority(b.startedAt, b.expiredAt, b.issuanceStatus);
if (aPriority !== bPriority) {
return aPriority - bPriority;
}
return new Date(a.startedAt) - new Date(b.startedAt);
});

// NormalListDeep에 넘길 데이터 가공
const sections = filteredAndSortedList.reduce((acc, cur) => {
Expand Down