Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

쌈@뽕한 내부 테스트 배포 ㄱㄱ? #177

Open
wants to merge 178 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
178 commits
Select commit Hold shift + click to select a range
309de78
[fix/#145] ci/cd에 LocalProperties 디버그 추가 및 문자열 형식 변경
MoonsuKang Feb 16, 2025
0ae825c
[FIX/#148] 디버그 모드 DEBUG 값을 true로 설정
DongChyeon Feb 17, 2025
ebb9d72
[FEAT/#148] 푸시 알람 “알람 해제” 버튼 클릭 시, 오늘 운세 미수령 시 미션 화면으로 이동
DongChyeon Feb 17, 2025
006ff39
[FEAT/#148] 푸시 알람 “알람 해제” 버튼 클릭을 통한 미션 이동 및 AlarmDismissIntent 발송 처리
DongChyeon Feb 17, 2025
b268bb0
[REFACTOR/#148] OritNavHost의 startDestination을 OrbitNavigator의 startD…
DongChyeon Feb 17, 2025
5f5ba17
[UI/#148] AlarmListItem 글자 간격 수정
DongChyeon Feb 17, 2025
1f50eb8
[FIX/#150] AlarmDay toDayOfWeek 변환 로직 수정
DongChyeon Feb 17, 2025
e2315e2
[FIX/#150] 다음 알람 시간 계산 시 AM/PM 여부 반영
DongChyeon Feb 17, 2025
0ed5a66
[FEAT/#150] 반복 요일 알람 트리거 시, 다음 반복 요일 알람 자동 예약
DongChyeon Feb 17, 2025
4cbbedd
[FIX/#150] 반복 요일 알람 트리거 시, 다음 주 동일 요일 알람 자동 예약 기능 추가 및 중복 예약 문제 해결
DongChyeon Feb 17, 2025
0b16eb8
Merge pull request #146 from YAPP-Github/fix/#145-gitaction-cicd
MoonsuKang Feb 17, 2025
30ab080
[REMOVE/#150] 중복 코드 제거
DongChyeon Feb 18, 2025
26b4969
[REMOVE/#150] 사용하지 않는 코드 제거
DongChyeon Feb 18, 2025
2ef0a9e
Merge pull request #149 from YAPP-Github/bugfix/#148-fix-push-alarm-d…
DongChyeon Feb 18, 2025
1d0d5df
Merge branch 'develop' into bugfix/#150-fix-recurring-alarm-error
DongChyeon Feb 18, 2025
3b4542d
Merge pull request #151 from YAPP-Github/bugfix/#150-fix-recurring-al…
DongChyeon Feb 18, 2025
814dc12
[ADD/#145] clickable 함수에 pressed 속성 추가
MoonsuKang Feb 18, 2025
8369348
[ADD/#145] 운세 탑앱바 뒤로가기 클릭 효과 수정
MoonsuKang Feb 18, 2025
7ea17ef
[REFACTOR/#145] 미션 모듈 클릭 효과 수정
MoonsuKang Feb 18, 2025
81dcac5
[REFACTOR/#145] 온보딩 모듈 클릭 효과 수정
MoonsuKang Feb 18, 2025
f688b70
[REFACTOR/#145] 세팅 모듈 클릭 효과 수정
MoonsuKang Feb 18, 2025
d1e3fc9
[REFACTOR/#145] Textfield KeyboardAction, SingleLine 속성 추가
MoonsuKang Feb 18, 2025
658b52b
[UI/#142] 활성화된 알람이 없을 시 캐릭터 변화
DongChyeon Feb 18, 2025
52ecd6c
[REFACTOR/#145] isDebug값 String으로 넣는 방법으로 수정
MoonsuKang Feb 18, 2025
05d4ed8
[UI/#142] 당일 운세 점수에 따른 캐릭터 변화
DongChyeon Feb 18, 2025
51864f9
[REFACTOR/#142] 불필요한 운세 상세 조회 API 호출 제거
DongChyeon Feb 18, 2025
fb43468
Merge pull request #153 from YAPP-Github/feat/#142-home-character-bas…
DongChyeon Feb 18, 2025
aed700e
[REFACTOR/#152] PickerItem 곡률 개선 및 안쓰는 변수 제거
DongChyeon Feb 18, 2025
aeac085
[UI/#152] AlarmListItem RippleEffect 추가
DongChyeon Feb 18, 2025
6773d6e
[UI/#152] AlarmListDropDownMenuItem RippleEffect 추가
DongChyeon Feb 18, 2025
7e61c28
[UI/#152] AlarmAddEditSettingItem RippleEffect 추가
DongChyeon Feb 18, 2025
a848564
[FIX/#152] 오늘 도착하는 알람 시간 포맷을 “a h:mm”으로 수정
DongChyeon Feb 18, 2025
b4719a7
[UI/#152] AlarmListItem 선택 시 색상 변경
DongChyeon Feb 18, 2025
5d6abe9
[FIX/#156] actions/cache@v4로 업데이트
DongChyeon Feb 18, 2025
844c92b
Merge pull request #157 from YAPP-Github/bugfix/#156-update-cache-v4
DongChyeon Feb 18, 2025
04f9722
[CI/#156] Re-run GitHub Actions
DongChyeon Feb 18, 2025
dee73ab
Merge pull request #155 from YAPP-Github/ui/alarm-qa-fix-154
DongChyeon Feb 18, 2025
0c081fb
[FEAT/#160] UserPreferences에 유저 이름 저장
DongChyeon Feb 19, 2025
c462535
[FEAT/#160] 온보딩 완료, 프로필 수정 시 변경한 유저 이름 저장
DongChyeon Feb 19, 2025
a5b5863
[FIX/#160] 오늘의 운세 문구에 유저 이름 반영
DongChyeon Feb 19, 2025
e793a17
[FEAT/#160] collect를 사용하여 유저 이름 실시간 반영
DongChyeon Feb 19, 2025
42e0e70
Merge pull request #161 from YAPP-Github/bugfix/#160-home-username
DongChyeon Feb 19, 2025
152f94f
[REFACTOR/#145] TextField showWarning 수정
MoonsuKang Feb 19, 2025
2f960e4
[REFACTOR/#145] 프로필 수정 저장 버튼 분기처리 및 텍스트 필드 입력 오류 수정
MoonsuKang Feb 19, 2025
efa1359
[REFACTOR/#145] 프로필 수정 저장 버튼 분기처리
MoonsuKang Feb 19, 2025
69e0fbe
[REFACTOR/#145] 세팅화면 진입 시 유저정보 갱신(임시)
MoonsuKang Feb 19, 2025
b16e68d
[REFACTOR/#145] 온보딩 바텀시트에서 아니오 클릭 시 이동 -> 시트 닫기로 수정
MoonsuKang Feb 19, 2025
b342a43
[UI/#162] OrbitToolTip 컴포넌트 제작
DongChyeon Feb 20, 2025
3194c09
[FEAT/#162] UserPreferences에 확인 안한 운세 여부 저장
DongChyeon Feb 20, 2025
93af0e1
[UI/#162] 확인 안한 운세 존재 시 툴팁 표시
DongChyeon Feb 20, 2025
bbfb26c
[REFACTOR/#162] 사용 안하는 isTodayFortuneAvailable 변수 제거
DongChyeon Feb 20, 2025
55070bd
Merge pull request #164 from YAPP-Github/feat/#162-home-tooltip-unche…
DongChyeon Feb 20, 2025
3998d9d
Merge branch 'develop' into refactor/#147-ripple-effect
MoonsuKang Feb 20, 2025
9292fb7
[REFACTOR/#147] ktlint format
MoonsuKang Feb 20, 2025
d331f36
[REFACTOR/#147] 생년월일 페이지에서 탑바 액션 활성화 및 액션 텍스트 색상 수정
MoonsuKang Feb 20, 2025
76ef1a2
Merge pull request #152 from YAPP-Github/refactor/#147-ripple-effect
MoonsuKang Feb 20, 2025
4830b2a
[FEAT/#165] 알람 스와이프로 제거 시 snooze 또는 dismiss 처리
DongChyeon Feb 20, 2025
08b2891
[FEAT/#165] 알람을 미루거나 해제 시 토스트 메시지 노출
DongChyeon Feb 20, 2025
c22793d
Merge pull request #168 from YAPP-Github/bugfix/#165-cannot-dismiss-a…
DongChyeon Feb 20, 2025
57c8fbc
[REFACTOR/#166] API요청 실패 시 다이얼로그 띄우기
MoonsuKang Feb 20, 2025
a74a69e
[REFACTOR/#166] 이름 정규식 개선
MoonsuKang Feb 20, 2025
4c0b63a
[REFACTOR/#166] 스트링 추출
MoonsuKang Feb 20, 2025
48e63fe
[REFACTOR/#166] 피커수정(진행중)
MoonsuKang Feb 20, 2025
75e5c5f
[REFACTOR/#166] 안 쓰는 변수 제거
DongChyeon Feb 21, 2025
abfe01b
[FIX/#166] 생년월일 입력 화면이 아닐 경우 updateBirthDate 실행되지 않도록 수정
DongChyeon Feb 21, 2025
732f613
Merge pull request #169 from YAPP-Github/refactor/#166-nickname-picker
MoonsuKang Feb 21, 2025
47d1009
[FEAT/#167] 첫 번째 알람 이벤트 기록( 두번째 발견시 아이디 제거)
MoonsuKang Feb 21, 2025
91110cc
[FEAT/#167] 첫 번째 알람 저장 삭제 추가
MoonsuKang Feb 21, 2025
8ed1c12
[ADD/#167] 데이터스토어 의존성 추가
MoonsuKang Feb 21, 2025
00aac0a
[FEAT/#167] 보상 존재에 따른 버튼 분기처리
MoonsuKang Feb 21, 2025
8b83609
[FEAT/#167] 보상 존재에 따른 버튼 분기처리
MoonsuKang Feb 21, 2025
5a3790f
Merge pull request #171 from YAPP-Github/feat/#167-fortune-branch
MoonsuKang Feb 21, 2025
b05c4a5
[REFACTOR/#172] 코디박스 사이 여백 수정
MoonsuKang Feb 21, 2025
b60130e
[REFACTOR/#172] 운세 컴포넌트 배치 수정
MoonsuKang Feb 21, 2025
e1d0807
[REFACTOR/#172] 보상 UX라이팅 수정
MoonsuKang Feb 21, 2025
ae0c24e
[ADD/#172] 운세 진입 시 로딩 추가
MoonsuKang Feb 21, 2025
6f5c557
Merge pull request #173 from YAPP-Github/refactor/#172-fortune-qa-v003
MoonsuKang Feb 21, 2025
affce8a
[REFACTOR/#174] 변수명 변경
MoonsuKang Feb 21, 2025
df5fd3c
[MOD/#174] 카드 클릭 이벤트 제거
MoonsuKang Feb 21, 2025
30f2749
Merge pull request #175 from YAPP-Github/refactor/#174-mission-card-c…
MoonsuKang Feb 21, 2025
3c5f9c2
[RELEASE] v1.0.0
DongChyeon Feb 21, 2025
8ea85ac
Merge pull request #176 from YAPP-Github/release/1.0.0
DongChyeon Feb 21, 2025
14109e8
[fix/#178] 홈으로 이동 시 온보딩 스택 제거
MoonsuKang Feb 21, 2025
091e541
Merge pull request #179 from YAPP-Github/bugfix/#178-onboarding-stack
MoonsuKang Feb 21, 2025
eab19be
[FEAT/#180] OrbitButton에 0.5초 디바운싱 적용
DongChyeon Feb 24, 2025
6d8896e
Merge pull request #181 from YAPP-Github/bugfix/#180-fix-button-multi…
DongChyeon Feb 24, 2025
edca4ef
[CHORE/#182] 운세 점수에 따른 캐릭터 에셋 교체
DongChyeon Feb 25, 2025
d5c0288
[UI/#182] BottomSheet 상단 stroke 추가
DongChyeon Feb 25, 2025
a513ab5
[UI/#182] BottomSheet 상단 stroke 색상 변경
DongChyeon Feb 26, 2025
330f667
[UI/#182] 확인하지 않은 운세 빨간 점 표시 위치 수정
DongChyeon Feb 26, 2025
7d61401
[UI/#182] 알람 리스트 아이템 divider 패딩 조절
DongChyeon Feb 26, 2025
d55d2c3
[UI/#182] 남은 시간이 1분 미만이면 "곧 울려요" 로 문구 수정
DongChyeon Feb 26, 2025
100d9d6
[FEAT/#182] 알람 추가 시 초기값 현재 시간으로 설정
DongChyeon Feb 27, 2025
560a9ec
Merge pull request #183 from YAPP-Github/ui/#182-fix-minor-adjustments
DongChyeon Feb 27, 2025
8c7d315
[FIX/#184] 스낵바 표시 중 즉각적인 이벤트 처리를 위해 collectLatest 적용
DongChyeon Feb 27, 2025
363b22c
[UI/#184] OrbitButton 디바운싱 시간 동안 비활성화 색상 표시
DongChyeon Feb 27, 2025
e87dab4
[UI/#184] AlarmListItem 우 -> 좌 스와이프 기능 구현
DongChyeon Feb 27, 2025
5e738a8
[FEAT/#184] 알람 Swipe to delete 기능 구현
DongChyeon Feb 27, 2025
d423ec2
[FIX/#184] 반복 알람에서 오늘 날짜를 고려하지 않는 문제 수정
DongChyeon Mar 1, 2025
ad33eeb
[refactor/#185] Picker Day값 01 -> 1
MoonsuKang Mar 1, 2025
eb528f5
[ui/#185] 시간모름 컴포넌트 생성
MoonsuKang Mar 1, 2025
5eeb27d
[refactor/#185] 생년월일 화면에 "시간모름"버튼 컴포넌트 적용
MoonsuKang Mar 1, 2025
37ff4b0
[refactor/#185] 운세 말풀선 폰트 변경
MoonsuKang Mar 1, 2025
ff14205
[refactor/#185] 온보딩 이름입력 에러문구 수정
MoonsuKang Mar 1, 2025
1cf481d
[FIX/#184] 삭제 후 복구 시 dismissState 초기화
DongChyeon Mar 1, 2025
2891760
[FEAT/#184] 알람 삭제/복구 시 실제 DB에 반영
DongChyeon Mar 1, 2025
66681d1
[FIX/#184] `SwipeToDismissBoxValue.EndToStart` 상태가 되었을 때만 onSwipe(id) 호출
DongChyeon Mar 2, 2025
32a54b4
[UI/#184] AlarmListItemMenu 컴포넌트 구현
DongChyeon Mar 2, 2025
d2c2975
[FEAT/#184] AlarmListItem 길게 누를 시 아이템 위치 정보 전달
DongChyeon Mar 2, 2025
521a042
[FEAT/#184] AlarmListItem 길게 누를 시 개별 삭제 메뉴 표시 기능 추가
DongChyeon Mar 2, 2025
8f4fbda
[FIX/#184] 선택 모드에서 LongPress 이벤트가 동작하지 않도록 수정
DongChyeon Mar 3, 2025
fe2095c
Merge pull request #187 from YAPP-Github/feat/#184-alarm-item-delete-…
DongChyeon Mar 3, 2025
5e15557
[refactor/#185] 성별 컴포넌트 Corner Radius 파라미터화
MoonsuKang Mar 3, 2025
29efc98
[refactor/#185] 연월피커에 월/일이 제대로 위치하지 않는 문제 해결
MoonsuKang Mar 3, 2025
7be875c
[add/#185] 유저정보 fetch 분기처리를 위한 state 추가
MoonsuKang Mar 3, 2025
1d09328
[refactor/#185] ViewModel 함수 분리 및 유저정보 fetch 분기처리
MoonsuKang Mar 3, 2025
f1d046a
[ADD/#185] 유저정보 Fetch 추가
MoonsuKang Mar 3, 2025
31c84b9
[UI/#188] AlarmSortDropDownMenu 컴포넌트 구현
DongChyeon Mar 3, 2025
9609b71
[FEAT/#188] 정렬 선택 기능 추가
DongChyeon Mar 3, 2025
a6c3051
[FEAT/#188] LazyColumn의 key 값을 alarm의 id로 설정
DongChyeon Mar 4, 2025
451b92f
[UI/#188] AlarmListItem 정렬 시 애니메이션 추가
DongChyeon Mar 4, 2025
a13de45
[UI/#188] Hold To Delete 시 AlarmListItem의 불필요한 패딩 삭제
DongChyeon Mar 4, 2025
51deb32
Merge pull request #189 from YAPP-Github/feat/#188-alarm-list-sorting
DongChyeon Mar 4, 2025
a5e442a
[REFACTOR/#191] ServiceHandler를 CoroutineScope로 대체
DongChyeon Mar 6, 2025
083e5a3
[REFACTOR/#185] 유저정보 카드 정보 수정(생년월일+태어난 시간)
MoonsuKang Mar 7, 2025
bffdc73
[REFACTOR/#185] TextField 테두리 유효성 검사 개선
MoonsuKang Mar 7, 2025
092940d
Merge pull request #193 from YAPP-Github/refactor/#191-replace-handle…
DongChyeon Mar 7, 2025
abc2c18
[FEAT/#192] 공휴일이 아닌 다음 주 요일로 알람 예약 기능 추가
DongChyeon Mar 6, 2025
26d35f7
[REFACTOR/#185] 불필요한 업데이트 제거
MoonsuKang Mar 7, 2025
0ffb15b
[FIX/#192] 알람 끌 시 미루기 기능을 통해 설정했던 알람까지 해제
DongChyeon Mar 7, 2025
e259b7a
[FIX/#192] 문의하기 버튼 누를 시 카카오톡 플러스 친구 추가로 연동
DongChyeon Mar 7, 2025
bc3d77d
[UI/#192] 설정 화면에서 최초 유저 정보 로딩 시 로딩 애니메이션 추가
DongChyeon Mar 7, 2025
cb611cf
[REFACTOR/#185] 정규식 통일화 및 텍스트필드가 비어있을 때 main color 적용
MoonsuKang Mar 7, 2025
eb46bb1
Merge pull request #186 from YAPP-Github/refactor/#185-v1.0.0-qa
MoonsuKang Mar 10, 2025
14f8910
Merge branch 'develop' into feat/#192-disable-alarm-on-holidays
DongChyeon Mar 11, 2025
5380674
[FIX/#192] 태어난 시간 누락 해결
DongChyeon Mar 11, 2025
4bba65a
Merge pull request #194 from YAPP-Github/feat/#192-disable-alarm-on-h…
DongChyeon Mar 11, 2025
e9c2597
[CHORE/#196] Amplitude 의존성 추가
DongChyeon Mar 17, 2025
24b56a0
[FEAT/#196] BuildConfigFields에 Amplitude API 키 값 추가
DongChyeon Mar 17, 2025
63fc267
[CHORE/#196] Analytics 모듈 초기 설정
DongChyeon Mar 17, 2025
896e6fc
[FEAT/#196] AnalyticsHelper 인터페이스 정의
DongChyeon Mar 17, 2025
48454a5
[FEAT/#196] Amplitude 기반의 AnalyticsHelper 구현
DongChyeon Mar 17, 2025
3a978e4
[FEAT/#196] Debug 환경을 위한 AnalyticsHelper 구현
DongChyeon Mar 17, 2025
f2b4d45
[FEAT/#196] AnalyticsModule에서 Debug/Release 환경에 따라 AnalyticsHelper 주입
DongChyeon Mar 17, 2025
ca3f646
[CHORE/#196] Amplitude 테스트 로깅 추가
DongChyeon Mar 17, 2025
6cca4ed
[CHORE/#196] local.properties 설정에 AMPLITUDE_API_KEY 추가
DongChyeon Mar 17, 2025
5350e09
[REFACTOR/#196] properties를 MutableMap이 아닌 Map으로 관리
DongChyeon Mar 17, 2025
286a5c6
[CHORE/#197] 온보딩 서비스 소개 페이지 이벤트 로깅
DongChyeon Mar 17, 2025
d2a2b25
[CHORE/#197] 온보딩 초기 알람 생성 페이지 이벤트 로깅
DongChyeon Mar 17, 2025
c91c62d
[CHORE/#197] 온보딩 생년월일 페이지 이벤트 로깅
DongChyeon Mar 17, 2025
6fef102
[CHORE/#197] 온보딩 태어난 시간 페이지 이벤트 로깅
DongChyeon Mar 17, 2025
af3b305
[CHORE/#197] 온보딩 이름 페이지 이벤트 로깅
DongChyeon Mar 17, 2025
e36fe82
[CHORE/#197] 온보딩 성별 페이지 이벤트 로깅
DongChyeon Mar 17, 2025
4853325
[CHORE/#197] 온보딩 권한 설정 페이지 이벤트 로깅
DongChyeon Mar 17, 2025
843546d
[FEAT/#197] AnalyticsHelper userId 설정 기능 추가
DongChyeon Mar 17, 2025
7edebd4
[CHORE/#197] 온보딩 완료 페이지 이벤트 로깅
DongChyeon Mar 17, 2025
2e1981a
[CHORE/#197] 알람 생성 이벤트 로깅
DongChyeon Mar 18, 2025
485c774
[CHORE/#197] 알람 해제 이벤트 로깅
DongChyeon Mar 18, 2025
c031d2e
[CHORE/#197] 알람 울림 이벤트 로깅
DongChyeon Mar 18, 2025
4238960
[CHORE/#197] 알람 미루기 이벤트 로깅 및 alarmId 값을 Long이 아닌 String 값으로 전송
DongChyeon Mar 18, 2025
d66621f
[CHORE/#197] 미션 시작 버튼 클릭 이벤트 로깅
DongChyeon Mar 18, 2025
3a94fa4
[CHORE/#197] 미션 하지 않기 버튼 클릭 이벤트 로깅
DongChyeon Mar 18, 2025
7f06970
[CHORE/#197] 미션 성공 이벤트 로깅
DongChyeon Mar 18, 2025
f1d270f
[REFACTOR/#197] mission_type 키 값을 문자열이 아닌 상수값으로 사용
DongChyeon Mar 18, 2025
51d3f02
[CHORE/#197] 미션 실패 이벤트 로깅
DongChyeon Mar 18, 2025
a12f5f3
[CHORE/#197] 운세 각 페이지 진입 이벤트 로깅
DongChyeon Mar 18, 2025
fb7ee63
[CHORE/#197] 운세 페이지 이탈 이벤트 로깅
DongChyeon Mar 18, 2025
bec1f4e
[CHORE/#197] 운세 페이지 최종 완료 이벤트 로깅
DongChyeon Mar 18, 2025
9df8c08
[CHORE/#197] 운세 부적 페이지 진입 이벤트 로깅
DongChyeon Mar 18, 2025
06b97bb
[CHORE/#197] 운세 부적 저장 버튼 클릭 이벤트 로깅
DongChyeon Mar 18, 2025
ab197ee
[REMOVE/#197] 스플래시 화면 테스트 로그 이벤트 제거
DongChyeon Mar 18, 2025
cbaf069
[REFACTOR/#197] 이벤트명 수정 onboarding_intro_next_click -> onboarding_int…
DongChyeon Mar 18, 2025
3dbb51c
[FIX/#197] Amplitude userId 설정 시 Orbit_ 접두사 붙이기
DongChyeon Mar 18, 2025
5d76068
[REFACTOR/#197] 이벤트명 수정 onboarding_access_view -> onboarding_permissi…
DongChyeon Mar 18, 2025
d52764e
[CHORE/#197] 운세 페이지 체류 시간 계산 이벤트 로깅
DongChyeon Mar 18, 2025
d0881e3
[FIX/#197] userId 접두사 ORBIT_ 으로 수정
DongChyeon Mar 18, 2025
fbf07b0
Merge pull request #198 from YAPP-Github/feat/#196-amplitude-setup
DongChyeon Mar 18, 2025
ff7d977
Merge pull request #199 from YAPP-Github/feat/#197-amplitude-event-lo…
DongChyeon Mar 19, 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
11 changes: 8 additions & 3 deletions .github/workflows/android_cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,17 @@ jobs:
FIREBASE_SECRET: ${{ secrets.FIREBASE_SECRET }}
run: echo $FIREBASE_SECRET | base64 --decode > app/google-services.json

# 7. local.properties
- name: Add local.properties
# Add Local Properties
- name: Add Local Properties
env:
BASE_URL: ${{ secrets.BASE_URL }}
AMPLITUDE_API_KEY: ${{ secrets.AMPLITUDE_API_KEY }}
run: |
echo "base.url=\"$BASE_URL\"" >> app/local.properties
echo -e "baseUrl=$BASE_URL\namplitudeApiKey=$AMPLITUDE_API_KEY" >> local.properties

# 7. Debug Local Properties Check
- name: Debug Local Properties
run: cat local.properties

# 8. Ktlint
- name: Run Ktlint Check
Expand Down
12 changes: 9 additions & 3 deletions .github/workflows/android_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
steps:
# Gradle Cache
- name: Cache Gradle packages
uses: actions/cache@v2
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
Expand Down Expand Up @@ -55,8 +55,14 @@ jobs:
# Add Local Properties
- name: Add Local Properties
env:
BASE_URL: ${{ secrets.BASE_URL }}
run: echo "baseUrl=$BASE_URL" >> local.properties
BASE_URL: ${{ secrets.BASE_URL }}
AMPLITUDE_API_KEY: ${{ secrets.AMPLITUDE_API_KEY }}
run: |
echo -e "baseUrl=$BASE_URL\namplitudeApiKey=$AMPLITUDE_API_KEY" >> local.properties

# Debug Local Properties Check
- name: Debug Local Properties
run: cat local.properties

# Run Lint and Build
- name: Run lint and build
Expand Down
4 changes: 2 additions & 2 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ android {
namespace = "com.yapp.orbit"

defaultConfig {
versionCode = 1
versionName = "0.0.2"
versionCode = 2
versionName = "1.0.0"
targetSdk = 34
}

Expand Down
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-permission android:name="android.permission.VIBRATE" />
Expand Down
6 changes: 4 additions & 2 deletions build-logic/src/main/java/com/yapp/convention/Extension.kt
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,17 @@ internal val ExtensionContainer.libs: VersionCatalog

internal fun CommonExtension<*, *, *, *, *, *>.addBuildConfigFields(project: Project) {
val baseUrl = project.getLocalProperty("baseUrl", "https://default.example.com")
val isDebug = project.providers.gradleProperty("isDebug").orNull?.toBoolean() ?: false
val amplitudeApikey = project.getLocalProperty("amplitudeApiKey", "")

buildTypes {
getByName("debug") {
buildConfigField("String", "BASE_URL", "\"$baseUrl\"")
buildConfigField("boolean", "DEBUG", isDebug.toString())
buildConfigField("String", "AMPLITUDE_API_KEY", "\"$amplitudeApikey\"")
buildConfigField("boolean", "DEBUG", "true")
}
getByName("release") {
buildConfigField("String", "BASE_URL", "\"$baseUrl\"")
buildConfigField("String", "AMPLITUDE_API_KEY", "\"$amplitudeApikey\"")
buildConfigField("boolean", "DEBUG", "false")
}
}
Expand Down
1 change: 1 addition & 0 deletions core/alarm/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ android {
}

dependencies {
implementation(projects.core.analytics)
implementation(projects.core.datastore)
implementation(projects.core.designsystem)
implementation(projects.core.media)
Expand Down
12 changes: 12 additions & 0 deletions core/alarm/src/main/java/com/yapp/alarm/AlarmConstants.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,19 @@ object AlarmConstants {
const val EXTRA_NOTIFICATION_ID = "com.yapp.orbit.EXTRA_NOTIFICATION_ID"

const val EXTRA_ALARM = "com.yapp.orbit.EXTRA_ALARM"
const val EXTRA_ALARM_DAY = "com.yapp.orbit.EXTRA_ALARM_DAY"

const val EXTRA_IS_SNOOZED = "com.yapp.orbit.EXTRA_IS_SNOOZED"
const val EXTRA_IS_DISMISS = "com.yapp.orbit.EXTRA_IS_DISMISS"

const val SNOOZE_ID_OFFSET = 10000

const val WEEK_INTERVAL_MILLIS: Long = 7 * 24 * 60 * 60 * 1000

val HOLIDAYS_2025 = setOf(
"2025-01-01", "2025-01-27", "2025-01-28", "2025-01-29", "2025-01-30",
"2025-03-01", "2025-03-03", "2025-05-05", "2025-05-06", "2025-06-06",
"2025-08-15", "2025-10-03", "2025-10-05", "2025-10-06", "2025-10-07",
"2025-10-08", "2025-10-09", "2025-12-25",
)
}
49 changes: 44 additions & 5 deletions core/alarm/src/main/java/com/yapp/alarm/AlarmHelper.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@ package com.yapp.alarm

import android.app.AlarmManager
import android.app.Application
import android.content.Intent
import android.util.Log
import com.yapp.alarm.pendingIntent.schedule.createAlarmReceiverPendingIntentForSchedule
import com.yapp.alarm.pendingIntent.schedule.createAlarmReceiverPendingIntentForUnSchedule
import com.yapp.alarm.services.AlarmService
import com.yapp.domain.model.Alarm
import com.yapp.domain.model.AlarmDay
import com.yapp.domain.model.toAlarmDays
import com.yapp.domain.model.toDayOfWeek
import java.time.Instant
import java.time.LocalDateTime
import java.time.ZoneId
import java.time.format.DateTimeFormatter
import javax.inject.Inject

class AlarmHelper @Inject constructor(
Expand All @@ -31,6 +31,21 @@ class AlarmHelper @Inject constructor(
}
}

fun scheduleWeeklyAlarm(alarm: Alarm, day: AlarmDay) {
val initialTriggerMillis = getNextAlarmTimeMillis(alarm, day) + AlarmConstants.WEEK_INTERVAL_MILLIS
val triggerMillis = findNextNonHolidayDate(initialTriggerMillis)

val pendingIntent = createAlarmReceiverPendingIntentForSchedule(app, alarm, day)

alarmManager.setExactAndAllowWhileIdle(
AlarmManager.RTC_WAKEUP,
triggerMillis,
pendingIntent,
)

Log.d("AlarmHelper", "Scheduled weekly alarm for $day at: $triggerMillis")
}

fun unScheduleAlarm(alarm: Alarm) {
val selectedDays = alarm.repeatDays.toAlarmDays()

Expand All @@ -53,16 +68,19 @@ class AlarmHelper @Inject constructor(
}
}

fun stopAlarm() {
app.stopService(Intent(app, AlarmService::class.java))
fun cancelSnoozedAlarm(alarmId: Long) {
val snoozedAlarmId = alarmId + AlarmConstants.SNOOZE_ID_OFFSET
val pendingIntent = createAlarmReceiverPendingIntentForUnSchedule(app, Alarm(id = snoozedAlarmId))
alarmManager.cancel(pendingIntent)
Log.d("AlarmHelper", "Canceled snoozed alarm with id: $snoozedAlarmId")
}

private fun setRepeatingAlarm(day: AlarmDay, alarm: Alarm) {
val alarmReceiverPendingIntent =
createAlarmReceiverPendingIntentForSchedule(app, alarm, day)
val firstAlarmTriggerMillis = getNextAlarmTimeMillis(alarm, day)

Log.d("AlarmHelper", "Setting repeating alarm at: $firstAlarmTriggerMillis")
Log.d("AlarmHelper", "Setting repeating alarm id: ${alarm.id} at: $firstAlarmTriggerMillis")

alarmManager.setExactAndAllowWhileIdle(
AlarmManager.RTC_WAKEUP,
Expand Down Expand Up @@ -114,4 +132,25 @@ class AlarmHelper @Inject constructor(

return epochMillis
}

private fun findNextNonHolidayDate(initialMillis: Long): Long {
val dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")

var adjustedMillis = initialMillis

while (true) {
val localDate = Instant.ofEpochMilli(adjustedMillis)
.atZone(ZoneId.systemDefault())
.toLocalDate()

val dateString = localDate.format(dateFormatter)

if (!AlarmConstants.HOLIDAYS_2025.contains(dateString)) {
return adjustedMillis // 공휴일이 아니라면 해당 날짜 반환
}

// 공휴일이라면 다음 1주 뒤로 이동
adjustedMillis += AlarmConstants.WEEK_INTERVAL_MILLIS
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import android.app.PendingIntent.FLAG_IMMUTABLE
import android.app.PendingIntent.FLAG_UPDATE_CURRENT
import android.content.Context
import android.content.Intent
import android.net.Uri
import com.yapp.alarm.AlarmConstants
import com.yapp.alarm.receivers.AlarmReceiver

Expand All @@ -30,3 +31,24 @@ fun createAlarmDismissIntent(
putExtra(AlarmConstants.EXTRA_NOTIFICATION_ID, notificationId)
}
}

fun createNavigateToMissionPendingIntent(
applicationContext: Context,
notificationId: Long,
): PendingIntent {
val navigateToMissionIntent = createNavigateToMissionIntent(notificationId)
return PendingIntent.getActivity(
applicationContext,
notificationId.toInt(),
navigateToMissionIntent,
FLAG_UPDATE_CURRENT or FLAG_IMMUTABLE,
)
}

fun createNavigateToMissionIntent(
notificationId: Long,
): Intent {
return Intent(Intent.ACTION_VIEW, Uri.parse("orbitapp://mission?notificationId=$notificationId")).apply {
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,7 @@ fun createAlarmReceiverPendingIntentForSchedule(
alarm: Alarm,
day: AlarmDay? = null,
): PendingIntent {
val alarmReceiverIntent = createAlarmReceiverIntent(
app,
alarm,
)
val alarmReceiverIntent = createAlarmReceiverIntent(app, alarm, day)
return PendingIntent.getBroadcast(
app,
generateAlarmIntentId(alarm.id.toInt(), day),
Expand All @@ -28,15 +25,17 @@ fun createAlarmReceiverPendingIntentForSchedule(
private fun createAlarmReceiverIntent(
app: Application,
alarm: Alarm,
day: AlarmDay? = null,
): Intent {
return Intent(AlarmConstants.ACTION_ALARM_TRIGGERED).apply {
setClass(app, AlarmReceiver::class.java)
putExtra(AlarmConstants.EXTRA_ALARM, alarm)
day?.let { putExtra(AlarmConstants.EXTRA_ALARM_DAY, it.name) }
}
}

fun generateAlarmIntentId(id: Int, day: AlarmDay?): Int {
return day?.let {
(id * 10) + it.ordinal + 1
(id * 10) + ((day.ordinal + 6) % 7) + 1
} ?: id
}
Loading
Loading