Skip to content

Commit

Permalink
v1.1.0 (#448)
Browse files Browse the repository at this point in the history
* feat: 게시글 상세 화면 구현 (#8)

* feat: 게시글 상세 화면 레이아웃 작성

* feat: Data layer코드 작성

* refactor: dto패키지 분리, dto에 serialName추가

* refactor: 도메인 모델 수정

- 가변에서 불변으로 변경
- 사용하지 않는 메서드 제거

* refactor: 공통으로 사용되거나 사용될 수 있는 확장함수를 별도의 파일로 분리

* style: lint 적용

* refactor: 메서드명 컨벤션 적용

* refactor: request Dto에 SerialName적용

* refactor: 메서드명 수정

* feat: 도메인 추가 (#15)

* feat: BaseTimeEntity 추가

Co-authored-by: Dora Choo <[email protected]>

* feat: Member Entity 추가

Co-authored-by: Dora Choo <[email protected]>

* feat: Offering Entity 추가

Co-authored-by: Dora Choo <[email protected]>

* feat: OfferingMember Entity 추가

Co-authored-by: Dora Choo <[email protected]>

* feat: Comment Entity 추가

Co-authored-by: Dora Choo <[email protected]>

---------

Co-authored-by: Dora Choo <[email protected]>

* feat: BottomNavigation 구현 (#16)

* chore: jetpack navigation 라이브러리 추가

* feat: 필요한 바텀 네비게이션 리소스 추가

* feat: bottom navigation fragment 추가

* feat: bottom navigation graph 구현

* refactor: 컨벤션에 맞게 id 수정

* feat: 공동구매 상세 조회 기능 구현 (#18)

* chore: h2 환경설정 추가

* docs: http client 추가

* refactor: entity 접미어 적용

* chore: dummy data 추가

* docs: http client 값 변경

* refactor: repository 와 domain 패키지 분리

* feat: 공동구매 상세 조회 API 구현

* refactor: entity 접미어 적용

* style: 클래스 컨벤션 적용

* chore: h2 console 설정 제거

* refactor: OfferingCondition enum값 결정로직을 enum 안으로 이동

* feat: 홈화면, 마이페이지 화면 레이아웃 작성 (#19)

* refactor: FragmentContainer width 속성 수정

* feat: 홈 화면 레이아웃 작성

* feat: 마이페이지 화면 레이아웃 작성

* fix: 플로팅 버튼이 홈에서만 보이도록 수정

* refactor: 리소스 네이밍 컨벤션에 맞게 수정

* feat: API 문서화 적용 (#23)

* chore: springdoc-openapi 의존성 추가

Co-authored-by: Dora Choo <[email protected]>

* chore: springdoc 설정 추가

Co-authored-by: Dora Choo <[email protected]>

* feat: SwaggerConfig 파일 추가

Co-authored-by: Dora Choo <[email protected]>

* feat: 공모 상세 조회 API 문서화

Co-authored-by: Dora Choo <[email protected]>

---------

Co-authored-by: Dora Choo <[email protected]>

* fix: 공모 상세 조희 API의 price 필드 자료형 변경 및 memberId 필드 추가 (#28)

* fix: 상세조회 API 금액 필드 자료형 변경

Co-authored-by: Dora Choo <[email protected]>

* fix: memberId 추가

* 내가 쓴 글인지 아닌지 확인 위해
Co-authored-by: Dora Choo <[email protected]>

---------

Co-authored-by: Dora Choo <[email protected]>

* chore: 백엔드 CI 및 도커 파일 작성 (#27)

* chore: actions 적용 브랜치 설정 (#30)

* chore: actions 적용 브랜치 설정

* chore: path 및 ref 태그 제거

* chore: working-directory 태그 추가

* chore: Dockerfile jar 경로 수정

* feat: 댓글방 목록 구현 (#26)

* feat: 댓글방 목록 UI 구현

* fix: 구분선을 ImageView에서 View로 변경

* feat: 댓글방 목록 도메인 모델 구현

* feat: 댓글방 어답터 구현

* feat: "채팅" string 추가

* refactor: 불필요한 코드 제거

* fix: xmls 중복 속성 제거

* refactor: 댓글방 클래스들을 comment 패키지로 분리

* refactor: 컬러와 폰트 사이즈를 values 파일로 분리

* feat: 공모 목록 조회 기능 구현 (#35)

* feat: 공모 목록 조회 API 구현

* docs: 공모 목록 조회 API http client에 추가

* fix: 공모 상세 조회 API의 status 필드를 condition으로 명칭 변경

* feat: 공모 목록 조회 API의 isClosed 필드 이름을 isOpen으로 변경

* feat: 댓글방 디테일 화면 구현 (#32)

* feat: font 설정

* feat: vector 이미지 추가

* feat: 채팅 아이템 뷰 구현

* refactor: 컨벤션에 맞게 네이밍 수정

* feat: 댓글 입력 edit text 구현

* chore: 백엔드 CD 스크립트 작성 (#34)

* chore: 백엔드 CD 스크립트 작성

* chore: 도커 백그라운드로 실행

* chore: 도커 설정 및 트리거 설정 변경

* chore: 도커 이미지 제거 로직 수정

* chore: 도커 이미지 제거 방식 수정

* chore: 도커 이미지 제거 방식 수정

* chore: 도커 이미지 강제 제거하도록 수정

* chore: gradle 캐싱 로직 추가 (#39)

* chore: gradle 캐싱 로직 추가

* chore: 이벤트 트리거 조건 수정

* feat: 공모 참여하기 기능 구현 (#40)

* fix: BaseTimeEntity 적용 오류 수정

Co-authored-by: Dora Choo <[email protected]>

* feat: 참여하기 API 구현

Co-authored-by: Dora Choo <[email protected]>

---------

Co-authored-by: Dora Choo <[email protected]>

* feat: 공모 상세 조회 API에 참여자 목록 필드 추가 (#42)

* feat: 공모 상세 조회 API의 request에 memberId 필드 추가 (#45)

* feat: 공모 참여 API의 불필요한 응답값 전부 제거 (#48)

* feat: 공모 참여 API의 불필요한 반환값 제거

* chore: 자주 쓰는 h2 console enabled 설정 주석 처리

* feat: 이미 참여한 공모에 참여 못하게 예외 처리 (#51)

* feat: 공모 상세 페이지 API 연결 (#46)

* build: 불필요한 의존성 제거, properties관련 코드 작성

* refactor: base_url코드상에서 제거

* feat: api수정에 따른 필드 변경 및 네이밍 반영

* refactor: 네이밍 변경

* refactor: OfferingDetail의 변경, mapper변경

* refactor: service분리

* refactor: DataSource, Repository분리

* refactor: API변경에 따른 리팩토링

* feat: 공모 상세 조회 기능 구현

* refactor: 참여하기 api변경에 따른 data, domain 코드 수정

* feat: 공모 상세 페이지 참여하기 기능 구현

* feat: 공모 상세 화면에서 이미지를 불러올 수 없을 시 기본이미지를 보여주는 기능 구현

* feat: 게시물 상세 화면 폰트 적용

* style: lint적용

* refactor: 액티비티 destroy시 binding해제하도록 코드 추가

* refactor: glide옵션 변경

- 에러 발생 시 보여줄 이미지
- url이 null일 시 보여줄 이미지

* refactor: viewModel에 custom getter추가

* fix: 내용이 짧을 시 뒷 배경이 회색으로 보이는 버그 수정

* fix: 참여하기 버튼을 눌렀을 시 텍스트가 바뀌지 않는 버그 수정

* feat: 테스트 데이터 다양화 (#52)

Co-authored-by: Dora Choo <[email protected]>

* refactor: 공모 엔티티에 currentCount 필드 추가 (#55)

* feat: 댓글 작성 API 구현 (#57)

* feat: 댓글방 내 공모 일정 조회 기능 구현 (#58)

* feat: 댓글방 내 공모 일정 조회 기능 구현

Co-authored-by: Dora Choo <[email protected]>

* refactor: 공모 일정 조회 api 명세 변경

Co-authored-by: Dora Choo <[email protected]>

---------

Co-authored-by: Dora Choo <[email protected]>

* refactor: common 패키지명을 global로 변경 (#61)

* chore: 안드로이드 CI 파일 작성 (#63)

* feat: 댓글 목록 조회 API 구현 (#66)

* chore: build CI 작업을 위한 manifest 파일 수정 (#65)

* chore: 알람 권한 추가

* chore: local properties 속성 추가

* chore: local properties null 체크 로직 추가

* chore: buildConfigField null 체크

* style: lint 적용

* chore: secret 값 설정

* fix: secret 값 오류 수정

* fix: 문법 오류 수정

* chore: 경로 수정

* chore: 문법 수정

* style: lint 적용

* feat: 댓글방 목록 조회 API 구현 (#70)

* feat 댓글방 접히는 공지 뷰 구현 (#72)

* chore: manifest에 CommentDetailActivity 추가

* feat: BindingAdatper을 사용하여 접힐 때 애니메이션 적용 및 픽셀 변환

* feat: viewmodel 구현 및 click 마다 접히고 펴지는 로직 구현

* style: ktlint 적용

* refactor: binding adpater을 사용하여 가시성 변경

* refactor: 댓글방 및 댓글 목록 조회 서비스 계층 (#78)

* fix: 댓글방 목록 조회 시 가장 최근 댓글 조회 (#80)

* feat: 홈화면 API 연결 (#74)

* refactor: API변경에 따른 data, domain 코드 변경

* feat: 공모 목록 기능 구현

* refactor: 함수 분리

* style: lint적용

* style: font 적용

* fix: 시간순 정렬 쿼리 추가 (#83)

* chore: 더미 데이터 추가 (#87)

* feat: 댓글방 목록 API 연결 (#82)

* feat: bottom navigation fragment 추가

* feat: vector 이미지 추가

* feat: 댓글방이 없으면 "채팅 목록이 없어요" 라는 텍스트뷰와 이미지뷰를 띄우는 기능 구현

* feat: 댓글방 띄우는 기능 구현

* test: 댓글방 UI 테스트 작성

* refactor: 테스트 클래스명 수정

* refactor: 줄바꿈 수정

* feat: 댓글방 API 서비스 구현

* refactor: API 명세에 따라 도메인 모델 수정

* feat: API 연결

* refactor: API명세에 따라 데이터바인딩 변수명 수정

* feat: 댓글방 목록 API 연결

* refactor: ktlint Format 적용

* refactor: 메모리 누수 방지를 위해 fragment가 destroy 될 때 _binding을 null로 설정

* refactor: 어답터를 방어적복사 하지 않아도 되어서 수정

* refactor: 채팅방이 없다는 이미지뷰를 띄워주는 방식 수정(바인딩 어댑터 수정)

* refactor: 함수분리

* refactor: ktFormat 적용

---------

Co-authored-by: chaehyun <[email protected]>

* feat: 댓글방 접히는 공지 API 연결 (#85)

* feat: 미팅 일정 API 연결을 위한 data layer 구현

* feat: 미팅 일정 API 연결을 위한 domain layer 구현

* feat: 미팅 일정 API 연결을 위한 presentation layer 구현

* style: ktlint 적용

* feat: 공동 구매 제목 databinding 적용

* refactor: 변수명 수정

* fix: 펼치기 접기 버튼 로직 반대로 수정

* style: ktlint 적용

* chore: 더미 데이터 바로가기 url 수정 (#93)

* feat: 공모 상세 페이지 기능 추가 (#94)

* chore: 마이페이지 닉네임 임시로 지정

* feat: 바로가기 기능 구현

* feat: 참여버튼 클릭 시 댓글방으로 가도록 기능 구현

* feat: 신고하기 이미지 추가

* style: lint적용

* refactor: 불러오는 공모 페이지 사이즈 변경

* refactor: 댓글 도메인 코드 리팩터링 (#96)

* refactor: 로그인 멤버 변수명 변경

* refactor: JPQL 쿼리 컨벤션 및 멤버로 공모 조회 메서드명 변경

* refactor: 최근 댓글 응답 클래스명 변경

* refactor: 컨트롤러 및 서비스 API 순서 변경

* refactor: 로그인 사용자 유효성 검증

* feat: 댓글방 댓글 작성 api 연결 (#95)

* chore: windowSoftInputMode 추가

* feat: post comment api service 구현

* feat: post comment DataSource 구현

* feat: post comment Repository 구현

* feat: post comment Presentation 구현

* chore: 더미 데이터 시간 변경 (#100)

* feat: 댓글방 입장 기능, 본인이 총대인 방은 다르게 보이는 기능 구현 (#99)

* feat: 댓글방의 마지막 댓글 시간을 띄우는 기능 구현

* feat: 자신이 총대인 댓글방을 표시하는 기능 구현

* feat: 댓글방 목록을 클릭해 댓글방 상세로 이동하는 기능 구현

* test: UI테스트 수정

* refactor: 클릭시 id 뿐만 아니라 title도 받아오는 방식으로 수정

* refactor: 오전/오후와 시간을 텍스트뷰에 띄우는 바인딩 어댑터를 DateTimeFormatter의 기능을 사용하는 것으로 수정

* refactor: memberId를 local.properties의 token을 가져다 쓰는 것으로 변경(임시 조치)

* refactor: 댓글방 목록의 시간을 띄우는 바인딩 어댑터의 속성명을 수정함

* refactor: 데이터바인딩 variable 변수명을 구체적으로 수정, 일관성을 위해 앞에 `on` 붙임

* refactor: 어댑터가 뷰모델을 갖고 있지 않도록 수정

* refactor: 어댑터가 뷰모델을 갖고 있지 않도록 수정(빠트린것 수정함)

* feat: 전반적인 예외 처리 (#103)

* feat: 예외 처리 핸들러 추가

* feat: Offering 예외 처리 코드 추가

* feat: Comment 예외 처리 코드 추가

* feat: Member 예외 처리 코드 추가

* feat: OfferingMember 예외 처리 코드 추가

* feat: Offering 예외 처리 상세 코드 추가

* feat: 에러 코드 적용

* feat: 도메인 검증 로직

* feat: DTO 검증 로직

---------

Co-authored-by: masonkimseoul <[email protected]>

* feat: swagger와 restdocs 연동 (#104)

* chore: swagger ui 정적 파일 설치 및 static routing 세팅

* chore: restdocs-api-spec을 이용한 OAS 생성

* chore: swagger ui 정적 파일을 swagger-ui 디렉토리로 이동

* chore: swagger ui 정적 파일 및 static routing 세팅 제거

* chore: 생성된 OAS 파일을 Swagger 디렉터리로 복사하는 스크립트 작성

* chore: openapi3 yaml 파일 gitignore 처리

* chore: static routing 세팅 다시 추가

openapi3.yaml을 사용하기 위함

* test: RestAssured RestDocs 테스트 코드 작성

* test: 공모 목록 조회 API 문서화

* test: 공모 일정 조회 API 및 공모 참여 API 문서화

* test: 댓글 관련 API 문서화

* docs: 논의된 TODO 제거

* refactor: swagger 어노테이션 제거

* chore: 개발 API 서버 목록 설정

---------

Co-authored-by: fromitive <[email protected]>

* refactor: 에러메시지 필드명 변경 (#108)

* fix: restdocs 관련 테스트 실패 이슈 해결 (#106)

* chore: cicd 테스트

* chore: 테스트 위해 actions 범위 조정

* chore: 배포 스크립트 띄어쓰기 오타 수정

* chore: 빌드 캐싱 제거

* chore: logging

* chore: --warning-mode all 옵션 줘서 gradle 호환 무시하도록 설정

* fix: status 달라서 실패하는 테스트 수정

* chore: actions 범위 수정

* chore: action 범위 수정

* chore: test용 static 파일 추가

* chore: static 하위 폴더를 jar 파일에 포함하도록 설정

* chore: swagger-ui 하위 폴더 제거

* chore: task 순서 조정

* chore: build 스크립트 수정

* chore: 불필요한 설정 변경 제거

* chore: clean build 대신 clean bootJar 사용

* chore: clean, build 각각 하도록 변경

* chore: test 까지 두 번 돌리도록 수정

* chore: openapi3까지 두 번 실행하도록 수정

* chore: copyOasToSwagger 까지 두번 실행하도록 수정

* chore: actions 활성화 범위 수정

* fix: 댓글방 목록 조회 시 참여자 수 조건 추가 (#111)

* fix: 댓글방 조회 테스트 수정 (#113)

* feat: 홈 화면 무한 스크롤 기능 구현 (#109)

* build: pagination라이브러리 추가

* feat: 홈 화면 무한 스크롤 기능 구현

* fix: 마지막 댓글 response를 nullable하게 수정 (#115)

* fix: 마지막 댓글 response를 nullable하게 수정

* refactor: ktFormat 적용

* feat: 댓글방 댓글 조회 api 연결 (#116)

* feat: dto 및 mapper 구현

* feat: 댓글방 목록 service 구현

* feat: 댓글방 목록 data source 구현

* feat: 댓글방 목록 repository 및 model 구현

* feat: 댓글방 목록 view type을 활용한 recyclerview 구현 및 데이터 바인딩

* feat: polling 기능 구현

* feat: 댓글 스크롤 구현 (새로운 댓글이 생길시 스크롤 아래로)

* feat: 총대와 다른 참가자 이미지 리소스 파일

* feat: 댓글방 디테일 공동 구매 상태별 관리 (#117)

* feat: 공동구매 상태 관리 리소스 파일

* feat: 공동구매 상태를 관리하는 enum class 구현

* feat: 데이터바인딩을 사용하여 공동 구매 상태 뷰 업데이트 구현

* style: ktlint 적용

* feat: 공동구매 상태 관리 리소스 파일 추가

* fix: 이미지 링크 임시 수정 (#119)

* fix: 이미지 링크 수정 (#120)

* refactor: 네이밍 수정 (#123)

* refactor: 뷰모델 팩토리를 뷰모델의 companion object에서 구현하는 방식으로 변경 (#125)

* refactor: 뷰모델 팩토리 방식 변경 (#130)

* refactor: 뷰모델 팩토리를 뷰모델의 동반객체로 이동

* style: lint적용

* refactor: Service분리 (#132)

* refactor: service분리

* refactor: 패키지명 변경

* style: lint적용

* feat: 공모글 작성 UI 구현 (#134)

* refactor: 뷰모델 팩토리를 뷰모델의 companion object에서 구현하는 방식으로 변경

* feat: 공모글 작성 뷰 구현

* fix: 뷰 수정사항 반영

* fix: @+id로 참조하는 부분을 수정

* fix: drawable의 네이밍에 where을 추가

* feat: 댓글방 참여자 목록 Drawer Layout UI 구현  (#136)

* feat: 참여자 목록 drawer에 필요한 리소스 파일 추가

* refactor: 채팅 text gravity 수정

* feat: 댓글방 참여자 목록 Drawer Layout UI 구현

* style: ktlint 적용

* refactor: drawer early return 하는 방식으로 변경

* refactor: ivMore -> ivMoreOptions으로 네이밍 변경

* feat: 공구 참여자 item view 및 댓글방 view 사용자 친화적으로 수정

* chore: CI 빌드 스크립트 중 중복되는 task 제거해 성능 개선 (#128)

* chore: jar�태스크 비활성화하고 bootJar 태스크로만 JAR 파일 생성

* chore: cicd 범위 조정

* feat: 공모 작성 API 구현 (#139)

* feat: 공모 작성 API 구현

Co-authored-by: fromitive <[email protected]>

* refactor: create를 save로 변경

Co-authored-by: fromitive <[email protected]>

* refactor: dto entity 매핑로직을 dto로 이동

Co-authored-by: fromitive <[email protected]>

* refactor: controller request 매개변수 명 컨벤션 적용

Co-authored-by: fromitive <[email protected]>

---------

Co-authored-by: fromitive <[email protected]>

* refactor: 공모에 저장하는 주소 값 구체화 (#141)

* refactor: 공모에 저장하는 주소 값 구체화

Co-authored-by: fromitive <[email protected]>

* chore: github-action 스크립트 수정

Co-authored-by: fromitive <[email protected]>

* chore: CI/CD test 설정 추가

Co-authored-by: fromitive <[email protected]>

* chore: static/swagger-ui 폴더 추가

Co-authored-by: fromitive <[email protected]>

* chore: 설정 원상 복구

Co-authored-by: fromitive <[email protected]>

* chore: ci/cd 범위 수정

Co-authored-by: fromitive <[email protected]>

---------

Co-authored-by: fromitive <[email protected]>

* feat: 홈화면(공모목록) UI 추가 구현 및 상태 변경 대응 (#142)

* feat: 공모의 상태 변경이 반영되도록 기능 구현

* feat: 공모 목록 ui변경

* feat: 필터 ui추가

* feat: API변경에 따른 DTO수정

* style: lint적용

* feat: resource추가

* refactor: ui위치 수정

* chore: 불필요한 괄호 제거

* refactor: item 수직 정렬

* feat: 댓글방 메시지 조회 시 commentId 필드 추가 (#150)

Co-authored-by: fromitive <[email protected]>

* feat: OG 태그 크롤링 API 구현 (#148)

* feat: OG 태그 크롤링 API 구현

Co-authored-by: fromitive <[email protected]>

* refactor: OG 태그 크롤링 API 엔드포인트 수정

Co-authored-by: fromitive <[email protected]>

---------

Co-authored-by: fromitive <[email protected]>

* refactor: 제품 코드와 API 문서 동기화 (#153)

* refactor: API 문서 개선 (#157)

* refactor: 댓글 작성 시 성공 상태 코드 변경

Co-authored-by: fromitive <[email protected]>

* refactor: 요청 필수 상태 설명 추가

Co-authored-by: fromitive <[email protected]>

---------

Co-authored-by: fromitive <[email protected]>

* feat: s3 이미지 업로드 API 구현 (#147)

* feat: s3 이미지 업로드 API 구현

* chore: cicd 액션 범위 수정

* fix: 이미지 업로드 경로의 특수문자 제거

* chore: yml multipart 설정 추가

* chore: S3 업로드 결과 테스트

* fix: inputstream 변환로직 위치 이동

* fix: 업로드할 s3 path 올바르게 수정

* fix: 사진 url 속에 버킷이름을 cloudfront 도메인으로 수정

* chore: actions 범위 재조정

* feat: API endpoint 변경

* chore: docker image 지우는 작업을 마지막으로 이동

* chore: 다른 브랜치로 이전 커밋 이동하기 위해 제거

* chore: 충돌 해결 및 코드 스타일 변경

* test: S3 이미지 업로드 성공 케이스 추가

* test: multipart form data 문서화

* test: 공모 상태 enum 문서화

Co-authored-by: fromitive <[email protected]>

* feat: 파일 업로드 크기 제한 100MB에서 20MB로 변경

---------

Co-authored-by: Choo <[email protected]>
Co-authored-by: fromitive <[email protected]>

* feat: 주소검색 기능구현 (#161)

* refactor: 네이밍 컨벤션 적용

* build: webview 라이브러리 추가

* feat: 스크립트 실행위한 html파일 추가

* refactor: 인터페이스명 변경에 따른 변경

* feat: 주소검색 다이얼로그 레이아웃 작성

* feat: 주소검색 기능 구현

* style: lint적용

* refactor: 불필요한 코드 제거

* build: Firebase의존성 추가 (#165)

* feat: 공모글 작성 API 연결 (#162)

* refactor: 뷰모델 팩토리를 뷰모델의 companion object에서 구현하는 방식으로 변경

* feat: 공모글 작성 API 연결 구현

* feat: 공모글 작성 뷰모델 구현

* fix: edit text 데이터바인딩 추가

* chore: 테스트를 위해 MutableLiveData default값 넣어둠

* chore: deadline defualt값 형식에 맞게 수정

* feat: 글작성 화면을 액티비티에서 프래그먼트로 수정

* chore: 테스트목적이었던 주석과 mutable livedata 디폴트값 제거

* refactor: 임시 함수명 수정

* fix: 글작성 프래그먼트가 올라오기 전에 바텀 네비게이션이 사라지는 문제 수정

* feat: 필수 항목이 모두 입력되어야 버튼이 활성화 되는 기능 구현

* feat: 가격, 총원 입력이 잘못되었을 시 토스트를 띄우는 기능 구현

* fix: 버튼 비활성화 시 텍스트 변경

* feat: 앱 아이콘 변경

* feat: 앱 이름 변경(chongdae -> 총대마켓)

* feat: 예상 엔빵 가격을 보여주는 기능 구현

* refactor: 상수화

* refactor: 예상 엔빵 가격에 ,가 들어가는 기능 구현, 콜론 뒤 white space 추가

* feat: 공구 할인율을 계산해 주는 기능 구현

* feat: +, - 버튼으로 총원을 조절하는 기능 구현

* fix: 할인율과 엔빵가격 계산 시 0으로 나눠지는 상황을 제거

* fix: 맞춤법 수정 할인률 -> 할인율

* fix: 총원 버튼 크기가 너무 작아서 확대

* fix: 항목간 간격이 좁아서 확대

* refactor: Offering Write의 API service, DataSource, Repository를 Offerings와 합침

* refactor: 디버깅용 코드 삭제

* refactor: 버튼 활성화/비활성화를 selector와 삼항연산자로 구현

* refactor: 바인딩어댑터 대신 뷰모델이 visibility 상태를 갖고 있는 방식으로 변경

* refactor: 바인딩어댑터 대신 xml에서 처리하는 방식으로 변경

* refactor: 총원 디폴트 라이브데이터값 상수화

* refactor: +, - 텍스트뷰 버튼으로 수정

* refactor: textStyle bold대신 fontFamily suit_bold를 쓰는 것으로 수정

* refactor: 변수명 뒤에 Int를 붙이는 것 대신 Value를 붙이는 것으로 수정

* refactor: 글작성 제출 버튼의 아이디를 추가

* refactor: ktFormat

* refactor: 토스트를 띄우는 함수 분리

* refactor: 도메인 객체 분리

* refactor: UI모델 적용

* refactor: ktFormat 적용

* feat: 댓글방 디테일 Room을 사용하여 data 저장 (#166)

* feat: local database 구현

* feat: entity 구현

* feat: dao 구현

* feat: LocalDataSourceImpl 구현

* feat: entity mapper 구현

* refactor: CommentResponse 에 id 값 추가

* refactor: datasource 이름 변경 및 패키지 변경

* refactor: article -> offering으로 네이밍 변경

* refactor: repository 패키지 변경에 따른 수정

* refactor: datasource 패키지 변경 및 local 과 remote 분리

* refactor: repository Application 클래스를 통한 주입으로 변경

* style: ktlint 적용

* refactor: api service 리네이밍

* refactor: git conflict 해결

* refactor: 함수 이름 컨벤션에 맞도록 변경 (getMeetings -> fetchMeetings)

* chore: CI 스크립트 추가 (#173)

* chore: ci 스크립트 추가

* chore: ci 스크립트 수정

* fix: og 태그 추출 시 크롤링 이슈 해결 (#174)

* feat: 날짜, 시간 선택 기능 구현, 주소검색 기능 연결 (#171)

* refactor: 뷰모델 팩토리를 뷰모델의 companion object에서 구현하는 방식으로 변경

* feat: 모집마감 시간 클릭 시 date time picker를 띄우는 기능 구현

* feat: 날짜, 시간 선택 기능 구현

* feat: 주소 검색 기능 연결

* refactor: 함수명 수정, 함수분리

* refactor: ktFormat 적용

* refactor: string으로 분리, 상수화

* fix: string 수정

* chore: CI workflow 파일 수정

* chore: CI workflow 파일 수정

* chore: CI workflow 파일 수정3

* chore: CI workflow 파일 수정4

* feat: 공모가 정상적으로 게시되었을 시 "공모가 게시되었어요!" 라는 토스트를 띄우고 공모글 작성 프래그먼트를 종료하는 기능 구현

* feat: 토스트가 화면 중앙에 뜨는 문제 수정

* refactor: 사용되지 않는 파일 삭제

* refactor: xml 뷰 id 수정

* refactor: 버튼이 TextView인 문제 수정

* refactor: 사용되지 않는 data binding variable 제거

* refactor: 함수명 수정

* refactor: 다이얼로그, dateTimePickerBinding 전역으로 선언

* refactor: dateTimePicker 클릭 이벤트를 추상화 해 xml에서 처리하도록 변경

* refactor: ktFormat

* feat: 상품 URL 이미지 추출 API 연결 (#180)

* refactor: 사용하지 않는 파일 제거

* refactor: 가시성 변경

* feat: api service 구현

* feat: datasource 구현

* refactor: repository 네이밍 수정 (offeringsRepository -> offeringRepository)

* feat: 사진 업로드 관련 리소스 파일 추가

* feat: repository 및 model 구현

* feat: 이미지 링크를 통한 크롤링 이미지 불러오는 api 연결 및 이미지 삭제 로직 구현

* style: ktlint 적용

* refactor: 이미지 prefix 추가 및 에러 메시지 수정

* refactor: build 오류 수정

* fix: git conflict 해결

* feat: 공모 목록 조회 API에 필터링과 검색 기능 추가 (#169)

* feat: 공모 필터 목록 조회 API 구현

* test: 공모 필터 목록 조회 API 테스트

* style: 개행 형식 통일

* feat: 공모 필터 목록 조회 API Specification 도입 준비

* fix: url에 큰따움표 제거

* feat: Specification 도입

* refactor: queryString 구체화

* refactor: 함수명 변경

* feat: 최신순 필터링 적용

* feat: 마감임박순 필터링 적용

* feat: 높은할인률순 필터링 적용

* refactor: 전략 패턴 적용해 여러 갈래의 분기문과 중복되는 코드 처리

* test: 변경된 API 스펙에 맞게 문서화 작업

* refactor: 관련있는 메서드들끼리 모이게 순서 재배치

* refactor: 맞춤법 수정

* style: 개행 제거

---------

Co-authored-by: masonkimseoul <[email protected]>

* feat: 상태 변경 API 구현 (#175)

* feat: 댓글방 상태 변경 및 조회 API 구현

Co-authored-by: masonkimseoul <[email protected]>

* feat: 공모글 상태 조회 API 구현

* feat: 댓글방 상태 변경 중 수동 확정 기능 구현

* refactor: 상태 변경 관련 메서드명 수정

* refactor: 추상 클래스 메서드 컨벤션 통일

* refactor: errorCode 사용 시 클래스 명시

* refactor: 댓글방 상태 관련 API 엔드포인트 수정 및 패키지 변경

* refactor: 댓글방 상태 변경 API HTTP 메서드 수정

* feat: 공모 모집 자동 확정 시 댓글방 상태 변경

---------

Co-authored-by: masonkimseoul <[email protected]>
Co-authored-by: Choo <[email protected]>

* feat: 로그인 기능 구현 (#177)

* feat: password 일방향 암호화 기능 구현

* feat: cookie 생산-소비 기능 구현

* chore: jwt 관련 의존성 추가

* feat: 토큰 생성 기능 구현

* feat: 로그인 API 구현

* test: 로그인 API 테스트

* feat: 회원가입 API 구현

* test: 회원가입 API 테스트

* feat: 닉네임 생성 기능 구현

* test: 닉네임 생성 기능 테스트

* fix: postconstruct 여러 개라 발생한 에러 해결

* feat: 회원가입 응답값에 랜덤생성한 닉네임 추가

* feat: MemberArgumentResolver 구현

* feat: MemberArgumentResolver 일부 적용

* test: 바뀐 스펙에 맞게 변경

* test: TestConfig 설정해 빈충돌 오류 해결

* test: 공모 작성 API로 MemberArgumentResolver 사용

* feat: 토큰 재발급 API 구현

* test: 토큰 재발급 API 테스트

* test: 토큰 재발급 API 에러 테스트

* feat: MemberArgumentResolver commant에 적용

* feat: MemberArgumentResolver offering에 적용

* feat: MemberArgumentResolver participant에 적용

* refactor: ci값이 일치하지 않을경우 오류메시지 문구 변경

* refactor: 클래스명 일관적으로 변경

* refactor: 직관적인 명명으로 enum 네이밍 변경

* refactor: Custom Exception 적용

* refactor: 컨트롤러 메서드에 접근제어자 명시

* fix: 중복된 enum 값 제거

* test: 바뀐 API 스펙에 맞게 변경

---------

Co-authored-by: fromitive <[email protected]>

* fix: nicknameWordInitializer 설정 오류 해결 (#182)

* fix: keyword null일 때 처리 및 docs에서 required 제거 (#184)

* fix: keyword null일 때 처리

* test: optional() 붙여서 required 제거

* chore: 브랜치에 상관없이 pr 머지 시 자동으로 관련 이슈 닫는 스크립트 구현 (#187)

* fix: og 이미지 태그 크롤링 문제 해결 (#190)

* refactor: 댓글방 상태 도메인 설계 변경 (#189)

* feat: 공모 목록 API 응답값에 낱개 가격 추가 (#193)

* chore: readtimeout 5초로 수정 (#195)

* feat: 댓글방 상태 조회 시 상태별 이미지 함께 반환 (#196)

* feat: 공모 목록 조회 API연결 (#201)

* refactor: Condition 수정에 따른 변경

* refactor: api변경에 따른 리팩토링

* refactor: api변경에 따른 목록 무한 스크롤 기능 리팩토링

* feat: 검색 기능 구현

* feat: 필터링 기능 구현

- 참여 가능은 서버 에러로 추후 추가 예정

* feat: 아이템을 불러온 후 recyclerview의 최상단으로 이동하는 기능 구현

- 검색, 필터링 수행 후 최상단으로 이동

* feat: 필터링 목록 불러오는 api연결

* feat: 마감임박 상태 추가

* refactor: default parameter제거

* style: lint적용

* feat: 토큰 반환 시 cookie가 아닌 body 사용하도록 변경  (#206)

* feat: 발급한 토큰을 header가 아닌 body로 반환하도록 수정

* refactor: 사용안하는 클래스와 메서드 제거

* test: 바뀐 API 스펙에 맞게 명세 수정

* feat: 이미지 더미 데이터 수정 및 부정확한 가격 데이터 수정 (#207)

* refactor: 공모 글 작성 시 총대 참여자 추가 (#208)

* feat: 바텀 네비게이션 고정 기능 구현 (#211)

* feat: 데이터에서 5자 이상 제거 (#212)

* feat: n빵 가격이 낱개가격보다 큰경우 예외가 발생하도록 변경 (#202)

* feat: n빵 가격이 낱개가격보다 큰경우 예외가 발생하도록 변경

* refactor: 도메인 명칭 변경 (낱개가격 -> 원가격)

* refactor: 도메인 명칭 변경 (공모 -> 댓글방)

* refactor: originPrice로 http client 변경

* feat: 키보드 이외 영역 터치 시 키보드 내려가도록 구현 (#214)

* feat: 키보드외 화면 클릭 시 키보드 내려가도록 구현

* refactor: api변경에 다른 dto수정

* feat: 이미지 업로드 및 권한 설정 (#216)

* chore: 이미지 권한 추가

* feat: permission manager을 생성하여 권한 체크 및 request

* feat: 이미지 추가 버튼을 클릭할 시 권한 설정 연결

* feat: 이미지 피커를 사용하여 uri 전달 구현

* feat: 이미지 파일 업로드 api service 구현

* feat: 이미지 파일 업로드 data source 구현

* feat: 이미지 파일 업로드 repository 구현

* feat: 이미지 파일 martipart로 변환해주는 기능 구현

* feat: 이미지 업로드 관련 뷰 수정

* feat: 이미지 파일 업로드 및 api 연결 구현

* style: ktlint format

* fix: git conflict 해결

* refactor: 이미지 scaleType 변경

* refactor: string value 컨벤션 적용

* feat: 토큰 반환 시 body가 아닌 cookie로 반환하도록 원상복구 (#223)

* feat: 토큰 재발급 API에서 requestHeader로 refreshToken 받도록 수정 (#227)

* feat: 토큰 재발급 API에서 body가 아닌 cookie로 토큰 반환

* feat: 회원가입 API도 body가 아닌 cookie로 토큰 반환

* refactor: service 용 dto 명 컨벤션에 맞춰 수정

* feat: 댓글방 일정 수정 API 구현 (#226)

* feat: 댓글방 일정 수정 API 구현

* test: 총대가 아닌 참여자가 공모 일정 정보를 수정할 경우 예외 발생

* feat: 댓글방 상태 조회 시 버튼 텍스트 추가 (#229)

* feat: 검색 시 해당 키워드의 색상을 변경하는 기능 구현 (#222)

* feat: 검색 시 해당 키워드의 색상을 변경하는 기능 구현

* refactor: 구현 방식 변경

* style: lint적용

* Feature/217 offering status (#230)

* feat: 댓글방 상태 조회 api service 구현

* feat: 댓글방 상태 조회 model 및 dto 구현

* feat: 댓글방 상태 조회 datasource 구현

* feat: 댓글방 상태 조회 repository 구현

* feat: 댓글방 상태 조회 api 연결 구현

* style: ktlint 적용

* feat: 댓글방 상태 변경 (#231)

* feat: 댓글방 상태 변경 api service 구현

* feat: 댓글방 상태 변경 data source 구현

* Revert "feat: 댓글방 상태 변경 data source 구현"

This reverts commit 052691a.

* feat: 댓글방 상태 변경 data source 구현

* feat: 댓글방 상태 변경 repository 구현

* feat: 댓글방 상태 변경 api 연결 구현

* style: ktlint 적용

* feature: 카카오 로그인 구현 (#235)

* refactor: 뷰모델 팩토리를 뷰모델의 companion object에서 구현하는 방식으로 변경

* feat: 카카오 로그인 기능 초기 설정

* feat: 카카오 로그인 기능 구현

* feat: 카카오 로그인 UI 구현

* feat: 카카오 로그인 구현

* feat: 카카오 로그인 - 회원가입 기능 구현

* feat: 카카오 로그인 버튼 이미지 다운로드

* refactor: 함수명 수정

* refactor: 필요 없는 파일 제거

* refactor: 패키지 이동

* feat: 데이터 스토어에 memberId, nickName 저장하는 기능 구현

* feat: 로그인 post 기능 구현

* feat: 로그인 시도 후 실패할 경우 회원가입 하는 기능 구현

* fix: 바뀐 auth api 적용

* feat: 서기 pr 충돌 해결

* fix: api 필드명 수정

* refactor: ktFormat 적용

* fix: 테스트용 임의 문자열 제거

* feat: CookieJar 구현

* feat: API 수정에 맞춰 서비스 함수 수정

* refactor: 사용되지 않는 코드 제거

* refactor: http 상태 코드 enum 클래스로 묶음

* feat: 공모 참여자 목록 조회 API 구현 (#225)

* feat: 공모 참여자 목록 조회 API 구현

* test: 실패 테스트 오류 수정

* style: 띄어쓰기 적용

* refactor: MemberEntity를 받도록 변경

* refactor: isParticipant를 구현하여 가독성 개선

* refactor: 총대를 찾을 수 없는 상황의 예외 추가

* refactor: 참여 검증로직을 서비스로 이동

* refactor: 사용하지 않는 메서드 제거

* refactor: 검증 로직 가장 상단에 위치

* refactor: 총대 추출 로직 수정

---------

Co-authored-by: masonkimseoul <[email protected]>
Co-authored-by: SCY <[email protected]>

* refactor: 마감임박순 필터링 쿼리 조건 수정 (#239)

* refactor: 마감임박순 필터링 조건 수정

* refactor: 더미 데이터 시간 수정

* fix: 필터링 오류 수정 (#243)

* fix: 원 가격이 없는 경우 n빵 가격을 비교하지 않도록 변경 (#247)

* feat: 공동구매 상태 변경 다이얼로그 구현 (#245)

* feat: 공동구매 상태 변경 다이얼로그 view 구현

* feat: 공동구매 상태 변경 다이얼로그 Listener 구현

* feat: 공동구매 상태 변경 다이얼로그 연결 및 상태 변경 로직 수정

* test: 테스트 코드 작성을 위한 기본 세팅 (#255)

* feat: CoroutinesTestExtension 구현

* feat: Livedata getOrAwaitValue 구현

* feat: InstantTaskExecutorExtension 구현

* feat: TestFixture 생성

* style: ktlint 적용

* feat: 공모글 목록 화면 UI 개선, 공모글 작성에서 낱개 금액이 엔빵 가격보다 저렴할 시 글 작성 막는 기능 구현 (#246)

* refactor: 뷰모델 팩토리를 뷰모델의 companion object에서 구현하는 방식으로 변경

* feat: 카카오 로그인 기능 초기 설정

* feat: 카카오 로그인 기능 구현

* feat: 카카오 로그인 UI 구현

* feat: 카카오 로그인 구현

* feat: 카카오 로그인 - 회원가입 기능 구현

* feat: 카카오 로그인 버튼 이미지 다운로드

* refactor: 함수명 수정

* refactor: 필요 없는 파일 제거

* refactor: 패키지 이동

* feat: 데이터 스토어에 memberId, nickName 저장하는 기능 구현

* feat: 로그인 post 기능 구현

* feat: 로그인 시도 후 실패할 경우 회원가입 하는 기능 구현

* fix: 바뀐 auth api 적용

* feat: 서기 pr 충돌 해결

* fix: api 필드명 수정

* refactor: ktFormat 적용

* fix: 테스트용 임의 문자열 제거

* feat: CookieJar 구현

* feat: API 수정에 맞춰 서비스 함수 수정

* refactor: 사용되지 않는 코드 제거

* refactor: http 상태 코드 enum 클래스로 묶음

* fix: 구분선을 각각의 아이템의 하단에 넣고 프래그먼트 뷰의 "채팅" 텍스트 밑에 하나 추가

* fix: 텍스트뷰에 font 적용, 마지막 댓글 시간 텍스트를 조금 왼쪽으로 이동

* fix: 낱개 가격 이름을 eachPrice -> originPrice 수정

* fix: 낱개 가격이 엔빵 가격보다 싸면 토스트를 띄우고 글작성을 막는 기능 구현

* fix: 네이티브앱키 로컬프로퍼티로 이동

* refactor: 함수명 변경

* fix: 카카오 계정으로 로그인 후 액티비티 전환하지 않는 문제 수정

* refactor: 사용되지 않는 클래스 삭제

* refactor: 패키지 수정

* refactor: alsong 로그 수정

* refactor: 변수명 수정

* refactor: Manifest의 네이티브앱 키 숨김

* refactor: 로컬프로퍼티의 데이터 형식 수정

* Update android.yml

* refactor: alsong 로그 삭제

* ci 빌드 실패가 manifest때문인지 테스트

* refactor: 매니페스트에 앱 키 넣을 수 있게 하는 gradle 설정 수정

* 매니페스트 수정하고 재테스트

* 매니페스트 수정하고 재테스트

* chore: 그래들 수정

* chore: 그래들 수정2

* chore: 그래들 수정3

* chore: 그래들 수정4

* chore: 카카오 계정으로 로그인하는 기능 제외

* feat: 홈화면 테스트 작성 (#257)

* chore: mockk의존성 추가

* test: OfferingViewModel 테스트 작성

* style: lint적용

* refactor: stub를 TestFixture로 이동

* test: 댓글방 테스트 코드 작성  (#258)

* refactor: 댓글 보내는 함수명 변경

* refactor: 공구 약속 장소 및 시간 캐시 기능

* test: 테스트를 위한 fake repository 구현

* test: 댓글방 viewmodel test 작성

* feat: 댓글방 ActivityTest 작성

* feat: 댓글방 ActivityTest 작성

* style: ktlint 적용

* refactor: test fixture에서 사용하지 않는 것 삭제

* style: ktlint 적용

* feat: GA 모니터링 환경 구축 및 로깅 전략 적용 (#242)

* chore: Firebase Crashlytics 의존성 추가

* feat: Firebase 초기화

* feat: FirebaseManager 구현

* feat: 총대가 공구 진행 상황을 다음 단계로 변경했을 때 event 추가

* feat: 로깅 기능 구현

- 검색
- 필터링
- 공모글 클릭
- 공모 참여

* style: lint적용

* feat: 글 작성 완료 시 event 추가

* feat: 로그인 시 event 추가

---------

Co-authored-by: Namyunsuk <[email protected]>
Co-authored-by: songpink <[email protected]>

* test: 공모글 작성 이미지 테스트 코드 작성 (#260)

* refactor: 상수 가시성 변경

* feat: test fixture 구현

* feat: fake repository 이미지 업로드 기능 추가

* test: OfferingWriteViewModelTest 이미지 업로드 test 코드 작성

* feat: 로그인 후 홈화면으로 이동해도 로그인 화면이 종료되지 않는 문제 수정 (#261)

* refactor: 뷰모델 팩토리를 뷰모델의 companion object에서 구현하는 방식으로 변경

* fix: 로그인 후 LoginActivity가 종료되도록 수정

* feat: 공모 상세 화면 테스트 작성 (#264)

* feat: OfferingDetailViewModel 테스트 작성

* refactor: 테스트 수정

* style: lint적용

* style: lint적용

* feat: 로깅 코드 삽입 (#266)

* fix: 원 가격이 없는 경우 n빵 가격을 비교하지 않도록 변경

* feature: 로깅 샘플 구현

* refactor: 불필요한 코드 제거

* feat: logging 적용

---------

Co-authored-by: fromitive <[email protected]>

* fix: 마감 임박 필터링 쿼리 수정 (#267)

* chore: logback 설정 진행 (#270)

* chore: logback 설정

* fix: multipart 요청 필터링

* chore: logback 설정 변경

* chore: pull request ci/cd 닫기

* fix: 이미지 업로드 API의 responseBody가 두 번 뜨는 오류 해결 (#273)

* fix: 이미지 업로드 API 두 번 도는 문제 해결

* test: 이미지 업로드 API의 누락된 response field 추가

* refactor: 홈화면 수정 (#271)

* refactor: 할인율 마진 추가

* refactor: 공구상태에 대한 문구 수정

* refactor: 클릭 시 최상단으로 이동하는 버튼 구현

* feat: 공모글 작성 화면 테스트코드 작성 (#274)

* refactor: 뷰모델 팩토리를 뷰모델의 companion object에서 구현하는 방식으로 변경

* test: 공모글 작성 테스트 구현

* feat: 댓글방 목록 화면 테스트코드 작성 (#276)

* refactor: 뷰모델 팩토리를 뷰모델의 companion object에서 구현하는 방식으로 변경

* test: "댓글방 목록을 확인할 수 있어야 한다" 테스트 작성

* feat: pageSize validation 추가 (#279)

* feat: pageSize validation 추가

* feat: magic number 추출

* fix: 공모 상세 화면 오류 수정 (#280)

* fix: 총대 여부 확인 로직 수정

* fix: 마감 임박 시 보여주는 버튼 수정

* fix: 공모 작성 후 홈화면으로 돌아왔을 떄 목록이 새로고침 되지 않는 오류 수정

* test: 테스트 코드 수정

* style: lint적용

* feat: 댓글방 목록 화면 자동 업데이트 되지 않는 문제 수정, 회원가입 이후 자동으로 로그인되지 않는 문제 수정 (#282)

* refactor: 뷰모델 팩토리를 뷰모델의 companion object에서 구현하는 방식으로 변경

* fix: 라이플사이클 오너 설정

* fix: 회원가입 후 자동으로 로그인 되도록 수정

* chore: change version name (#291)

* feat: 카카오 계정 로그인 기능 구현 시 CI가 실패하는 문제 해결 (#296)

* fix: ci가 실패하는 문제 수정(오타수정..)

* fix: 카카오 계정 로그인 기능 추가

* feat: 로그인 화면 리팩토링 (#298)

* fix: ci가 실패하는 문제 수정(오타수정..)

* fix: 카카오 계정 로그인 기능 추가

* refactor: SimpleCookieJar의 패키지 변경(presentation 레이어에서 data레이어의 source 패키지로 이동)

* refactor: data store를 관리하는 클래스를 생성하고 이 클래스를 사용하도록 변경

* refactor: 사용하지 않는 의존성과 주석 제거

* refactor: http status code 추가

* refactor: 함수분리

* refactor: ktFormat 적용

* feat: 액세스 토큰 만료 시 토큰 재발급 기능 구현(CommentRooms)

* feat: 액세스 토큰 만료 시 토큰 재발급 기능 구현(CommentDetail), 사용되지 않게 된 memberId 제거

* refactor: ktFormat 적용

* test: 테스트코드 수정

* refactor: Preferences -> DataStore 이름 변경

* refactor: 채팅방 UI UX 개선  (#303)

* feat: 키보드가 아닌 다른 영역을 클릭하면 키보드 내리는 기능 구현

* feat: 뒤로가는 버튼 기능 추가

* feat: 댓글 입력 maxLines 설정 및 maxLength 설정

* style: ktlint 적용

* 필요 없는 코드 제거

* feat: 댓글방 목록에서 자신이 총대인 댓글방의 UI 개선 (#304)

* refactor: 댓글방의 자신이 총대인 댓글방 ui 개선

* fix: Binding 클래스 네이밍 수정

* feat: 가로모드, 다크모드 설정 (#305)

* refactor: api변경에 따른 리팩토링 (#310)

* feat: 로그인 화면 해상도 대응 (#313)

* feat: 이미지 업로드 중일 때 로딩 상태 설정 (#317)

* feat: 공모 글 작성 ui state 구현

* feat: 로딩 progressbar 생성

* feat: UI 상태에 따른 토스트 메시지 처리

* refactor: 잘못된 입력에 대한 에러 처리 변경

* refactor: 홈화면 리팩토링 (#324)

* refactor: textSize dp로 변경

* refactor: 검색 버튼 크기 변경

- 검색 버튼 패딩 추가
- 검색창 끝에 패딩 추가

* refactor: 엔터키를 통해 검색하도록 수정

* refactor: 필터 단일 선택되도록 수정

* style: lint적용

* feat: 댓글방 새로운 기능 GA 연결 (#328)

* feat: 댓글방 참여자 확인 Event 구현

* feat: 댓글방 상태 변경 다이얼로그 취소 Event

* feat: 참여자가 공구에서 참여 포기 Event 구현

* style: ktlint 적용

* test: 테스트 데이터 수정 (#330)

* feat: Fragment GA 모니터링 수집 (#332)

* feat: fragment logScreenView 추적 함수 구현

* feat: 각 fragment에서 화면 감지 GA 설정

* feat: 마이페이지 기본 세팅 및 뷰 변경 (#335)

* feat: 공모 참여 취소 기능 구현 (#318)

* test: 공모 참여 취소 테스트코드 작성

* feat: 공모 참여 취소 기능 구현

* refactor: 불필요한 쿼리 메서드 제거

* style: 불필요한 개행 제거

* refactor: 모집중인 상태가 아닌 경우 공모 참여를 취소할 수 없도록 변경

* refactor: 공모 참여 취소 응답 상태 코드 변경

* refactor: 에러 메시지 명확한 문구로 변경

* refactor: query parameter를 적용해 어떤 공모의 참여를 취소할 것인지 의도를 명확하게 전달하도록 변경

* refactor: 총대 검증 메서드 네이밍 명확하게 변경

* feat: 댓글방 생성 시점 변경 (#319)

* feat: 댓글방 생성 시점 변경

* refactor: 불필요한 도메인 OfferingWithRole 제거

* refactor: 불필요한 도메인 CommentWithRole 제거

* refactor: 댓글의 작성자 확인 메서드 추가

* refactor: 댓글방 목록 조회 dto 생성자 추가

* feat: 로그인 API 응답에 memberId와 nickname 필드 추가 (#322)

* feat: 로그인 API 응답에 memberId와 nickname 필드 추가

* refactor: 로그인용 dto 분리 및 공통 dto에 prefix로 auth 추가

* feat: valid 어노테이션 추가

* feat: 공모 상세 조회 API 응답에 총대여부 알려주는 boolean 필드 추가 (#323)

* refactor: 메서드명 구체적으로 변경

* refactor: 변수명 구체적으로 변경

* feat: 공모 상세 조회 API 응답에 총대여부 알려주는 boolean 필드 추가

* docs: todo 추가

* refactor: 함수명 통일

* feat: 공모자 여부 필드명 변경

* feat: 댓글방 상태 조회 API 확장 (#325)

* feat: 댓글방 상태 조회 API 확장

* refactor: 댓글방 관련 로직 댓글 도메인으로 이동

* feat: LoggingFilter에서 던지는 유효하지 않은 요청에 대한 예외 처리

* refactor: 댓글 관련 엔드포인트 수정

* feat: 댓글방 정보 조회 시 조회 권한을 가진 사용자인지 검증

* refactor: 댓글방 상태 확인 로직 도메인으로 이동

* feat: 상태 변경을 시도하는 사용자가 총대인지 검증

* refactor: 댓글 목록 조회 엔드포인트 수정

* feat: ParticipantResponse에 참여 인원 현황, 예상 정산 가격 추가 (#327)

* feat: ParticipantResponse에 참여 인원 현황, 예상 정산 가격 추가

* refactor: Response depth 줄이기 및 DTO 생성자 작성

* fix: imminent 필터 버그 해결 (#337)

* fix: 커스텀 필터로 인해 h2-console 접속 깨지는 이슈 해결 (#339)

* feat: 마이페이지 기능 구현  (#341)

* feat: 마이페이지 닉네임 기능 구현

* feat: 로그아웃 로직 구현

* feat: url 연결 로직 구현

* feat: 필요없는 기능 삭제

* style: ktlint 적용

* feat: 공모 테이블에 할인율과 상태 필드 추가 (#342)

* refactor: Condition과 Status 이름 변경

* refactor: 사용하지 않는 DTO 제거

* feat: OfferingEntity에 칼럼 추가

* feat: 공모 거래 날짜 필드 이름 변경 (#348)

* fix: 상세화면에서 홈화면으로 갔을 때 상태 변경 안되는 오류 수정 (#343)

* refactor: 공모상세페이지 Activity -> Fragment로 리팩토링

* fix: 페이지네이션 및 상태변경 미적용 오류 해결

* refactor: 리팩토링에 따른 테스트 수정

* refactor: 주석 제거 및 상수화

* refactor: livedata 자료형 변경

* refactor: progressbar위치 수정

* refactor: lifecycleScope사용 리팩토링

* refactor: adapter에서 전체 아이템이 아닌 특정 아이템만 notify하도록 리팩토링

* refactor: API변경에 따른 대응 (#352)

* refactor: api대응

* refactor: api변경에 따른 테스트 수정

* feat: 공모글 작성 화면 ux 개선 (#344)

* fix: 각 항목의 설명을 place holder로 이동

* fix: 필수와 선택 항목의 프래그먼트 분리

* feat: 버튼이 항상 보이도록 수정

* fix: 가격과 총원은 숫자만 입력받도록 변경

* fix: 패딩 수정

* fix: ui 수정

* fix: 도메인 변경에 따른 deadline -> tradeDate 수정

* feat: 필수 항목을 모두 입력하면 선택 항목 화면으로 이동하는 기능 구현

* refactor: ktFormat 적용

* refactor: shared viewModel 사용, 미필수 항목을 미필수 입력 화면으로 이동

* refactor: 프래그먼트 이름 변경

* feat: 입력 숫자의 글자수와 라인수 제한 기능 구현

* fix: 총원이 -1이하로 떨어지는 버그 수정, 공동구매 텍스트 띄어쓰기 제거

* fix: 할인율, 엔빵 금액이 유효하지 않을 때는 "-"로 뜨도록 변경

* fix: 공모를 게시하면 필수, 선택 화면 모두 종료되도록 수정

* fix: 날짜 시간 픽커를 날짜만 선택하는 픽커로 변경

* refactor: ktFormat 적용

* refactor: 바인딩어댑터의 파라미터를 nullable하게 수정

* test: 테스트코드 수정

* feat: 낱개 가격의 place holder로 현재 엔빵 금액을 보여주는 기능 구현

* feat: 내용의 최대 글자수와 현재 글자수를 보여주는 기능 구현

* refactor: ktFormat 적용

* refactor: 공모글 작성시 memberId를 보내지 않도록 변경

* fix: 총원 최대 4자리에서 3자리까지만 입력받을 수 있도록 변경

* fix: deadline -> meetingDate 네이밍 수정

* fix: 공모글 작성 후 작성 화면의 입력값이 초기화되지 않는 버그 수정

* refactor: 네이밍 수정(eachPrice -> originPrice)

* refactor: 네이밍 수정(individualPrice -> originPrice)

* fix: 내용의 현재 글자수 색이 메인컬러가 되지 않는 문제 수정

* refactor: 프래그먼트 종료될 때 바인딩 해제하도록 수정

* refactor: id가 없는 뷰의 id 추가

* refactor: 함수 분리

* fix: 내용 옆의 * 제거

* fix: GA 이벤트 이름 변경(공모글 작성 - 필수 화면에서의 이벤트임을 명시함)

* refactor: og 태그 추출 기능 수정 (#349)

* refactor: crawler 패키지 이동

* feat: naver api 클라이언트 추가

refactor: 사용하지 않은 기존 og image 크롤러 명칭 변경

* feat: html 크롤링 방식과 naver api 방식을 조합하는 Extractor 구현

* fix: OfferingService ProductImageExtractor 추상화

* feat: 로그인 시에도 memberId와 nickName을 받아서 data store에 저장하는 기능 구현 (#358)

* feat: 로그인 시에도 memberId와 nickName을 받아서 data store에 저장하는 기능 구현

* test: 테스트코드 수정

* refactor: 공모글 목록 조회 필터링 수정 및 추가 (#356)

* refactor: 마감임박순 필터링 이름 마감임박만으로 변경

Co-authored-by: fromitive <[email protected]>

* refactor: 필터링 쿼리 수정

Co-authored-by: fromitive <[email protected]>

* feat: "참여가능만" 필터링 기능 구현

Co-authored-by: fromitive <[email protected]>

* feat: "참여가능만" 필터링 기능 연결

Co-authored-by: fromitive <[email protected]>

* fix: 쿼리 내 불필요한 파라미터 제거

Co-authored-by: fromitive <[email protected]>

* refactor: 할인율이 null일 경우 높은할인율 필터링 대상에서 제외

Co-authored-by: fromitive <[email protected]>

* feat: 참여가능만 필터링 전략 클래스 추가

* feat: 공모 목록 조회 API 응답값 변경

* fix: 높은 할인율 단위 변경 및 last-id 필터링 로직 수정

* style: 주석 제거

---------

Co-authored-by: fromitive <[email protected]>

* refactor: 할인율 계산 로직 수정 (#359)

* refactor: 할인율 계산 로직 수정

Co-authored-by: fromitive <[email protected]>

* refactor: 소수점 둘째 자리에서 반올림하도록 변경

Co-authored-by: fromitive <[email protected]>

* test: 할인율 계산 로직

* fix: 할인율 단위 백분율로 수정

---------

Co-authored-by: fromitive <[email protected]>

* feat: 총 모집 인원 수 최댓값 설정 (#361)

Co-authored-by: fromitive <[email protected]>

* fix: 필터 오류 수정 (#362)

* fix: 필터 오류 수정

- '참여가능만'필터 분기처리 제거

* chore: 주석 제거

* �feat: API 스펙 변경에 따른 대응 (#364)

* feat: 댓글 목록 조회 api 스펙 변경에 따른 대응

* feat: 댓글방 정보 조회 api 스펙 변경에 따른 대응

* feat: 공모 일정 조회 api 스펙 변경에 따른 대응

* feat: 댓글 상태 변경 api 스펙 변경에 따른 대응

* test: api 스펙 변경에 따른 test 코드 변경

* style: ktlint 적용

* feat: remote dto package 분리

* feat: 자동 확정 기능을 위해 스케줄러 적용 (#363)

* chore: todo 추가 및 메서드명 변경

* feat: Scheduled 어노테이션 추가 및 Scheduler 분리

* test: ServiceTest 환경 구축

* feat: offeringStatus 변경 로직 추가

* refactor: 수동 확정 로직 추가 및 코드 스타일 수정

* refactor: 자동 확정 로직을 조회에서 Scheduled로 이동

* fix: 마감임박 설정 기준 내일로 변경

---------

Co-authored-by: Choo <[email protected]>
Co-authored-by: SCY <[email protected]>

* fix: 공모 작성 후 홈화면 돌아올 때 새로 작성한 글이 보이지 않는 오류 수정 (#369)

* feat: Access Token, Refresh Token을 data store에 저장하는 기능 구현 (#372)

* feat: 앱 재시작 시 토큰을 데이터스토어에서 꺼내 사용하는 기능 구현

* feat: 로그인이 이미 되어있다면 로그인 화면을 건너뛰는 기능 구현

* feat: 로그아웃 기능 구현

* fix: 마이페이지 화면으로 넘어가면 바텀네비게이션이 사라지는 버그 수정

* fix: 데이터스토어에서 토큰이 꺼내지지 않는 버그 수정

data store에서 토큰을 꺼내는 코루틴 비동기 작업이 끝나기 전에 함수를 종료해 버려서 생기는 버그였습니다.

* refactor: ktFormat 적용

* refactor: startActivity 함수를 LoginActivity가 동반객체로 갖고 있도록 변경

* refactor: 함수명과 event명 변경

추가로 GA위치가 조금 잘못된 점이 있어서 수정했습니다.

* feat: 공모 상세 화면 추가 기능 반영 (#375)

* feat: 신고하기 기능 구현

* feat: 물품 링크가 없으면 보여지지 않도록 구현

* refactor: 마감 시간에서 거래 날짜로 리팩토링

* feat: 이미 참여한 공모게시글에서 채팅방으로 이동하는 기능 구현

* fix: 댓글방 목록의 마지막 댓글방이 보이지 않는 문제 수정 (#376)

* fix: 리사이클러뷰 레이아웃의 크기가 화면 밖에 벗어나지 않도록 수정

* fix: 리사이클러뷰 레이아웃의 맨 밑에 구분선 하나 추가

아래로 땡겼을 때 구분선이 사라져버리는게 보기 안좋아서 추가했습니다

* refactor: 코트 포맷 적용 (컨트롤 알트 L)

* feat: isManualConfirmed 제거 및 도메인 로직 확인 (#377)

* refactor: isManualConfirmed 칼럼 삭제 및 관련 로직 분리

* refactor: 더미 데이터 수정

---------

Co-authored-by: fromitive <[email protected]>

* feat: API 별 권한 확인 로직 추가 (#371)

* feat: 권한 확인 로직 추가

* feat: 인증 필터 적용

* refactor: 더미 데이터 칼럼 위치 변경 (#382)

* refactor: 홈화면 api필드 추가에 따른 대응 (#381)

* refactor: dto필드 추가

* fix: 상태 변경 오류 해결

* fix: 필터 선택 또는 검색상태일 때 공모 작성 후 나오면 목록 안보이는 오류 수정

* refactor: 세부 주소 api에서 받아오도록 변경

* style: lint적용

* fix: API 문서에 접근할 수 없는 현상 해결 (#384)

* fix: API 문서에 접근할 수 없는 현상 해결

* style: 신뢰할 수 있는 URL 개행 수정

* feat: 공모 목록에서 동을 보여주는 기능 구현 (#386)

* feat: 공모 단건 조회 API 구현 (#388)

* feat: 공모 상세 조회 API 엔드포인트 변경

* feat: 공모 단건 조회 API

* style: 공모 관련 API 순서 변경

* test: 불필요한 공모글 생성 코드 제거

* test: 공모 단건 조회 서비스 테스트

* refactor: 상태변경 리팩토링 (#389)

* refactor: 공모 상세 조회 api변경 대응

* refactor: 공모 상태 변경 리팩토링

* refactor: 리팩토링에 따른 테스트 수정

* chore: 불필요한 로그 제거

* fix: 댓글 입력 후 뒤로가기 시 최근 댓글이 반영되도록 수정 (#397)

* chore: JAR 파일에 OAS 파일 누락되는 이슈 해결 및 중복 task 제거 (#391)

* chore: 중복되는 task 제거

* chore: cicd 범위 조정

* fix: 참여자 목록 조회 API에서 totalCount 반환하지 않는 이슈 해결 (#400)

* feat: 댓글방 참여자 확인 API 연결 (#401)

* feat: 참가자 정보를 가져오는 api service 구현

* refactor: 필요없는 코드 삭제

* feat: 참여 관리 datasource 구현

* feat: 참여자 domain 모델 구현

* feat: 참여를 관리하는 repository 구현

* feat: 참여자 목록을 보여주는 recycler view 연결 및 구현

* refactor: 더보기 버튼 수정

* feat: 필요없는 리소스 파일 삭제 및 상태 기본 이미지 변경

* refactor: 약속 장소 및 시간 ui model 을 사용하여 관리

* refactor: 댓글방의 정보를 불러오는 로직 ui model을 사용하여 관리

* refactor: ui model 변환 로직 변경

* feat: 공동구매 참여 인원 확인 기능 구현

* feat: 신고하기 폼 연결 구현

* test: 코드 변경에 따른 테스트 코드 수정

* style: ktlint 적용

* refactor: xml id 추가

* feat: 댓글방 공동구매 나가기 API 연결 (#402)

* feat: 공동구매 나가기 기능 api service 구현

* feat: 공동구매 나가기 기능 data source 구현

* feat: 공동구매 나가기 기능 repository 구현

* feat: 공동구매 나가기 기능 연결

* style:ktlint 적용

* fix: /auth/refresh endpoint accessToken 검증 예외 추가 (#407)

* refactor: 더미 데이터 정합성 확보 (#406)

* refactor: 더미 데이터 정합성 확보

* refactor: 추가된 칼럼 반영

* feat: CallApiHandler 구현 (#403)

* feat: CallApiHandler 구현

* refactor: CommentRoomsDataSource 수정

* feat: CommentRemoteDataSourceImpl 에러핸들링을 통해 수정

* feat: 에러 핸들링에 따른 DataSource 리팩토링
- OfferingDetailDataSource
- OfferingRemoteDataSource

* feat: ParticipantRemoteDataSourceImpl 에러핸들링을 통해 수정

* style: ktlint 적용

* refactor: AuthRemoteDataSource 수정

* feat: Result의 map 과 getOrThrow 함수 생성

* feat: 에러 핸들링에 따른 Repository 리팩토링
- OfferingDetailRepository
- OfferingRepository

* refactor: Result 변경에 따른 레포지토리 수정 (AuthRepository, CommentRoomsRepository)

* feat: 에러 핸들링에 따른 CommentDetailRepository 리팩토링

* feat: 에러 핸들링에 따른 ParticipantRepository 리팩토링

* feat: 에러 핸들링에 따른 viewmodel 리팩토링
- OfferingViewModel
- OfferingDetailViewModel

* refactor: 에러 핸들링에 따른 LoginViewModel 리팩토링

* refactor: 에러 핸들링에 따른 CommentRoomsViewModel 리팩토링

* refactor: 토큰 리프레쉬 후 다시 함수 호출하도록 추가

* feat: 에러 핸들링에 따른 CommentDetailViewModel 리팩토링

* refactor: 에러 핸들링에 따른 OfferingWriteViewModel 리팩토링

* refactor: 공모 목록 토큰 리프래시 적용

* fix: 잘못된 코드 수정

* refactor: 필요없는 주석 제거

* refactor: 공모 목록 리팩토링

* fix: 리빌드시 쿠키가 제대로 저장되지 않는 현상 수정

* refactor: 필요없는 코드 삭제 및 상수화 추가

* test: 에러핸들링에 따른 FakeAuthRepository, OfferingWriteViewModelTest 수정

* refactor: ktFormat 적용

* test: 코드 변경에 따른 Fake Repository 변경

* test: CommentDetailViewModelTest 코드 수정

* style: ktlint 적용

* refactor: 가독성 개선(에러 로그 함수명 추가, Success가 Error보다 위에 나오도록 수정)

* refactor: 불필요한 로그 제거

* refactor: 리팩토링에 따른 테스트 수정

* refactor: 람다 넘겨주는 방식 수정

* style: lint 적용

* test: 테스트코드 수정

---------

Co-authored-by: chaehyun <[email protected]>
Co-authored-by: Namyunsuk <[email protected]>

* feat: proguard를 사용한 난독화 적용 (#413)

* chore: 환경에 따른 yml 파일 분리  (#411)

* chore: 환경 별로 yml 파일 분리

* chore: 불필요한 yml 설정 제거

* �fix: 공구 상세 페이지 오류 해결 (#417)

* fix: 바로가기 클릭되지 않는 오류 수정

* refactor: 주소 표시할 때 최대 2줄까지 그리고 넘어갈 시 말줄임 나오도록 수정

* refactor: 공모 목록, 공모 상세 에러 핸들링 (#418)

* refactor: 공모 목록에서 401에러를 제외하고는 에러코드 올 시 빈화면 보여주도록 에러핸들링 수정

* refactor: 필터및 업데이트된 공모 목록 가져오는 로직 에러핸들링 수정

- 400: 토스트 메시지 띄어줌
- 401: refresh
- 그외에는 로그로 에러 코드를 보여줌

* refactor: strings네이밍 통일

* refactor: 공모 상세 에러 핸들링 수정

* refactor: strings정리

- offering_detail부분 정리

* feat: 카카오 로그인 중 사용자 정보 확인 로직을 안드로이드에서 백엔드로 이관 (#404)

* feat: 카카오 로그인 API 구현

* feat: providerId를 loginId로 수정

* feat: 소셜 로그인 시 랜덤 생성된 비밀번호 사용

* refactor: 불필요한 api 제거

Co-authored-by: fromitive <[email protected]>
Co-authored-by: SCY <[email protected]>

* test: 로그인 로직 변경

Co-authored-by: fromitive <[email protected]>
Co-authored-by: SCY <[email protected]>

* test: MemberFixture 불필요한 함수 제거 및 통일

Co-authored-by: fromitive <[email protected]>
Co-authored-by: Dora Choo <[email protected]>

* refactor: 불필요한 정보 제거

Co-authored-by: fromitive <[email protected]>
Co-authored-by: Dora Choo <[email protected]>

* feat: 카카오 로그인 에러 핸들러 추가

Co-authored-by: fromitive <[email protected]>
Co-authored-by: Dora Choo <[email protected]>

* feat: 민감 정보 로깅에서 제외

Co-authored-by: fromitive <[email protected]>
Co-authored-by: Dora Choo <[email protected]>

---------

Co-authored-by: fromitive <[email protected]>
Co-authored-by: SCY <[email protected]>
Co-authored-by: fromitive <[email protected]>

* feat: cookie 관련 예외 처리 (#409)

* refactor: 더미 데이터 http 추가 (#422)

* fix: 더미데이터 정합성 맞추기 (#425)

* feat: 로그인 api 변경 반영 (#426)

* feat: 카카오 로그인 후 총대마켓 서버로 email을 보내던 방식에서 카카오 access token을 보내는 방식으로 변경

* feat: login과 signup을 하나로 api로 통합된 것 반영

* refactor: ktFormat 적용

* refactor: 테스트코드 수정

* feat: 로깅 시 UUID가 아닌 회원 번호가 기록되도록 변경 (#428)

* feat: logging 시 memberId가 나오도록 기능 추가

* feat: logging 시 memberId 및 identifier가 함께 나오도록 변경

* refactor: lombok getter 적용

* feat: Spring Timezone KST로 설정 (#430)

* chore: Dockerfile 타임존 변경 (#432)

* fix: Offering 목록 조회 시 NPE 해결 (#434)

* refactor: 에러 핸들링 리팩토링 (#436)

* feat: 리프레시 토큰 만료 시 데이터스토어를 비우고 로그인 화면으로 이동하는 기능 구현 (#438)

* feat: 댓글방 에러 헨들링 (#439)

* refactor: refresh시 401이 오는 경우에 대한 에러핸들링 추가 (#441)

* chore: 버전 업데이트 (#443)

* refactor: 외래키 필드 notnull 조건 추가 (#445)

* chore: prod CI/CD 구축 (#423)

* chore: 환경 별로 yml 파일 분리

* chore: 운영 서버 CI/CD 스크립트 작성

* chore: 운영 환경 내 swagger 문서 제거

* chore: 운영 환경 포트포워딩 명령어 제거

* chore: prod ci/cd 스크립트 트리거 추가

* chore: prod ci/cd 스크립트 트리거 변경

* chore: prod ci/cd 스크립트 트리거 path 구체화

* chore: prod ci/cd 스크립트 docker 실행 명령어 오타 수정

* chore: prod ci/cd 스크립트 path 롤백

* chore: dev 및 prod ci/cd 스크립트 data.sql 실행 비활성화

* chore: prod ci/cd 스크립트 path 롤백

* chore: dev script test

---------

Co-authored-by: Choo <[email protected]>

* chore: prod 불필요한 트리거 주석 처리 (#447)

---------

Co-authored-by: Namyunsuk <[email protected]>
Co-authored-by: fromitive <[email protected]>
Co-authored-by: 채현 <[email protected]>
Co-authored-by: SCY <[email protected]>
Co-authored-by: alsong <[email protected]>
Co-authored-by: masonkimseoul <[email protected]>
Co-authored-by: chaehyun <[email protected]>
Co-authored-by: masonkimseoul <[email protected]>
Co-authored-by: fromitive <[email protected]>
Co-authored-by: Namyunsuk <[email protected]>
Co-authored-by: songpink <[email protected]>
  • Loading branch information
12 people authored Aug 22, 2024
1 parent 9ebec38 commit 32ee912
Show file tree
Hide file tree
Showing 508 changed files with 19,155 additions and 313 deletions.
108 changes: 108 additions & 0 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
name: Android CI

on:
push:
branches: [ "develop-AN" ]
paths:
- 'android/**'
pull_request:
branches: [ "develop-AN" ]
paths:
- 'android/**'

defaults:
run:
working-directory: ./android

jobs:
ktlint_check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Cache Gradle
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties', '**/buildSrc/**/*.kt') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Create google-services
run: echo "${{ secrets.GOOGLE_SERVICES_JSON }}" > ./app/google-services.json

- name: Create local.properties
env:
BASE_URL: ${{ secrets.BASE_URL }}
TOKEN: ${{ secrets.TOKEN }}
NATIVE_APP_KEY: ${{ secrets.NATIVE_APP_KEY }}
run: |
echo "sdk.dir=/Users/chaehyun/Library/Android/sdk" > ./local.properties
echo "base_url=$BASE_URL" >> ./local.properties
echo "token=$TOKEN" >> ./local.properties
echo "native_app_key=$NATIVE_APP_KEY" >> ./local.properties
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
cache: gradle

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Ktlint check
run: ./gradlew ktlintCheck

build_and_test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Cache Gradle
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties', '**/buildSrc/**/*.kt') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Create google-services.json
env:
GOOGLE_SERVICES_JSON: ${{ secrets.GOOGLE_SERVICES_JSON }}
run: echo "$GOOGLE_SERVICES_JSON" > app/google-services.json

- name: Create local.properties
env:
BASE_URL: ${{ secrets.BASE_URL }}
TOKEN: ${{ secrets.TOKEN }}
NATIVE_APP_KEY: ${{ secrets.NATIVE_APP_KEY }}
run: |
echo "sdk.dir=/Users/chaehyun/Library/Android/sdk" > ./local.properties
echo "base_url=$BASE_URL" >> ./local.properties
echo "token=$TOKEN" >> ./local.properties
echo "native_app_key=$NATIVE_APP_KEY" >> ./local.properties
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
cache: gradle

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Gradle Clean check
run: ./gradlew clean

- name: Build with Gradle
run: ./gradlew build

- name: Run Unit Test
run: ./gradlew test
20 changes: 20 additions & 0 deletions .github/workflows/auto-issue-close.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Auto Close Issues on Merge

on:
pull_request:
types: [closed]

jobs:
close-related-issue:
runs-on: ubuntu-latest
if: github.event.pull_request.merged == true && github.base.ref != 'main'
steps:
- name: Extract and Close Issue
run: |
PR_BODY="${{ github.event.pull_request.body }}"
ISSUE_NUMBERS=$(echo $PR_BODY | grep -oP 'close #\d+' | awk '{print substr($2, 2)}')
for ISSUE_NUMBER in $ISSUE_NUMBERS; do
gh api -X PATCH /repos/${{ github.repository }}/issues/$ISSUE_NUMBER --field state=closed
done
env:
GITHUB_TOKEN: ${{ secrets.AUTO_CLOSE_GITHUB_TOKEN }}
72 changes: 72 additions & 0 deletions .github/workflows/backend-dev-ci-cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: Backend Dev CI/CD Workflow

on:
push:
branches: [ "develop-BE" ]
paths:
- "backend/**"
- ".github/workflows/backend-dev-ci-cd.yml"
- "Dockerfile"
# pull_request:
# branches: [ "develop-BE" ]
# paths:
# - "backend/**"
# - ".github/workflows/backend-dev-ci-cd.yml"
# - "Dockerfile"

jobs:

build-and-test:
runs-on: ubuntu-latest
permissions:
contents: read

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'corretto'

- name: Gradle Caching
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Set Application yml for dev
run: |
echo "${{ secrets.APPLICATION_PROPERTIES_DEV }}" > src/main/resources/application.properties
working-directory: ./backend

- name: Build with Gradle Wrapper
run: ./gradlew clean build
working-directory: ./backend

- name: Docker build and push
run: |
docker login -u ${{ secrets.BE_DOCKERHUB_USERNAME }} -p ${{ secrets.BE_DOCKERHUB_PASSWORD }}
docker build -t ${{ secrets.BE_DOCKER_IMAGE_NAME_DEV }} .
docker tag ${{ secrets.BE_DOCKER_IMAGE_NAME_DEV }} ${{ secrets.BE_DOCKERHUB_USERNAME }}/${{ secrets.BE_DOCKER_IMAGE_NAME_DEV }}:${GITHUB_SHA::7}
docker push ${{ secrets.BE_DOCKERHUB_USERNAME }}/${{ secrets.BE_DOCKER_IMAGE_NAME_DEV }}:${GITHUB_SHA::7}
deploy:
needs: build-and-test
runs-on: [ self-hosted, dev ]

steps:
- name: Pull Image And Restart Container
run: |
docker login -u ${{ secrets.BE_DOCKERHUB_USERNAME }} -p ${{ secrets.BE_DOCKERHUB_PASSWORD }}
docker stop ${{ secrets.BE_DOCKER_CONTAINER_NAME }} | true
docker rm ${{ secrets.BE_DOCKER_CONTAINER_NAME }} | true
docker image prune -a -f
docker pull ${{ secrets.BE_DOCKERHUB_USERNAME }}/${{ secrets.BE_DOCKER_IMAGE_NAME_DEV }}:${GITHUB_SHA::7}
docker run --name ${{ secrets.BE_DOCKER_CONTAINER_NAME }} -d -p 80:8080 -v /logs:/logs -e SPRING_PROFILES_ACTIVE=dev ${{ secrets.BE_DOCKERHUB_USERNAME }}/${{ secrets.BE_DOCKER_IMAGE_NAME_DEV }}:${GITHUB_SHA::7}
72 changes: 72 additions & 0 deletions .github/workflows/backend-prod-ci-cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: Backend Prod CI/CD Workflow

on:
push:
branches: [ "main" ]
paths:
- "backend/**"
- ".github/workflows/backend-prod-ci-cd.yml"
- "Dockerfile"
# pull_request:
# branches: [ "develop-BE" ]
# paths:
# - "backend/**"
# - ".github/workflows/backend-prod-ci-cd.yml"
# - "Dockerfile"

jobs:

build-and-test:
runs-on: ubuntu-latest
permissions:
contents: read

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'corretto'

- name: Gradle Caching
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Set Application yml for prod
run: |
echo "${{ secrets.APPLICATION_PROPERTIES_PROD }}" > src/main/resources/application.properties
working-directory: ./backend

- name: Build with Gradle Wrapper
run: ./gradlew clean build -x copyOasToSwagger
working-directory: ./backend

- name: Docker build and push
run: |
docker login -u ${{ secrets.BE_DOCKERHUB_USERNAME }} -p ${{ secrets.BE_DOCKERHUB_PASSWORD }}
docker build -t ${{ secrets.BE_DOCKER_IMAGE_NAME_PROD }} .
docker tag ${{ secrets.BE_DOCKER_IMAGE_NAME_PROD }} ${{ secrets.BE_DOCKERHUB_USERNAME }}/${{ secrets.BE_DOCKER_IMAGE_NAME_PROD }}:${GITHUB_SHA::7}
docker push ${{ secrets.BE_DOCKERHUB_USERNAME }}/${{ secrets.BE_DOCKER_IMAGE_NAME_PROD }}:${GITHUB_SHA::7}
deploy:
needs: build-and-test
runs-on: [ self-hosted, prod ]

steps:
- name: Pull Image And Restart Container
run: |
docker login -u ${{ secrets.BE_DOCKERHUB_USERNAME }} -p ${{ secrets.BE_DOCKERHUB_PASSWORD }}
docker stop ${{ secrets.BE_DOCKER_CONTAINER_NAME }} | true
docker rm ${{ secrets.BE_DOCKER_CONTAINER_NAME }} | true
docker image prune -a -f
docker pull ${{ secrets.BE_DOCKERHUB_USERNAME }}/${{ secrets.BE_DOCKER_IMAGE_NAME_PROD }}:${GITHUB_SHA::7}
docker run --name ${{ secrets.BE_DOCKER_CONTAINER_NAME }} --network nginx_network -d -v /logs:/logs -e SPRING_PROFILES_ACTIVE=prod ${{ secrets.BE_DOCKERHUB_USERNAME }}/${{ secrets.BE_DOCKER_IMAGE_NAME_PROD }}:${GITHUB_SHA::7}
7 changes: 7 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FROM --platform=linux/arm64 amazoncorretto:17

ENV TZ=Asia/Seoul

COPY backend/build/libs/chongdae-0.0.1-SNAPSHOT.jar app.jar

ENTRYPOINT ["java", "-jar", "/app.jar"]
Loading

0 comments on commit 32ee912

Please sign in to comment.