Skip to content

Commit

Permalink
merge: an to be
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: BottomNavigation 구현 (#16)

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

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

* feat: bottom navigation fragment 추가

* feat: bottom navigation graph 구현

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

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

* refactor: FragmentContainer width 속성 수정

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

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

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

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

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

* feat: 댓글방 목록 UI 구현

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

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

* feat: 댓글방 어답터 구현

* feat: "채팅" string 추가

* refactor: 불필요한 코드 제거

* fix: xmls 중복 속성 제거

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

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

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

* feat: font 설정

* feat: vector 이미지 추가

* feat: 채팅 아이템 뷰 구현

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

* feat: 댓글 입력 edit text 구현

* 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: 참여하기 버튼을 눌렀을 시 텍스트가 바뀌지 않는 버그 수정

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

* 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 댓글방 접히는 공지 뷰 구현 (#72)

* chore: manifest에 CommentDetailActivity 추가

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

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

* style: ktlint 적용

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

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

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

* feat: 공모 목록 기능 구현

* refactor: 함수 분리

* style: lint적용

* style: font 적용

* 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 <80222352+chaehyuns@users.noreply.github.com>

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

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

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

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

* style: ktlint 적용

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

* refactor: 변수명 수정

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

* style: ktlint 적용

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

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

* feat: 바로가기 기능 구현

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

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

* style: lint적용

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

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

* chore: windowSoftInputMode 추가

* feat: post comment api service 구현

* feat: post comment DataSource 구현

* feat: post comment Repository 구현

* feat: post comment Presentation 구현

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

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

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

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

* test: UI테스트 수정

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

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

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

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

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

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

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

* 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: 공동구매 상태 관리 리소스 파일 추가

* 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 사용자 친화적으로 수정

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

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

* feat: 공모 목록 ui변경

* feat: 필터 ui추가

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

* style: lint적용

* feat: resource추가

* refactor: ui위치 수정

* chore: 불필요한 괄호 제거

* refactor: item 수직 정렬

* 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 스크립트 수정

* 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연결 (#201)

* refactor: Condition 수정에 따른 변경

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

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

* feat: 검색 기능 구현

* feat: 필터링 기능 구현

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

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

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

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

* feat: 마감임박 상태 추가

* refactor: default parameter제거

* style: lint적용

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

* 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: 검색 시 해당 키워드의 색상을 변경하는 기능 구현 (#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 클래스로 묶음

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

* 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 <yunsuk0328@naver.com>
Co-authored-by: songpink <jejeje04@naver.com>

* 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적용

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

* refactor: 할인율 마진 추가

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

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

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

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

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

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

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

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

* 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 적용

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

* feat: fragment logScreenView 추적 함수 구현

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

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

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

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

* feat: 로그아웃 로직 구현

* feat: url 연결 로직 구현

* feat: 필요없는 기능 삭제

* style: ktlint 적용

* 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 이벤트 이름 변경(공모글 작성 - 필수 화면에서의 이벤트임을 명시함)

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

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

* test: 테스트코드 수정

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

* fix: 필터 오류 수정

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

* chore: 주석 제거

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

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

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

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

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

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

* style: ktlint 적용

* feat: remote dto package 분리

* 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)

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

* refactor: dto필드 추가

* fix: 상태 변경 오류 해결

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

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

* style: lint적용

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

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

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

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

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

* chore: 불필요한 로그 제거

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

* 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 적용

* 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 <80222352+chaehyuns@users.noreply.github.com>
Co-authored-by: Namyunsuk <yunsuk0328@naver.com>

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

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

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

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

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

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

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

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

* refactor: strings네이밍 통일

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

* refactor: strings정리

- offering_detail부분 정리

* feat: 로그인 api 변경 반영 (#426)

* feat: 카카오 로그인 후 총대마켓 서버로 email을 보내던 방식에서 카카오 access token을 보내는 방식으로 변경

* feat: login과 signup을 하나로 api로 통합된 것 반영

* refactor: ktFormat 적용

* refactor: 테스트코드 수정

* refactor: 에러 핸들링 리팩토링 (#436)

* feat: 리프레시 토큰 만료 시 데이터스토어를 비우고 로그인 화면으로 이동하는 기능 구현 (#438)

* feat: 댓글방 에러 헨들링 (#439)

* refactor: refresh시 401이 오는 경우에 대한 에러핸들링 추가 (#441)

* feat: 안드로이드 CD 구축 (#415)

* feat: 안드로이드 CD 구축

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* feat: 테스트

* chore: 버전 변경

* chore: 버전 변경

* feat: 비공개테스트 트랙으로 변경

* feat: 비공개테스트 트랙으로 변경

* chore: 버전 변경

* feat: release로 시작하는 branch에서만 CD 작업

---------

Co-authored-by: chaehyun <80222352+chaehyuns@users.noreply.github.com>
Co-authored-by: 채현 <wjdcogus202@sookmyung.ac.kr>

* feat: 키보드 이벤트 감지 기능 수정 (#463)

* feat: 이미지 로딩 기능 복원 (#465)

* fix: 공모 제목 및 가격 줄바꿈, 말줄임 되도록 수정 (#466)

* refactor: 홈 화면 UX개선 (#473)

* refactor: 필터 텍스트 크기 수정

* refactor: 검색 결과가 없을 시 텍스트를 통해 명시적으로 알려주도록 수정

* refactor: 검색창에 지우기 버튼 만들기

- 클릭 시 검색 텍스트 지워짐 + 전체 공모 보여지는 초기화면보여주도록

* build: SwipeRefreshLayout의존성 추가

* feat: 하단으로 스와이프 시 새로고침 되는 기능 구현

* refactor: 검색창 문구 변경

* refactor: 채팅 UX 개선 (#479)

* feat: 나의 채팅 글자 크기 조정

* feat: 채팅 전송 사이즈 변경

* feat: 토큰 리프레시가 제대로 이루어지지 않는 오류 수정 (#480)

* fix: Access Token Refresh가 실패하면 이후 로직 처리

* style: ktFormat 적용

* refactor: 필요 없어진 코드 제거

* chore: 필요 없는 주석 제거

* feat: 공모글 작성 시 이전 날짜 선택 불가하도록 수정, Calendar 방식으로 DatePicker를 변경 (#481)

* feat: Date Picker를 달력 형태로 변경

* feat: 현재보다 이전 날짜는 선택할 수 없도록 제한하는 기능 구현

* feat: 멀티 모듈화를 위한 패키지 분리 (#491)

* feat: local 과 remote mapper 분리

* fix: 잘못 import된 코드 수정

* feat: local 및 remote 패키지 분리

* fix: 잘못된 import코드 수정

* feat: common 패키지 생성 및 변경

* feat: auth 패키지 분리

* style: ktlint 적용

* feat: remote 와 local 패키지 data로 이동

* style: ktlint 적용

* feat: error handler 관련 로직 common으로 이동

* refactor: 잘못된 의존성 관계 변경

* feat: DataStore을 common 패키지로 변경

* feat: build.gradle 중복 로직 수정 및 version catalog를 통한 관리

* fix: build 오류 수정

---------

Co-authored-by: Namyunsuk <yunsuk0328@naver.com>

* refactor: 의존성 주입 라이브러리(Hilt) 적용 (#500)

* feat: Hilt 의존성 추가

* feat: Auth, CommentRooms Hilt 적용

* feat: Data Store Hilt 적용

* style: ktFormat 적용

* feat: OfferingWrite Hilt 적용

* feat: CommentDetail Hilt 적용

* feat: Participant Hilt 적용

* feat: Assisted Inject 구현

* feat: OfferingDetail Hilt 적용

* feat: ktFormat 적용

* chore: gradle에서 hilt 버전 수정

* refactor: 불필요한 코드 제거

* chore: 중복된 의존성 제거 및 정리

* feat: (빠트린것) MyPageViewModel에 Hilt 적용

* feat: (빠트린것) OfferingDao에도 Hilt 적용

* refactor: 뷰모델 팩토리 제공 함수들 제거

* chore: 안드로이드 버전 v1.1.2로 변경 (#512)

---------

Co-authored-by: Namyunsuk <84739562+Namyunsuk@users.noreply.github.com>
Co-authored-by: 채현 <wjdcogus202@sookmyung.ac.kr>
Co-authored-by: alsong <138569524+songpink@users.noreply.github.com>
Co-authored-by: chaehyun <80222352+chaehyuns@users.noreply.github.com>
Co-authored-by: Namyunsuk <yunsuk0328@naver.com>
Co-authored-by: songpink <jejeje04@naver.com>
  • Loading branch information
7 people authored Sep 30, 2024
1 parent 7b2aaad commit 4b58c8f
Show file tree
Hide file tree
Showing 353 changed files with 12,353 additions and 326 deletions.
172 changes: 172 additions & 0 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
name: Android CI CD

on:
pull_request:
branches:
- "develop-AN"
- "release*"

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

deploy:
runs-on: ubuntu-latest
needs: build_and_test
if: startsWith(github.ref, 'refs/heads/release')
steps:
- uses: actions/checkout@v4

- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Create google-services.json
env:
GOOGLE_SERVICES_JSON: ${{ secrets.GOOGLE_SERVICES_JSON }}
run: |
echo "$GOOGLE_SERVICES_JSON" > app/google-services.json
- name: Create service_account.json
id: createServiceAccount
run: echo '${{ secrets.SERVICE_ACCOUNT_JSON }}' > app/service_account.json

- name: Set up environment variable for BuildConfig
env:
BASE_URL: ${{ secrets.BASE_URL }}
TOKEN: ${{ secrets.TOKEN }}
NATIVE_APP_KEY: ${{ secrets.NATIVE_APP_KEY }}
run: |
echo "base_url=$BASE_URL" >> ./local.properties
echo "token=$TOKEN" >> ./local.properties
echo "native_app_key=$NATIVE_APP_KEY" >> ./local.properties
- 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: Build release AAB
run: ./gradlew bundleRelease

- name: Sign AAB
id: sign
uses: r0adkll/sign-android-release@v1
with:
releaseDirectory: ./android/app/build/outputs/bundle/release
output: ./android/build/release/signed
signingKeyBase64: ${{ secrets.ENCODED_KEYSTORE }}
alias: ${{ secrets.AN_ALIAS }}
keyStorePassword: ${{ secrets.AN_KEYSTORE_PASSWORD }}
keyPassword: ${{ secrets.AN_KEY_PASSWORD }}

- name: Upload AAB to Google Play
uses: r0adkll/upload-google-play@v1
with:
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
packageName: com.zzang.chongdae
releaseFiles: ./android/app/build/outputs/bundle/release/app-release.aab
track: "총대마켓 - 비공개 테스트"
173 changes: 123 additions & 50 deletions android/app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,32 +1,59 @@
import java.io.FileInputStream
import java.util.Properties

plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("de.mannodermaus.android-junit5") version "1.10.0.0"
id("kotlin-kapt")
id("com.google.gms.google-services")
kotlin("plugin.serialization") version "2.0.0"
id("com.google.firebase.crashlytics")
id("com.google.dagger.hilt.android")
}

android {
namespace = "com.zzang.chongdae"
compileSdk = 34


val properties =
Properties().apply {
try {
load(FileInputStream(rootProject.file("local.properties")))
} catch (e: Exception) {
e.printStackTrace()
}
}

defaultConfig {
applicationId = "com.zzang.chongdae"
minSdk = 26
targetSdk = 34
versionCode = 1
versionName = "1.0"
versionCode = 4
versionName = "1.1.2"

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
testInstrumentationRunnerArguments["runnerBuilder"] = "de.mannodermaus.junit5.AndroidJUnit5Builder"
vectorDrawables {
useSupportLibrary = true
}

val baseUrl = properties.getProperty("base_url")
val token = properties.getProperty("token")
val nativeAppKey = properties.getProperty("native_app_key")

buildConfigField("String", "BASE_URL", "\"$baseUrl\"")
buildConfigField("String", "TOKEN", "\"$token\"")
buildConfigField("String", "NATIVE_APP_KEY", "\"$nativeAppKey\"")
manifestPlaceholders["native_app_key"] = nativeAppKey
}

buildTypes {
release {
debug {
isMinifyEnabled = false
}
release {
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro",
Expand All @@ -47,56 +74,102 @@ android {
}
}
buildFeatures {
dataBinding = true
buildConfig = true
}

dataBinding {
enable = true
}
}

dependencies {
implementation("androidx.core:core-ktx:1.10.1")
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("com.google.android.material:material:1.10.0")
implementation("androidx.activity:activity-ktx:1.8.2")
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
implementation("androidx.test.ext:junit-ktx:1.1.5")
testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
testImplementation("org.assertj:assertj-core:3.25.3")
testImplementation("io.kotest:kotest-runner-junit5:5.8.0")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
androidTestImplementation("androidx.test:runner:1.4.0")
androidTestImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
androidTestImplementation("org.assertj:assertj-core:3.25.3")
androidTestImplementation("io.kotest:kotest-runner-junit5:5.8.0")
androidTestImplementation("de.mannodermaus.junit5:android-test-core:1.3.0")
androidTestRuntimeOnly("de.mannodermaus.junit5:android-test-runner:1.3.0")

implementation("androidx.room:room-runtime:2.6.1")
kapt("androidx.room:room-compiler:2.6.1")
implementation("com.google.code.gson:gson:2.8.8")

implementation("com.github.bumptech.glide:glide:4.12.0")
kapt("com.github.bumptech.glide:compiler:4.12.0")
testImplementation("androidx.arch.core:core-testing:2.1.0")
implementation("com.squareup.okhttp3:mockwebserver:4.12.0")

implementation("com.squareup.retrofit2:retrofit:2.11.0")
implementation("com.squareup.retrofit2:converter-gson:2.11.0")

implementation("androidx.room:room-ktx:2.6.1")

implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")
implementation("com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0")

kapt("com.github.bumptech.glide:compiler:4.13.2")

implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.7.0")
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0")
implementation("androidx.activity:activity-ktx:1.9.0")
implementation("androidx.fragment:fragment-ktx:1.7.0")
implementation("androidx.core:core-ktx:1.10.1")
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat)
implementation(libs.material)
implementation(libs.androidx.activity)
implementation(libs.androidx.fragment)
implementation(libs.androidx.constraintlayout)

// Test
implementation(libs.androidx.junit)
testImplementation(libs.junit.jupiter)
testImplementation(libs.assertj.core)
testImplementation(libs.kotest.runner.junit5)
testImplementation(libs.core.testing)

// Android Test
androidTestImplementation(libs.junit.jupiter)
androidTestImplementation(libs.assertj.core)
androidTestImplementation(libs.kotest.runner.junit5)
androidTestImplementation(libs.mannodermaus.test.core)
androidTestImplementation(libs.mannodermaus.test.runner)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.test.runner)

// Espresso 및 관련
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(libs.androidx.espresso.contrib)

// UI Test: Fragment Scenario
debugImplementation(libs.androidx.fragment.testing)
androidTestImplementation(libs.androidx.fragment.testing)

// DataStore
implementation(libs.androidx.datastore.preferences)

// Lifecycle
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.lifecycle.livedata.ktx)
implementation(libs.androidx.lifecycle.viewmodel.ktx)

// Room
implementation(libs.androidx.room.runtime)
kapt(libs.androidx.room.compiler)
implementation(libs.androidx.room.ktx)

// json
implementation(libs.kotlinx.serialization.json)

// Glide
implementation(libs.glide)
kapt(libs.glide.compiler)

// Retrofit
implementation(libs.retrofit)
implementation(libs.retrofit.converter.gson)
implementation(libs.retrofit.kotlinx.serialization)

// Navigation
implementation(libs.androidx.navigation.fragment)
implementation(libs.androidx.navigation.ui)
androidTestImplementation(libs.androidx.navigation.testing)

// Pagination
implementation(libs.androidx.paging.runtime)

// WebView
implementation(libs.androidx.webkit)

// Firebase
implementation(platform(libs.firebase.bom))
implementation(libs.firebase.analytics)
implementation(libs.firebase.crashlytics)

// 카카오 로그인
implementation(libs.kakao.sdk)

// Mockk
implementation(libs.mockwebserver)
testImplementation(libs.mockk)

// Swipe Refresh Layout
implementation(libs.androidx.swiperefreshlayout)

// Hilt
implementation(libs.hilt.android)
kapt(libs.hilt.compiler)
}

kapt {
correctErrorTypes = true
}
Loading

0 comments on commit 4b58c8f

Please sign in to comment.