Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
328 commits
Select commit Hold shift + click to select a range
ac1899a
[ADD/#263] 파라미터 name 추가 및 누락된 Amplitude 트래킹 추가
MoonsuKang Jun 1, 2025
ef103cc
[ADD/#263] LazyColumn에 navigationBars & ime 패딩 추가
MoonsuKang Jun 2, 2025
e9d0046
[REFACTOR/#263] ktlint formatting
MoonsuKang Jun 2, 2025
b2257e3
[REFACTOR/#263] Preview -> Base Preview 사용하도록 수정
MoonsuKang Jun 2, 2025
90f1c25
Merge pull request #264 from Team-Clody/ui/#263-fourth-sprint-ui
MoonsuKang Jun 2, 2025
3ebcec5
[REFACTOR/#266] 알림설정 화면 리팩토링을 진행합니다.
SYAAINN Jun 2, 2025
0f7fcef
[CHORE/#266] Dead Code를 제거합니다.
SYAAINN Jun 2, 2025
3b819a9
[CHORE/#266] ClodyPreview를 사용합니다.
SYAAINN Jun 2, 2025
a77e122
[CHORE/#266] 함수 타입을 변경합니다.
SYAAINN Jun 2, 2025
6001a36
[REFACTOR/#266] 알람 상태 변경 함수를 단일화하여 중복 코드를 제거합니다.
SYAAINN Jun 2, 2025
91e35d0
Merge pull request #267 from Team-Clody/feat/#266-draft-alarm
SYAAINN Jun 3, 2025
2ec144a
[FEAT/#268] 임시저장 최초 사용 여부를 판단하기 위한 flag를 담을 SharedPreferences를 정의합니다.
SYAAINN Jun 4, 2025
affe7c3
[FEAT/#268] 일기 작성 화면에서 임시저장 다이얼로그의 임시저장을 버튼하면 flag를 true로 업데이트합니다.
SYAAINN Jun 4, 2025
829c091
[FEAT/#268] 홈화면에서 isFirstUse가 true일때 이어쓰기 알림설정 유도 바텀시트를 노출합니다.
SYAAINN Jun 4, 2025
3b05efd
[ADD/#265] Kotest 의존성 추가 및 단위 테스트를 위한 JUnit 플랫폼 설정
MoonsuKang Jun 4, 2025
8309c17
[ADD/#265] DraftDiaryContents 및 CreatedDraftDiaryInfo 데이터 클래스 추가
MoonsuKang Jun 4, 2025
ba09f76
[ADD/#265] 임시저장을 위한 Response/Request DTO 추가
MoonsuKang Jun 4, 2025
bf282eb
[FEAT/#265] 임시저장 Diary API 메서드 추가
MoonsuKang Jun 4, 2025
ffdab1b
[FEAT/#265] 임시저장 Diary 관련 API 메서드 추가(dataSource)
MoonsuKang Jun 4, 2025
54ab943
[FEAT/#265] 임시저장을 위한 다이어리 API 메서드 추가(Repository)
MoonsuKang Jun 4, 2025
761fa55
[FEAT/#265] 임시저장 기능을 위한 UseCase 추가
MoonsuKang Jun 4, 2025
9e9a87c
[FEAT/#265] ViewModel에 임시 일기 fetch/save 로직 추가 및 상태 처리 구현
MoonsuKang Jun 4, 2025
c80e418
[ADD/#265] Lifecycle STARTED 기준 LaunchedEffect 유틸 함수 추가
MoonsuKang Jun 4, 2025
d822f93
[ADD/#265] route단에 임시저장 fetch 추가 및 뒤로가기 분기 추가
MoonsuKang Jun 4, 2025
6a1ebec
[TEST/#265] FakeDiaryRepository 추가
MoonsuKang Jun 4, 2025
64ff044
[TEST/#265] FakeDiaryRemoteDataSource 클래스 추가 및 임시저장 기능 구현
MoonsuKang Jun 4, 2025
62c351c
[TEST/#265] 임시저장 다이어리 조회 및 저장 기능에 대한 테스트 추가
MoonsuKang Jun 4, 2025
d674b06
[TEST/#265] WriteDiaryViewModel 단위 테스트 구현 (임시저장 한정)
MoonsuKang Jun 4, 2025
5dc4ab1
[FEAT/#268] 바텀시트에서 알림 받기를 선택할 경우, 이어쓰기 알림 설정을 활성화하는 로직을 구현합니다.
SYAAINN Jun 4, 2025
f2ca24a
[CHORE/#268] 불필요한 파라미터를 제거합니다.
SYAAINN Jun 4, 2025
ab6eba0
[REFACTOR/#268] HomeScreen을 Recomposition해서 바텀시트 노출 조건 검사가 제대로 이루어지도록…
SYAAINN Jun 4, 2025
d3ecd2e
[CHORE/#268] 네트워크 연결 검사를 추가하고, 알림 시간 검증을 효과적으로 개선합니다.
SYAAINN Jun 4, 2025
d31441b
[CHORE/#268] 초기 알림 설정 화면에서는 이어쓰기 알림을 비활성화 합니다.
SYAAINN Jun 5, 2025
236f58c
[ADD/#273] 플레이스토어 인앱 리뷰를 위한 의존성을 추가합니다.
SYAAINN Jun 5, 2025
402cde0
[FEAT/#273] 인앱 리뷰를 위한 InAppReviewManager를 정의합니다.
SYAAINN Jun 5, 2025
d0e33d4
[FEAT/#273] 리뷰 팝업을 노출할 지에 대한 flag를 담은 SharedPreferences를 분리합니다.
SYAAINN Jun 5, 2025
0cc06d0
[FEAT/#273] 홈화면에서 리뷰 팝업이 정상적으로 노출되는지 확인합니다.
SYAAINN Jun 5, 2025
8908804
[FEAT/#273] 답장확인으로부터 홈화면으로 돌아왔는 지를 검사하는 코드를 추가합니다.
SYAAINN Jun 5, 2025
7eb6053
[REFACTOR/#273] LaunchedEffect 변경, context 초기화 안정성 증가, Timber 제거를 수행합니다.
SYAAINN Jun 5, 2025
da8f6c4
[REFACTOR/#273] 리뷰 팝업 노출에 관한 에러 대응을 보완합니다.
SYAAINN Jun 5, 2025
29d1f2d
[REFACTOR/#265] onDismiss, onDismissExitDialog 분리 및 BackHandler 처리
MoonsuKang Jun 5, 2025
1863b26
[REFACTOR/#265] "보내기" 클릭 시 에러메시지가 나타나지 않는 문제 해결
MoonsuKang Jun 5, 2025
2e10906
[ADD/#265] 임시저장 Fetch실패 시 에러메시지 처리 추가
MoonsuKang Jun 5, 2025
808001c
[MOD/#265] 프린트문 제거
MoonsuKang Jun 5, 2025
bdeebf9
[REFACTOR/#268] Local/Remote DataSource Module을 분리합니다.
SYAAINN Jun 6, 2025
b9d1818
[REFACTOR/#268] FcmTokenProvider을 이용하도록 변경합니다.
SYAAINN Jun 6, 2025
79c9a3e
[CHORE/#268] SharedPreferences의 property setter를 개선합니다.
SYAAINN Jun 6, 2025
02cffb4
[CHORE/#273] SharedPreferences의 property setter를 개선합니다.
SYAAINN Jun 6, 2025
794e940
[REFACTOR/#265] API 명세 변경에 따른 비즈니스 로직 수정
MoonsuKang Jun 6, 2025
b6c76f4
[REFACTOR/#265] 임시저장 처리 개선 및 기본 항목 보장 추가
MoonsuKang Jun 6, 2025
ca66f7a
[REFACTOR/#265] 임시저장 처리 개선 및 기본 항목 보장 추가
MoonsuKang Jun 6, 2025
116ac9e
[Refactor/#273] DraftRepository를 정의해서 Repository Pattern을 준수합니다.
SYAAINN Jun 6, 2025
0fa677f
[REFACTOR/#273] ReviewRepository를 정의하여 Repository Pattern을 준수합니다.
SYAAINN Jun 6, 2025
84ccb64
[REFACTOR/#265] 임시저장 API 응답 타입 변경(->Unit) 및 관련 코드 수정
MoonsuKang Jun 6, 2025
05b2f97
[REFACTOR/#265] 임시저장 API 응답 타입 변경(->Unit) 및 관련 코드 수정
MoonsuKang Jun 6, 2025
a606664
[REFACTOR/#265] Repository의 임시저장 일기 조회 실패 메시지 처리 책임을 ViewModel로 이동
MoonsuKang Jun 6, 2025
58c726d
[ADD/#265] trailing comma
MoonsuKang Jun 6, 2025
79a4ba9
[CHORE/#273] 마켓 이동 함수를 AppUpdateUtils를 사용합니다.
SYAAINN Jun 6, 2025
e3d4eaa
Merge pull request #272 from Team-Clody/feat/#268-draft-alarm-home
SYAAINN Jun 6, 2025
1da7261
[CHORE/#273] 파라미터 전달을 개선합니다.
SYAAINN Jun 6, 2025
25d06c6
[CHORE/#273] 인앱리뷰 팝업 노출 조건 검사 부분을 개선합니다.
SYAAINN Jun 6, 2025
4e97a13
Resolve Git Conflict
SYAAINN Jun 6, 2025
c8ebb47
Merge pull request #274 from Team-Clody/feat/#273-in-app-review
SYAAINN Jun 6, 2025
14fc909
Merge branch 'develop' into feat/#265-draft-save-api
MoonsuKang Jun 7, 2025
9fda999
[ADD/#265] close blacket 추가
MoonsuKang Jun 7, 2025
bd24e15
[ADD/#265] import 순서 변경
MoonsuKang Jun 7, 2025
f27d114
Merge pull request #271 from Team-Clody/feat/#265-draft-save-api
MoonsuKang Jun 7, 2025
9762882
[ADD/#270] 이미지 에셋 추가
MoonsuKang Jun 7, 2025
cab42db
[REFACTOR/#270] 클로버 아이콘 타입 분기 로직 개선 및 임시저장 상태 대응 추가
MoonsuKang Jun 7, 2025
d677803
[ADD/#270] Dto에 임시저장 여부 확인을 위한 isDraft 필드 추가
MoonsuKang Jun 7, 2025
bc3b5dd
[REFACTOR/#270] replyStatus를 String → ReplyStatus로 타입 변경
MoonsuKang Jun 7, 2025
90d39c3
[REFACTOR/#270] replyStatus를 String에서 ReplyStatus로 변경
MoonsuKang Jun 7, 2025
dfe2a07
[REFACTOR/#270] DailyDiaryListItem에서 DailyDiariesResponseDto 전체를 받아 임…
MoonsuKang Jun 7, 2025
40525ca
[REFACTOR/#270] DailyDiaryListItem에서 dailyDiaries를 state.data로 변경
MoonsuKang Jun 7, 2025
4357190
[REFACTOR/#270] DiaryStateButton의 조건 분기를 canWrite/canReply로 단순화 및 임시저…
MoonsuKang Jun 7, 2025
493b33c
[REFACTOR/#270] replyStatus 전달 방식을 String → ReplyStatus enum으로 변경
MoonsuKang Jun 7, 2025
69dd396
[REFACTOR/#270] ReplyStatus enum 적용 및 상태 관리 개선
MoonsuKang Jun 7, 2025
4beaac1
[REFACTOR/#270] HomeRoute 및 HomeScreen 구조 개선 및 ReplyStatus Enum 적용
MoonsuKang Jun 7, 2025
09678bc
[DEL/#270] 사용하지 않는 파라미터 제거
MoonsuKang Jun 7, 2025
13964a6
[REFACTOR/#276] .trim() 추가해서 실제 입력 비교하도록 개선
MoonsuKang Jun 7, 2025
b170393
[REFACTOR/#276] 일기 내용이 변경된 경우에만 종료 다이얼로그 노출, 뒤로가기 이벤트는 항상 트래킹하도록 수정
MoonsuKang Jun 7, 2025
7a5931b
[DEL/#276] 일기삭제 바텀시트 패딩 제거
MoonsuKang Jun 7, 2025
f3e6d8a
Merge pull request #277 from Team-Clody/refactor/#276-write-diary-ref…
MoonsuKang Jun 8, 2025
abd2537
Merge pull request #275 from Team-Clody/feat/#270-draft-divert-home
MoonsuKang Jun 8, 2025
817d125
[CHORE/#278] 이어쓰기 알림 설정 완료 토스트 메시지의 위치를 수정합니다.
SYAAINN Jun 8, 2025
d0d4a59
Merge pull request #279 from Team-Clody/chore/#278-draft-alarm-toast
SYAAINN Jun 12, 2025
cc90d2f
[REFACTOR/#280] ClodyButton 색상 관련 파라미터 외부 주입 가능하도록 개선
MoonsuKang Jun 16, 2025
6372e6b
[ADD/#280] 리스트화면 답장확인 버튼에 Invalid Draft 상태 추가
MoonsuKang Jun 16, 2025
fd41f1c
[REFACTOR/#280] DiaryStateButton에 Invalid Draft 상태 처리 추가
MoonsuKang Jun 16, 2025
edd7114
[REFACTOR/#280] MonthlyCalendarResponseDto와 WriteDiaryResponseDto에 da…
MoonsuKang Jun 16, 2025
2dac98a
[REFACTOR/#280] 임시저장 일기 조건 분기 및 초기 데이터 로딩 방식 수정
MoonsuKang Jun 16, 2025
2e6f4b3
[REFACTOR/#280] HomeViewModel에 초기 상태를 추적하는 hasDraft 추가
MoonsuKang Jun 16, 2025
f5d5717
[REFACTOR/#280] WriteDiaryViewModel에 만료된 일기 처리 로직 추가
MoonsuKang Jun 16, 2025
a78c51f
[REFACTOR/#280] 하루 전은 유효하도록 수정
MoonsuKang Jun 16, 2025
a8c45d5
[REFACTOR/#280] update cd workflow
MoonsuKang Jun 16, 2025
c93586c
[REFACTOR/#280] update cd workflow
MoonsuKang Jun 16, 2025
4135b97
[REFACTOR/#280] release build -> debug build apk
MoonsuKang Jun 16, 2025
1a28f89
[REFACTOR/#280] add base_url
MoonsuKang Jun 16, 2025
ce81213
[DEL/#280] 테스트 코드 제거
MoonsuKang Jun 16, 2025
f507c06
[REFACTOR/#280] UX 라이팅 수정
MoonsuKang Jun 16, 2025
09153e9
[REFACTOR/#280] cd workflow 수정
MoonsuKang Jun 16, 2025
77397c9
[REFACTOR/#280] cd workflow 수정
MoonsuKang Jun 16, 2025
6dc1a33
[REFACTOR/#280] cd workflow 수정
MoonsuKang Jun 16, 2025
4fcb163
[ADD/#280] 누락된 필드 추가
MoonsuKang Jun 16, 2025
3582012
[REFACTOR/#280] Update diary state management
MoonsuKang Jun 16, 2025
1d83e39
[REFACTOR/#280] coroutine delay 대신 async로 처리
MoonsuKang Jun 16, 2025
cb11c8e
[MOD/#280] 사용하지 않는 상태 제거
MoonsuKang Jun 16, 2025
d8a1111
Merge pull request #281 from Team-Clody/refactor/#280-fourth-sprint-qa
MoonsuKang Jun 21, 2025
11a25f7
[ADD/#283] 스트링 추출
MoonsuKang Jun 21, 2025
2811b7c
[ADD/#283] AM/PM 구분을 위한 TimePeriod enum 클래스 추가
MoonsuKang Jun 21, 2025
30a6366
[ADD/#283] 요일 헤더 다국어(Korean/English) 지원 기능 추가
MoonsuKang Jun 21, 2025
f160c3e
[DEL/#283] 안쓰는 파일 제거
MoonsuKang Jun 21, 2025
9b8a3b6
[REFACTOR/#283] AM/PM 시간 선택을 TimePeriod enum 기반으로 변경 및 하드코딩 제거
MoonsuKang Jun 21, 2025
a751473
[REFACTOR/#283] 시간 설정 시 AM/PM 문자열 대신 TimePeriod enum 사용으로 타입 안전성 향상
MoonsuKang Jun 21, 2025
5f0ae0f
[REFACTOR/#283] 하드코드 제거
MoonsuKang Jun 21, 2025
723333e
[MOD/#283] 안쓰는 string 제거
MoonsuKang Jun 21, 2025
b2b5aec
[REFACTOR/#283] 하드코드 제거
MoonsuKang Jun 21, 2025
9ea1338
[ADD/#283] 스트링 추출
MoonsuKang Jun 21, 2025
d3a549c
[ADD/#283] 연도 및 월 레이블을 위한 유틸리티 추가
MoonsuKang Jun 21, 2025
05a5d8b
[REFACTOR/#283] 문자열 리소스 및 유틸리티 함수로 연도/월 레이블 처리 개선
MoonsuKang Jun 21, 2025
cd70304
[REFACTOR/#285] 로그인 보안 점검 기능 추가
MoonsuKang Jun 21, 2025
e4bd9f4
[REFACTOR/#285] Chrome 미설치 및 루팅 기기 로그인 차단 로직 추가
MoonsuKang Jun 21, 2025
c7ba691
[FEAT/#285] WebView에 도메인 필터링 및 SSL 오류 차단 적용
MoonsuKang Jun 21, 2025
5821d03
[ADD/#285] WebView 허용 도메인 추가
MoonsuKang Jun 21, 2025
79fa27c
[ADD/#285] 마켓 이동 유틸 개선 및 예외 처리 보강
MoonsuKang Jun 21, 2025
397f627
[FEAT/#285] WebView 보안 강화 적용(도메인 필터링 및 SSL 설정 개선) 및 별도 패키지로 분리
MoonsuKang Jun 21, 2025
b7be7e5
[REFACTOR/#285] WebView 이동 방식으로 설정 옵션 링크 처리 통일
MoonsuKang Jun 21, 2025
f74fec6
[ADD/#285] login error 스트링 추출
MoonsuKang Jun 21, 2025
77ab155
[MOD/#287] 앱 버전 업데이트
MoonsuKang Jun 25, 2025
52e2432
Merge pull request #288 from Team-Clody/mod/#287-version-name
MoonsuKang Jun 25, 2025
0bc6659
[REFACTOR/#285] 로그인 보안 검사 모듈 @Singleton Annotation 위치 변경
MoonsuKang Jun 29, 2025
445de44
Merge pull request #284 from Team-Clody/refactor/#283-extract-strings…
MoonsuKang Jun 29, 2025
9bb686e
trigger CI
MoonsuKang Jun 29, 2025
1d30fd6
Merge pull request #286 from Team-Clody/feat/#285-enhance-security
MoonsuKang Jun 29, 2025
b34ae87
[FIX/#290] 리마인드 시간 초기값 설정
MoonsuKang Jul 3, 2025
0bf5ae0
[MOD/#290] 타임피커 제목 수정
MoonsuKang Jul 3, 2025
b50bc46
[FIX/#290] 버전 코드 및 버전 이름 업데이트
MoonsuKang Jul 3, 2025
3aa2552
Merge pull request #291 from Team-Clody/fix/#290-change-url-and-fix
MoonsuKang Jul 3, 2025
2bb738f
[FEAT/#293] 스플래시 화면, 로그인 화면 현지화를 진행합니다.
SYAAINN Jul 5, 2025
cebeb74
[FEAT/#293] 온보딩 화면, 가이드 화면 현지화를 진행합니다.
SYAAINN Jul 9, 2025
e804505
[FEAT/#293] 앱 버전 업데이트 모달 현지화를 진행합니다.
SYAAINN Jul 9, 2025
ea1f2aa
[DEL/#293] 불필요한 리소스를 삭제합니다. (이미지로 활용하고 있는 부분임)
SYAAINN Jul 9, 2025
0a30154
[FEAT/#293] 설정 화면, 알림설정 화면 현지화를 진행합니다.
SYAAINN Jul 10, 2025
b5b3321
[FEAT/#293] 홈 화면 현지화를 진행합니다.
SYAAINN Jul 10, 2025
3aee4b5
[REFACTOR/#294] Firebase Remote Config 업데이트 간격 변경
MoonsuKang Jul 10, 2025
0261de0
[REFACTOR/#294] 알림 고정 시간 21시 30분을 9시 30분으로 변경
MoonsuKang Jul 10, 2025
e256a02
[REFACTOR/#294] 삭제 케밥 버튼이 일기가 있을 때만 보이도록 수정
MoonsuKang Jul 10, 2025
c1389fc
[REFACTOR/#294] LazyColumn 패딩을 레이아웃 처리에 더 적합하도록 개선
MoonsuKang Jul 10, 2025
43159c8
[FEAT/#293] 일기 작성 화면 현지화를 진행합니다.
SYAAINN Jul 11, 2025
c8d3f83
[FEAT/#293] 답장대기 화면, 답장확인 화면 현지화를 진행합니다.
SYAAINN Jul 11, 2025
44ed476
[FEAT/#293] 일기 리스트 모아보기 화면 현지화를 진행합니다.
SYAAINN Jul 11, 2025
b9605b9
Merge pull request #295 from Team-Clody/fix/#294-major-issue
MoonsuKang Jul 12, 2025
b610910
[FEAT/#293] 이외 리소스들을 번역하고 strings.xml 파일을 정리합니다.
SYAAINN Jul 12, 2025
1640a59
[REFACTOR/#293] 영어 리소스를 기본으로 설정합니다. 이제 한국어 이외 언어들로 설정되어 있는 기기들은 앱을 영어…
SYAAINN Jul 12, 2025
fdbe733
[CHORE/#293] ktlintFormat을 진행합니다.
SYAAINN Jul 12, 2025
a0af28f
[FEAT/#300] 점검 다이얼로그 기본 UI를 제작합니다.
SYAAINN Jul 14, 2025
74eba47
[FEAT/#300] AppUpdateChecker에 점검 상태 확인 및 점검 시간 텍스트 반환 기능 추가
MoonsuKang Jul 14, 2025
99f30c0
[FEAT/#300] 시스템 점검 시작/종료 시간 Remote Config 키 추가 및 파싱 로직 구현
MoonsuKang Jul 14, 2025
c4eb6a8
[ADD/#300] 점검 팝업 노출을 위한 상태 및 인텐트 추가
MoonsuKang Jul 14, 2025
9858bb3
[FEAT/#300] 시스템 점검 중 앱 실행 차단 및 안내 팝업 로직 추가
MoonsuKang Jul 14, 2025
82f6db7
[ADD/#300] inspectionTime parameter 추가
MoonsuKang Jul 14, 2025
dbbb5e4
[FEAT/#300] 시스템 점검 안내 다이얼로그 UI 추가 및 상태 연동
MoonsuKang Jul 14, 2025
f8da747
[CHORE/#300] 안내 문구 수정 사항을 반영하고, 백핸들러를 막아서 확인 버튼을 눌러야만 앱을 나갈 수 있도록 설정합니다.
SYAAINN Jul 14, 2025
f6ab945
[REFACTOR/#300] 스플래시 화면에서 버전 확인 후 자동 로그인 시도하도록 순서 변경
MoonsuKang Jul 14, 2025
864dcbd
[MOD/#300] 버전 정보 업데이트
MoonsuKang Jul 14, 2025
01f2b67
[REFACTOR/#300] RemoteConfig 가져오기 간격 변경
MoonsuKang Jul 14, 2025
ec57404
Merge pull request #301 from Team-Clody/feat/#300-inspection-dialog
MoonsuKang Jul 14, 2025
535375a
[CHORE/#293] Modifier를 개선합니다.
SYAAINN Jul 15, 2025
eb7a018
[CHORE/#293] KtlintFormat을 적용합니다.
SYAAINN Jul 15, 2025
d1a17aa
[FEAT/#299] 한국어 typo, 영어 typo를 정의합니다.
SYAAINN Jul 15, 2025
dbe356d
[FEAT/#299] LanguageProvider 클래스 구현
SYAAINN Jul 15, 2025
b21319f
[FEAT/#299] 영어 버전일 경우, 구글 로그인 버튼을 노출합니다.
SYAAINN Jul 15, 2025
bc017da
[FEAT/#299] 웹뷰 링크를 분기처리 합니다.
SYAAINN Jul 15, 2025
c65fc30
[FEAT/#299] 닉네임 최대 길이를 영어 버전 15자, 한국어 버전 10자로 설정합니다.
SYAAINN Jul 15, 2025
8fc9d6f
[FEAT/#299] 일기 하나의 최대 길이를 영어 버전 100자, 한국어 버전 50자로 설정합니다.
SYAAINN Jul 15, 2025
2945955
Merge pull request #298 from Team-Clody/feat/#293-en-localization
SYAAINN Jul 15, 2025
ac6664c
[CHORE/#299] 코드래빗 리뷰사항을 반영합니다.
SYAAINN Jul 16, 2025
c28221c
[CHORE/#299] 코드리뷰 사항을 반영합니다.
SYAAINN Jul 16, 2025
e665301
Merge pull request #302 from Team-Clody/feat/#299-en-localization-fea…
SYAAINN Jul 16, 2025
753eb82
[ADD/#303] 테스트 앱의 아이콘으로 사용할 이미지 에셋을 추가합니다.
SYAAINN Jul 16, 2025
ece9653
[FEAT/#303] 테스트앱을 분리합니다.
SYAAINN Jul 16, 2025
e6c4779
[FEAT/#303] 추가된 google-services.json 파일에 관한 CI 설정을 추가합니다.
SYAAINN Jul 16, 2025
e8b541e
[FEAT/#303] strings.xml 리소스 파일을 분리합니다.
SYAAINN Jul 16, 2025
23259d5
[REFACTOR/#303] 디버그 앱에서는 Amplitude 추적을 하지 않습니다.
SYAAINN Jul 16, 2025
84e1ad0
[REFACTOR/#303] 디버그 앱에서는 점검시간 시 앱 진입 차단을 실행하지 않습니다.
SYAAINN Jul 16, 2025
e301099
Merge pull request #304 from Team-Clody/feat/#303-test-app
SYAAINN Jul 16, 2025
d0b558c
[FIX/#306] Amplitude 분기 처리를 삭제합니다. (추후 다시 적용)
SYAAINN Jul 17, 2025
6178853
Merge pull request #307 from Team-Clody/fix/#306-amplitude-init-fix
SYAAINN Jul 17, 2025
3d14377
[REFACTOR/#305] 홈화면 탑바의 연/월 포맷을 수정합니다.
SYAAINN Jul 21, 2025
a61bc23
[REFACTOR/#305] 홈화면 요일 포맷을 수정합니다.
SYAAINN Jul 21, 2025
2042117
[REFACTOR/#305] 일기쓰기 화면에서 날짜 포맷을 변경합니다.
SYAAINN Jul 21, 2025
8398df3
[REFACTOR/#305] 답장확인 화면 날짜 포맷을 변경합니다.
SYAAINN Jul 21, 2025
3cffbb2
[REFACTOR/#305] 알림 설정 화면에서 시간 포맷을 변경합니다.
SYAAINN Jul 21, 2025
82c9871
[REFACTOR/#305] 일기 모아보기 리스트 화면에서 날짜 포맷을 변경합니다.
SYAAINN Jul 21, 2025
dc1d9c1
[REFACTOR/#305] 홈, 리스트 화면에서 사용되는 연월피커를 변경합니다.
SYAAINN Jul 21, 2025
384a6b1
[REFACTOR/#305] 홈화면 달력의 요일 포맷을 변경합니다.
SYAAINN Jul 21, 2025
dd449f1
[FIX/#305] 수정이 필요한 부분들을 반영합니다.
SYAAINN Jul 21, 2025
81e225d
[MOD/#305] 함수 기능에 적합한 네이밍으로 수정합니다.
SYAAINN Jul 23, 2025
a80bed0
[REFACTOR/#305] 코드래빗 리뷰를 반영합니다.
SYAAINN Jul 23, 2025
a78740f
Merge pull request #308 from Team-Clody/feat/#305-en-i18n
SYAAINN Jul 23, 2025
4b8e4b3
[ADD/#292] 구글 로그인 관련 라이브러리 추가
MoonsuKang Jul 23, 2025
87d03d7
[REFACTOR/#292] 스플래시 화면 자동 로그인 로직 및 버전 확인 탐색 개선
MoonsuKang Jul 23, 2025
e8c32c6
[ADD/#292] OAuth 정보 저장 및 관리 기능 추가
MoonsuKang Jul 23, 2025
196334a
[FEAT/#292] 구글 회원가입 API 연동
MoonsuKang Jul 23, 2025
0fdb143
[FEAT/#292] Google 회원가입 기능 추가
MoonsuKang Jul 23, 2025
3932c57
[ADD/#292] 로그인 타입 분기
MoonsuKang Jul 23, 2025
89ce95c
[FEAT/#292] 구글 로그인 기능 구현
MoonsuKang Jul 23, 2025
fcca072
[FEAT/#292] 회원가입 API 연동 및 구글 회원가입 로직 추가
MoonsuKang Jul 23, 2025
c7fdbb0
[REFACTOR/#292] 로그인 API 요청 시 불필요한 값 제거
MoonsuKang Jul 26, 2025
ff0653b
[REFACTOR/#292] 로그인 타입 로직 LanguageProvider로 이동
MoonsuKang Jul 28, 2025
ba767df
[FEAT/#292] 로그인 플랫폼 별 아이콘 분기 처리
MoonsuKang Jul 28, 2025
fa26d56
[REFACTOR/#309] 알림 관련 API를 TimeZone을 반영하여 수정합니다.
SYAAINN Jul 29, 2025
348cfc0
[REFACTOR/#309] 일기 CRUD, 임시저장, 답장 관련 API들에 TimeZone 헤더를 추가하도록 Interce…
SYAAINN Jul 29, 2025
c0df468
[CHORE/#309] 전날 일기에 대한 영어 버전 UX 라이팅을 수정합니다.
SYAAINN Jul 29, 2025
8f0e438
[CHORE/#309] 코드레빗 리뷰사항을 반영합니다.
SYAAINN Jul 29, 2025
8f766ef
[REFACTOR/#292] SplashState에서 불필요한 isUserLoggedIn 제거
MoonsuKang Jul 30, 2025
216cf4a
Merge pull request #310 from Team-Clody/feat/#292-google-auth
MoonsuKang Jul 30, 2025
49d405f
[CHORE/#309] 알림시간을 선택하는 바텀시트의 언어대응과 레이아웃을 수정합니다.
SYAAINN Jul 31, 2025
45cb135
[DEL/#309] 미사용 함수를 제거합니다.
SYAAINN Jul 31, 2025
90ba7af
[REFACTOR/#309] 닉네임에 관련된 메시지 다국어 대응을 진행합니다.
SYAAINN Jul 31, 2025
e74c5e6
Merge pull request #311 from Team-Clody/refactor/#309-timezone-api-re…
SYAAINN Jul 31, 2025
50db4e4
[REFACTOR/#314] 구글 로그인 및 계정 정보 조회 부분을 수정합니다.
SYAAINN Aug 1, 2025
a066b7e
[REFACTOR/#314] 웹 페이지 로드 방식을 웹뷰에서 외부 브라우저 앱 사용으로 개선했습니다.
SYAAINN Aug 1, 2025
d8b5dd3
[FEAT/#314] 앱이 최신 버전일 경우 최신 버전이라고 표시하도록 구현합니다.
SYAAINN Aug 1, 2025
f3764ff
[CHORE/#314] 알림 시간 설정 완료 토스트 메시지의 위치를 수정합니다.
SYAAINN Aug 2, 2025
8261e67
[CHORE/#314] 가이드 스크린의 UI 구조를 수정합니다.
SYAAINN Aug 2, 2025
24ed3df
[CHORE/#314] 일기쓰기 API 변경사항을 반영했습니다.(data 포맷 변경, lang 헤더 추가)
SYAAINN Aug 3, 2025
54564bb
[REFACTOR/#314] 카카오 sdk 호출이 로그인, 회원가입 시 2번 호출되는 로직을 수정합니다.
SYAAINN Aug 3, 2025
de0d166
[ADD/#297] 네트워크 연결 상태 Observer 추가
MoonsuKang Aug 3, 2025
65122a7
[DEL#297] 네트워크 유틸리티 클래스 및 관련 모듈 삭제
MoonsuKang Aug 3, 2025
e83a7a8
[REFACTOR/#297] Diary UseCase 반환 타입 수정 및 추가
MoonsuKang Aug 3, 2025
82cdd7f
[ADD/#297] ErrorMessageProvider 추가
MoonsuKang Aug 3, 2025
43e3aee
[CHORE/#297] ErrorMessages 객체 삭제
MoonsuKang Aug 3, 2025
d87d6cd
[FEAT/#314] 딥링크 추적을 위한 에어브릿지를 도입합니다.
SYAAINN Aug 3, 2025
0d1ddf3
[ADD/#297] 오류 메시지 문자열 추가
MoonsuKang Aug 3, 2025
2adabf1
[REFACTOR/#297] 네트워크 유틸리티 및 에러 메시지 처리 방식 변경
MoonsuKang Aug 3, 2025
91b35ac
[REFACTOR/#297] enableDraftAlarm 함수 인자 제거
MoonsuKang Aug 3, 2025
89fe3c8
[REFACTOR/#297] 일부 feature을 실험용으로 SafeApiCall 도입
MoonsuKang Aug 3, 2025
43da14d
Merge pull request #315 from Team-Clody/chore/#314-5th-sprint-qa
SYAAINN Aug 3, 2025
c2d2e17
[CHORE/#297] conflict 해결
SYAAINN Aug 3, 2025
b48ca20
[CHORE/#297] ktlint Format
SYAAINN Aug 3, 2025
d71ab48
[CHORE/#297] CI 빌드 오류 해결
SYAAINN Aug 3, 2025
471be98
Merge pull request #316 from Team-Clody/refactor/#297-error-handle
SYAAINN Aug 3, 2025
571e587
[FIX/#312] CD 빌드 수정
SYAAINN Aug 3, 2025
7ddeb87
[FIX/#312] CD 빌드 수정
SYAAINN Aug 3, 2025
d9367b8
[FIX/#312] CD 빌드 수정
SYAAINN Aug 3, 2025
9e73b89
[FIX/#312] CD 빌드 수정
SYAAINN Aug 3, 2025
b382569
[FIX/#312] CD 빌드 수정
SYAAINN Aug 3, 2025
3807267
[FIX/#312] CD 빌드 수정
SYAAINN Aug 3, 2025
858e7ef
[CHORE/#312] FakeDiaryRemoteDataSource writeDiary 함수 매개변수 수정
SYAAINN Aug 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 26 additions & 16 deletions .github/workflows/android_cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,18 @@ jobs:
- name: Install Firebase CLI
run: curl -sL https://firebase.tools | bash

# google-services.json
- name: Decode google-services.json
# google-services.json (prod)
- name: Decode Prod google-services.json
env:
FIREBASE_SECRET: ${{ secrets.FIREBASE_SECRET }}
run: echo $FIREBASE_SECRET | base64 --decode > app/google-services.json

# google-services.json (debug)
- name: Decode Debug google-services.json
env:
FIREBASE_DEBUG_SECRET: ${{ secrets.FIREBASE_DEBUG_SECRET }}
run: echo $FIREBASE_DEBUG_SECRET | base64 --decode > app/src/debug/google-services.json

# keystore 복호화
- name: Decode keystore file
env:
Expand All @@ -62,28 +68,32 @@ jobs:
# local.properties
- name: Generate local.properties
env:
BASE_URL: ${{ secrets.BASE_URL }}
CLODY_BASE_URL: ${{ secrets.CLODY_BASE_URL }}
CLODY_TEST_URL: ${{ secrets.CLODY_TEST_URL }}
KAKAO_API_KEY: ${{ secrets.KAKAO_API_KEY }}
AMPLITUDE_API_KEY: ${{ secrets.AMPLITUDE_API_KEY }}
GOOGLE_ADMOB_APP_ID: ${{ secrets.GOOGLE_ADMOB_APP_ID }}
GOOGLE_ADMOB_UNIT_ID: ${{ secrets.GOOGLE_ADMOB_UNIT_ID }}
GOOGLE_AUTH_WEB_CLIENT_ID: ${{ secrets.GOOGLE_AUTH_WEB_CLIENT_ID }}
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
run: |
echo "baseUrl=$BASE_URL" >> local.properties
echo "clody.base.url=$CLODY_BASE_URL" >> local.properties
echo "clody.test.url=$CLODY_TEST_URL" >> local.properties
echo "kakao.api.key=$KAKAO_API_KEY" >> local.properties
echo "amplitude.api.key=$AMPLITUDE_API_KEY" >> local.properties
echo "googleAdmob.app.id=$GOOGLE_ADMOB_APP_ID" >> local.properties
echo "googleAdmob.unit.id=$GOOGLE_ADMOB_UNIT_ID" >> local.properties
echo "GOOGLE_ADMOB_APP_ID=$GOOGLE_ADMOB_APP_ID" >> local.properties
echo "GOOGLE_ADMOB_UNIT_ID=$GOOGLE_ADMOB_UNIT_ID" >> local.properties
echo "GOOGLE_AUTH_WEB_CLIENT_ID=$GOOGLE_AUTH_WEB_CLIENT_ID" >> local.properties
echo "storeFile=keystore/clody_release.jks" >> local.properties
echo "storePassword=$STORE_PASSWORD" >> local.properties
echo "keyAlias=$KEY_ALIAS" >> local.properties
echo "keyPassword=$KEY_PASSWORD" >> local.properties

# Release APK 빌드
- name: Build Release APK
run: ./gradlew assembleRelease --stacktrace
# Debug APK 빌드
- name: Build Debug APK
run: ./gradlew assembleDebug --stacktrace

# Set up Firebase Service Account Credentials
- name: Set up Firebase Service Account Credentials
Expand Down Expand Up @@ -112,22 +122,22 @@ jobs:
- name: Upload APK to Firebase App Distribution
env:
GOOGLE_APPLICATION_CREDENTIALS: $HOME/firebase-credentials.json
FIREBASE_APP_ID: ${{ secrets.FIREBASE_APP_ID }}
FIREBASE_DEBUG_APP_ID: ${{ secrets.FIREBASE_DEBUG_APP_ID }}
run: |
echo "🔥 FIREBASE_APP_ID 확인: $FIREBASE_APP_ID"
echo "🔥 FIREBASE_DEBUG_APP_ID 확인: $FIREBASE_DEBUG_APP_ID"

# 만약 FIREBASE_APP_ID가 없으면 에러 출력 후 종료
if [ -z "$FIREBASE_APP_ID" ]; then
echo "❌ ERROR: FIREBASE_APP_ID가 설정되지 않았습니다. GitHub Secrets에서 확인하세요."
# 만약 FIREBASE_DEBUG_APP_ID가 없으면 에러 출력 후 종료
if [ -z "$FIREBASE_DEBUG_APP_ID" ]; then
echo "❌ ERROR: FIREBASE_DEBUG_APP_ID가 설정되지 않았습니다. GitHub Secrets에서 확인하세요."
exit 1
fi

# GOOGLE_APPLICATION_CREDENTIALS 재 설정
export GOOGLE_APPLICATION_CREDENTIALS=$HOME/firebase-credentials.json
echo "GOOGLE_APPLICATION_CREDENTIALS=$GOOGLE_APPLICATION_CREDENTIALS"

firebase appdistribution:distribute app/build/outputs/apk/release/app-release.apk \
--app "$FIREBASE_APP_ID" \
firebase appdistribution:distribute app/build/outputs/apk/debug/app-debug.apk \
--app "$FIREBASE_DEBUG_APP_ID" \
--release-notes "🍀 새로운 테스트 버전이 업로드되었습니다~" \
--groups "clody-tester-group"

Expand Down
8 changes: 8 additions & 0 deletions .github/workflows/android_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,14 @@ jobs:
FIREBASE_SECRET: ${{ secrets.FIREBASE_SECRET }} # base64로 암호화된 json 사용
run: echo $FIREBASE_SECRET | base64 --decode > app/google-services.json

# Firebase dubug google-services.json 복호화 및 설정
- name: Decode debug google-services.json
env:
FIREBASE_DEBUG_SECRET: ${{ secrets.FIREBASE_DEBUG_SECRET }}
run: |
mkdir -p app/src/debug
echo "$FIREBASE_DEBUG_SECRET" | base64 --decode > app/src/debug/google-services.json

# keystore 복호화
- name: Decode keystore file
env:
Expand Down
38 changes: 35 additions & 3 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,19 @@ android {
applicationId = "com.sopt.clody"
minSdk = 28
targetSdk = 35
versionCode = 25
versionName = "1.1.1"
versionCode = 28
versionName = "1.4.0"
val kakaoApiKey: String = properties.getProperty("kakao.api.key")
val amplitudeApiKey: String = properties.getProperty("amplitude.api.key")
val googleAdmobAppId: String = properties.getProperty("GOOGLE_ADMOB_APP_ID", "")
val googleAdmobUnitId: String = properties.getProperty("GOOGLE_ADMOB_UNIT_ID", "")
val googleAuthWebClientId: String = properties.getProperty("GOOGLE_AUTH_WEB_CLIENT_ID", "")

buildConfigField("String", "GOOGLE_ADMOB_APP_ID", "\"$googleAdmobAppId\"")
buildConfigField("String", "GOOGLE_ADMOB_UNIT_ID", "\"$googleAdmobUnitId\"")
buildConfigField("String", "KAKAO_API_KEY", "\"$kakaoApiKey\"")
buildConfigField("String", "AMPLITUDE_API_KEY", "\"$amplitudeApiKey\"")
buildConfigField("String", "GOOGLE_AUTH_WEB_CLIENT_ID", "\"$googleAuthWebClientId\"")
manifestPlaceholders["kakaoRedirectUri"] = "kakao$kakaoApiKey"
manifestPlaceholders["GOOGLE_ADMOB_APP_ID"] = googleAdmobAppId
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
Expand All @@ -51,8 +54,13 @@ android {

buildTypes {
debug {
applicationIdSuffix = ".dev"

isMinifyEnabled = false
buildConfigField("String", "CLODY_BASE_URL", properties["clody.base.url"].toString())
buildConfigField("String", "CLODY_BASE_URL", properties["clody.test.url"].toString())

manifestPlaceholders["appLabel"] = "@string/app_name_dev"
manifestPlaceholders["appIcon"] = "@mipmap/ic_launcher_dev"
}

release {
Expand All @@ -64,6 +72,9 @@ android {
"proguard-rules.pro",
)
signingConfig = signingConfigs.getByName("release")

manifestPlaceholders["appLabel"] = "@string/app_name"
manifestPlaceholders["appIcon"] = "@mipmap/ic_launcher"
}
}
compileOptions {
Expand All @@ -77,6 +88,11 @@ android {
buildConfig = true
compose = true
}
testOptions {
unitTests.all {
it.useJUnitPlatform()
}
}
}

dependencies {
Expand Down Expand Up @@ -120,10 +136,26 @@ dependencies {
implementation(libs.accompanist.systemuicontroller)
implementation(libs.accompanist.insets)

// Mavericks
implementation(libs.bundles.mavericks)

// Kotest
testImplementation(libs.bundles.kotest)
testImplementation(libs.mockk)
testImplementation(libs.coroutines.test)

// Play Store
implementation(libs.bundles.plays)

// ETC
implementation(libs.timber)
implementation(libs.lottie.compose)
implementation(libs.coil)
implementation(libs.kakao.user)
implementation(libs.kotlinx.datetime)

implementation(libs.androidx.credentials.play.services.auth)
implementation(libs.google.auth)
implementation(libs.androidx.datastore.preferences)
implementation(libs.airbridge)
}
4 changes: 4 additions & 0 deletions app/src/debug/res/values-ko/strings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name_dev">돈키</string>
</resources>
4 changes: 4 additions & 0 deletions app/src/debug/res/values/strings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name_dev">Donkey</string>
</resources>
9 changes: 5 additions & 4 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,24 @@
xmlns:tools="http://schemas.android.com/tools">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<application
android:name=".ClodyApp"
android:name=".ClodyApplication"
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:icon="${appIcon}"
android:label="${appLabel}"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.CLODY"
android:usesCleartextTraffic="true"
tools:replace="android:icon,android:label,android:dataExtractionRules,android:fullBackupContent"
tools:targetApi="31">

<meta-data
Expand All @@ -37,7 +39,6 @@
<activity
android:name=".presentation.ui.main.MainActivity"
android:exported="true"
android:label="@string/app_name"
android:theme="@style/Theme.CLODY"
android:windowSoftInputMode="adjustResize">
<intent-filter>
Expand Down
Binary file added app/src/main/ic_launcher_dev-playstore.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -1,23 +1,33 @@
package com.sopt.clody

import android.app.Application
import co.ab180.airbridge.Airbridge
import co.ab180.airbridge.AirbridgeOptionBuilder
import com.airbnb.mvrx.Mavericks
import com.google.firebase.FirebaseApp
import com.kakao.sdk.common.KakaoSdk
import com.sopt.clody.presentation.utils.amplitude.AmplitudeUtils.initAmplitude
import dagger.hilt.android.HiltAndroidApp
import timber.log.Timber

@HiltAndroidApp
class ClodyApp : Application() {
class ClodyApplication : Application() {
override fun onCreate() {
super.onCreate()
Timber.plant(Timber.DebugTree())
initKakaoSdk()
FirebaseApp.initializeApp(this)
Mavericks.initialize(this)
initAmplitude(applicationContext)
initAirBridge()
}

private fun initKakaoSdk() {
KakaoSdk.init(this, BuildConfig.KAKAO_API_KEY)
}

private fun initAirBridge() {
val option = AirbridgeOptionBuilder("clody", "3ba2277abcd044f29356dc0ee32165ff").build()
Airbridge.initializeSDK(this, option)
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopt.clody.core
package com.sopt.clody.core.ad

import android.app.Activity

Expand Down
18 changes: 18 additions & 0 deletions app/src/main/java/com/sopt/clody/core/fcm/FcmTokenProvider.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.sopt.clody.core.fcm

import com.google.firebase.ktx.Firebase
import com.google.firebase.messaging.ktx.messaging
import kotlinx.coroutines.tasks.await
import timber.log.Timber
import javax.inject.Inject

class FcmTokenProvider @Inject constructor() {
suspend fun getToken(): String? {
return try {
Firebase.messaging.token.await()
} catch (e: Exception) {
Timber.e("FCM 토큰 수신 실패: ${e.message}")
null
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.sopt.clody.core.login

@JvmInline
value class KakaoAccessToken(override val value: String) : LoginAccessToken
Loading