Skip to content

Release: 2025년 8/5 03:40 배포 (#320) - #321

Merged
lth-1026 merged 1 commit into
developfrom
main
Aug 4, 2025
Merged

Release: 2025년 8/5 03:40 배포 (#320)#321
lth-1026 merged 1 commit into
developfrom
main

Conversation

@lth-1026

@lth-1026 lth-1026 commented Aug 4, 2025

Copy link
Copy Markdown
Contributor

현재 100% 작동하지 않음.
추후 개선 필요

useSolrouteWriteStore에 저장된 placeInfos 정보를 SolroutePlace에 띄우도록 수정했습니다. 새로운 메모 입력시 placeInfos의 해당 장소 메모 필드에 저장됩니다.

hello-pangea/dnd 라이브러리에서 제공하는 {provided.placeholder}를 적용하여 드래그 전 초기 Droppable 높이를 기억하도록 함.


SolmarkChip에서 솔마크 상태 변경 시 useMarkerStore의 markerInfos 업데이트 markerStore에 updateMarkerIsMarked 함수 추가하여 특정 장소의 isMarked 상태 토글 마커 상태와 솔마크 상태 간 실시간 동기화 구현

위치 추적을 Solmap 컴포넌트에서 main.tsx로 이동하여 앱 시작 시 바로 실행
LocationWatcher 컴포넌트를 추가하여 전역 위치 추적 관리
위치 오류 시 alert 대신 console.error로 변경하여 사용자 경험 개선

위치 권한 상태 관리를 위한 locationAccessStatus 상태 추가
getCurrentPosition으로 위치 권한 요청 후 성공/실패 처리
위치 권한 거부 시 기본 좌표(서울 시청)로 폴백 처리
MapSheet 초기화를 위치 권한 확인 완료 후로 지연하여 안정성 개선

navigator.permissions API를 사용하여 위치 권한 상태 미리 확인
권한 상태별 처리 로직 개선 (granted, prompt, denied)
getCurrentPosition 대신 watchPosition을 직접 사용하여 실시간 위치 추적 geolocation.ts 파일 제거 후 main.tsx에서 직접 처리
에러 메시지 개선 및 로그 추가

X 버튼 클릭 시 검색 입력값, 연관 검색어, 연관 장소 리스트 초기화
handleXButtonClick 함수 추가하여 검색 상태 클리어 후 뒤로가기 처리
검색 종료 시 깔끔한 상태 초기화로 사용자 경험 개선

  • CategoryButton 클릭 시 이전의 MapChip 카테고리 선택 상황과 무관하게 항상 카테고리 선택되도록 수정
  • CategoryButton 클릭 하여 카테고리 변경 시 마커 검색 실행하여 사용자 경험 개선
  • MapSheet의 재검색 함수에서 선택된 카테고리 유지하도록 수정
  • 코드 포맷팅 및 불필요한 공백 제거

기존 router의 state에 background를 넘겨줘 모달 배경을 처리했지만,
전역적인 처리 및 취소시 무조건 background로 가기 위해 store를 이용해 구현함

사용법:
로그인 필수인 페이지는 아래 Route로 감싸주면 됩니다.
<Route element={}> {로그인 필요한 라우터}

하단바가 안 내려갈 확률 감소를 위해 하단가 위치가 변하는 트리거를 하나 더 추가함.
키보다가 올라갔다 내려갈 때마다 visualViewPoint 변경되기에 해당 코드를 추가

다만 ios는 키보드가 내려갈 때 resize 함수 호출을 안하는 문제가 있음

이전에 삭제한 로직이 카테고리 버튼 선택으로 마커 필터링에 영향을 주어 다시 복구함.

ios의 safari에선 키보드가 닫힐 때 blur 이벤트가 즉각 반응하고
chrome에선 visualViewport의 resize 이벤트가 즉각 반응함.
이를 이용해 하단바를 키보드 위에 고정시킬 수 있었음.

다만 핸드폰 성능에 따라 하단바가 키보드 위로 올라오는 속도가 다름
아이폰 12까지는 문제 없으나
아이폰 11이하부터는 delay가 있음

최대한 dom을 이용해 속도를 개선함.
추후 추가적인 리팩토링 예정

추후 무한 스크롤 적용 예정

구현은 완료했으나
refreshToken이 secure와 httponly이고,
sameSite 가 strict이라 cookie를 저장 못하는 문제가 있음.

baseURL 없이 바로 '/api'로 시작한다면 프록시 서버를 거쳐
서버 주소가 아닌 localhost로 변경됨

이를 통해 dev 환경일 때 refresh token의 쿠키의 domain이 달라도 localhost로 변경해 브라우저에 저장할 수 있음.

기존 localStorage로 로그인 여부를 검사했음.
이는 로그인한 상태인데 accessToken이 없을 경우 refreshToken을 요청하지 않는 문제가 있었음.

이에 authStore.isLoggedIn 필드를 이용해 로그인 상태를 검사해 문제를 해결함.

최근 무한 스크롤 형식으로 api가 변경됐으나
다시 기존 형식 api로 변경됨.
이 때문에 장소 검색 결과가 화면에 안 나타나는 문제가 발생함.
기존 api로 변경해 문제를 해결함

장소로 저장 클릭시 쏠루트로 이동할 수 있는 모달을 띄운다.

withCredentials: true가 없다면 쿠키의 도메인이 다를 경우 set-cookie 를 무시함


⚙️ Related ISSUE Number



📄 Work Description



📷 Screenshot



💬 To Reviewers



🔗 Reference

* [feat/#232] 본문 pt-16 변경 및 배경 이미지에 bg-black/50 추가

* [feat/#232] 작성 전 다음 버튼 색상 primary-400으로 변경

* [feat/#232] 쏠렉트 이미지 추가 하단 바 키보드 위로 고정

현재 100% 작동하지 않음.
추후 개선 필요

* [fix/#239] 쏠루트 장소 추가 엔토 오류 수정

* [feat/#239] 장소 검색 isMarked 추가

* [feat/#239] 장소 주소명 길어져도 형태 유지

* [fix/#221] 머지 충돌 수정

* [feat/#221] 프로필 메뉴 구현

* [feat/#221] 회원 화면, 간편 로그인 버튼

* [feat/#221] 프로필 수정

* [feat/#221] 유저 정보 받아오기

* [feat/#221] 프로필 수정 구현

* [fix/#221] 쏠렉트 카테고리 검색 안되는 오류 수정

* [fix/#221] 쏠렉트 포토 너비 수정

* [feat/#221] 공지사항 페이지

* [fix/#221] 태그 헤더 임시 수정

* [feat/#221] 공지사항 페이지

* [feat/#221] 공지 디테일 조회

* [feat/#221] 의견 남기기

* [feat/#221] 장소 추가 요청

* [feat/#221] 빌드 되도록 수정

* [feat/#221] 공지사항 상세 조회 id로 반영

* [fix/#243] 쏠맵 X 버튼 navigate 프리뷰 말고는 다 맵으로 돌아가도록 수정

* [fix/#243] navigate from 전달

* [feat/#243] /는 /sollect로 redirect

* [fix/#243] 프사 rounded

* [fix/#242] 로그인 후 모달 뜨는 문제 해결

* [feat/#242] 쏠루트 로그인 모달 추가

* [feat/#245] dokcerfile 추가

* main.yml 수정

* 07/06 배포 (#196)

* [refactor/#176] sollect Store에 sollects 추가

* [refactor/#176] sollects는 store에서 꺼내 쓰도록 SollectList 수정

* [feat/#176] 관련 쏠렉트 무한 스크롤

* [refactor/#176] SollectList 사용하는 컴포넌트들 수정

* [fix/#176] SollectNoResult에서는 추천쏠렉트를 쓰기 때문에 SollectList로 recommendSollects 보내기

* [refactor/#176] 수정삭제 팝오버 리팩토링

* [feat/#176] 추천 쏠렉트 연동

* [feat/#188] 쏠루트 추가된 장소 띄우기

useSolrouteWriteStore에 저장된 placeInfos 정보를 SolroutePlace에 띄우도록 수정했습니다.
새로운 메모 입력시 placeInfos의 해당 장소 메모 필드에 저장됩니다.

* [fix/#188] placeCoords를 placeInfos로 변경

* [feat/#188] deletePlaceInfo 기능 추가 및 삭제 버튼 클릭 이벤트 처리

* [feat/#189] 드래그 앤 드롭 기능 추가 및 관련 상태 관리 구현

* [feat/#188] SolroutePlace의 DragAndDropLine를 통해서만 드래그 앤 드롭이 가능하도록 수정

* [fix/#176] 추천 쏠렉트 PrivateAxios로 받아오기

* [fix/#176] 인기 쏠렉트 privateAxios로 수정

* [fix/#176] sollectApi 모두 privateAxios로 변경

* [fix/#176] placeApi privateAxios로 수정

* [refactor/#176] 쏠마크 마이 페이지 쏠렉트 작성하기 클릭 버튼 LoginRequiredAction으로 감싸기

* [refactor/#176] 쏠마크 쏠렉트 모든 쏠렉트는 isMarked true로 변경해서 setSollects에 전달하기

* [fix/#176] useLocation으로 탭바 리렌더링

* [refactor/#176] 쏠마크 탭명 추가

* [refactor/#176] PreviewContentSummary에서 place.id로 수정

* [refactor/#176] 쏠렉트 조회 BottomBar LoginRequiredAction으로 감싸기

* [feat/#188] Droppable 컴포넌트에 placeholder 추가

hello-pangea/dnd 라이브러리에서 제공하는 {provided.placeholder}를 적용하여 드래그 전 초기 Droppable 높이를 기억하도록 함.

---------

Co-authored-by: ion <delion.dev@gmail.com>
Co-authored-by: ion <155097020+DandelionQZ@users.noreply.github.com>

* [refactor/#236] 솔마크 상태 변경 시 마커 상태 동기화 기능 추가

SolmarkChip에서 솔마크 상태 변경 시 useMarkerStore의 markerInfos 업데이트
markerStore에 updateMarkerIsMarked 함수 추가하여 특정 장소의 isMarked 상태 토글
마커 상태와 솔마크 상태 간 실시간 동기화 구현

* [refactor/#236] 위치 추적 로직을 앱 진입점으로 이동

위치 추적을 Solmap 컴포넌트에서 main.tsx로 이동하여 앱 시작 시 바로 실행
LocationWatcher 컴포넌트를 추가하여 전역 위치 추적 관리
위치 오류 시 alert 대신 console.error로 변경하여 사용자 경험 개선

* [refactor/#236] 위치 권한 처리 로직 개선 및 맵 초기화 시점 수정

위치 권한 상태 관리를 위한 locationAccessStatus 상태 추가
getCurrentPosition으로 위치 권한 요청 후 성공/실패 처리
위치 권한 거부 시 기본 좌표(서울 시청)로 폴백 처리
MapSheet 초기화를 위치 권한 확인 완료 후로 지연하여 안정성 개선

* [fix/#236] 오타 수정

* [refactor/#236] Permissions API 기반 위치 권한 처리 로직으로 개선

navigator.permissions API를 사용하여 위치 권한 상태 미리 확인
권한 상태별 처리 로직 개선 (granted, prompt, denied)
getCurrentPosition 대신 watchPosition을 직접 사용하여 실시간 위치 추적
geolocation.ts 파일 제거 후 main.tsx에서 직접 처리
에러 메시지 개선 및 로그 추가

* [fix/#236] lastBounds가 없어서 초기 마커 추가되지 않는 문제 해결

* [feat/#253] 쏠렉트, 리뷰 작성 페이지 이미지 삭제 아이콘 변경

* [style/#256] 연관 검색어 아이콘 수정

* [refactor/#256] 검색 영역 X 버튼 클릭 시 검색 상태 초기화 기능 추가

X 버튼 클릭 시 검색 입력값, 연관 검색어, 연관 장소 리스트 초기화
handleXButtonClick 함수 추가하여 검색 상태 클리어 후 뒤로가기 처리
검색 종료 시 깔끔한 상태 초기화로 사용자 경험 개선

* [feat/#258] 쏠마크 쏠렉트 무한스크롤

* [feat/#258] 마이쏠렉트 무한스크롤

* [feat/#258] 회원 탈퇴

* [feat/#258] 닉네임 수정 검증

* [fix/#258] 쏠렉트 리스트 스타일 수정

* [fix/#258] 쏠렉트 프사 찌그러짐 수정

* [fix/#258] Tag 스크롤 수정

* [fix/#260] 로그아웃 시 store 삭제, 캐시 삭제

* [fix/#263] 카테고리 버튼 클릭 시 마커 검색 및 상태 동기화 개선

- CategoryButton 클릭 시 이전의 MapChip 카테고리 선택 상황과 무관하게 항상 카테고리 선택되도록 수정
- CategoryButton 클릭 하여 카테고리 변경 시 마커 검색 실행하여 사용자 경험 개선
- MapSheet의 재검색 함수에서 선택된 카테고리 유지하도록 수정
- 코드 포맷팅 및 불필요한 공백 제거

* [refactor/#255] 모달 구현 방식 개선

기존 router의 state에 background를 넘겨줘 모달 배경을 처리했지만,
전역적인 처리 및 취소시 무조건 background로 가기 위해 store를 이용해 구현함

* [feat/#255] 로그인 필수 페이지 로그인 안했을 경우 /으로 redirect 구현

사용법:
로그인 필수인 페이지는 아래 Route로 감싸주면 됩니다.
<Route element={<ProtectedRoute isLoggedIn={isLoggedIn} />}>
{로그인 필요한 라우터}
</Route>

* [fix/#255] login page에서 OAuth 페이지로 redirect 하기 전 / 접속하던 문제 해결

* [feat/#255] 로그인 후 토큰이 유효하지 않으면 로그인 페이지로 리다이렉트

* [feat/#255] 로그인 후 뒤로가기 두번 클릭해야하는 문제 개선

* [feat/#255] 코스로 저장 클릭시 로그인 확인 기능 추가

* [fix/#255] AppRouter conflict 해결

* [fix/#268] 쏠루트 아이콘 번호 0 부터 시작하던 문제 해결

* [fix/#268] 하단바 visualViewpoint resize event에 따라 위치 변경 함수 추가

하단바가 안 내려갈 확률 감소를 위해 하단가 위치가 변하는 트리거를 하나 더 추가함.
키보다가 올라갔다 내려갈 때마다 visualViewPoint 변경되기에 해당 코드를 추가

다만 ios는 키보드가 내려갈 때 resize 함수 호출을 안하는 문제가 있음

* [fix/#268] 쏠루트 조회 페이지 마진 변경

* [fix/#272] 쏠루트 메모 작성 때마다 마커 리렌더링 문제 해결

* [feat/#276] 아이콘 모달 선택시 모당 창 닫힘

* [fix/#275] 쏠루트 장소 삭제시 지도에 마커 남아있는 오류 해결

* [feat/#271] 위치 정보가 없어도 장소 검색 가능하도록 수정

* [fix/#274] 로딩중 텍스트 삭제

* [feat/#281] 닉네임 입력시 확대되는 문제 해결

* [feat/#284] (위치정보 비허용시) 쏠맵의 현재위치로 버튼 인터렉션 구현

* [chore/#289] GCP 배포를 위한 워크플로우 수정 및 Nginx 기본 설정 파일 삭제

* [chore/#289] 환경 변수에 VITE_CLOUDFRONT_URL 추가 및 Dockerfile 삭제

* [feat/#293] 타이틀, 카테고리 글자수 표시 변경

* [refactor/#295] 버튼에 button 클래스명 입력해서 버튼 클릭 효과 적용

* [feat/#292] 코스로 저장 성공시 토스트로 알림

* [feat/#298] mapStore에 마커 정보 처리 및 맵 인스턴스 설정 기능 추가

* [feat/#298] 지도 인스턴스 설정 및 해제 로직 추가

* [feat/#298] PreviewContent에 마커 정보 및 좌표 처리 로직 추가

* [refactor/#298] fitBounds의 bottom 값 320에서 360으로 수정

* [refactor/#298] add fitCenterLocation 파라미터를 addMarkers 함수에 추가하여 마커 클릭 시 중심 위치 조정 기능 구현

* [feat/#298] add fitCenterLocation 파라미터를 addMarkers 함수에 추가하여 마커 추가 시 중심 위치 조정 기능 구현

* [fix/#298] 쏠맵에서 장소 SolmarkChip 클릭시 지도 이동되던 오류 해결

* [fix/#298] markerInfos 변경시 로직 복구

이전에 삭제한 로직이 카테고리 버튼 선택으로 마커 필터링에 영향을 주어 다시 복구함.

* [fix/#298] fitCenterLocation을 사용하여 마커 위치 조정 기능 추가

* [feat/#301] useMarkerStore에서 searchByPlace를 추가하여 장소 클릭 시 마커 표시 기능 구현

* [refactor/#300] 쏠렉트 하단바 키보드 위에 고정

ios의 safari에선 키보드가 닫힐 때 blur 이벤트가 즉각 반응하고
chrome에선 visualViewport의 resize 이벤트가 즉각 반응함.
이를 이용해 하단바를 키보드 위에 고정시킬 수 있었음.

다만 핸드폰 성능에 따라 하단바가 키보드 위로 올라오는 속도가 다름
아이폰 12까지는 문제 없으나
아이폰 11이하부터는 delay가 있음

* [refactor/#300] 하단바 이동 속도 개선

최대한 dom을 이용해 속도를 개선함.
추후 추가적인 리팩토링 예정

* [fix/#300] relatedSearch 변경된 api 적용

추후 무한 스크롤 적용 예정

* [feat/#288] refresh token 구현 WIP

구현은 완료했으나
refreshToken이 secure와 httponly이고,
sameSite 가 strict이라 cookie를 저장 못하는 문제가 있음.

* [faet/#288] proxy 구현

baseURL 없이 바로 '/api'로 시작한다면 프록시 서버를 거쳐
서버 주소가 아닌 localhost로 변경됨

이를 통해 dev 환경일 때 refresh token의 쿠키의 domain이 달라도 localhost로 변경해 브라우저에 저장할 수 있음.

* [faet/#288] dev환경에선 refresh 관련 api를 프록시 서버로 호출함

* [refactor/#288] proxy server target 주소 env에서 받아오도록 변경

* [feat/#288] 로그인한 상태일 때만 refresh token 요청하도록 변경

* [fix/#288] 로그인 검사 로직 authStore로 변경

기존 localStorage로 로그인 여부를 검사했음.
이는 로그인한 상태인데 accessToken이 없을 경우 refreshToken을 요청하지 않는 문제가 있었음.

이에 authStore.isLoggedIn 필드를 이용해 로그인 상태를 검사해 문제를 해결함.

* [fix/#306] 장소 검색 api 변경

최근 무한 스크롤 형식으로 api가 변경됐으나
다시 기존 형식 api로 변경됨.
이 때문에 장소 검색 결과가 화면에 안 나타나는 문제가 발생함.
기존 api로 변경해 문제를 해결함

* [fix/#309] SolmarkChip의 props로 place.isMarked 전달

* [feat/#308] 장소로 저장 기획 변경 반영

장소로 저장 클릭시 쏠루트로 이동할 수 있는 모달을 띄운다.

* [feat/#312] 장소 검색시 위치 정보 추가

* [refactor/#312] RelatedSearchList에 장소 추가 로직 제거

* [feat/#314] 장소 추가 요청시 버튼 disabled

* [feat/#314] 의견 남기기 요청시 버튼 disable

* [hotfix] main branch merge conflict 해결

* [fix/#318] accessToken 요청 api에 withCredentials: true 설정 추가

withCredentials: true가 없다면 쿠키의 도메인이 다를 경우 set-cookie 를 무시함

---------

Co-authored-by: sky121016 <sky121016@naver.com>
Co-authored-by: Sumin Hong <102947171+sky121016@users.noreply.github.com>
Co-authored-by: ion <delion.dev@gmail.com>
Co-authored-by: ion <155097020+DandelionQZ@users.noreply.github.com>
@lth-1026
lth-1026 merged commit 94981f6 into develop Aug 4, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant