Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[ALL] 버전 2 출시(versionName1.1.0) (#432)
* chore: 안드로이드 프로젝트 폴더 생성 (#2) (#3) * feat: 안드로이드 프로젝트 초기 세팅 (#5) * chore: 안드로이드 프로젝트 폴더 생성 (#2) * feat: 안드로이드 프로젝트 초기 세팅 * chore: gitignore 수정 및 불필요한 파일 삭제 * feat: 프로젝트 초기 세팅 (#7) * fix: 초기 설정 삭제 (#10) * feat: 백엔드 프로젝트 초기 세팅 (#11) * feat: 프로젝트 초기 세팅 * chore: .DS_Store 파일 삭제 및 gitignore 추가 * chore: .DS_Store 파일 삭제 및 gitignore 추가 * chore: 패키지 구조 설정 (#12) * [BE] feat: 엔티티 설계 (#15) * chore: 프로퍼티 파일 수정 Co-authored-by: dooboocookie <[email protected]> Co-authored-by: chaewon121 <[email protected]> Co-authored-by: zillionme <[email protected]> * feat: Member 엔티티 생성 Co-authored-by: dooboocookie <[email protected]> Co-authored-by: chaewon121 <[email protected]> Co-authored-by: zillionme <[email protected]> * feat: Place 엔티티 생성 - Position 도메인 생성 Co-authored-by: dooboocookie <[email protected]> Co-authored-by: chaewon121 <[email protected]> Co-authored-by: zillionme <[email protected]> * feat: Game 엔티티 생성 Co-authored-by: dooboocookie <[email protected]> Co-authored-by: chaewon121 <[email protected]> Co-authored-by: zillionme <[email protected]> * feat: Position의 동등성 기능 추가 --------- Co-authored-by: dooboocookie <[email protected]> Co-authored-by: chaewon121 <[email protected]> Co-authored-by: zillionme <[email protected]> * feat: 초기 resource 파일 세팅 (#16) * feat: DTO 생성 (#18) * feat: 위치를 나타내는 Dto 생성 * feat: 목적지를 나타내는 Dto 생성 * chore: gitkeep 파일 삭제 * feat: Domain 설계 및 생성 (#21) * refactor: 좌표를 나타내는 Dto 이름 변경 * feat: 좌표를 저장하는 도메인 클래스 생성 * feat: 목적지를 저장하는 도메인 클래스 생성 * feat: 도메인 repository 인터페이스 생성 * feat: 네이버 맵을 화면에 띄우는 기능 구현 (#23) * feat: 네이버 맵을 사용하기 위한 의존성을 gradle에 추가 * feat: manifest에 네이버 맵을 사용하기 위한 메타 데이터 추가 * feat: 액티비티 네이밍 변경, 네이버 맵을 화면에 띄우는 기능 구현 * chore: .gitignore 수정 * chore: 네이버 지도 사용을 위해 gradle.properties에 제티파이어를 추가하여 버전 차이 문제를 해결 * feat: 회원 인증 기능 구현 (#26) * feat: 회원정보 추출 기능 구현 * feat: 회원 인증 어노테이션 커스텀 구현 * feat: 인터셉터 추가 * refactor: argumentResolver 리팩토링 * feat: 설정정보 인터셉터 추가 * refactor: 회원 정보 조회 예외처리 중복 수정 * feat: 위치 권한 요청 기능 구현 (#27) * chore: repository 패키지 위치 이동 * feat: 모험시작 액티비티 생성 - 필요한 위치권한 Manifest에 등록 - 위치권한 요청 * design: UI관련 resource 추가 * feat: 게임 시작 기능 액티비티 추가 및 권한 요청 기능 구현 * design: 문자열 strings 리소스화 * design: 배경 및 버튼 색상 변경 * feat: 네이버지도에서 현재 위치를 잡는 기능 구현 (#28) * feat: 위치 권한을 승인한 경우 모험 액티비티로 이동하는 기능 구현 * feat: 내 위치를 잡으면 트래킹하도록 기능 구현 * feat: isLocationButtonEnabled 활성화 구현 * feat: 장소 추천 기능 구현 (#29) * chore: 프로퍼티 파일 수정 * feat: 위치 기준으로 반경 거리내의 장소 추천 쿼리 작성 * feat: Game 엔티티 빈 생성자 추가 * refactor: 패키지명 수정 * chore: 더미 데이터 추가 * feat: Game 엔티티 생성 * feat: Place 서비스 계층 생성 feat: 장소 선정 로직 기능 구현 * feat: GameRepository 생성 * feat: Game 서비스 계층 생성 feat: 장소 선정 기능 구현 * feat: Place 응답 DTO 구현 * feat: Game 컨트롤러 계층 생성 * style: 코드 정렬 * feat: 목적지와 현재위치 사이 거리를 계산하여 사용자에게 보여주는 기능 구현 (#35) * feat: repository 목 구현체 생성 * feat: OnAdventureViewModel 생성 * refactor: 거리 반환값의 자료형을 Int로 수정 * feat: 목적지와 현재위치 사이 거리를 계산하여 사용자에게 보여주는 기능 구현 * feat: Coordinate를 받아 해당 위치에 좌표를 찍는 기능 구현 (#39) - 목적지를 임시로 상수처리 - 추후 목적지를 서버에서 받아 마커를 찍는 방식으로 수정 필요 * feat: 사진 버튼을 클릭하면 사진 다이얼로그를 띄우는 기능 구현 (#40) * design: close icon 추가 * feat: 화면에 관련된 유틸 파일과 메서드 생성 * design: OnAdventure 액티비티에서 사진을 보여주기 위한 다이얼로그 UI 구현 * feat: 목적지에 대한 사진을 띄워주는 DestinationPhotoDialog 구현 * refactor: LocationDialogFragment의 메서드를 DisplayUtil로 분리 * style: 코드 정렬 * feat: 생성시 액티비티로부터 사진을 받아오는 기능 구현 * design: 사진 아이콘 버튼 추가 * feat: 액티비티에서 사진 아이콘 버튼 클릭시 다이얼로그를 띄우는 로직 구현 * feat: 사진이 로딩중 문구 strings 리소스화 * feat: 뷰모델로부터 얻어온 사진을 넘기도록 로직 수정 * refactor: 다이얼로그 및 변수 네이밍 변경 * refactor: strings 리소스화 * refactor: 객체 네이밍 변경 * feat: 목적지에 도착 시 도착 버튼 활성화 기능 구현 (#41) * design: 비활성화 버튼 color resource 추가 * design: 버튼의 상태에 따라 버튼 UI가 변경 되는 selector 생성 * feat: 목적지 도달 시 모험 종료 버튼 활성화 기능 추가 * refactor: 기존에 있는 drawable 활용해 selector 생성 * refactor: 도착 버튼 string을 resource에 추가 * �refactor: API 명세 변경으로 인한 기능 수정 (#43) * refactor: 조회 쿼리의 결과를 List로 받도록 수정 * feat: 인증 관련 예외 기능 추가 * feat: 게임 관련 예외 기능 추가 * feat: 장소 관련 예외 기능 추가 * feat: 회원 관련 예외 기능 추가 * feat: 수정된 API 명세에 맞춰 게임 서비스 로직 수정 * feat: 수정된 API 명세에 맞춰 게임 서비스 로직 수정 * feat: 수정된 API 명세에 맞춰 장소 서비스 로직 수정 * feat: 수정된 API 명세에 맞춰 회원 서비스 로직 수정 * feat: 수정된 API 명세에 맞춰 게임 서비스 로직 수정 * feat: 게임에 대한 응답 DTO 생성 * feat: 수정된 API 명세에 맞게 컨트롤러 수정 * feat: 수정된 API 명세에 맞게 컨트롤러 수정 * style: import문 최적화 * refactor: 기존 런타임 예외를 인증 커스텀 예외로 수정 * refactor: 사용하지 않은 메서드 삭제 * refactor: 상수 이름 변경 * refactor: final 키워드 추가 * refactor: @Transactional 어노테이션에 readOnly 속성 추가 * refactor: 패키지 수정 --------- Co-authored-by: kokodak <[email protected]> * feat: 서버통신 초기세팅 (#44) * feat: Adventure 도메인 클래스 생성 * feat: Adventure 상태를 갖는 enum 클래스 생성 * feat: 기능 변경에 따른 repository 변경 * chore: 사진 다이얼로그 패키지 위치 변경 * feat: AdventureDto 클래스 생성 * feat: Dto와 domain 클래스간의 mapper 구현 * refactor: repository 이름 변경 * feat: repository 기능 변경으로 인한 mock repository 변경 * feat: retrofit service 인터페이스 생성 * feat: adventure ERROR 상태 클래스 추가 * feat: Repository 변경에 따른 ViewModel 변경 및 서버 통신 오류 처리 * feat: Retrofit 객체 생성 및 interceptor 구현 * chore: AdventureService 패키지 위치 변경 * feat: 목적지 도착 여부 확인 기능 구현 (#47) * feat: 좌표사이의 거리를 키로미터로 계산하는 로직 구현 * feat: 도착여부 판단 및 접근 권한 검증 기능 구현 * feat: 장소의 유효범위 여부 검증 구현 * feat: 게임 종료기능 api 구현 * refactor: 게임 관련 예외를 사용하도록 변경 * refactor: 인증 관련 예외 추가 및 적용 * style: final 키워드 추가 및 코드 정렬 * fix: 파라미터명 수정 * feat: 백엔드 ci workflows 초안 작성 (#49) * chore: step 이름 추가 (#50) * [BE] �fix: 백엔드 ci workflows 초안 작성 (#51) * chore: step 이름 추가 * fix: default working directory 추가 * fix: working directory 상대경로로 변경 (#52) * chore: step 이름 추가 * fix: default working directory 추가 * fix: working directory 상대경로로 변경 * feat: 서버에 모험 시작을 요청하는 기능 구현 (#48) * refactor: AdventureRepository 수정 * feat: Coordinate 객체의 Domain to Dto 매핑 함수 생성 * feat: Result의 failure에서 사용할 나아가 팀만의 Throwable 생성 * feat: 서버통신이 성공적이지 않을 때에 대한 객체와 서버통신 코드를 단순화할 메서드 생성 * feat: AdventureRepository의 beginAdventure 함수 구현 * refactor: 코드 방식 변경 get() -> [] * feat: MockRepository의 beginAdventure 함수 구현 * refactor: 타입을 표현해줌 * feat: 실제 base url 등록 * feat: http 통신 허용 * fix: json 변환 과정 수정 * fix: TODO 주석처리 * feat: 코루틴 의존성 추가 * feat: 모험을 시작하는 서버통신 구현 * feat: 모험이 끝났을 때 서버에게 모험이 종료 됐음을 알려주는 기능 구현 (#53) * feat: 모험 종료 시 서버에게 데이터를 받아 올 Dto 생성 * feat: 모험 종료 시 서버에게 받아 온 Dto mapper 생성 * refactor: 데이터 반환 값 타입 변경 * feat: AdventureRepository의 endAdventure 구현 * feat: 모험 종료 시 서버와 통신해 현재 모험 상태를 받아온 후 상황에 맞게 분기 처리 해주는 기능 구현 * refactor: mock Repository의 endAdventure 함수 구현 * fix: onClick에서 사용된 함수에게 인자를 넣어 Databinding 오류 해결 * feat: 서버에서 목적지를 받아오는 기능 구현 (#54) * refactor: 게임 정보를 가져오는 서비스 수정 * feat: 서버에서 목적지를 받아오는 기능 구현 * fix: 목적지 도착 버튼 클릭 시 발생하는 오류 수정 (#56) * fix: RetrofitService Path 수정 * fix: Serializable 어노테이션 추가 * refactor: iteration 명칭 변경 및 타입 명시 제거 * feat: 안드로이드 프로젝트에 firebase 추가 (#75) * feat: 필요 없는 파일 삭제 잘못 올린 파일을 삭제합니다. * chore: gitignore 수정 (#78) * feat: 안드로이드 CI 자동화 (#77) * chore: ktlint를 위한 config 파일 추가 * chore: ci 자동화를 위한 yml 파일 추가 * style: ktlint에 걸린 코드 정렬 * chore: ci 자동화 json 파일 추가 * style: ktlint에 걸린 코드 정렬 * style: ktlint에 걸린 코드 정렬 * chore: ci 자동화 json 파일 추가 * style: ktlint에 걸린 코드 정렬 * style: ktlint에 걸린 코드 정렬 * chore: ci 자동화 파일 수정 * style: ktlint 규칙 변경에 따른 수정 * feat: 스플래시 화면에서 진행 중인 모험이 있는지 판단하고 분기 하는 기능 구현 (#58) * chore: apk 및 aab 추출을 위한 파일 * design: splash를 위한 스타일 생성 * feat: 레포지토리에 모험 상태를 통해 모험 목록을 받아오는 기능 추가 * feat: 모험 상태를 통해 모험목록을 받아오는 retrofit 인터페이스 작성 * feat: 모험 상태를 통해 모험 목록을 반환하는 레포지토리 기능 구현 * feat: 이전 액티비티로부터 OnAdventureActivity로 화면을 전환할때 필요한 인텐트를 반환하는 함수 작성 * feat: 스플래시 액티비티와 뷰모델(및 팩토리) 생성 - 스플래시에서 서버통신을 통해 현재 진행 중인 모험이 있는지 확인한다. - 현재 진행 중인 모험이 있다면 해당 모험과 함께 OnAdventureActivity로 이동한다. - 현재 진행 중인 게임이 없다면 BeginAdventureActivity로 이동한다. * feat: 화면간 데이터 이동을 위한 uiModel 생성 - gradle에 parcelize 플러그인 추가 - AdventureUiModel 및 Mapper 생성 - CoordinateUiModel 및 Mapper 생성 - DestinationUiModel 및 Mapper 생성 * feat: parcelable한 데이터를 인텐트로부터 받기 쉽게할 유틸 함수 작성 * feat: OnAdventureActivity가 열리는 두 가지 경우에 따라 모험을 지정 - 이미 모험이 진행 중이면 이전 화면으로부터 모험을 전달 받고 모험을 서버에 요청하지 않는다. - 진행 중인 모험이 없다면 서버로부터 모험을 요청한다. * refactor: OnAdventureActivity에서 Intent를 생성해주므로 해당 함수를 이용하도록 변경 * [AN] feat: registerForActivityResult 분기처리 기능 구현 (#72) * design: 대락적인 위치 권한만 허용됐을 시 보여줄 문구 string 리소스로 추가 * feat: Dialog 내에서 권한을 체크하여 대략적인 위치 권한이 있는 상태와 전혀 없는 상태를 구분하여 다른 문구를 보여주도록 구현 * feat: BeginAdventureActivity 권한 코드 수정 - 유저가 권한 요청을 허용 및 거절 했을 시 토스트 메시지로 즉각적인 피드백을 주도록 구현 - 함수 분리 - 다이얼로그 태그 상수화 * feat: BeginAdeventureActivity UI 변경사항 적용 (#71) * design: 랭크, 마이페이지, 업로드 아이콘 추가 * design: 기존의 background를 지정하고 tint로 색을 지정하는 방식은 elevation을 반영하지 못해 색이 있는 shape을 새로 생성함 * design: BeginAdventureActivity에서 사용될 style 생성 * design: BeginAdventureActivity xml 레이아웃 작성 * feat: AdventureResultActivity 구현 (#80) * design: 모험 결과 상태에 따른 스탬프 drawable 리소스 추가 * design: 모험 결과 페이지에 필요한 strings 리소스 추가 * feat: 모험 결과에 따라 다른 UI가 띄워지는 액티비티 구현 * fix: manifest 오류 수정 * feat: 3차 데모데이 엔티티 설계 (#84) * feat: BaseEntity 생성 * feat: Player 도메인 생성 * feat: Hint 도메인 생성 Co-authored-by: dooboocookie <[email protected]> * feat: GameResult 도메인 생성 Co-authored-by: dooboocookie <[email protected]> * style: import문 최적화 Co-authored-by: dooboocookie <[email protected]> * feat: 스프링 부트 어플리케이션에 @EnableJpaAuditing 추가 Co-authored-by: dooboocookie <[email protected]> * refactor: 게임 도메인 수정 Co-authored-by: dooboocookie <[email protected]> * refactor: 장소 도메인 생성 Co-authored-by: dooboocookie <[email protected]> * refactor: Score 도메인 생성 Co-authored-by: dooboocookie <[email protected]> * refactor: Place에 BaseEntity 상속 추가 * refactor: Member에 BaseEntity 상속 추가 및 생성자 추가 --------- Co-authored-by: dooboocookie <[email protected]> * feat: OnAdventureActivity UI 변경사항 적용 (#73) * design: OnAdventureActivity에서 사용하는 아이콘 추가 * rename: drawable 컨벤션 유지 * design: 색상 추가 * design: 원 형태의 백그라운드 추가 * design: 문구 변경 * feat: OnAdventureActivity UI 변경사항 적용 * feat: 서버로부터 받아온 목적지에 핀을 꽂는 기능 제거 * rename: 일관성을 위한 아이콘 이름 수정 * design: 하단 버튼 높이 통일 * design: 흰색 배경 drawable 생성 * design: 버튼 그림자 생성 * feat: 충돌 해결 * feat: 충돌 해결 * feat: 충돌해결 * [AN] feat: UploadActivity 구현 * chore: gitignore 수정 * design: 카메라, 좌표 아이콘 추가 * design: 출력 문구 추가 * design: 마진 사이즈 추가 * feat: UploadActivity 구현 * feat: UploadActivity의 인텐트를 가져오는 함수 구현 * chore: string.xml 변수명 변경 * refactor: 사진이 들어갈 이미지뷰와 카메라 아이콘을 분리 * feat: 카메라 권한 요청 기능 구현 (#92) * design: 카메라 권한 관련 아이콘 추가 * feat: 카메라 권한 추가 * feat: dataBinding 사용하도록 xml 변경 * feat: 카메라 위치권한을 요구하는 다이얼로그 생성 * feat: 카메라 권한이 없는 경우 권한 요청 다이얼로그를 띄우는 기능 구현 * chore: 레이아웃 id 컨벤션 유지 * refactor: 다이얼로그의 tag를 다이얼로그 클래스에 위치하도록 통일 * refactor: 매직넘버 상수화 * rename: drawable 파일명 변경 * feat: 명세서 기준으로 Dto들 생성 (#89) * feat: 명세서 기준으로 Dto들 생성 * feat: 변경된 API 명세에 맞춰 Dto 변경 * feat: 디바이스의 위치를 받아와 뷰에 보여주는 기능 구현 (#93) * feat: 디바이스의 위치를 받아와 뷰에 보여주는 기능 구현 * refactor: 좌표를 문자열로 반환하는 기능 함수분리 * feat: 도메인 모델 생성 (#91) * refactor: ERROR를 NONE으로네이밍 변경 * feat: 도메인 객체 생성 (미완) * feat: 도메인 객체 수정 및 추가 생성 * feat: 도메인 수정 * rename: 패키지명 수정 * feat: 통계 path 레트로핏 서비스 구현 #101 * feat: 서버에서 Rank 관련 데이터를 받아올 때 사용될 service 생성 (#100) * feat: 3차 데모데이용 Game Path 레트로핏 서비스 생성 (#102) * feat: 장소 path 레트로핏 서비스 구현 (#103) * feat: AdventureHistoryActivity 구현 (#106) * design: AdventureHistory 뷰에 필요한 string resource 추가 * design: AdventureHistory 뷰에 필요한 drawable resource 추가 * design: 리사이클러뷰에 들어갈 Item 레이아웃 생성 * feat: 모험 기록을 보여 주는 리사이클러뷰 어댑터 생성 * feat: AdventureHistory 액티비티 구현 * feat: AdventureHistoryActivity에 모험 기록을 보여줄 리사이클러뷰 구현 * feat: 뒤로가기 버튼 구현 * refactor: 함수 이름 변경 * refactor: 이름이 길어질 때 줄여쓰기가 되도록 기능 추가 * refactor: Mock 데이터 생성 방법 수정 * refactor: 불필요한 함수 인자 삭제 * feat: RankRepository 생성 (#109) * refactor: Service 명 수정 * feat: RankRepository Interface 구현 * feat: PlayerDto를 도메인 객체로 바꿔주는 도메인 mapper 생성 * feat: RankDto를 도메인 객체로 바꿔주는 도메인 mapper 생성 * feat: 서버와 Rank 데이터를 주고 받기 위해 팔요한 rank service 객체 생성 * feat: RankRepository 구현체 생성 * refactor: 함수 인자 표시 * feat: StatisticsRepository 생성 (#110) * rename: 파일명 수정 * feat: StatisticsRepository 인터페이스 생성 * feat: 서버와의 Statistics 관련 통신을 위한 service 객체 생성 * feat: StatisticsDto 객체를 도메인 객체로 바꿔주는 Mapper 생성 * feat: StatisticsRepository 구현체 생성 * refactor: 함수 인자 표시 * feat: 3차 데모데이 기획 변경에 맞는 AdventureRepository 설계 및 구현 (#111) * feat: 3차 데모데이 기획 변경에 맞는 AdventureRepository 설계 및 구현 * chore: 잘못 위치한 파일 위치 변경 * feat: PlaceRepository 생성 (#118) * feat: 장소 repository interface 생성 * feat: 서비스풀에 장소 서비스 추가 * feat: place mapper 생성 * feat: 장소 repository 구현체 생성 * refactor: 오류처리 변경에 따른 repository 코드 수정 * feat: 통계 path api 목서버 구현 (#116) * feat: 랭크 path api 목서버 구현 (#117) * feat: 랭크 path api 목서버 구현 * feat: 필요없는 변수 변환 로직 제거 * feat: RankActivity 구현 (#119) * feat: RankActivity 생성 * feat: RankActivity의 Intent를 생성해주는 함수 구현 * feat: 내 순위 및 전체 순위 목 데이터를 라이브 데이터 값으로 넣어주는 기능 구현 * design: RankActivity에 필요한 string resource 추가 * design: 내 순위 및 전체 순위를 보여주는 뷰 구현 * feat: 전체 순위를 띄워줄 리사이클러뷰 생성 및 구현 * feat: LiveData를 이용해 리사이클러뷰에 리스트 전달 * feat: 창 닫기 버튼 추가 구현 * refactor: Manifest 내의 rankActivity 위치 이동 * refactor: 컨벤션에 맞게 id 변경 * design: elevation을 활용해 그림자 추가 * refactor: dimens 적용 * refactor: 그림자 적용 * feat: 카메라로 찍은 사진을 뷰에 띄우고 Uri 추출기능 구현 (#120) * feat: 촬영한 사진을 이미지뷰에 보여주는 기능 구현 * feat: 촬영한 사진의 Uri 추출 기능 구현 * refactor: 권한 요청 로직 수정 및 함수 위치 변경 - 업로드 화면으로 이동 시 시스템 권한 요구 상자 팝업(카메라, 위치) - 거절한 권한에 대해 권한요청 다이얼로그 프래그먼트 팝업 * feat: 좌표 이미지를 클릭하여 좌표를 받아 보여주는 기능 구현 * feat: 닫기 버튼 추가 * feat: 3차 데모데이 뼈대 코드 추가 (#130) * refactor: AuthInterceptor에서 인증처리만 하도록 변경 * feat: PlayerException 추가 * feat: Player를 MemberId로 조회하는 기능 추가 * refactor: 로그인 된 PlayerId를 받는 ArgumentResolver 구현 * refactor: PlayerService 적용 refactor: Request DTO 와 Command DTO 분리 * feat: MyPageActivity 구현 (#121) * refactor: ERROR를 NONE으로네이밍 변경 * feat: 도메인 객체 생성 (미완) * feat: 도메인 객체 수정 및 추가 생성 * feat: 인터넷 권한 추가 * feat: 마이페이지의 아이템에 필요한 리사이클러뷰 구현 * feat: 마이페이지에 재사용이 여러번 될 가능성이 있는 뷰를 커스텀 뷰로 제작 * feat: 마이페이지 액티비티 생성 * style: 개행 * feat: 마이페이지 아이템의 두가지 경우의 레이아웃을 따로 제작 * feat: 레이아웃이 두개로 나눠짐에 따라 어댑터 수정중 * feat: 마이페이지 커스텀 아이템 레이아웃 수정 * feat: 마이페이지 커스텀 아이템 내부 리사이클러뷰 구현 방식 변경 (멀티 뷰홀더 적용) * feat: 마이페이지 뷰 구현 * feat: 도메인 모델을 UI모델로 변경할 매퍼 함수 생성 * design: mypage 레이아웃 디자인 변경 * feat: 뒤로가기 클릭리스너 추가 * remove: 중복된 객체 삭제 * refactor: view의 id 수정 * feat: Statistics 도메인 객체 수정으로 인해 자료형 변환 로직 추가 * fix: BaseEntity에 맞춘 data.sql 수정 (#133) * [BE] refactor: Pull Request 워크플로우 수정 (#134) * refactor: DTO들이 모두 record로 구현되도록 수정 (#136) * refactor: Pull Request 워크플로우 재수정 * feat: merge 워크 플로우 추가 (#137) * [BE] feat: merge 워크 플로우 추가 * [BE] refactor: merge 워크플로우 수정 * [BE] feat: 도커파일 생성 * [BE] refactor: 도커파일 이름 수정 * [BE] refactor: merge 워크플로우 재수정 * refactor: merge 워크 플로우 추가 (#139) * feat: merge 워크 플로우 추가 --------- Co-authored-by: zillionme <[email protected]> Co-authored-by: dooboocookie <[email protected]> * feat: 랭크 조회 기능 구현 (#94) * feat: 맴버 아이디로 플레이어 찾는 기능 구현 * feat: RankResponse dto 구현 * feat: RankResponse 정적팩토리 생성자 구현 * feat: 전체 랭크 조회 기능 구현 * feat: 나의 랭크 조회 기능 구현 * refactor: 요청 파라미터 예외 설정 * test: 테스트코드 추가 * refactor: 예외처리 로직 수정 * refactor: json 명세 수정으로 인한 dto 수정 * refactor: players 도메인을 삭제하고 Rank도메인으로 리팩토링 * refactor: 변수명 수정 * test: 테스트 오류 수정 * style: 디버깅 삭제 * feat: 랭크 뷰 기능 구현 및 서버 통신 구현 (#138) * remove: 필요없는 목 서버 삭제 * feat: 인자가 있는 ViewModel 생성을 위해 ViewModelFactory 생성 * feat: RankDto에 Serializable을 달아주어 직렬화가 가능하도록 구현 * refactor: 불필요한 null 검증 로직 제거 * feat: 서버와 통신해 전체 랭크와 내 랭크 정보를 받아온 후 사용자에게 보여주는 기능 구현 * feat: 서버 통신을 실패해 데이터를 불러오지 못했을 때 메시지를 띄운 후 창이 닫히도록 구현 * refactor: Retrofit Builder에 목서버 url로 갈아끼움 * refactor: 서버 통신 실패 시 에러 처리 로직 함수 분리 * feat: 시작 화면에서 랭크 버튼 클릭 시 랭크 화면으로 이동하도록 구현 * refactor: 함수 이름 변경 * refactor: 리사이클러뷰 애니메이터 설정 변경 * refactor: 내 등수 단위 표시 string 추가 * refactor: ktlint 적용 * refactor: 랭킹 관련 레트로핏 서비스의 path 변경 * feat: 게임 결과 뷰 서버 통신 및 기능 구현 (#143) * feat: gameId 값을 받아오는 intent * feat: 뷰모델에 인자로 레포지터리를 넘겨주기 위해 뷰모델 팩토리 생성 * refactor: RankDto에 Serializable을 달아주어 직렬화가 가능하도록 구현 * design: 게임 결과 화면에 필요한 string resource 추가 * refactor: 목 서버와의 연결을 위해 baseUrl 변경 * refactor: 랭크 API 통신을 위해 ViewModel에 RankRepository 인자 추가 * feat: 서버와 통신해 게임 결과를 받아온 후 사용자에게 보여주는 기능 구현 * feat: 서버와 통신해 내 랭크를 받아온 후 사용자에게 보여주는 기능 구현 * feat: 총 플레이 시간을 포매팅해서 보여주는 기능 구현 * feat: 메인으로 돌아가기 버튼을 누를 시 메인으로 돌아가게 하는 기능 구현 * refactor: timeFormatter의 패턴 상수화 처리 * refactor: 불필요한 Log 삭제 * design: color resource 추가 * refactor: 함수 분리 * refactor: 뷰 간격 조절 * feat: 서버에서 받아 온 imageUrl을 Glide를 사용해 이미지로 띄워주는 기능 구현 * design: 버튼 크기 조절 * feat: 모험 결과 DTO와 도메인 객체의 raisedRank 삭제 * feat: 랭크 변동 상황을 알려주는 뷰 삭제 * feat: 인자 변경에 따른 수정 사항 적용 * feat: 모험 기록 뷰 기능 구현 및 서버 통신 구현 (#151) * design: 모험 기록 뷰 디자인 변경 * design: 모험 기록 뷰 리사이클러뷰 아이템 디자인 변경 * refactor: 뷰 생성 위치 변경, 함수명 변경 * feat: 아이템에 사진 넣는 로직 추가 * feat: 뷰모델 팩토리 생성, 로컬 목데이터에서 가져오던 데이터를 서버로부터 가져오도록 변경 * feat: manifest exported 변경 * feat: 이미지 뷰 corner radius 적용 * design: 색상 변경 및 그림자 적용 * design: 마진값 변경 * [AN] feat: MyPage 기능 구현 (#146) * feat: �게임 결과 조회 기능 구현 (#152) * feat: 게임 아이디를 통해 게임결과를 조회한다 * feat: 결과 반환을 위한 responseDTO 생성 * refactor: 게임 결과를 위한 도메인 수정 * feat: 게임 결과 반환 기능 구현 완료 * style: 코드 컨벤션에 맞게 수정 * style: 코드 컨벤션에 맞게 수정 * refactor: 게임 도메인의 오류 리팩토링 * refactor: final 추가 * refactor: 게임 전체 결과 가져오는 로직 수정 * feat: 게임 종료 API 및 게임 조회 테스트 구현 (#147) * test: 게임 종료 기능 테스트 * feat: 게임 종료 기능 기본 구조 추가 * feat: 게임 종료 기능 구현 * test: 게임 점수 계산 기능 테스트 * feat: 게임 점수 계산 기능 구현 * test: 게임 점수 계산 테스트 수정 * test: 게임 종료 및 게임 결과 저장 서비스 테스트 * feat: 게임 종료 서비스 및 dto 구현 * test: 게임 종료 api 테스트 * feat: 게임 종료 api 구현 * test: 게임 종료 api 테스트 수정 * test: sql파일 수정 및 게임 종료 api 테스트 추가 * feat: 모험 결과 DTO와 도메인 객체의 raisedRank 삭제 * feat: 랭크 변동 상황을 알려주는 뷰 삭제 * feat: 인자 변경에 따른 수정 사항 적용 * test: 게임 종료 api 예외 처리 테스트 추가 * refactor: Game 클래스 필요없는 메서드 제거 및 리팩터링 * feat: 모험 기록 뷰 기능 구현 및 서버 통신 구현 (#151) * design: 모험 기록 뷰 디자인 변경 * design: 모험 기록 뷰 리사이클러뷰 아이템 디자인 변경 * refactor: 뷰 생성 위치 변경, 함수명 변경 * feat: 아이템에 사진 넣는 로직 추가 * feat: 뷰모델 팩토리 생성, 로컬 목데이터에서 가져오던 데이터를 서버로부터 가져오도록 변경 * feat: manifest exported 변경 * feat: 이미지 뷰 corner radius 적용 * design: 색상 변경 및 그림자 적용 * design: 마진값 변경 * [AN] feat: MyPage 기능 구현 (#146) * feat: �게임 결과 조회 기능 구현 (#152) * feat: 게임 아이디를 통해 게임결과를 조회한다 * feat: 결과 반환을 위한 responseDTO 생성 * refactor: 게임 결과를 위한 도메인 수정 * feat: 게임 결과 반환 기능 구현 완료 * style: 코드 컨벤션에 맞게 수정 * style: 코드 컨벤션에 맞게 수정 * refactor: 게임 도메인의 오류 리팩토링 * refactor: final 추가 * refactor: 게임 전체 결과 가져오는 로직 수정 * refactor: 테스트 fixture 클래스 생성 * refactor: 테스트 fixture 적용 * fix: 레포지토리 테스트 truncate.sql 추가 * fix: 서비스 테스트 트랜잭션 추가 * test: 게임 식별자로 게임 조회 테스트 추가 * chore: 식별자로 게임 조회 메서드명 변경 * chore: 머지 컨플릭트 해결 --------- Co-authored-by: hyunji1203 <[email protected]> Co-authored-by: k_dragonm <[email protected]> Co-authored-by: krrong <[email protected]> Co-authored-by: chaewon121 <[email protected]> * feat: 장소 등록 api 구현 * feat: BaseEntity 생성 * feat: Player 도메인 생성 * feat: Hint 도메인 생성 Co-authored-by: dooboocookie <[email protected]> * feat: GameResult 도메인 생성 Co-authored-by: dooboocookie <[email protected]> * style: import문 최적화 Co-authored-by: dooboocookie <[email protected]> * feat: 스프링 부트 어플리케이션에 @EnableJpaAuditing 추가 Co-authored-by: dooboocookie <[email protected]> * refactor: 게임 도메인 수정 Co-authored-by: dooboocookie <[email protected]> * refactor: 장소 도메인 생성 Co-authored-by: dooboocookie <[email protected]> * refactor: Score 도메인 생성 Co-authored-by: dooboocookie <[email protected]> * refactor: Place에 BaseEntity 상속 추가 * refactor: Member에 BaseEntity 상속 추가 및 생성자 추가 * test: 장소를 주가하는 기능 tdd test: 테스트에서 사용되는 값 fixture 생성 * feat: 장소 저장하는 기능 구현 * feat: 장소 저장하는 기능 구현 * feat: places 응답 DTO 추가 * test: 장소 생성 API E2E 테스트 추가 feat: 장소 생성 API 구현 * refactor: PlaceCheckService 도메인 서비스 생성 refactor: MultipartFileManager 파일 저장기 생성 * feat: 임시 커밋 * refactor: File 저장 경로 profile에서 변수로 관리하도록 변경 * feat: Place 전체 조회 기능 추가 - 정렬 기능 * feat: Place 단건 조회 기능 추가 * feat: Place 추천 서비스 도메인 서비스로 분리 * feat: Place 생성 서비스 로직 매개변수로 CreatePlaceCommand 받도록 수정 * refacotr: 파일 저장 경로 application.properties에서 받도록 수정 * test: Fixture 수정 및 테스트 수정 * test: 장소 추가 API 테스트 추가 test: 장소 추가 API 예외 테스트 추가 test: 아이디 장소 조회 API 테스트 추가 test: 장소 조회 API 테스트 추가 * test: 테스트 수정 * chore: 충돌 해결 --------- Co-authored-by: kokodak <[email protected]> * chore: 안드로이드 CI workflow 수정 * feat: 힌트 생성 API 설계 및 구현 (#142) * feat: 위경도 좌표를 통해 방향을 계산하는 기능 구현 * feat: memberId 로 Member 를 찾는 기능 구현 * feat: PlayerService 생성 * feat: 힌트 생성에 대한 Command DTO 생성 * feat: 힌트 결과에 대한 DTO 생성 * feat: 힌트에 대한 Service 생성 * feat: 게임에서 힌트를 더 사용할 수 있는지에 대한 판단 기능 구현 * feat: 힌트 생성에 대한 Request DTO 생성 * feat: 힌트 생성에 대한 Command DTO 생성 * feat: 힌트 개수에 따른 생성 제약 조건 및 예외 추가 * feat: GameController 에 힌트 생성 API 로직 구현 * fix: 힌트 최대 사용 개수 수정 * refactor: 게임 최대 시도 횟수를 상수로 추출 * test: 로컬 테스트 환경 설정 * feat: cascade 조건 추가 * test: 더미데이터를 담은 테스트용 fixture 생성 * test: 힌트 생성 기능에 대한 테스트 작성 * chore: RestAssured 의존성 추가 * fix: Game 에서의 cascade 적용 철회 및 테스트 일부 수정 * test: 힌트 생성 API 테스트 코드 작성 * style: 코드 정렬 * feat: 특정 게임의 힌트 단건 조회 API 설계 및 구현 (#157) * feat: 힌트 조회 Command DTO 생성 * feat: 힌트 관련 예외 추가 * refactor: MemberFixture 에서 매직넘버를 상수로 추출 * feat: 힌트 id를 통해 힌트를 조회하는 기능 구현 * feat: 힌트 id를 통한 힌트 조회 API 구현 refactor: HintResponse 구조 수정 remove: DirectionResponse 삭제 * chore: 병합 충돌 해결 * style: 코드 정렬 * feat: 인게임 화면 기능 및 서버통신 구현 (#149) * feat: OnAdventure의 기능목록 작성 * feat: 분리된 Factory 클래스 삭제. ViewModle의 동반객체로 이동 * feat: 기능 개발중.. 임시 커밋 * feat: 라이브데이터를 상황에 맞게 커스텀 하려고 시도중 * feat: 도메인이 추가 및 변경됨에 따라 UiModel과 Mapper를 생성 * feat: Place 도메인 기능 추가 * feat: 인게임 화면에서 필요한 상태 및 로직들을 뷰모델에 작성 * feat: 네이버맵에 대한 코드로 인해 액티비티가 너무 길어져 액티비티 코드를 줄이기 위해 분리를 시도중 * style: 아이콘 추가 * feat: 목서버 base url 적용 * feat: 라이브데이터로부터 옵저버가 처음 한번만 notify를 받을 수 있는 라이브데이터 생성 * design: 아이콘 추가 * feat: Positive 버튼과 Negative 버튼이 존재하는 다이얼로그를 재사용할 수 있도록 생성 및 포기하기, 힌트 사용하기 다이얼로그 빌더 함수 생성 * feat: OnAdventureActivity에서 네이버맵 관련 작업을 분리한 코드 작성 - 힌트 마커 추가 - 목적지 마커 추가 - 네이버 로고 위치 조정 - 나침반 위치 조정 - 내 위치 버튼 위치 조정 * feat: OnAdventureViewmodel 재구현 * feat: Dto에 빠진 Serializable 어노테이션 추가 * feat: 뷰모델 변경으로 인해 데이터바인딩 수정 * design: string resources 추가 * feat: OnAdventureActivity 기능 구현 - 오류 처리 - 서버 통신(목서버) - 다이얼로그 띄우기 * feat: adventureRepository 변경으로 인한 수정 * feat: 뷰모델 팩토리 위치 변경 * feat: 도메인 변경으로 인한 코드 수정 * style: 매니페스트 정리 * refactor: NaagaAlertDialog 개선. 버튼 클릭 이벤트를 다이얼로그 생성시 무조건 받도록 수정함 * feat: AdventureResultActivity를 생성하는 인텐트를 받아오는 방식 변경 및 adventureId를 함께 넘겨줌 * chore: 백엔드 CD 워크플로우 수정 --------- Co-authored-by: zillionme <[email protected]> * feat: 점진적 리팩토링이 완료됨에 따라 파일 정리 (#156) * refactor: 기존에 사용하던 Adventure 도메인 객체와 AdventureRepository가 완전히 대체되었으므로 삭제하고 새로 생성한 객체들의 임시 네이밍을 변경 * docs: 기능 구현이 완료되었으므로 기능 목록을 제거한다. * refactor: 도메인의 점진적 리팩토링이 완료됨에 따라 UiModel과 Mapper 또한 사용되지 않는 것들을 삭제하고 임시 네이밍을 변경했습니다. * refactor: 점진적 리팩토링이 완료됨에 따라 사용되지 않는 dto들을 삭제하고 패키지 구조를 변경 * refactor: dto와 도메인이 변경됨에 따라 Mapper가 변경됨 * refactor: 서비스 인터페이스와 서비스 풀에서 더 이상 사용하지 않는 파일 삭제 및 dto 변경으로 인한 변경 * refactor: 점진적 리팩토링이 완료됨에 따라 사용하지 않는 레포지토리 구현체 삭제 * rename: repository 네이밍 변경으로 인한 수정 * refactor: 도메인 변경으로 인한 스플래시 변경 및 기능 개선 * rename: 도메인 변경으로 인한 변경 * rename: adventureRepository와 그 구현체 네이밍 변경으로 인한 수정 * feat: 통계 조회 기능 구현 (#159) * feat: Statistic 반환dto 생성 * feat: Statistic 도메인 생성 및 계산로직 구현 * feat: 나의 통계 조회 기능 구현 완료 * fix: 시간계산 오류 수정 * test: @Sql조건 수정 * refactor: 총 플레이 시간과 게임 시간 값 수정 * fix: 인터셉터 패턴 추가 (#161) * feat: 게임 시작 화면 기능 구현 (#162) * design: BeginAdventureActivity에 필요한 string resource 추가 * refactor: 이동할 뷰에게 getIntent 함수를 이용해 intent 생성 * fix: Splash 화면에서 바로 인게임 화면으로 넘어가는 오류 수정 * feat: 메뉴를 누르면 해당 화면으로 이동하도록 구현 * refactor: 게임 결과 화면이 자신의 Intent를 생성하도록 수정 * refactor: ktlint 적용 * feat: 게임 생성 로직 수정 (#166) * fix: 잘못된 인덱스 로직 수정 * feat: Location 헤더로부터 id를 추출하는 기능 구현 * refactor: 매직넘버를 상수로 대체 * feat: 3차 데모데이 API 명세에 맞추어 응답 DTO 필드 추가 * test: 게임 생성 API 테스트 작성 * chore: 서브 모듈 설정 추가 * feat: firebase crashlytic 초기 환경 설정 (#170) * feat: FirebaseAnalytics 생성 및 로그 삽입을 담당할 객체 생성 및 상수 모음 파일 생성 (#171) * fix: application 파일 복구 (#174) * chore: 더미 데이터 추가 (#176) * feat: API 수정으로 인한 변경사항 적용 (#177) * feat: 명세서 변경으로 인해 dto 변경 * feat: 도메인 객체의 타입 변경 * feat: 받아올 값의 타입과 보여줄 뷰의 형태 변화를 반영한 코드 수정 * design: 제약 변경, 보여줄 데이터의 단위 추가 * feat: 목데이터를 실제 값으로 변경 * feat: 인텐트 값을 받아오는 것의 예외 상황에 대한 처리 * refactor: RankReponse 수정 (#179) * refactor: 변수명 수정 * refactor: 변수명 수정 * feat: baseUrl 변경 및 감추기와 그에 따른 yml 파일 변경 (#182) * feat: baseUrl이 노출되지 않도록 하며 github secret으로부터 가져올 수 있도록 yml 파일 수정 * feat: local.properties로부터 baseUrl을 가져올 수 있도록 변경 * feat: baseUrl을 BuildConfig로부터 가져올 수 있도록 변경 * ci 파일 1차 수정 * ci 파일 2차 수정 * ci 파일 3차 수정 * ci 파일 4차 수정 * refactor: 쿼리와 uri 수정 (#184) * refactor: 변수명 수정 * refactor: 변수명 수정 * refactor: 변수명 수정 * fix: uri 쿼리파라미터 오류 수정 * feat: 업로드 뷰 기능 구현 (#181) * feat: 제목, 설명을 입력받는 기능 구현 * feat: 촬영한 사진의 uri를 뷰모델에 저장 * feat: 모든 정보가 입력되지 않은 경우 전송하지 못하도록 하는 기능 구현 * refactor: 함수명 수정 * feat: 좌표 확장함수 생성 및 전송 기능 수정 - 필요한 정보가 하나라도 입력되지 않은 경우 정보를 입력해달라는 토스트 메시지 출력 - ViewModel에 좌표를 전달하고, 뷰에 좌표를 출력하기 위해 원하는 형태의 text로 변환하는 확장함수 생성 * feat: post 시 필요한 데이터를 파트로 분리 * feat: ViewModel 생성에 필용한 팩토리 추가 * feat: place 등록 기능 구현 * feat: viewModel 생성방법 변경 및 등록 버튼 리스너 연결 * fix: GET /games 쿼리 스트링 없어도 되도록 수정 (#187) * fix: 게임 전체 조회 기능 수정 * fix: 게임 전체 조회 기능 재수정 * fix: 랭크 전체조회 쿼리 파라미터 조건 수정 (#191) * fix: 장소데이터 추가 및 인터셉터 설정 변경 * refactor: 컨트롤러 요청 수정 (#193) * fix: POST /games/{gameId}/hints 쿼리 스트링 없어도 되도록 수정 (#195) * fix: 힌트 생성 api * fix: 힌트 생성 api 재수정 * feat: 게임 종료 시, 플레이어 점수 덧셈 기능 추가 (#198) * feat: 게임 종료 시, 플레이어 점수 덧셈 기능 추가 * refactor: 게임 결과 거리 조회 수정 * feat: Firebase Analytics 버튼 클릭 로그 추가 (#183) * feat: view id를 가져오기 위한 확장함수 추가 * feat: BeginAdventureActivity firebase용 버튼 로그 추가 * feat: LocationPermissionDialog firebase용 버튼 로그 추가 * refactor: 함수명 및 함수위치 통일 * feat: AdventureResultActivity firebase용 버튼 로그 추가 * feat: MyPageActivity firebase용 버튼 로그 추가 * feat: OnAdventureActivity firebase용 버튼 로그 추가 * refactor: 함수명 통일 * feat: UploadActivity firebase용 버튼 로그 추가 * feat: CameraPermissionDialog firebase용 버튼 로그 추가 * feat: xml에 있는 onClick 함수 삭제 및 firebase 버튼 로그 추가 * [BE] chore: spring profile에 대한 yml 파일 수정 * chore: yml 파일 수정 * chore: submodule 수정 * fix: @Value 어노테이션 삭제 * fix: 서버 통신 수정 (#196) * feat: NaagaThrowable을 수정하면서 data layer에서 400 / 500 / onFailure 세가지만 판단 * feat: 변경된 명세에 따라 AdventureStatusDto 변경 * feat: OnAdventureActivity에서 에러 로그를 볼 수 있도록 추가 * feat: OnAdventureActivity에서 도착 실패시 다시 시도하라는 토스트 발생 * feat: 다른 라이브 데이터를 받아서 한번만 호출할 수 있도록 효율적으로 변경 - 기존에는 DiposableLiveData를 만들고 이 데이터에 setValue까지 직접 해줘야했는데 이제는 다른 라이브데이터를 받아서 DisposableLiveData까지 setValue해주지 않아도 된다. * feat: 기존 게임을 불러올 경우 기존의 힌트를 찍어주는 로직 작성 * rename: 매개변수명 변경 --------- Co-authored-by: hyunji <[email protected]> * refactor: dev 서버 환경 구축 (#236) * chore: submodule url 프로토콜 수정 * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * chore: update submodule * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * chore: update submodule * chore: update submodule * chore: MySql 의존성 추가 * chore: update submodule * Update backend_dev_merge_workflow.yml * Update backend_dev_merge_workflow.yml * chore: update submodule --------- Co-authored-by: kokodakadokok <[email protected]> Co-authored-by: kokodak <[email protected]> * fix: 깃허브 액션 워크플로우 수정 (#239) * feat: 소셜 로그인 기능 구현 (#235) * design: LoginActivty에 필요한 drawable source 추가 * design: LoginActivty에 필요한 string source 추가 * feat: 소셜 로그인을 위한 gradle 추가 * feat: 난독화 시 카카오 SDK가 포함되지 않도록 규칙 설정 * feat: 카카오 로그인 API key 숨김 처리 * feat: 인터넷 사용 권한 허용 * feat: 카카오 로그인 기능을 위한 Redirect URI 설정 추가 * feat: Kakao SDK를 초기화하는 application 구현 * feat: Kakao 로그인 기능 Util 구현 * design: LoginActivity 뷰 구현 * feat: 게임 상태가 진행 중이 아닐 때 Splash 화면에서 로그인 화면으로 이동하도록 구현 * feat: 상태바 색상 변경 * feat: 로그인 기능 구현 * feat: 사용자의 카카오 계정 닉네임을 마이페이지에 보여주는 기능 구현 * feat: 서버와 통신해 토큰을 얻어올 때 필요한 Dto, Domain 객체 생성 * feat: Dto, Domain 변환 mapper 추가 * feat: 서버와 통신하여 로그인 인증을 해주는 retrofit service 구현 * feat: 로그인 인증을 통해 토큰을 가져와주는 레포지토리 구현 * feat: 서버에게 받은 토큰을 저장하는 SharedPreference 구현 * feat: 서버에게 토큰을 받아와 로컬 저장소에 저장하는 기능 구현 * feat: 카카오 API KEY 감추기에 따른 yml 파일 수정 * fix: yml 파일 오류 수정 * fix: yml 파일 오류 수정 * fix: yml 파일 오류 수정 * fix: yml 파일 오류 수정 * refactor: ktlint 적용 * refactor: yml 파일 코드 정리 * refactor: 암호화 처리 되는 EncryptedSharedPreferences로 변경 * feat: retrofit Header에 서버에서 받아온 토큰 넣어주기 구현 * refactor: 카카오 토큰을 함수 인자로 받아오도록 수정 * rename: preference가 사용된 파일명을 datasource로 변경 * refactor: 함수 인자명 변경 * chore: 오류 코드 정리 및 예외 핸들러 보완 * chore: 오류 코드 문서와 통일 * refactor: 에러코드 문서화에 맞춘 코드 수정 * refactor: 요청 바디에 대한 입력 오류 예외 핸들러 추가 * fix: 원격 저장소와의 코드 변경 수정 * Update backend_dev_merge_workflow.yml * hotfix: workflow 긴급 수정 * hotfix: yml 파일 삭제 * fix: 게임 종료 실패 시, 남은 도전 횟수 줄지 않는 문제 해결 * chore: 서브모듈 추가 * 게임 종료 특정 예외 롤백 예외 적용 * fix: 도착 실패시, 시도 횟수 롤백 문제 수정 * test: 테스트 추가 * chore: workflow 수정 * chore: workflow 수정 --------- Co-authored-by: zillionme <[email protected]> * feat: 자동 로그인 및 로그인 로직 수정 (#241) * feat: AuthInterceptor 만드는 중 * feat: 닉네임은 서버에서 내려주는 정보이므로 직접 가져올 필요가 없다. 로직 삭제 * rename: 카카오라는 플랫폼에 종속적이지 않은 인증정보 저장소이므로 네이밍 변경 * chore: NaagaApplication은 특정 뷰에 종속된 것이 아닌 어플리케이션 전체를 관장하는 객체이므로 패키지 변경 * feat: Application의 서브클래스 수정 및 해당 위치에서 AuthDataSource 생성 * rename: Preference 네이밍 변경 * feat: 도메인에서 엑세스 토큰과 리프레시 토큰에 대한 내용은 필요가 없다고 생각되어 삭제 * feat: preference에 refresh 로직 추가 * feat: AuthRepository 수정, 데이터 레이어에서 토큰을 저장할 수 있도록 변경 * feat: 주석 추가 및 고차함수를 통해 콜백에서 발급되는 토큰을 받아감 * rename: AuthService의 함수명 변경 * refactor: object에서 class로 변경 * refactor: DefaultAuthRepository에서 dataSource를 외부에서 주입받도록 변경 * refactor: 토큰 가져오는 방식이 변경됨 * feat: 카카오 로그인 방식에 문제가 있어 변경함 * feat: AuthInterceptor 완성 * feat: 예외처리 (#243) * feat: 데이터 레이어에서 사용할 Custom Throwable 클래스 생성 * feat: 통신 오류시 DataThrowable을 사용하는 코드 스니펫 작성 * feat: RankRepository의 서버 통신을 DataThrowable을 사용하는 통신으로 변경 * feat: 예상하는 예외 발생 시 토스트메시지로 보여주는 기능 구현 * refactor: sort, order를 도메인 Enum 클래스를 사용하도록 변경 * feat: PlaceRepository의 서버 통신을 DataThrowable을 사용하는 통신으로 변경 * feat: StatisticsRepository의 서버 통신을 DataThrowable을 사용하는 통신으로 변경 * feat: upload 기능 서버 통신 연결 해제 * refactor: 점진적 리팩토링 종료 및 불필요한 코드 삭제 * feat: http 응답코드 500번대, body가 null일 때 반환할 에러 추가 * feat: 통신 오류시 DataThrowable을 사용하는 코드 스니펫에 예외 핸들링 추가 * fix: 잘못된 파라미터 수정 * feat: 클라이언트에서 사용하는 hintThrowable 추가 * feat: AdventureRepository의 서버 통신을 DataThrowable을 사용하는 통신으로 변경 * feat: 장소등록 페이지로 이동하지 못하도록 구현 * style: 불필요한 개행 삭제 * refactor: 뷰모델 코드 통일 및 핸들링할 예외 수정 * refactor: 예외 발생 시 보여주는 방법 변경 * refactor: ViewModelProvider의 factory를 ViewModel의 동반객체로 이동 * refactor: 사용하지 않는 예외 클래스 삭제 * refactor: 인증관련 에러 삭제 * refactor: 에러 코드 변경 * feat: 소셜 로그인 기능과 인터셉터 인가 처리 및 아규먼트 리졸버 기능 추가 * feat: OAuth 연습 * feat: OAuth 연습2 * chore: 연습 코드 삭제 * feat: JWT 생성 로직 * feat: AccessToken과 RefreshToken 담고있는 AuthTokens 생성 * feat: 카카오 토큰으로 카카오로부터 유저 정보 받아오는 요청 로직 추가 * feat: 인증 정보 조회에 대한 서비스 로직 추가 * feat: 로그인 관련 요청 추가 * feat: JWT에서 멤버 ID 추출하는 기능 추가 * feat: 인터셉터에서 Authorization 헤더에서 토큰 추출해서 memberId 조회하는 기능 추가 * feat: 멤버 회원가입 시, 플레이어 함께 생성하도록 추가 chore: 네이밍 변경 Co-authored-by: chaewon121<[email protected]> * refactor: Member에 Password 삭제 test: Basic 헤더에서 Bearer + 토큰으로 변경 Co-authored-by: chaewon121<[email protected]> * chore: 패키지 구조 변경 Co-authored-by: chaewon121<[email protected]> * test: AuthInterceptor 테스트 추가 Co-authored-by: chaewon121<[email protected]> * test: AuthArgumentResolver 테스트 추가 Co-authored-by: chaewon121<[email protected]> * test: AuthController 테스트 추가 Co-authored-by: chaewon121<[email protected]> * test: AuthService 테스트 추가 Co-authored-by: chaewon121<[email protected]> * chore: 필요없는 프로필 삭제 Co-authored-by: chaewon121<[email protected]> * feat: 서브모듈 추가 Co-authored-by: chaewon121<[email protected]> * feat: 예외 처리 추가 Co-authored-by: chaewon121<[email protected]> * remove: 테스트 프로필 삭제 Co-authored-by: chaewon121<[email protected]> * chore: 스타일 수정 * test: pull 후 테스트 통과되도록 수정 Co-authored-by: chaewon121 <[email protected]> * feat: 난독화를 위해 모든 Dto 필드에 SerialName을 추가 (#245) * fix: AuthInfo에 기본 생성자 추가 * fix: 서브모듈 업데이트 * feat: 앱 아이콘 설정 (#253) * fix: 메인으로 돌아갈 시 해당 액티비티가 사라지도록 수정 (#255) * feat: 사용자가 GPS 기능을 껐을 때 이를 인지하고 키도록 유도하는 기능 구현 (#258) * feat: 장치 구성 변경 대응 (#250) * feat: 화면을 세로모드로 고정 * feat: 다크모드를 사용해도 다크테마가 나오지 않도록 변경 * feat: 난독화 방지를 위한 ProGuard 수정 (#259) * refactor: 좌표 간 거리를 M 단위로 변경 및 힌트/시도횟수 변경 * refactor: 좌표간 거리를 m 단위로 변경 * refactor: 힌트 최대 사용 개수와 최대 시도 횟수 변경 * fix: 서브모듈 최신화 * feat: Firebase Analytics 서버 통신 에러 로그 추가 (#260) * refactor: 게임 종료 타입에 따른 점수 계산 기능 수정 * refactor: 메서드 명 변경 * refactor: 게임 시작 위치와 목적지의 직선 거리 구하는 기능 추가 * refactor: 게임 종료 타입에 따른 점수 계산 기능 수정 * refactor: 게임 결과에 따른 점수 계산 기능 수정 * refactor: gameScore 관련 패키지 네이밍 변경 * refactor: enum을 클래스의 상수로 빼놓은 것 수정 * refactor: gamescore 도메인에 스프링 의존성 제거 * refactor: 스코어 정책 못 찾을 때 예외 발생하도록 변경 feat: InternalException과 Exception에 대한 핸들러 추가 * chore: 스타일 수정 --------- Co-authored-by: dooboocookie <[email protected]> * feat: 로깅 기능 추가 (#268) * feat: 이어하기 기능 추가 (#263) * feat: 이어하기 기능 구현 * feat: 뒤로가기 버튼을 2초내에 두 번 눌려야 종료되도록 기능 구현 * feat: splash를 거치면 login 액티비티로 이동하도록 수정 * feat: splash에서 adventure를 받아온 경우 BeginAdventureActivity까지 전달 - 이를 통해 이어하기가 가능하도록 기능 구현 * feat: 진행중인 게임이 있는 경우 이어하기가 표시되도록 변경 * feat: 게임결과 화면에서 뒤로가기 버튼 클릭 시 BeginAdventureActivity로 이동하도록 구현 * refactor: 버전에 따른 분기처리 함수에 Compat suffix 추가 * refactor: 문자열 strings.xml로 이동 * refactor: 사진 저장 경로 수정 (#269) * refactor: 이미지 저장하는 경로와 URL 경로 수정 * chore: 서브모듈 업데이트 * chore: 프로덕트 서버 배포 * chore: prod 서버 배포 * chore: prod 서버 배포 * fix: OnAdventureActivity 수정 (#265) * chore: lottie 의존성 추가 * design: 로티 애니메이션과 뷰 추가 * feat: 로딩 기능 추가 * feat: 뷰모델 불필요한 로직 정리 * feat: 중복 값에는 갱신되지 않는 라이브데이터 생성 * feat: 로티를 지도 위로 띄우기 위해 elevation을 적용 * feat: 로티 배경 흐린 색으로 수정 * design: string 리소스 추가 * feat: 힌트 잔여횟수 표시하도록 변경, 정답 도전 잔여 시도 횟수 표기, 토스트에서 스낵바를 띄우도록 변경, 목적지가 없을 시 종료 * design: 불필요한 + 버튼 삭제 * design: margin값 변경 * feat: snackbar를 toast로 변경 * feat: 로그인 시 사용자의 토큰이 로그에 보여지지 않도록 수정 (#271) * feat: 스플래시에서 받아온 게임을 넘겨주는 기능 삭제 (#274) * refactor: 로그 경로 변경 * chore: 서브모듈 수정 * fix: 잘못된 로직 수정 (#276) * feat: 스플래시에서 받아온 게임을 넘겨주는 기능 삭제 * fix: 잘못된 로직 수정 * feat: 시작 액티비티 변경 * feat: BeginAdventureActivity에서 진행중인 게임이 있는지 판단하는 기능 구현 (#277) * design: 로딩을 위한 스켈레톤 UI 생성 * feat: 진행중인 상태의 게임을 받아오고 로딩하는 과정을 추가 * feat: 작업중 * rename: 로티 파일 이름 변경 * design: 스켈레톤 뷰 지우고 로티 뷰 추가 * feat: 로티 로딩뷰로 수정 * style: 로그 삭제 * feat: 뷰 진행 플로우 변경 * refactor: 직접 만든 로직을 이미 존재하는 코틀린 api로 대체 * fix: 에러 수정 * fix: 사진 저장 시 1번 회원으로만 저장되는 오류 수정 * fix: 사진 저장 시 1번 회원으로만 저장되는 오류 수정 * chore: 서브모듈 업데이트 * chore: 서브모듈 업데이트 * chore: 추천 범위 500km로 수정 * test: 테스트 fixture 및 builder 추가 및 적용 * fix: 잘못된 거리 계산 수정 * feat: 테스트 Builder 패턴 적용 및 Fixture 생성 remove: 기존의 Fixture 파일 삭제 * test: 테스트 Builder 적용 및 기존의 cascade 옵션 삭제 * fix: application.yml 수정 * chore: 리커시브 컴페리전 이그노어 필드 추가 --------- Co-authored-by: dooboocookie <[email protected]> * feat: Refresh Token 구현 및 자동 로그인 API, 회원 탈퇴 API, 로그아웃 API 구현 * test: 액세스 토큰 재발급 e2e 테스트 작성 * fix: 로그 환경셜정 변경 * feat: 액세스 토큰 재발급 기능 추가 * refactor: 액세스 토큰 재발급 기능 리팩터링 * refactor: 최초 액세스 토큰 발급 시 AuthToken 영속화 * chore: 임시 커밋 * test: 일부 테스트 수정 및 삭제 * feat: 아규먼트 리졸버 변경 및 추가 * feat: 소셜 로그인 연결 끊기 기능 추가 * fix: 아규먼트 리졸버 스프링 빈 등록 * refactor: 기본 설정파일 수정 * chore: 서브모듈 업데이트 * refactor: 멤버, 플레이어 삭제 필드 추가 * feat: 멤버, 플레이어 삭제 기능 추가 * feat: 토큰 삭제 기능 추가 * feat: AuthToken에 멤버 필드 추가 * feat: 로그아웃 API 추가 * chore: 패키지 구조 변경 * test: 회원탈퇴 로그아웃 E2E 테스트 추가 * chore: 서브모듈 업데이트 * refactor: 소프트 딜리트 @SqlDelete로 수정 refactor: cascade 옵션 PERSIST로 수정 test: 회원탈퇴 로그아웃 서비스, 컨트롤러 테스트스 작성 * chore: 충돌 해결 * chore: 서브모듈 업데이트 * chore: 충돌 해결 --------- Co-authored-by: zillionme <[email protected]> * test: 작성되지 않은 테스트 코드 추가 * fix: 잘못된 거리 계산 수정 * feat: 테스트 Builder 패턴 적용 및 Fixture 생성 remove: 기존의 Fixture 파일 삭제 * test: 테스트 Builder 적용 및 기존의 cascade 옵션 삭제 * test: 없는 예외 테스트 추가 * test: StatisticTest 와 gameServiceTest 추가 * Update backend_dev_pr_workflow.yml * fix: Thread.sleep 추가 * Update GameControllerTest.java * Update GameControllerTest.java * Update backend_dev_pr_workflow.yml * Update backend_dev_pr_workflow.yml * Update backend_dev_pr_workflow.yml * Update GameControllerTest.java * Update backend_dev_pr_workflow.yml * Update backend_dev_pr_workflow.yml * test: 테스트 fixture 및 builder 추가 및 적용 * fix: 잘못된 거리 계산 수정 * feat: 테스트 Builder 패턴 적용 및 Fixture 생성 remove: 기존의 Fixture 파일 삭제 * test: 테스트 Builder 적용 및 기존의 cascade 옵션 삭제 * fix: application.yml 수정 * chore: 리커시브 컴페리전 이그노어 필드 추가 --------- Co-authored-by: dooboocookie <[email protected]> * feat: Refresh Token 구현 및 자동 로그인 API, 회원 탈퇴 API, 로그아웃 API 구현 * test: 액세스 토큰 재발급 e2e 테스트 작성 * fix: 로그 환경셜정 변경 * feat: 액세스 토큰 재발급 기능 추가 * refactor: 액세스 토큰 재발급 기능 리팩터링 * refactor: 최초 액세스 토큰 발급 시 AuthToken 영속화 * chore: 임시 커밋 * test: 일부 테스트 수정 및 삭제 * feat: 아규먼트 리졸버 변경 및 추가 * feat: 소셜 로그인 연결 끊기 기능 추가 * fix: 아규먼트 리졸버 스프링 빈 등록 * refactor: 기본 설정파일 수정 * chore: 서브모듈 업데이트 * refactor: 멤버, 플레이어 삭제 필드 추가 * feat: 멤버, 플레이어 삭제 기능 추가 * feat: 토큰 삭제 기능 추가 * feat: AuthToken에 멤버 필드 추가 * feat: 로그아웃 API 추가 * chore: 패키지 구조 변경 * test: 회원탈퇴 로그아웃 E2E 테스트 추가 * chore: 서브모듈 업데이트 * refactor: 소프트 딜리트 @SqlDelete로 수정 refactor: cascade 옵션 PERSIST로 수정 test: 회원탈퇴 로그아웃 서비스, 컨트롤러 테스트스 작성 * chore: 충돌 해결 * chore: 서브모듈 업데이트 * chore: 충돌 해결 --------- Co-authored-by: zillionme <[email protected]> * chore: 충돌 해결 --------- Co-authored-by: kokodak <[email protected]> Co-authored-by: kokodakadokok <[email protected]> Co-authored-by: dooboocookie <[email protected]> Co-authored-by: dooboocookie <[email protected]> Co-authored-by: zillionme <[email protected]> * feat: 버전 변경 (#290) * feat: 로깅하기 (#291) * 임시저장 * 임시저장 * feat: 환경 설정별 로깅 추가 * refactor: 로그 파일 및 warn, error 로그 메시지 수정 * refactor: db 로그 출력 분리 * refactor: db 로그 레벨 수정 * chore: 서브모듈 업데이트 * chore: 워크 플로우 수정 * feat: 장소 업로드 기능 구현 (#301) * refactor: Part를 PartMap으로 변경 * feat: 업로드 화면으로 이동하는 기능 구현 * feat: 정보를 서버로 전송하는 기능 구현 - 필요한 정보를 RequestBody 형태로 만들고 Map에 저장하여 전송하는 방식 * feat: 정보를 성공, 실패했을 때의 로직 구현 * feat: 원하는 예외만 핸들링 하도록 구현 * feat: 잡은 예외에 토스트로 알맞는 문구를 띄워주는 기능 구현 * fix: 자료형 변경 * refactor: 문자열 string.xml 로 추출 * refactor: toRequestBody 변수 삭제 * refactor: key값 companion object에 저장 * fix: 위치관련 버그 수정 (#302) * feat: 업로드 화면으로 들어간 시점에 위치를 받아오는 기능 구현 * feat: 업로드 화면으로 이동하는 기능 구현 * feat: 위치 로딩을 기다리도록 하기 위한 로딩 로티 추가 * feat: 위치를 받아오고 저장할 때까지 로딩로티를 보여주는 기능 구현 * refactor: branch 변경 (#311) * refactor: 네트워크 작업 코루틴으로 변경 (#312) * refactor: Service함수 suspend로 변경 * feat: 값을 반환하거나 예외를 던지는 Response 확장함수 구현 * refactor: 반환 값 Response, suspend 적용 * refactor: 코루틴 적용 * refactor: ViewModel이 Application을 참조하지 않도록 변경 (#307) * Delete .idea directory * chore: 전체 gitignore 지정 (#320) * refactor: Login 뷰에서 진행하는 네트워크 작업 코루틴으로 변경 (#328) * feat: service와 repository에 suspend 추가 * refactor: repository 내 코루틴 사용 * refactor: repository 생성 시 Dispatcher 전해주도록 수정 * refactor: 코루틴 사용 * refactor: 불필요한 인자 제거 * refactor: 불필요한 로그 제거 * refactor: 불필요한 import 제거 * refactor: my page뷰에서 진행하는 네트워크 작업 코루틴으로 변경 (#323) * refactor: suspend 함수로 수정 및 반환 값을 Response로 수정 * refactor: DefaultStatisticsRepository의 네트워크 작업을 Response의 확장함수로 선언한 getValueOrThrow를 사용하도록 변경 * refactor: DefaultStatisticsRepository에서 하는 네트워크 작업을 코루틴을 사용하도록 변경 * refactor: suspend 함수로 수정 및 반환 값을 Response로 수정 * refactor: PlaceRepository에서 하는 네트워크 작업을 Response의 확장함수로 선언한 getValueOrThrow를 사용하도록 변경 * refactor: PlaceRepository에서 하는 네트워크 작업을 코루틴을 사용하도록 변경 * refactor: PlaceRepository 변경사항 적용 * style: ktlint 적용 * style: ktlint 적용 * feat: Setting 뷰 구현 (#331) * design: Setting 페이지 이동 버튼 생성 * feat: Setting 뷰 구현 * feat: 설정으로 이동하는 기능 구현 * feat: 뒤로가기 기능 추가 * feat: manifest에 activity 추가 * fix: History 뷰의 리사이클러뷰 image 오류 문제 해결 (#317) * fix: History 뷰dml 리사이클러뷰 image 오류 문제 해결 * design: 뒤로가기 버튼 위치 변경 * refactor: Adventure 도메인에 해당하는 네트워크 작업 코루틴으로 변경 (#315) * refactor: AdventureService의 함수들에 suspend 키워드 추가 * refactor: AdventureRepository의 함수들을 callback 구조에서 coroutine을 통한 반환값을 뱉는 형태로 변경 * refactor: AdventureRepository 변경에 따른ViewModel 변경 * refactor: 에러 상수화 (리뷰 반영) * feat: 장소 업로드 시 로딩 창이 뜨는 기능 구현 (#308) * feat: SingleLiveData 추가 * feat: 업로드 상태를 3가지로 관리하는 enum 클래스 생성 * feat: 전송이 완료될 때까지 로딩 로티가 보이는 기능 구현 * refactor: 전송 이벤트의 변경을 ViewModel에서만 관리하도록 변경 * refactor: 업로드 상태를 뷰모델에서 관리하도록 변경 * refactor: 뷰의 visibility 관리를 함수로 추출 * fix: 마이페이지 글자 깨지는 오류 수정 (#333) * chore: 전체 gitignore 지정 * fix: 마이페이지 글자 크기 계산 로직 오류 수정 * feat: AdventureHistoryViewModel 테스트 추가 (#340) * feat: ViewModelTest를 위한 Dependency 추가 * feat: LiveData 테스트를 위한 Class 추가 * test: 내 게임 결과 목록이 잘 불러와지는 지 확인 하는 뷰모델 테스트 추가 * style: ktlint 체크 * refactor: fake 객체 위치 변경 * feat: 회원 탈퇴 기능 구현 (#335) * feat: 서버와 회원 탈퇴 통신을 해주는 service 추가 * feat: 카카오 sdk의 unlink 메서드 추가 * feat: 회원 탈퇴 기능 추기 * feat: 회원탈퇴 버튼 클릭 시 회원 탈퇴가 되도록 하는 기능 구현 * feat: Service의 API 주소 수정 * refactor: Service의 반환 값 수정 * feat: 로그 수정 * refactor: ktlint 수정 * refactor: 메서드 반환 값이 non-nullable 하도록 수정 * refactor: 변수명 변경 * refactor: 에러 코드 상수화 * refactor: 회원 탈퇴 repository 메서드 내 runCatching 삭제 * feat: 회원 탈퇴 후 로그인 창으로 이동 시 백 스택에 쌓인 뷰를 리셋해주는 기능 구현 * feat: 회원 탈퇴 다이얼로그 생성 * feat: RankViewModel 테스트 추가 (#337) * feat: ViewModelTest를 위한 Dependency 추가 * feat: LiveData 테스트를 위한 Class 추가 * feat: 내 랭킹을 조회해오는 메서드 테스트 추가 * feat: 전체 랭킹을 조회 해오는 메서드 테스트 추가 * feat: 로그아웃 기능 구현 (#341) * feat: 로그아웃 요청 및 처리 로직 추가 * feat: DELETE 요청인 경우 body가 null이어도 에러를 반환하지 않도록 구현 * feat: 로그아웃 기능 버튼에 연결 * style: 로그아웃 성공시 출력할 문구 추가 * feat: 로그인 상태, 에러를 관리하는 라이브데이터 추가 * feat: 뷰모델 데이터 구독 및 적절한 처리 로직 구현 * chore: 사용하지 않는 파일 삭제 - Call의 확장함수 삭제 * feat: EncryptedSharedPreferences에 저장된 Access, Refresh 토큰 삭제 * feat: 로그아웃 클릭 시 다이얼로그창이 뜨는 기능 구현 * feat: 로그아웃 성공 후 뒤로가기 클릭 시 이전 액티비티가 나오지 않도록 기능 구현 * refactor: 문구 수정 * refactor: 코드 통일 * refactor: return 삭제 * refactor: GameService.endGame() 리팩토링 (#304) * refactor: game 도메인 패키지와 gaemResult 도메인 패키지 분리 * refactor: Game.endGame() 메서드 Game이 갖는 상태에 대해서만 처리하도록 변경 - ResultType, 즉 성공 실패 여부는 Game이 알 요소가 아니므로 메서드 내에서 계산하는 부분 삭제 * refactor: Game.endGame() 메서드 Game이 갖는 상태에 대해서만 처리하도록 변경 - ResultType, 즉 성공 실패 여부는 Game이 알 요소가 아니므로 메서드 내에서 계산하는 부분 삭제 * refactor: GameFinishService 게임 결과 생성하는 서비스 인터페이스 추가 및 GameResultService로 결과 생성하는 로직 구현 * refactor: PlayerService에 점수 더하는 로직 추가 * refactor: 서비스 메서드에 대한 NoRollbackFor 제거 후 새로운 트랜잭션 열어서 횟수 차감하는 서비스 로직 추가 * fix: NoRollbackFor 원복 * refactor: endGame() 메서드의 동작 분리 * chore: GameResultService 패키지 변경 * refactor: GameManageService 도메인 서비스 생성 * refactor: GameManageService 도메인 서비스 삭제하고 메서드 도메인으로 넣음 * refactor: Game 시도횟수 줄일 때 검증 추가 * test: GameTest endGame 관련 테스트 추가 * test: GameResultService 테스트 추가 * test: PlayerService 점수 추가 로직 테스트 추가 * test: GameServiceTest 게임 종료 로직 테스트 추가 * chore: 워크플로우 수정 * chore: 워크플로우 수정 * chore: 테스트 통과하도록 수정 * chore: game과 gameresult 패키지의 persistence 패키지를 repository로 변경 * chore: setDone() 메서드 네이밍 변경 * chore: 컨벤션으로 메서드 호출 순서대로 메서드 명시 * refactor: 종료되지 않은 게임에 대한 에러를 GameException으로 변경 * refactor: endGame 메서드 진행중 게임 검증을 제일 처음에 진행하도록 변경 * refactor: findPlayerById 재활용하도록 수정 * feat: AdventureResultViewModel 테스트 추가 (#338) * feat: ViewModelTest를 위한 Dependency 추가 * feat: LiveData 테스트를 위한 Class 추가 * test: 성공한 게임 결과가 잘 불러와지는 지 확인 하는 뷰모델 테스트 추가 * test: 실패한 게임 결과가 잘 불러와지는 지 확인 하는 뷰모델 테스트 추가 * test: 내 랭킹 결과가 잘 불러와지는 지 확인 하는 뷰모델 테스트 추가 * style: ktlint 체크 * style: ktlint 체크 * style: ktlint 체크 * refactor: 리포지터리에 의존성 주입 라이브러리 적용 (#349) * feat: Hilt 의존성 추가 * feat: by viewModels 를 사용하기 위해 의존성 추가 * refactor: Hilt를 사용하여 의존성 주입 자동화 * refactor: 불필요한 로깅 삭제 * refactor: datasource 의존성 주입 라이브러리 사용 (#352) * refactor: retrofit 의존성 주입 라이브러리 적용 (#353) * feat: DataSource Module 추가 * feat: Service Module 추가 * refactor: Repository에 의존성 주입을 자동화하기 위해 수정 * refactor: Repository에 Service 주입 자동화 * refactor: lint check * feat: 자동로그인 기능 구현 및 스플래시 분리 (#346) * chore: 전체 gitignore 지정 * feat: AuthInterceptor에서 소셜 로그인은 제외하는 로직 추가, Bearer prefix를 빼먹어서 붙임 * feat: bearer를 붙인 토큰을 반환하도록 변경 * feat: 서버 통신에 필요한 dto 생성 및 refresh api 요청 함수 작성 * feat: 토큰 refresh 요청을 위한 레포지토리 로직 작성 * design: splash가 분리되면서 splash layout design 변경 * feat: 스플래시에서 토큰을 리프레시하고 다음 화면을 정하는 분기처리 로직 추가 * feat: 스플래시 액티비티를 따로 분리함 * feat: AuthRepository에 refresh 기능 선언 추가 * fix: 마이페이지 글자 크기 계산 로직 오류 수정 * style: 로그 삭제 * feat: response의 바디를 한번 확인하면 다시 사용할 수 없는 (closed 이슈)를 해결 * feat: 스플래시 로직을 수정하여 토큰 여부에 따라 화면을 분기 * feat: 로그인 액티비티 시작하는 intent flag 수정 * feat: Interceptor 로직 수정 * feat: 토큰 확인용 api 변경 및 에러로깅 추가 * feat: 사용하지 않는 변수 삭제 * feat: UploadViewModel 테스트 추가 (#343) * feat: ViewModelTest를 위한 Dependency 추가 * feat: LiveData 테스트를 위한 Class 추가 * feat: Robolectric 추가 * test: UploadViewModel test 추가 * chore: 오타 삭제 * refactor: 양방향 데이터 바인딩을 통해 뷰모델에서 안드로이드 의존성 제거 * refactor: lint 적용 * refactor: 필요없는 코드 삭제 * refactor: 전송을 위한 데이터가 다 채워졌는지 검사를 뷰모델에서 진행하도록 변경 * test: 안드로이드 의존성 없이 테스트 진행 * test: 뷰모델 테스트 진행 * test: 테스트를 위한 의존성 추가 * test: 필요하지 않은 구문 삭제 * fix: 데브 브랜치 머지 워크 플로우 수정 * hotfix: PlayerRepository.findAll() 호출 시 N+1 문제 수정 (#360) * refactor: Player의 Member 필드 지연로딩으로 변경 * refactor: PlayerRepository.findAll() Fetch Join 진행 * test: 지연 로딩으로 인한 테스트 에러 임시 수정 * refactor: 디자인 수정을 위한 공통 요소 추가 (#378) * style: 메인 색상 추가 * style: 메인 글꼴 추가 - 던파 비트비트체 ver2 * style: 프로젝트 전체 색상 변경 * style: 아이콘 추가 * refactor: 폰트명 변경 * refactor: rect_main 삭제, 테마 배경색을 color로 지정 * feat: 장소 검수 기능 뼈대코드 설계 및 구현 (#373) * feat: 검수가 필요한 장소 엔티티 구현 * feat: 장소 검수 컨트롤러 구현 * feat: 장소 검수 Repository 구현 --------- Co-authored-by: kokodak <[email protected]> * feat: 장소 좋아요 기능 도메인 설계 및 뼈대코드 작성 (#344) * feat: 좋아요/싫어요 뼈대코드 도메인 설계 * chore: 좋아요 도메인 패키지 이동 * feat: 장소 통계 도메인 생성 - 역정규화로 인한 통계 테이블 분리 * feat: 장소 좋아요 JpaRepository 생성 * test: PlaceLike 테스트 픽스쳐, 엔티티 빌더 생성 * feat: PlaceStatics JpaRepository 생성 * feat: PlaceStatics 생성자 추가 * test: PlaceStatistics 테스트 픽스처, 엔티티 빌더 생성 * chore: 불필요한 개행 삭제 --------- Co-authored-by: kokodak <[email protected]> Co-authored-by: dooboocookie <[email protected]> * fix: OkHttpClient의 interceptor를 AuthInterceptor로 변경 (#375) * feat: 장소 등록 검수 관리자 페이지 제작 및 인가 인터셉터 추가 (#374) * feat: 관리자 관련 인가처리하는 인터셉터 구현 * feat: HttpMethod 와 PathPattern에 따라서 인터셉터 연결 여부를 결정하는 인터셉터 추가 * feat: HttpMethod 와 PathPattern에 따라서 인터셉터 연결 여부를 결정하는 인터셉터 추가 * feat: HttpMethod를 가변인자로 받을 수 있고 안보내면 전체 HttpMethod를 다 매핑하도록 수정 * refactor: 기존 AuthInterceptor 매핑 PathMatcherInterceptor로 변경 * test: RequestPatternTest 추가 * test: PathMatcherInterceptorTest 추가 * feat: manager 페이지에 대해서 CORS 설정 * chore: 네이밍 변경 * refactor: Auth 헤더의 값이 id:password 들어오지 않을 때 검증 추가와 예외 정의 * refactor: Auth 헤더의 값이 id:password 들어오지 않을 때 검증 추가와 예외 정의 * refactor: stream 대신 asList로 리스트 변환하도록 변경 * refactor: PathMatcher를 관리하는 정적 클래스 생성 * test: Path는 맞고 Method는 틀린 경우 테스트 케이스 추가 * refactor: 메서드 호출 순서에 맞게 선언 순서 배치 * chore: stream 제거하고 새로 ArrayList 생성하도록 변경 * chore: Controller 목객체로 변경 * chore: trim()을 stip()으로 변경 * [BE] fix: 나의 통계 조회 시 성능 저하 문제 해결 (#364) * refactor: 게임 결과 조회 n+1 문제 수정 * feat: gameRepository 테스트코드 작성 * refactor: 쿼리문 가독성 있게 수정 * refactor: gameResult 의 game 객체 지연 로딩 추가 * fix: 테스트 오류 수정 * fix: 트렌젝셔널 추가 * refactor: 게임결과 조회시 목적지 조회도 함께 조회되도록 쿼리 수정 * fix: 게임 통계 조회 시 실패 게임도 거리 집계되는 문제 해결 (#382) * refactor: 게임 결과 조회 n+1 문제 수정 * feat: gameRepository 테스트코드 작성 * refactor: 쿼리문 가독성 있게 수정 * refactor: gameResult 의 game 객체 지연 로딩 추가 * fix: 테스트 오류 수정 * fix: 트렌젝셔널 추가 * fix: 실패한 게임 통계에 거리 잡히지 않도록 수정 * refactor: GameRecord 레코드로 변환 * test: 테스트 시, 거리에 대한 컬럼도 테스트 --------- Co-authored-by: chaewon121 <[email protected]> Co-authored-by: chaewon121 <[email protected]> * fix: 모든 게임 결과 조회 시, 진행중 게임 있으면 예외 발생하는 사항 수정 (#383) * refactor: 게임 결과 조회 n+1 문제 수정 * feat: gameRepository 테스트코드 작성 * refactor: 쿼리문 가독성 있게 수정 * refactor: gameResult 의 game 객체 지연 로딩 추가 * fix: 테스트 오류 수정 * fix: 트렌젝셔널 추가 * fix: 게임을 통해 게임 결과를 가져오는 방식에서 게임결과들을 플레이어 아이디로 조회 * test: GameService의 게임 통계 테스트에 진행중 게임 데이터 추가하고 테스트 --------- Co-authored-by: chaewon121 <[email protected]> Co-authored-by: chaewon121 <[email protected]> * Refactor/#391 모험 기록 뷰 디자인 변경 (#396) * design: color resource 추가 * design: 성공, 실패를 보여주는 라벨 추가 * design: 뷰 제목 변경을 위해 strings resource 변경 * design: drawable resource 이름변경으로 인한 코드 수정 * design: 폰트 변경 * design: color resource 이름 변경 * feat: 앱 강제 업데이트 기능 구현 (#400) * feat: firebase-config 의존성 추가 * feat: 확장함수 패키지 생성, 이동 및 추가 * feat: 확인 다이얼로그 추가 - 강제 업데이트를 위해 외부가 클릭되어도 다이얼로그가 꺼지지 않도록 구현 * feat: 강제 업데이트 기능 구현 * refactor: 함수명 변경 * refactor: text gravity 수정 * refactor: 다이얼로그 title 글씨 크기 수정 * refactor: 다이얼로그 패키지 이동 * refactor: 로그인 뷰 디자인 변경 (#399) * design: 빌딩과 별 drawable 추가 * design: strings resource 변경 * design: 로그인 디자인 변경 * refactor: 불필요한 상태바 설정 코드 삭제 * refactor: 업로드 뷰 디자인 변경 (#381) * refactor: 업로드 뷰 디자인 변경 * refactor: 사용하지 않는 변수 삭제 * refactor: AppCompatButton 사용해서 배경색 지정하도록 변경 * refactor: editText에 hint 추가 * refactor: ktlint * refactor: 버튼 배경 변경 * refactor: editText 밑줄 삭제 * refactor: editText marginTop 수정 * refactor: 이미지뷰 marginTop 수정 * fix: 버튼 id 수정 * refactor: 사용하지 않는 함수 삭제 * refactor: 설정 뷰 디자인 변경 (#397) * design: 폰트 적용 * design: strings resource 추가 * design: 빌딩과 별 drawable 추가 * design: 백그라운드에 빌딩과 별 이미지 추가 * refactor: strings resource 띄어쓰기 수정 * [BE] refactor: 로깅 구체화 하기 (#318) * feat: 로그 필터 구현 * fix: application prod를 local로 수정 * feat: logback gradle 의존성 추가 * feat: 기존 로깅 파일 삭제 * feat: logback xml 파일 설정 * feat: 로그 필터 구현 * feat: mdc 필터 구현 * feat: 필터 빈등록 * feat: exceptionHandler 수정 * feat: 깃허브 설정 * refactor: mdc 이넘 추가 * refactor: info 로그 출력 message추가 * refactor: 추가 메서드 삭제 * refactor: 사용하지 않는 상수 삭제 * chore: 쿼리 튜닝 및 성능 조회를 위한 변경사항 * chore: 쿼리 정보 로그 삭제 * feat: 로깅 추가 (#359) * feat: 로그 필터 구현 * fix: application prod를 local로 수정 * feat: logback gradle 의존성 추가 * feat: 기존 로깅 파일 삭제 * feat: logback xml 파일 설정 * feat: 로그 필터 구현 * feat: mdc 필터 구현 * feat: 필터 빈등록 * feat: exceptionHandler 수정 * feat: 깃허브 설정 * refactor: mdc 이넘 추가 * refactor: info 로그 출력 message추가 * refactor: 추가 메서드 삭제 * refactor: 사용하지 않는 상수 삭제 * chore: 쿼리 튜닝 및 성능 조회를 위한 변경사항 * chore: 쿼리 정보 로그 삭제 --------- Co-authored-by: chaewon121 <[email protected]> * fix: 워크플로우 수정 * hotfix: PlayerRepository.findAll() 호출 시 N+1 문제 수정 (#360) * refactor: Player의 Member 필드 지연로딩으로 변경 * refactor: PlayerRepository.findAll() Fetch Join 진행 * test: 지연 로딩으로 인한 테스트 에러 임시 수정 * refactor: 코드컨벤션 젹용 * refactor: 날짜 수정 * refactor: mdc 필터 제거 * refactor: 사용하지 않는 mdc토큰 제거 * refactor: 로깅 전략 변경에 따른 코드 수정 * refactor: xml파일에서 mdc 출력 삭제 * refactor: 환경분리 및 패턴 수정 * fix: 환경분리 오류 수정 * refactor: mdc 요소 추가 * chore: 워크플로우 수정 * fix: 트렌젝션 테스트에 추가 * fix: 에러로그 출력 오류 수 * refactor: info로그 수정 * refactor: warn로그 수정 * refactor: error로그 수정 * refactor: 사용하지 않는 enum 삭제 * refactor: 주석 제거 * refactor: 패키지 이동 * refactor: 사용하지 않는 코드 제거 * refactor: warn 레벨 info 로 수정 --------- Co-authored-by: dooboocookie <[email protected]> Co-authored-by: dooboocookie <[email protected]> * refactor: my page 뷰 디자인 변경 (#395) * refactor: 통계 뷰 변경, 리사이클러뷰 사용 * refactor: 패키지 구조 변경 * refactor: 리사이클러뷰 반영 * refactor: 다른이름의 같은 속성의 파일을 하나로 사용하도록 변경 * refactor: 아이템마다 배경이 다르게 지정되도록 변경 * refactor: StatisticsModel 생성 코드를 StatisticsModel 내부로 이동 * refactor: String 상수화 * refactor: 내가 추가한 장소 뷰 디자인 수정 * refactor: 마진 수정 * refactor: 내가 추가한 장소 커스텀 뷰 수정 - 뷰타입에 따라 분리하지 않음 - 리사이클러뷰에서 뷰홀더를 하나로 사용 * refactor: 리사이클러뷰 가로 스크롤로 변경 * refactor: 글씨 크기, 마진 변경 * feat: 장소를 추가한 적 없는 유저에게는 다른 뷰가 보이도록 함 * refactor: 마진 수정 * refactor: ktlint * refactor: drawable 변경 * refactor: 아이콘 변경 * refactor: apply 적용 * refactor: marginTop 추가 * refactor: 모험 결과 뷰 디자인 변경 (#402) * design: 성공, 실패를 나타내주는 라벨 drawable 생성 * design: main blue 색을 이용한 그라데이션 배경 resource 추가 * design: 버튼 drawable resource 추가 * design: 모험 결과 디자인 변경 * refactor: string 한글로 변경 * refactor: margin 변경 * refactor: drawable 이름 변경 * fix: 장소 추천 범위 정상화 (#411) * fix: 장소 추천 범위 300m로 정상화 * test: 300미터 추천 못할 떄 테스트 보완 * refactor: 게임 시작 뷰 디자인 변경 (#408) * chore: 전체 gitignore 지정 * feat: 버튼 이미지 추가 * feat: BeginActivity에서 자주 쓰이는 Text style 생성 * feat: BeginActivity 뷰 구현 중 * feat: button drawable을 png에서 vector asset으로 변경 및 네이밍 변경 * feat: BeginAdventureActivity 뷰 레이아웃 변경 - setting 버튼 추가 - 빌딩 이미지 화면 사이즈에 맞춤 - 기타 마진 및 패딩 변경 * feat: BeginAdventureActivity 변경된 뷰에 따라 클릭리스너 연결 코드 변경 * feat: 다이얼로그 버튼 배경 변경 * feat: 임시로 설정해놓은 visibility 원상복구 * feat: 사용하지 않는 resource 삭제 * feat: bg_yellow_button drawable 변경 * feat: 사용하지 않는 파일 삭제 * feat: 버튼 백그라운드 적용 * feat: 버튼 백그라운드 적용 * feat: 업로드 화면에서 뒤로가기 기능 구현 (#413) * feat: 게임 입장 시 사진이 먼저 뜨는 기능 구현 (#407) * feat: 검수 중인 장소에 대한 장소 등록 허가 API 구현 (#398) * feat: 임시용 TemporaryPlaceService 생성 * refactor: 바뀐 요구사항에 맞게 createPlace 로직 리팩터링 * refactor: 바뀐 API 명세에 따라 컨트롤러 로직 리팩터링 * fix: 잘못된 base64 디코딩 과정 수정 * feat: 장소 등록 API에 매니저 인터셉터 적용 * feat: 등록할 장소 기준 반경 20M 내에 또 다른 등록된 장소가 존재한다면 예외를 터뜨리도록 수정 * test: 주변 반경 20M 내에 등록된 장소가 있을 때 예외 발생 확인을 위한 테스트 코드 추가 * refactor: collect() 에서 toList() 로 변경 * chore: 주석 삭제 * feat: 검수 중인 장소에 대한 등록 승인 거절 API 구현 (#401) * refactor: 바뀐 API 명세에 따라 컨트롤러 로직 리팩터링 * feat: 리베이스 충돌 해결 * feat: 검수 장소에 대한 테스트 빌더 구현 * feat: 검수 장소 삭제 API 구현 * feat: 검수 장소 삭제 API 에 ManagerAuthInterceptor 적용 * feat: 검수 장소에서 Player 에 대해 지연로딩 적용 * test: mocking 삭제 및 상태 검증 테스트로 변경 * test: 행위 검증에서 상태 검증 테스트로 변경 * feat: 검수할 장소 등록/ 조회 API 구현 (#404) * fix : ManagerAuthInterceptor 디코딩 수정 * feat: 인터셉터에 검수중 장소 조회 path 등록 * feat: 검수할 장소 등록 기능 추가 * feat: 검수할 장소 등록 API 구현 * feat: 검수할 장소 목록 조회 기능 구현 * feat: 검수할 장소 목록 조회 API 구현 * fix: 서비스 객체 빈 등록 및 인터셉터 추가 * test: TemporaryPlaceBuilder 및 TemporaryPlaceFixture 작성 * test: ManagerAuthInterceptorTest 디코딩 문제 수정 * feat: TemporaryPlace예외 처리 추가 및 적용 * test: 검수할 장소 등록 테스트 추가 * test: 필요없는 테스트 삭제 * test: 20미터에 이미 등록된 목적지가 있다면 예외응답 테스트 * refactor: 필요없는 메서드 삭제 * refactor: PlaceCheckService 패키지 변경 및 예외 수정 * test: 검수할 장소 목록 조회 기능 테스트 * refactor: 콘솔 로깅 디버그 레벨로 변경 * refactor: TemporaryPlace관련 조회 쿼리 n+1문제 리팩터링 * refactor: TemporaryPlaceResponse에 플레이어 정보 추가 * chore: 개행 제거 * test: TemporaryPlaceControllerTest 수정 * refactor: 서비스 메서드명 변경 * refactor: TemporaryPlaceResponse 필드명 변경 * refactor: 검수할 장소 조회 오래된 순으로 정렬 순서 변경 --------- Co-authored-by: dooboocookie <[email protected]> * chore: dev_backend 커밋 내역 Merge * chore: 워크플로우 수정 chore: 로그 경로 수정 * refactor: 버튼 디자인 일관성 있도록 변경 (#417) * refactor: 버튼 drawable 추가 * refactor: 버튼 background 변경 * refactor: 버튼 background 변경 * refactor: 버튼 background 변경 * refactor: 버튼 background 변경 * refactor: 게임 시작 뷰 디자인 변경 (#408) * chore: 전체 gitignore 지정 * feat: 버튼 이미지 추가 * feat: BeginActivity에서 자주 쓰이는 Text style 생성 * feat: BeginActivity 뷰 구현 중 * feat: button drawable을 png에서 vector asset으로 변경 및 네이밍 변경 * feat: BeginAdventureActivity 뷰 레이아웃 변경 - setting 버튼 추가 - 빌딩 이미지 화면 사이즈에 맞춤 - 기타 마진 및 패딩 변경 * feat: BeginAdventureActivity 변경된 뷰에 따라 클릭리스너 연결 코드 변경 * feat: 다이얼로그 버튼 배경 변경 * feat: 임시로 설정해놓은 visibility 원상복구 * feat: 사용하지 않는 resource 삭제 * feat: bg_yellow_button drawable 변경 * feat: 사용하지 않는 파일 삭제 * feat: 버튼 백그라운드 적용 * feat: 버튼 백그라운드 적용 * feat: 업로드 화면에서 뒤로가기 기능 구현 (#413) * feat: 게임 입장 시 사진이 먼저 뜨는 기능 구현 (#407) * refactor: 불필요한 속성 제거 * refactor: 불필요한 속성 제거 * refactor: guideline 추가해 뷰 배치 --------- Co-authored-by: k_dragonm <[email protected]> Co-authored-by: krrong <[email protected]> * refactor: 스플래시 디자인 변경 (#416) * refactor: 뷰 id 변경 * refactor: 안드로이드 12에서 나오는 스플래시가 보이지 않는 것처럼 구현 * refactor: 불필요한 코드 삭제 * refactor: warning 제거 애노테이션 추가 * refactor: 불필요한 파일 삭제 * refactor: 기본 스플래시를 사용하도록 변경 * refactor: 스플래시 액티비티 디자인 변경 * refactor: 아이콘 변경 * refactor: 인게임 뷰 디자인 변경 (#418) * chore: 전체 gitignore 지정 * feat: 목적지와의 남은 거리를 나타내는 텍스트 리디자인 * feat: 아이콘 생성 * feat: strings resource화 * feat: 인게임 뷰 리디자인 적용 * feat: 폴라로이드 다이얼로그 디자인 변경 * feat: NaagaAlertDialog의 positive 버튼과 negative 버튼의 위치 변경 및 색상 변경 * feat: 버튼 백그라운드 이미지 적용 * feat: 로티 visibility 원상복구 * feat: 로딩시 거리가 null로 보여지는 것을 0으로 변경 * feat: 버튼 마진값 조절 * feat: 사용하지 않는 아이콘 삭제 * refactor: NaagaAlertDialog와 ConfirmDialog 통일 (#421) * chore: 전체 gitignore 지정 * feat: NaagaAlertDialog에서 Cancelable 여부를 정할 수 있도록 변경 * feat: ConfirmDialog를 삭제하고 AlertDialog로 대체 * feat: 함수 네이밍 변경 및 사용하지 않는 함수 삭제 * chore: 다이얼로그를 한 패키지에 모음 * feat: 사용되지 않는 다이얼로그의 layout 삭제 * refactor: 장소 등록 api 수정 (#369) * refactor: 장소 등록을 검수할 수 있도록 검수중으로 등록한다 * refactor: 변경된 API 명세 반영 * refactor: string 변경 * feat: 장소등록 성공시 토스트 메시지를 띄워줌 * refactor: 인게임 버튼 drawable resource 변경 (#424) * chore: 전체 gitignore 지정 * feat: 버튼의 배경 resource를 변경 * feat: 하단 버튼들의 margin값 변경 * refactor: permission dialog 통일 (#426) * refactor: 다이얼로그 패키지 이동 * refactor: 다이얼로그 패키지 이동 * refactor: 다이얼로그 폰트 변경 * refactor: 사용하지 않는 파일 삭제 * refactor: string 정리 * refactor: 함수 분리 * feat: 문의하기 기능 구현 (#427) * feat: strings resource 추가 * feat: 문의하기를 누르면 나아가 공식 계정으로 이메일이 보내 지는 기능 구현 * refactor: 이메일 제목 strings에 추가 * feat: 버전코드 및 버전이름 수정 (#431) --------- Co-authored-by: zillionme <[email protected]> Co-authored-by: kokodakadokok <[email protected]> Co-authored-by: dooboocookie <[email protected]> Co-authored-by: chaewon121 <[email protected]> Co-authored-by: zillionme <[email protected]> Co-authored-by: k_dragonm <[email protected]> Co-authored-by: chaewon121 <[email protected]> Co-authored-by: hyunji <[email protected]> Co-authored-by: kokodak <[email protected]> Co-authored-by: dooboocookie <[email protected]> Co-authored-by: hyunji1203 <[email protected]> Co-authored-by: kokodak <[email protected]>
- Loading branch information