From c93f9c0570d4ad2be3b9bf3f3c8bc21ddbfe67b5 Mon Sep 17 00:00:00 2001 From: GunHyung Ham <54674781+ham2174@users.noreply.github.com> Date: Fri, 20 Sep 2024 02:34:17 +0900 Subject: [PATCH] =?UTF-8?q?[Release]=20=EB=B2=84=EC=A0=84=20=EC=97=85?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=8A=B8=20-=201.0.0=20(#96)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Feat] Google Services 추가 (#54) [build] : google-services 추가 * 버전 업데이트 0.9.2-beta * [refactor] : 자기소개 api 호출 순서 변경 * [refactor] : 자기소개 바텀 버튼 활성 상태 로직 변경 * [build] : 이미지 blur 이펙트 라이브러리 추가 * [fix] : 보틀 보관함 리스트, 핑퐁 상대방 이미지 블러 효과 처리 * [Docs] Read.me 작성 (#60) * [docs] : 리드미 제작 * [docs] : 리드미 수정 * [Release] 0.9.2-beta (#59) * 버전 코드 수정 - 0.9.0-beta * [fix] : 텍스트 필드 포커스 시 화면 스크롤 영역 정상 작동 * [fix] : 신고 화면 화면이동 로직 수정 * [fix] : 보틀 보관함에 대화중 보틀만 존재시 모래사장 화면 상태의 IN_BOTTLE_BOX 갯수 수정 * [fix] : 자기소개 이미지 선택 안했을 시 생성 불가 * [fix] : 자기소개, 프로필 이미지 API 동시에 전달 * [refactor] : 자기소개 뒤로가기 버튼 클릭 효과 제거 * [feat] : 스플래쉬 화면에서 프로필 제작 상태에 따라 화면 이동 온보딩/모래사장 분기 처리 * [fix] : 카카오 로그인 취소시 로그인 화면 버튼 비활성화 오류 수정 * [build] : google-services 추가 * 버전 코드 수정 및 광고 ID 퍼미션 추가 * [Docs] 이슈, 풀리퀘 템플릿 추가 (#61) [docs] : 이슈, 풀리퀘 템플릿 추가 * Update issue templates * [Fix] 프로필 이미지 다운 샘플링 (#65) * [feat] : 로딩 화면시 터치 제어 * [refactor] : BottlesTopBar Modifier 파라미터 변경 * [fix] : 이미지 다운샘플링 적용 * [feat] : 프로필 이미지 로딩 스크린 적용 * [Feat] Firebase Crashlytics 및 Analytics 셋팅 (#67) * [build] : 파이어베이스 크래시리틱스 라이브러리 및 플러그인 추가 * [build] : 파이어베이스 관련 플러그인 빌드로직으로 관리 * [refactor] : 로그 삭제 * [feat] : 파이어베이스 애널리틱스 인스턴스 활성화 * [refactor] : 자기소개 화면 이동 오류 수정 * [Feat] 핑퐁 화면 캡처 제한 (#69) [feat] : 핑퐁 화면 캡처 제한 * [Fix] 모래사장 상태 오류 수정 (#70) * [fix] : 모래사장 상태 오류 수정 * [refactor] : 온보딩 버튼 클릭 영역 확장 * [Release] 버전 업데이트 - 0.9.3-beta (#71) * 버전 코드 수정 - 0.9.0-beta * [fix] : 텍스트 필드 포커스 시 화면 스크롤 영역 정상 작동 * [fix] : 신고 화면 화면이동 로직 수정 * [fix] : 보틀 보관함에 대화중 보틀만 존재시 모래사장 화면 상태의 IN_BOTTLE_BOX 갯수 수정 * [fix] : 자기소개 이미지 선택 안했을 시 생성 불가 * [fix] : 자기소개, 프로필 이미지 API 동시에 전달 * [refactor] : 자기소개 뒤로가기 버튼 클릭 효과 제거 * [feat] : 스플래쉬 화면에서 프로필 제작 상태에 따라 화면 이동 온보딩/모래사장 분기 처리 * [fix] : 카카오 로그인 취소시 로그인 화면 버튼 비활성화 오류 수정 * [build] : google-services 추가 * 버전 업데이트 0.9.2-beta * [refactor] : 자기소개 api 호출 순서 변경 * [refactor] : 자기소개 바텀 버튼 활성 상태 로직 변경 * [build] : 이미지 blur 이펙트 라이브러리 추가 * [fix] : 보틀 보관함 리스트, 핑퐁 상대방 이미지 블러 효과 처리 * 버전 코드 수정 및 광고 ID 퍼미션 추가 * [Docs] Read.me 작성 (#60) * [docs] : 리드미 제작 * [docs] : 리드미 수정 * 버전 업데이트 - 0.9.3-beta * [feat] : 하드웨어 가속 설정 * [Feat] 핑퐁 화면 당겨서 새로고침 기능 구현 (#74) * [feat] : 핑퐁 화면 Pull To Refresh 기능 구현 * [chore] : 주석 제거 * [feat] : 핑퐁 읽음 처리 usecase 구현 * [feat] : 핑퐁 디테일 화면 생성시 읽음 처리 * [feat] : 시스템 네비게이션 뒤로가기 시 뒤로가기 인텐트 추가 * [Feat] FCM 기능 추가 (#76) * [build] : FCM 의존성 추가 * [feat] : fcm 토큰 로컬 저장 및 가져오기 구현 * [feat] : fcm 토큰 proto 파일 추가 * [feat] : 토큰 재발행시 fcm 토큰 전달 구현 * [feat] : 토큰 재발행시 fcm 토큰 전달 * [feat] : 카카오 로그인시 fcm 토큰 전달 * [feat] : fcm 토큰 획득 및 fcm 서비스 구현 * [feat] : 모래사장 화면에서 알림 권한 획득 구현 * [Release] 버전 업데이트 - 0.9.4-beta (#77) * 버전 업데이트 - 0.9.4-beta / 10005 * [hotfix] : 알람 권한 결과 메세지 삭제 * [Feat] Timber 적용 및 FCM 토큰 업데이트 대응 (#82) * [build] : Timber 라이브러리 추가 * [feat] : Timber 디버그 모드 일때만 활성화 및 FCM 토큰 획득 시 로그 출력 * [build] : app 모듈 - datastore 모듈 의존성 제거 * [build] : data 모듈 Timber 의존성 추가 * [feat] : Token Preferences에 isUpdatedFcmToken Boolean 값 추가 * [feat] : fcm 토큰 업데이트 시 데이터 스토어 로직 정의 * [feat] : fcm 토큰 업데이트 api 구현 * [feat] : AuthRepository - fcm 토큰 로컬 업데이트 및 앱 서버 업데이트 로직 구현 * [feat] : fcm 토큰 업데이트 시 로컬 저장 및 onResum 마다 업데이트 판별시 앱 서버 토큰 전달 로직 구현 * [Feat] 데이터 스토어에 FCM 토큰이 없을 경우 저장하는 로직 구현 (#83) [feat] : 데이터 스토어에 FCM 토큰이 없을 경우 저장하는 로직 * [Release] 버전 업데이트 - 0.9.5-beta (#84) * 버전 코드 수정 - 0.9.0-beta * [fix] : 텍스트 필드 포커스 시 화면 스크롤 영역 정상 작동 * [fix] : 신고 화면 화면이동 로직 수정 * [fix] : 보틀 보관함에 대화중 보틀만 존재시 모래사장 화면 상태의 IN_BOTTLE_BOX 갯수 수정 * [fix] : 자기소개 이미지 선택 안했을 시 생성 불가 * [fix] : 자기소개, 프로필 이미지 API 동시에 전달 * [refactor] : 자기소개 뒤로가기 버튼 클릭 효과 제거 * [feat] : 스플래쉬 화면에서 프로필 제작 상태에 따라 화면 이동 온보딩/모래사장 분기 처리 * [fix] : 카카오 로그인 취소시 로그인 화면 버튼 비활성화 오류 수정 * [build] : google-services 추가 * 버전 업데이트 0.9.2-beta * [refactor] : 자기소개 api 호출 순서 변경 * [refactor] : 자기소개 바텀 버튼 활성 상태 로직 변경 * [build] : 이미지 blur 이펙트 라이브러리 추가 * [fix] : 보틀 보관함 리스트, 핑퐁 상대방 이미지 블러 효과 처리 * 버전 코드 수정 및 광고 ID 퍼미션 추가 * [Docs] Read.me 작성 (#60) * [docs] : 리드미 제작 * [docs] : 리드미 수정 * [Release] 버전 업데이트 - 0.9.3-beta (#72) * [Feat] Google Services 추가 (#54) [build] : google-services 추가 * 버전 업데이트 0.9.2-beta * [refactor] : 자기소개 api 호출 순서 변경 * [refactor] : 자기소개 바텀 버튼 활성 상태 로직 변경 * [build] : 이미지 blur 이펙트 라이브러리 추가 * [fix] : 보틀 보관함 리스트, 핑퐁 상대방 이미지 블러 효과 처리 * [Docs] Read.me 작성 (#60) * [docs] : 리드미 제작 * [docs] : 리드미 수정 * [Release] 0.9.2-beta (#59) * 버전 코드 수정 - 0.9.0-beta * [fix] : 텍스트 필드 포커스 시 화면 스크롤 영역 정상 작동 * [fix] : 신고 화면 화면이동 로직 수정 * [fix] : 보틀 보관함에 대화중 보틀만 존재시 모래사장 화면 상태의 IN_BOTTLE_BOX 갯수 수정 * [fix] : 자기소개 이미지 선택 안했을 시 생성 불가 * [fix] : 자기소개, 프로필 이미지 API 동시에 전달 * [refactor] : 자기소개 뒤로가기 버튼 클릭 효과 제거 * [feat] : 스플래쉬 화면에서 프로필 제작 상태에 따라 화면 이동 온보딩/모래사장 분기 처리 * [fix] : 카카오 로그인 취소시 로그인 화면 버튼 비활성화 오류 수정 * [build] : google-services 추가 * 버전 코드 수정 및 광고 ID 퍼미션 추가 * [Docs] 이슈, 풀리퀘 템플릿 추가 (#61) [docs] : 이슈, 풀리퀘 템플릿 추가 * Update issue templates * [Fix] 프로필 이미지 다운 샘플링 (#65) * [feat] : 로딩 화면시 터치 제어 * [refactor] : BottlesTopBar Modifier 파라미터 변경 * [fix] : 이미지 다운샘플링 적용 * [feat] : 프로필 이미지 로딩 스크린 적용 * [Feat] Firebase Crashlytics 및 Analytics 셋팅 (#67) * [build] : 파이어베이스 크래시리틱스 라이브러리 및 플러그인 추가 * [build] : 파이어베이스 관련 플러그인 빌드로직으로 관리 * [refactor] : 로그 삭제 * [feat] : 파이어베이스 애널리틱스 인스턴스 활성화 * [refactor] : 자기소개 화면 이동 오류 수정 * [Feat] 핑퐁 화면 캡처 제한 (#69) [feat] : 핑퐁 화면 캡처 제한 * [Fix] 모래사장 상태 오류 수정 (#70) * [fix] : 모래사장 상태 오류 수정 * [refactor] : 온보딩 버튼 클릭 영역 확장 * 버전 업데이트 - 0.9.3-beta * [feat] : 하드웨어 가속 설정 * [Release] 버전 업데이트 - 0.9.4-beta (#78) * [Feat] Google Services 추가 (#54) [build] : google-services 추가 * 버전 업데이트 0.9.2-beta * [refactor] : 자기소개 api 호출 순서 변경 * [refactor] : 자기소개 바텀 버튼 활성 상태 로직 변경 * [build] : 이미지 blur 이펙트 라이브러리 추가 * [fix] : 보틀 보관함 리스트, 핑퐁 상대방 이미지 블러 효과 처리 * [Docs] Read.me 작성 (#60) * [docs] : 리드미 제작 * [docs] : 리드미 수정 * [Release] 0.9.2-beta (#59) * 버전 코드 수정 - 0.9.0-beta * [fix] : 텍스트 필드 포커스 시 화면 스크롤 영역 정상 작동 * [fix] : 신고 화면 화면이동 로직 수정 * [fix] : 보틀 보관함에 대화중 보틀만 존재시 모래사장 화면 상태의 IN_BOTTLE_BOX 갯수 수정 * [fix] : 자기소개 이미지 선택 안했을 시 생성 불가 * [fix] : 자기소개, 프로필 이미지 API 동시에 전달 * [refactor] : 자기소개 뒤로가기 버튼 클릭 효과 제거 * [feat] : 스플래쉬 화면에서 프로필 제작 상태에 따라 화면 이동 온보딩/모래사장 분기 처리 * [fix] : 카카오 로그인 취소시 로그인 화면 버튼 비활성화 오류 수정 * [build] : google-services 추가 * 버전 코드 수정 및 광고 ID 퍼미션 추가 * [Docs] 이슈, 풀리퀘 템플릿 추가 (#61) [docs] : 이슈, 풀리퀘 템플릿 추가 * Update issue templates * [Fix] 프로필 이미지 다운 샘플링 (#65) * [feat] : 로딩 화면시 터치 제어 * [refactor] : BottlesTopBar Modifier 파라미터 변경 * [fix] : 이미지 다운샘플링 적용 * [feat] : 프로필 이미지 로딩 스크린 적용 * [Feat] Firebase Crashlytics 및 Analytics 셋팅 (#67) * [build] : 파이어베이스 크래시리틱스 라이브러리 및 플러그인 추가 * [build] : 파이어베이스 관련 플러그인 빌드로직으로 관리 * [refactor] : 로그 삭제 * [feat] : 파이어베이스 애널리틱스 인스턴스 활성화 * [refactor] : 자기소개 화면 이동 오류 수정 * [Feat] 핑퐁 화면 캡처 제한 (#69) [feat] : 핑퐁 화면 캡처 제한 * [Fix] 모래사장 상태 오류 수정 (#70) * [fix] : 모래사장 상태 오류 수정 * [refactor] : 온보딩 버튼 클릭 영역 확장 * [Release] 버전 업데이트 - 0.9.3-beta (#71) * 버전 코드 수정 - 0.9.0-beta * [fix] : 텍스트 필드 포커스 시 화면 스크롤 영역 정상 작동 * [fix] : 신고 화면 화면이동 로직 수정 * [fix] : 보틀 보관함에 대화중 보틀만 존재시 모래사장 화면 상태의 IN_BOTTLE_BOX 갯수 수정 * [fix] : 자기소개 이미지 선택 안했을 시 생성 불가 * [fix] : 자기소개, 프로필 이미지 API 동시에 전달 * [refactor] : 자기소개 뒤로가기 버튼 클릭 효과 제거 * [feat] : 스플래쉬 화면에서 프로필 제작 상태에 따라 화면 이동 온보딩/모래사장 분기 처리 * [fix] : 카카오 로그인 취소시 로그인 화면 버튼 비활성화 오류 수정 * [build] : google-services 추가 * 버전 업데이트 0.9.2-beta * [refactor] : 자기소개 api 호출 순서 변경 * [refactor] : 자기소개 바텀 버튼 활성 상태 로직 변경 * [build] : 이미지 blur 이펙트 라이브러리 추가 * [fix] : 보틀 보관함 리스트, 핑퐁 상대방 이미지 블러 효과 처리 * 버전 코드 수정 및 광고 ID 퍼미션 추가 * [Docs] Read.me 작성 (#60) * [docs] : 리드미 제작 * [docs] : 리드미 수정 * 버전 업데이트 - 0.9.3-beta * [feat] : 하드웨어 가속 설정 * [Feat] 핑퐁 화면 당겨서 새로고침 기능 구현 (#74) * [feat] : 핑퐁 화면 Pull To Refresh 기능 구현 * [chore] : 주석 제거 * [feat] : 핑퐁 읽음 처리 usecase 구현 * [feat] : 핑퐁 디테일 화면 생성시 읽음 처리 * [feat] : 시스템 네비게이션 뒤로가기 시 뒤로가기 인텐트 추가 * [Feat] FCM 기능 추가 (#76) * [build] : FCM 의존성 추가 * [feat] : fcm 토큰 로컬 저장 및 가져오기 구현 * [feat] : fcm 토큰 proto 파일 추가 * [feat] : 토큰 재발행시 fcm 토큰 전달 구현 * [feat] : 토큰 재발행시 fcm 토큰 전달 * [feat] : 카카오 로그인시 fcm 토큰 전달 * [feat] : fcm 토큰 획득 및 fcm 서비스 구현 * [feat] : 모래사장 화면에서 알림 권한 획득 구현 * 버전 업데이트 - 0.9.4-beta / 10005 * [hotfix] : 알람 권한 결과 메세지 삭제 * 버전 업데이트 - 0.9.5-beta * [Fix, Feat] 디자인 시스템 컴포넌트 수정 및 추가 (#86) * [refactor] : BottlesSolidButton 수정 (cherry picked from commit 093f2339ceb66fe33eb7cf1f7682f9fb0f8c25f9) * [chore] : 아이콘 에셋 추가 (cherry picked from commit 7cda32ebc025c4ba1be83cf07c525810d84404b1) * [feat] : BottlesIconButton 원형 아이콘 버튼 추가 (cherry picked from commit 8071247b298f84d6cd400b091eac71eb8a615185) * [refactor] : BottlesBottomBar 수정 (cherry picked from commit 820fc2826677df0be3c7b1a3c89097a025b124d8) * [refactor] : typography lineHeight 값 수정 (cherry picked from commit 697c2de9a731d72c09da993814184e5d6105228a) * [feat] : BottlesBalloonPopup modifier shadow 속성 추가 (cherry picked from commit d2b7e8142402ebde00d72178b6ba9094c73120f5) * [chore] : 아이콘 에셋 추가 (cherry picked from commit 55332a019b24b6023ec93f41e0fca407b8c0dbee) * [feat] : 디자인시스템 - shape L 사이즈 추가 (cherry picked from commit b7c18963e8f7f1b4604d75b3975696c74a5e6ee6) * [refactor] : BottlesAlertDialog 디자인 시스템 수정 반영 (cherry picked from commit fcf17204cc0b44b72042fcda14f7c5a5c0f12723) * [refactor] : 변경된 BottlesAlertDialog 적용 (cherry picked from commit b9597e3421dea3c90444527a86b75b858ee8bdfd) * [feat] : 컬러 스키마 추가 (cherry picked from commit a865599cf3e9051fcff7c4f714d6ea64eca600d2) * [feat] : BottlesToggleButton 구현 (cherry picked from commit d7b82db17be07187e85bdcf76b815ef16003e3b4) * [refactor] : 프로필 이미지 컴포넌트 분리 (cherry picked from commit 4670c179cc6bdefa2ab538152f385edf7099192c) * [feat] : 프로필 edit 타입 컴포넌트 추가 (cherry picked from commit 82b526b83d85a00c40148f523d5c8fb64d72d86d) * [feat] : BottlesSettingItem 4종 구현 (cherry picked from commit 573d1df7302ce163701a676189d7cced0753ec56) * [Feat] 마이 페이지 네이티브 마이그레이션 (#87) * [fix] : 웹뷰 관련 코드 삭제 * [feat] : BottlesCard 컴포넌트 구현 * [feat] : CardProfile UI에 BottlesCard 컴포넌트 적용 * [feat] : 디바이스 내 연락처 가져오는 로직 구현 * [refactor] : TopBar horizontalPadding 제거 * [fix] : 연락처 불러올 때 하이폰 제거 및 중복된 번호 제거 * [refactor] : BottlesToggleButton 람다 파라미터 제거 * [refactor] : BottlesTopBar Row에 horizontalPadding 추가 * [feat] : 계정관리, 알림 설정 화면 구현 * [feat] : 마이페이지 네이브티 화면으로 마이그레이션 * [Feat] 마이페이지 - 연락처 차단, 앱 선택적 업데이트 기능 구현 (#88) * [feat] : 앱 버전 확인 API 구현 * [feat] : 앱 버전 확인 리스폰스 추가 * [feat] : Json 데이터 설정 - ignoreUnknowKeys = true로 변경 * [feat] : 앱 최신버전 획득 로직 구현 * [feat] : 앱 업데이트 클릭시 플레이 스토어로 이동 로직 구현 * 충돌 해결 * [refactor] : 프로필 이미지 블러처리 제거 * [refactor] : 연락처 차단 서브 타이틀 임시 변경 * [Feat] 앱 강제 업데이트 로직 구현 (#89) * [refactor] : 설정 화면에서 뒤로가기 클릭시 popBackStack 호출로 변경 * [feat] : 마이 페이지 유저 프로필 데이터 호출 * [fix] : 로그아웃 및 회원 탈퇴 기능 오류 수정 * [feat] : 최소 앱 버전 불러오기 구현 * [feat] : 스플래쉬 화면 강제 업데이트 구현 * [feat] : 모래사장 화면 앱 강제 업데이트 로직 구현 * [Feat] 알림 설정 기능 구현 (#90) * [feat] : 알림 설정 목록 불러오기 및 설정하기 API 구현 * [feat] : 설정한 알림 목록 불러오기 로직 및 알림 설정 로직 구현 * [feat] : 알림 설정 기능 구현 * [fix] : 스플래시 화면 강제 업데이트 다이얼로그 상태 초기값 변경 * [feat] : 알림 권한 획득 시 모든 알림 설정 true로 변경 * [Refactor] 푸쉬 알림 아이콘 변경 및 온보딩 페이지 오류 수정 (#92) * [refactor] : UpdateAppVersionReponse 타입 변경 * [refactor] : 앱 아이콘 백그라운드 변경 * [refactor] : 알림 아이콘 변경 * [refactor] : api 33버전 이상 푸쉬 알림 권한 획득 로직으로 변경 * [refactor] : 매칭 활성화 UI 보류 * [refactor] : BottlesBottomBar 디바운스 활성화 파라미터 추가 * [refactor] : 온보딩 페이지 오류 수정 * 앱 버전 업데이트 - 1.0.0 * [docs] : 리드미 수정 --- README.md | 21 +- app/build.gradle.kts | 1 + app/src/main/AndroidManifest.xml | 3 +- app/src/main/bottle_app_icon-playstore.png | Bin 157204 -> 151402 bytes .../java/com/team/bottles/BottleFcmService.kt | 2 +- .../bottles/di/usecase/AuthUseCaseModule.kt | 14 + .../bottles/di/usecase/UserUseCaseModule.kt | 28 ++ .../team/bottles/navigation/BottlesNavHost.kt | 22 +- .../drawable/bottle_app_icon_background.xml | 74 ----- .../res/drawable/bottle_notification_icon.xml | 10 + .../res/mipmap-anydpi-v26/bottle_app_icon.xml | 2 +- .../bottle_app_icon_round.xml | 2 +- .../main/res/mipmap-hdpi/bottle_app_icon.webp | Bin 2414 -> 2358 bytes .../mipmap-hdpi/bottle_app_icon_round.webp | Bin 4332 -> 4174 bytes .../main/res/mipmap-mdpi/bottle_app_icon.webp | Bin 1754 -> 1540 bytes .../mipmap-mdpi/bottle_app_icon_round.webp | Bin 2714 -> 2538 bytes .../res/mipmap-xhdpi/bottle_app_icon.webp | Bin 3828 -> 3634 bytes .../mipmap-xhdpi/bottle_app_icon_round.webp | Bin 6156 -> 6058 bytes .../res/mipmap-xxhdpi/bottle_app_icon.webp | Bin 6722 -> 6452 bytes .../mipmap-xxhdpi/bottle_app_icon_round.webp | Bin 10516 -> 10390 bytes .../res/mipmap-xxxhdpi/bottle_app_icon.webp | Bin 11250 -> 11072 bytes .../mipmap-xxxhdpi/bottle_app_icon_round.webp | Bin 16820 -> 16672 bytes .../res/values/bottle_app_icon_background.xml | 4 + app/src/main/res/values/string.xml | 2 +- core/data/build.gradle.kts | 1 + .../core/data/mapper/AlimyResponseMapper.kt | 20 ++ .../data/mapper/NotificationTypeMapper.kt | 12 + .../mapper/UpdateAppVersionResponseMapper.kt | 9 + .../data/repository/AuthRepositoryImpl.kt | 8 + .../data/repository/UserRepositoryImpl.kt | 32 ++ ...Module.kt => DataStoreDataSourceModule.kt} | 2 +- .../designsystem/components/bars/BottomBar.kt | 13 +- .../designsystem/components/bars/TopBar.kt | 7 +- .../components/buttons/IconButton.kt | 44 ++- .../components/buttons/SolidButton.kt | 43 ++- .../designsystem/components/cards/Card.kt | 63 ++++ .../designsystem/components/etc/Profile.kt | 143 +++++++++ .../designsystem/components/etc/Toggle.kt | 78 +++++ .../designsystem/components/etc/UserInfo.kt | 107 +++++-- .../components/lists/SettingItem.kt | 226 ++++++++++++++ .../components/popup/BalloonPopup.kt | 62 +++- .../core/designsystem/foundation/Color.kt | 1 + .../core/designsystem/foundation/Shape.kt | 1 + .../core/designsystem/theme/BottlesColor.kt | 3 +- .../core/designsystem/theme/BottlesShape.kt | 2 + .../designsystem/theme/BottlesTypography.kt | 20 +- .../core/designsystem/util/BottlesIcons.kt | 2 + .../src/main/res/drawable/ic_pencil_12.xml | 14 + .../src/main/res/drawable/ic_warning_24.xml | 14 + .../domain/auth/repository/AuthRepository.kt | 4 + .../usecase/GetLatestAppVersionUseCase.kt | 19 ++ .../usecase/GetRequiredAppVersionUseCase.kt | 19 ++ .../core/domain/user/model/Notification.kt | 14 + .../domain/user/repository/UserRepository.kt | 10 + .../domain/user/usecase/GetContactsUseCase.kt | 19 ++ .../usecase/GetSettingNotificationsUseCase.kt | 20 ++ .../usecase/UpdateBlockingContactsUseCase.kt | 20 ++ .../UpdateSettingNotificationUseCase.kt | 21 ++ core/local/.gitignore | 1 + core/local/build.gradle.kts | 12 + .../local/datasource/DeviceDataSource.kt | 7 + .../local/datasource/DeviceDataSourceImpl.kt | 37 +++ .../bottles/local/di/LocalDataSourceModule.kt | 17 + .../src/main/kotlin/SettingNavigator.kt | 11 + .../team/bottles/network/api/AuthService.kt | 5 + .../team/bottles/network/api/UserService.kt | 17 + .../network/datasource/AuthDataSource.kt | 3 + .../network/datasource/AuthDataSourceImpl.kt | 4 + .../network/datasource/UserDataSource.kt | 9 + .../network/datasource/UserDataSourceImpl.kt | 14 + .../team/bottles/network/di/NetworkModule.kt | 1 + .../auth/request/BlockContactListRequest.kt | 9 + .../auth/response/UpdateAppVersionResponse.kt | 10 + .../dto/user/request/AlimyOnOffRequest.kt | 11 + .../dto/user/response/AlimyResponse.kt | 19 ++ .../kotlin/com/team/bottles/core/ui/Alert.kt | 292 +++++++++++++++--- .../com/team/bottles/core/ui/CardProfile.kt | 24 +- .../team/bottles/core/ui/model/AlertType.kt | 18 +- feat/mypage/build.gradle.kts | 23 +- .../team/bottles/feat/mypage/MyPageBridge.kt | 37 --- .../team/bottles/feat/mypage/MyPageRoute.kt | 76 ++++- .../team/bottles/feat/mypage/MyPageScreen.kt | 109 ++++--- .../bottles/feat/mypage/MyPageViewModel.kt | 113 +++++-- .../feat/mypage/components/SettingList.kt | 129 ++++++++ .../bottles/feat/mypage/mvi/MyPageIntent.kt | 20 +- .../feat/mypage/mvi/MyPageSideEffect.kt | 16 +- .../bottles/feat/mypage/mvi/MyPageUiState.kt | 13 +- .../mypage/navigation/MyPageNavigation.kt | 10 +- .../feat/onboarding/OnboardingScreen.kt | 43 ++- .../feat/onboarding/OnboardingViewModel.kt | 2 +- .../feat/onboarding/mvi/OnboardingUiState.kt | 2 +- .../bottles/feat/pingpong/PingPongScreen.kt | 10 +- .../components/IntroductionContents.kt | 4 +- .../introduction/IntroductionScreen.kt | 7 +- .../introduction/component/SelecteImage.kt | 2 + .../team/bottles/feat/report/ReportScreen.kt | 20 +- feat/sandbeach/build.gradle.kts | 4 + .../bottles/feat/sandbeach/SandBeachRoute.kt | 23 +- .../bottles/feat/sandbeach/SandBeachScreen.kt | 15 +- .../feat/sandbeach/SandBeachViewModel.kt | 32 +- .../feat/sandbeach/mvi/SandBeachIntent.kt | 2 + .../feat/sandbeach/mvi/SandBeachSideEffect.kt | 2 + .../feat/sandbeach/mvi/SandBeachUiState.kt | 10 +- feat/setting/.gitignore | 1 + feat/setting/build.gradle.kts | 15 + .../setting/account/AccountSettingRoute.kt | 32 ++ .../setting/account/AccountSettingScreen.kt | 76 +++++ .../account/AccountSettingViewModel.kt | 84 +++++ .../account/mvi/AccountSettingIntent.kt | 19 ++ .../account/mvi/AccountSettingSideEffect.kt | 11 + .../account/mvi/AccountSettingUiState.kt | 31 ++ .../feat/setting/components/AccountSetting.kt | 57 ++++ .../setting/components/NotificationSetting.kt | 82 +++++ .../setting/navigation/SettingNavigation.kt | 29 ++ .../notification/NotificationSettingRoute.kt | 29 ++ .../notification/NotificationSettingScreen.kt | 67 ++++ .../NotificationSettingViewModel.kt | 111 +++++++ .../notification/mvi/NotificationIntent.kt | 17 + .../mvi/NotificationSideEffect.kt | 9 + .../notification/mvi/NotificationUiState.kt | 10 + feat/splash/build.gradle.kts | 4 + .../team/bottles/feat/splash/SplashRoute.kt | 24 +- .../team/bottles/feat/splash/SplashScreen.kt | 25 +- .../bottles/feat/splash/SplashSideEffect.kt | 11 - .../bottles/feat/splash/SplashViewModel.kt | 59 ++-- .../bottles/feat/splash/mvi/SplashIntent.kt | 9 + .../feat/splash/mvi/SplashSideEffect.kt | 15 + .../bottles/feat/splash/mvi/SplashUiState.kt | 9 + gradle/libs.versions.toml | 6 +- settings.gradle.kts | 4 +- 130 files changed, 2866 insertions(+), 483 deletions(-) delete mode 100644 app/src/main/res/drawable/bottle_app_icon_background.xml create mode 100644 app/src/main/res/drawable/bottle_notification_icon.xml create mode 100644 app/src/main/res/values/bottle_app_icon_background.xml create mode 100644 core/data/src/main/kotlin/com/team/bottles/core/data/mapper/AlimyResponseMapper.kt create mode 100644 core/data/src/main/kotlin/com/team/bottles/core/data/mapper/NotificationTypeMapper.kt create mode 100644 core/data/src/main/kotlin/com/team/bottles/core/data/mapper/UpdateAppVersionResponseMapper.kt rename core/datastore/src/main/java/com/team/bottles/core/datastore/di/{LocalDataSourceModule.kt => DataStoreDataSourceModule.kt} (91%) create mode 100644 core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/cards/Card.kt create mode 100644 core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/etc/Profile.kt create mode 100644 core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/etc/Toggle.kt create mode 100644 core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/lists/SettingItem.kt create mode 100644 core/design-system/src/main/res/drawable/ic_pencil_12.xml create mode 100644 core/design-system/src/main/res/drawable/ic_warning_24.xml create mode 100644 core/domain/src/main/kotlin/com/team/bottles/core/domain/auth/usecase/GetLatestAppVersionUseCase.kt create mode 100644 core/domain/src/main/kotlin/com/team/bottles/core/domain/auth/usecase/GetRequiredAppVersionUseCase.kt create mode 100644 core/domain/src/main/kotlin/com/team/bottles/core/domain/user/model/Notification.kt create mode 100644 core/domain/src/main/kotlin/com/team/bottles/core/domain/user/usecase/GetContactsUseCase.kt create mode 100644 core/domain/src/main/kotlin/com/team/bottles/core/domain/user/usecase/GetSettingNotificationsUseCase.kt create mode 100644 core/domain/src/main/kotlin/com/team/bottles/core/domain/user/usecase/UpdateBlockingContactsUseCase.kt create mode 100644 core/domain/src/main/kotlin/com/team/bottles/core/domain/user/usecase/UpdateSettingNotificationUseCase.kt create mode 100644 core/local/.gitignore create mode 100644 core/local/build.gradle.kts create mode 100644 core/local/src/main/kotlin/com/team/bottles/local/datasource/DeviceDataSource.kt create mode 100644 core/local/src/main/kotlin/com/team/bottles/local/datasource/DeviceDataSourceImpl.kt create mode 100644 core/local/src/main/kotlin/com/team/bottles/local/di/LocalDataSourceModule.kt create mode 100644 core/navigator/src/main/kotlin/SettingNavigator.kt create mode 100644 core/network/src/main/kotlin/com/team/bottles/network/dto/auth/request/BlockContactListRequest.kt create mode 100644 core/network/src/main/kotlin/com/team/bottles/network/dto/auth/response/UpdateAppVersionResponse.kt create mode 100644 core/network/src/main/kotlin/com/team/bottles/network/dto/user/request/AlimyOnOffRequest.kt create mode 100644 core/network/src/main/kotlin/com/team/bottles/network/dto/user/response/AlimyResponse.kt delete mode 100644 feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/MyPageBridge.kt create mode 100644 feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/components/SettingList.kt create mode 100644 feat/setting/.gitignore create mode 100644 feat/setting/build.gradle.kts create mode 100644 feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/AccountSettingRoute.kt create mode 100644 feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/AccountSettingScreen.kt create mode 100644 feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/AccountSettingViewModel.kt create mode 100644 feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/mvi/AccountSettingIntent.kt create mode 100644 feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/mvi/AccountSettingSideEffect.kt create mode 100644 feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/mvi/AccountSettingUiState.kt create mode 100644 feat/setting/src/main/kotlin/com/team/bottles/feat/setting/components/AccountSetting.kt create mode 100644 feat/setting/src/main/kotlin/com/team/bottles/feat/setting/components/NotificationSetting.kt create mode 100644 feat/setting/src/main/kotlin/com/team/bottles/feat/setting/navigation/SettingNavigation.kt create mode 100644 feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/NotificationSettingRoute.kt create mode 100644 feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/NotificationSettingScreen.kt create mode 100644 feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/NotificationSettingViewModel.kt create mode 100644 feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/mvi/NotificationIntent.kt create mode 100644 feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/mvi/NotificationSideEffect.kt create mode 100644 feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/mvi/NotificationUiState.kt delete mode 100644 feat/splash/src/main/kotlin/com/team/bottles/feat/splash/SplashSideEffect.kt create mode 100644 feat/splash/src/main/kotlin/com/team/bottles/feat/splash/mvi/SplashIntent.kt create mode 100644 feat/splash/src/main/kotlin/com/team/bottles/feat/splash/mvi/SplashSideEffect.kt create mode 100644 feat/splash/src/main/kotlin/com/team/bottles/feat/splash/mvi/SplashUiState.kt diff --git a/README.md b/README.md index c49a1f46..4dc78720 100644 --- a/README.md +++ b/README.md @@ -29,18 +29,18 @@ 떠내려온 편지를 통해 느린 소통의 감성을 경험해보세요. ## Features -- ✨ Feature 1 -- ✨ Feature 2 -- ✨ Feature 3 +- ✨ 매일 오후 6시마다 알림을 받고 떠내려오는 보틀에 호감을 표시해보세요. +- ✨ 호감을 받은 상대방이 수락하면 대화가 시작돼요. +- ✨ 상대와 끝까지 핑퐁(대화)이 완료되면 카카오톡 연락처를 얻어 서로를 이어줄게요. ## Screenshots
- - - - - + + + + +
## Architecture @@ -51,7 +51,7 @@

- +
## TechStack @@ -63,7 +63,8 @@ - **Networking**: Retrofit / OkHttp - **Database**: Proto-Datastore - **Async**: Coroutines -- **Others**: Coil / Lottie / Cloudy +- **Debugging Tool**: Firebase +- **Others**: Coil / Cloudy / Kakao-Sdk / FCM ## Contact & Contributor diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 564b794e..4923f88b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -75,6 +75,7 @@ dependencies { implementation(projects.feat.pingPong) implementation(projects.feat.splash) implementation(projects.feat.report) + implementation(projects.feat.setting) // Compose implementation(libs.androidx.compose.activity) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e835ad9..ce018f09 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -5,6 +5,7 @@ + + android:resource="@drawable/bottle_notification_icon" /> !>Z@~<5LfDdoM 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�|)S2 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

C%G@YnP2^0V|L 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

}HdS9xeFKVD_n~e{D_^@_)8MHXN@8 zwW80s&K<{{9+!8!lz-nj5qxwfGIDy5MPfU9ftnWKgDm7V%1OALLVT zb*P`M^Px7t9x=ixS9Ch#Dz6cHen0dwPJ1!%6L!hxt4(m$@D|1WMGx9>oUhE%DxSVI zb^oAb6i%V2cwHXwjJG&hek7UHRz>mYBN(dx=fGQed-z0KY3H<9&u?N-;cvpb9Q0`p z#+nA1TVk@eUWvj$nrn1!=>h|;qidbM|MY_{A@1Q z+)`iWNh+;)wV6(cg)uAXqws03E!=}jAq_n`FstQC1fqINNmzkn05S*MjJwfC(A{NZ zu1nb-3j$-+!n7!v#Lv@(pSTQwoB3x8jVc|Uuxkf4xa_CnJan&Z;d6twmj{> z7PIJ{`CY8*DOhU<+3&a!t_xcAh$YxD2UcTlt8o_`ok0_~58lJ7XY9uobC2cm>%8z$ z+W`Aw-yd>&7Sfq(v?Va>f^+=Jr9*9q`umUaiMHT)MC8tjpqT)2o~RRHU4CNsvqeD&0+xKl0das>sJYE_kwa@o;{` zWf3315DhAvFY%(L;=Anp2)uUUs=@gsWj4U;88+Klf3BgHnuJ1oz1_gOW+2T~fiE7R zTOuFh_H*=?a!%7;yz@G?!Y1-Fy~LRC){Dmpt(55im=m&+lIO)d)tUeFB{qv%`geDt zB)EElXnJVkYC0Y)c8T=LSbD(@vDWZ*LuhkxJ-L}$Rc4ST5S)^YJBQK@j$dV6KBU~CR=H}#o%&OzkL-7`E zGCm31f2K8^eXx;2jn$_pVK0-u1bHy0>6v&!?i^^ zmCu-+F6@xzxE^pse_;M`c}|k{6CZd3q8vHHx<5LDR=zyYezpT?at5Zu(whdPu7QGv zmSVXhF`aHkzlDODegzA&%tfI+_O{?T>La#kcFpU~6h$t?Sz7LKFV?qf7}c45h_l{_ zJKbNCa>25sP2nBl&H3|zw_fMcvvv)(>G4?zl^tn|C9X^TeTwY?#SK}?yADVm4sW^SA=8q?)`EYvqd&K(9L>9YlX;e!XLrcW`uGYuI3QEan~ZSw z^unW2ao^p)R3U=?mmBK3J-GI00jI2^v}WPR8Jmgx^tyqGtRYg)eDqu+B!;o1^7?Xx zdBR0l@V&%*#6sLye#*!0dsj9u{~t%^;>d*mfB((>5+$%tSobx#R)#}dT zEr)J9La118>c)#Q!Sk}_NOX-QaMVwtN!Xt#(ZU3PFrONQaB51Mpzyw0ySLsvcxh@_ z!4k3m&6d`}Vs>;_!>;N62VJ}icrfOmi;TF~>2y28S>`hX0kMMtyBnQJ|pkD*<9lwi`A$#s}I8FgoL z50JUkZuUs{EPU|S?fQ*h`JYlhWy=;6?td^Pypq0c!u39Th*WmCZzS83#pbW59Q9*N zFPF`Bh1l24TT4wnAlkCk2lb(wz8HZj^LZD3bVtVqdu!j$`pmc7L{Y==9%X}#YLMuJv1BuPFP@9Jd|l%Mr;cljT}~M^@qE08^9bQ*@>2 zU)KV+)t?)x#Ai<#1E!mA+W)Vek!_ZrXkjdtt*Udb2+xHTnz4ch1^?qdwq-2wv44yd z$*O_D8`_VX{k!yGK`y!YJ=qqL9-dpdYZ{iC@6ev#R61Md3X9-I2~B2GCwqD)9Q662 zOu~1d?!`l7o$}!ayi--j(c~z}N7abPRGp13Oc6#sY%>ZdRqO=3CqH$e#~t-fL0=1LZGDd>+mHi{_Q+O(Y&R2LdH z^%R~nG;@MF18wUQYk36{n-8l>>K(aJn6a-fYG2Kbf^Wc(uPehM)o|=F3%W9EHF%+D+~o^S;n`@+M)Z~#;2wb|?) zXyUsg=Q@(3?G{gl$N++sVproqb0=Fs+vd;jM@c;MfO{11-?`=OtwjM>l>jR77w`MJ z%cFH`^NX@~KX1IsI6O}9;DF}|+Lp_)*#HIY^`%;@e-6Hm-cL%|zTyb`i2CZ4TT)qF zsGfM*WUc*zCG}uysG{%f;%92m*pAi*GG?mi=%Yv8?swAW6h~*$m8I z7>W*qRy00PrHKrv9$R|SAI5GgRtpd0p@gTfyu{ww^{cG^UE7|`^PB-C^sAggfA zCLpTkosn2}NaFDtYi65E+#$?Y_vzyX^C!*8A;j;^(kF1Dvmm_lvTVgW?&?>gzLsz+ zXp*2BTE!(*?|rlS`SR}%QD{4+*$!Egx8QMU>0xp2A!w+_PG^MvV`l6g=scsg{o$^o zsTV#W{S-2H&9k2(87)qZdBMkIiqV7Q!xSvnAO3_7viuTca7Dzg%S}Bt=ZlU#8wB>@%hK`+B?q{Fiwhn2-%ny50(b(g zMRZ9ap7xOkPS}bXL_x8t@3+-0#T$8%6Z^7sFMe!i-J9<`d9U6p4MGzU}?SXy8Vz zuLiA5^LKvI-xxB8wKZ$=e^#AGExtd(J^@dZI+tpoB_3)s9c64rpLd;mGlg9r14OrJ z{un9;3kAFKRV?lU);^PZvjpGPsP?)2n&xbU$tjCC)@uXT)C=eIuJ0u zuS0O6HA=iK%ka*RyOzX$ROkdFY1_093w{()6HZ$zikRQ)#x}y|h@vG7)X8EPQdVK` zV5)OxrEvf&6z)RTPmscB@9`qqe*r8nV59;5gN$s~<&`VN2bydQEseX)qjR-Y0gth< zVM9Iu12E!~@>?Dxh7>BKVHu+?6Q8~y?}Lh1Z)4XQnXnn}HPq%mRjY|hmyXTk=G8>} zlj)e^!!{GyjBr#AI3f3iae`I2a`ll}5k7;{l3%u$#l?Dd!xd-*$F$SgOEp=`PIZDZ z3TQ)WwnOz-_L{h{S$1-nm)bZda!)q4Eg1Y}W{d_16fCT;n?2EFdF#rEL!D`PEYQkbI#jxY(?pc8-jHDQIj)sY{5 zj+N(txgI)X+Wb1~Av+GMGMn-%4CojK^zP3-khe>_T z!qengYLCEOa?h+%A4i2u&YL&)s(wn9(aH|T&}G`UmD;Z#f*(SO!mnA5h!?1)V*gq0 z<~xv31gcd=tFhR&eTgwZYgO|v2>KAP_6X8bXkX~2l74c|?4AOM3ySt*mXEf^3u`W% zTuzk%(2g14x$0LCV;h?7*~T*QX=Y^#tzEp?URWmOXElaHtkNslYYiL0bG@^e;P#ML zMRGq52f?aVA3&VWW}ijRM0#$7r%nJ{oBu0BeE&_jN^1TGAv0x{ThBAsU|!3pyH&Z0 ztgdMIwesmbnXe8w4>+}r-}@r< zAqy}*;8x5mOroM+w5WI-Aj4QF;i45ij{0)GF0%Et5}3IPyG-kn*}_hjtWJxbi5rVI zi_{+Bl_jQxC=Zz}s(Z|O+0m{|3!+MKabiaHb{x)Vyvpa8DT^r_iSoCnYi=;AC5f7;pz zDQ*5w0{rMiany-L&^_LfjzC~wF}XpE6*Pd6xK9HVCP*f4UmUW@?3x91-)C8*8xG?) zWFxH>c0zk#ss;SnG4tXbMnqz^e=0{TcP(qxGzcoCfLn_VZuh75e7-pIhdn)qknt(U z{tmEjbS=_92Y;?&@F~7-iCggxLG$Ui5iiFG3qcg-$H?y=@W{9@d*RwN@Qj{JyDVss z;qj)SsjS{WKSuA1clGvHjAM=}LfvSkf2u^_6U^YmIomj2^5#cbhR9mFLe4iySattW zP5NIThgbr{A~oO)U7yo)NglJ&c#<$HYZ_=He6(}-)~6Wjk}o@AD;1J--eU!!xk4@f zPSr2e#qfR#eB(j!_BZIF>}14}zeW6av%5vK{(Ucs#|y9GB*7My<2f|@?QJ_xN)ueyD3)+j65+q;MCdbr_%y}+v_EHO&Ph%h5#Zj*?;LZE(c zb)}1pGZ8In4FcIbk}sP--D9zzk|$%cDcGANF9am`BIkTX#{)8P)6;^fIDe4&b@wC7 z8i%9$`qNELxC&2b5S8Cfaa+You!Qq~nN%Cs{liI=FVsZOoRZQTbtcvd3s~Qg_dr{+ z3?Ks;7KvNNjbcQ9AXc^-0U@gKn5Kt-%LL$|;ri&2y6>Bw(sNfcqhz3%##dpB7hA)A z^%d@4e4=`CuxmO@dDW;*xMH-9H2bmIueetTUEQE9Ka3(YY7TXEJdF^2?b^0R7 z|L(H<)qG8fQCWtri1SlhQG9i&m55(phTfM9-=&Ks4d|OWv;DtDt`*OU?|%vfM0$4r zZT?${9nW4la7&|uR2z2;BMbVipuOcF9 z3u}J;My5M4&ZdS8J6#TUw2m%x-0Co6s8==EaGPqvho`nI$b$a|1I;Bm_LouLEIPFc z87ob#ge-jXx1TNPA%l7~1n(k{#NZ*$3Ckllv18_pfDR~i2+B!~HX`1|lYe^7o!V5> z8!#Jl)!k#2m~mo#udolwuI{c(8v}6pG5`_$ZVvG=GZ3WUi8 z;d9l7puy|E=YOJaVwmK-O#T-eYV^VvAg_G~@9MihHmG>l5u2dxpO+Kbedyq9-Tdi_ z3%_eC4MJ))Xhs=fAAFkwqdj3CrbkAHe=(q0y?)>=qu#<0+@0~v#%h{h*!10Q61R+g z!UJD)CE1N{A?wd#uAI6IH3yd%h{6LXA-RvsS$^kVJ!b>mE%{zehbLta-w?Ev;yQg?Y zXd}i-D+)+jYcwgJCh%*|10DX#ER>I)4hgt+n~7}ws%Ows(;K?0Ba>BCE<~$VuFE2E z2Xax>SkWBk3M3bWrr-D6_k5V z5+as5xn|unKc>512O^YIs_VMn%Hn%wukJK_lPs2Yy6K*h8gNxR=p_DoU!kM-tuVz~ zCF@a$^^>1N`dWvha(OUuX9|qlz)K~O%utH~dSop|JMsy}T_xTifBGUbNH25SW3#i@ zgMR{_Vtum2s~^*`6y6!=Q^0mTem;C>5hyGZbbi8Z6Y*lfkaqnGxsEM+R3)-%ms(f7+k$O_LY@!m$l*%~w1<0b-48 zs%(w%+zwc$xBdOEYlucdBeqvlD|y_L)>j1io1ad?wOt54jmP*)fp>o-t@cJ6F=G=` zSG6Ax#m=}D(U1BfgUep+0*{6qUA>w*^}>L{2EL)63z7 z%w0Ro)+nyITj9yQ1nYDC*?VqyOM|9)Ywq9w+clz5+kafw9>&kxlj_RxL{x3pX;QO% zNDj-yeqBFCCKXl@I#+-Txb1Gm(F|Su=Sq;$sE@kSlLbRlk7k)~=vOMv)y6e-RXOYB z67MLCKWwU$+pTkm99YC9kuF-_i!yEsH)t|6q3==V1la#MOzTYp@~lr(C;Q3aoqDpO zdI}s?1Wn@4In~)Ye}kW4^hI2;Yl81OO>KXF!`7%b@T()Yy}50Jtp3UY4bQ~o(NsIX z@sBvo6<=|B1`CswMp3*`g*kD5f}!6j7{RCbUv7;nnD2K89s*zrN{yxsl}8KteRy8S zCV`sgPdvnDeY~Xadf-xR^($l1?+U_cmHnqZ7oGV|!2*lE^5VQ9V6#F}A}c9C=PBr( zN;#%Cu}qsTL?I}~91NWk>K7H~z+)+vO7O5(Vgj)Y$1ek(Q>7Q)+UanomAfJt+kYwh zcZ62Mu<>aT*m6meU+RJBPo*M+7&vDD2Xo7@_i7-A)8g#h2y2_G(Ymqe-fgrN>$~`7 z_|a;tmoD94+HUaWSkYkFh#&bA)vHos2AkyJc<7rI;l_7g6x5{qJhI{)w7Ls+gSdPg z6+x~jOw-e_m8_W_)usez1lW^n-7I$9l6EyO&t=ET;HX8mmRq1AuhW}^jFi>zD(u-o zD|~vy+NN#wj-8A5>Ew-ggvs0J`p~031vSRiH=_wA%mq^xWbfzTA1G@I&F% zH*#b-A>x{<0x7k8y6Ja4Z?-xCE8wZ0Tvd=O$Dxk9#GJm)Yu7m9y(eY7 z=KO)L=7`XI%n(7$2qAS2ksA33d?g(Q9|2j_Mg86wzy%oQMbyT^x!YC==sM zFt-iF6IpdKj23N5fEIdd`z?g~R?MF$K6n}-hHnjPdfdAl&m22-2fvsLfACbw1Q&8t z9I?~5zZ@0ff>}#bY*|*sGbY=vKmA>RJ=tXVxS@pEVMZD>i()&)(;>^&KGo+F8#;@@G4^=C%LOm3=s^>gaA}*|uBXMlIHg zblpa<`k5B8L2l#XnA?9nFmQptQ{S8J{g+_~1o1ttPJI91<7V2AxRnnWJu?crgAH#$ z6oFWx*t;&&a*1X4?$Qw>x|h=SfM_BV0Ilqs3YvYW>;FPYKu%K}0~?cl@V9 zvZJe$9OF7jKR@BW!SDf3LJ%?>*E(&}C<*oOB9oNJEYMdX+WT~m7j<(K8cMAcIstp5 zw>u6f#6ihFn^-@+PUC1k&vw3hv90rA{xcbt;E~37)6e&|kJYdfDCn9Io1T`@XC{sk z8;5iA?-{n_t2r%a=uZ_A*IpJ3rCML>AxK#MI+HJ*9{ry-=80CzW79S{&GOz3(WvUm zn0vlGYC_hc;|qhH9QU(_P)e~60g>27fNlF^v2(}YzCe-XnEH0xfy36Z=Ixmd*me7E zw?Lj-;Cw31Whv%g@uR~p^ z266<_HJM(q;Zlsg#?XY6a&r%k9ajCE z^_BFi7ad5`1z@`h)+e7Rj76by`?~CIb|7!?H zu($JLj2ek{MP3*w7dul`)K1AW0Y)dU>CGFaFX~0n@~e?Z*JA#| zLaZYXDA*DI-TGtm;Vx8pSr9#E+?+D^)70oJu=VLF617A*tQvW^@MB6@UfBBnzyr?l zZKCI<#7ge9FF+zN=&)Hqy@qug|Gy=f;VG%ZLJwxE+eyKQje4uu_^lj>*-$Z5fIQ9!!yB?LyQ-yus znKOdATDXzppPT6JBgd)3%^s)F@~yvhSU--QZy|sO%4EB^hRWmM21kBtm=JZm$yhqtGA9*Hf2VkItP&L+u~{o^>Oa0!(es zDJi(3mx$BlgTe<=R7=l3S9NhYK=Ix*vh<${M43&Lq5uekBDAknsiC60` zj@gdoTP|M6(zWHJ+;%t3F?Ai2|>9o0fGOZoCEua_lKTRF|{{U$bw)B4Gote>2 z?P*zQR-p_yV@9PQ!qBA0`vPH98h;b^IYzok*2iNNRy9V<8lHKti~M={gfAxy$z2eP zChIm#;hy_7i|$)M%FYQ_2_{RVW~`5|;9(Z(vUOHjsM^RZ)qcB>UUox1(kqZx1q5i7 zOF`_2qJCP1GVO|f2mLqCI@^XlxMQ!*K}@izYD&n14`vdCpOJg%9|<0~OgjfFPEM`x zW~&&0__eMau!0eI=0k}{RO}xbi2CatRe?Be@En7^(u?q!O<^;xq!jR9;9_2P#U)BC zGt+KLbDLzv{e!wp>}_k#ieR}uoZT!{?zfY1LgJPTB{#0;2XSEOpL7gl&QaLl-d zrioWrQf3@6@Tp(S*!+^f%x!bo_jHXO?aCX^q|u}}k+R8(><*LJmtA$9q+yQNOo35t z$YL7Pdr~oQifgC*R1z)o+=Dh7y%`8HdeY+n8?i8kY zp^DDg#pin6sc%osGhA%lA=@pALOLi-a}L@zp@#hm0D%ktQeF0tRngya`c2bd?>1*`t$t}A zlB;n6?>C{2hY=4w?YwVtO4;(E2z2r0U%RT4By6yUFz3_7ZJ4m1wmpPqTgZmXCYy^$ zAqUDdma1p|C$@iRn(|lyO8QWV@n@z=9Lz<8w|(ARZ*99fXv4~}8feh@WW5!Ut=etw z=IT$XD=?Uk-$|dW)xCFSGY38Vea!v$dpT}}TM#w&HiCbs9i~@;oHHP3H0j7@__c;I zV}p4?XEwY|3D#|Tbt@{BuyIoZ)WE#a+>|6s?6(^KuHo?nB(8Hf1-ZEwHOAJH&H;w?%{A^u-dwabk-EjvcOix^3Xb9Cr z@~#pzsVB$CNtasvbiq(&oJ=T4?C4+6^8Z|Z7Hh3AT=xD8exVB(2CYu4&hfK32wa=> zZl8Y0V*qhLXbH=tgX99NLzbNgYf3Jo$NUt1H`Z0Zih{ZE2z9q|o`+93$erBf1{)sl z_P|VfNcD8bs(bsaQ`SdTqGO2UGxpyaMq6CxVnXVMd}*UIP_@DdHmHIMWd zdV2&P;^MpeZT(Lf_%)+f7lWM7cIDj{8it7GT`<^nfryxdKS(Z-!Zo{N5t)kj1QAZ| zUBfs2)!07%XOfaCN1P!Efcz)NVU-KtKX?FyE^e*GTT|c=6Y&6Ygx%<&Yh854fj5*P z3&6N5ySvEQF0=k=8PQnSZQOK`lwA(k5Kk1GV&wh^Pfjq?;z!3#Svr^W{ynz#pj_et z$nLN@i|;UyZ%U&WaH9ntu5$m}x(23O(WFLRE3|7#&GzbMDSjq>RAKAl*-fsBp%0rJ zF~409aqv^Q`gF+OLE_;>mY1{~EZGX>zKWFfAv``}^7BYDx-5(RC`^6WRzvz;I7+SI zURBs@N48P{)jRn)tlQ{!arBgS_kV1^0lpa??$tO~j#-~a2MlVpTSgr~r)y{URoNMR z(iy?3ZG2eT@e;v-@D0nFz6Dhlte+xh3}UU?Zp^P)vyFaX1o>R@;GY}}1GBx^+`YWB zGwBXMY8*|mG~->i`T9&uGyJOwRf>2NDNxebwrV7y``E`vQ}V%oD5GCAzSK3+&R3(nx4^0N`oq=cf zWKiZ$E_BhIk8;&pD0`d{hu(&$rWlZ{*5&eetrVgXuMga6j#_DLbdHzCNI*w*EI~vy z%}eS>FON_n3Y7~}BbMr)nzuJ`JO&~jwRvR}yv{P@>%D5eH+CE|dL+9o*;f$puJks0 zZP;D?x=*FfqdG2r`pVw-M}v)YqftnQ(ZoI9;bpqXt*W~2oWR++IT=e-#O2$UeaS;# zVtQ$#Sdt)4Vm=(}l?saplU*_h&Zoh`56CX*iriP{jP;m5nbCa&69HQu^sZK2N7isE z%B(-G82u~U9#N`ibiKuxHUYIG9~y2tAMo%%9>npX+9GKPyvH8o{aN3t#CSMVDF5^c zyS~W(F@0Uiu-!QM5ErQAj|rVL`%`Ylzp9-QD-|wb)`cj?#>uv^@a*FzF`#|VK)c;-D5YBRqVgg!(z70x^N2KmNVbA7kJT$?&zww23*mdS`5- zIv%psEjYr)4v?NY?Cl3qkM7iry$CJ+tJ;0~D6-XDTVtnyYa||HXgrHJpch2{AWkcf zk>U`x>T6vvgMq#h%*Qwa(RigioX*N0njRUkG62oiLBE4EFYr!=z~Bd9_QiuUIW2HZR1^&VzXiUy90F=@?BO1~wGFxb@mL=d9pxF7t+vnhCbzX_pL$hp1t zPj&n+k;}f8|94n*x7W`CB%%&Qus%em_Sc8Gsyf?AolpB;az0<60kKMbwAZ%Wi6D+- z;j*BRgwuB-Zf;t*T|o%-@9N@1h1Cy`wqob@C1-tmjYLwszozH1Dxw>tJ9B+MlRyEd!4Q4ZLf9eDcL~MR^PIv#8-yP?A!CoEvP-miO;vd?tI75dSt$kUI5T!y@X2J<|7zs`r(8d4JT>rE)SZkZ`f0CVsmNL@x6uFU63V} z_BDEaDcWb61#8pTctaxbGOqK%;%ltv^7g)oD68uKyWG*{It>)+H7~H6g~AstP2t(mF}GvJ2f}v`RGLHijnlC7q?T- zxg(7wxX*TwNmhFDrddF;2`##FebmK84@jgRlaHF8{WRcYe~fVm#=cTz*cE z+ZmX}4IVbvr>r+iV)GU8{-&@LU*1cLm>j1V#Xe#TxF@Sc>SG7(Qoj|`D+0g14o+M$ zyKm{)KO=WLN&rpufWI0e`cT(QH#&AUjIOu_RQOVp!cwL~KArb>DMUGwH^;2?%~o4& z&cKJ?B8y$!Eb?!)SPay_8!_~}{uKE6W_~xH>wGz==->H)>f$4pYIwrl zPf&8HSK9R$(JyG#?9#6FwT2>2VGe~>t@aU&&cs_!VVaf1?O!_h(9#Ys&@VbSytjD| zj&LFj`;Q|Y6dfmyzEEx+a3@l3-f1yU9*ql=gz8?r$Qt6AoxtRNCpuAo@&X> zi;Nd7&RulN5WuTu%+V_b)`xjND~D)%%iDi5eBU13-@d_f=DVM}S^JCW#=7oFQ-Nj# zJa?@#Gr17vb`-)rpN(oL=KbVFA3)DPsA@#WkdN5Tb2%zQYyy=W>js;{!(Lj>cAK|| z<2&F3snZu*InS~YmOeqr(|t3uh20eyqfSIw3QEmnvLmYXg0YBsWP1eAC|gw=Epx!` z#8?Cso_?Nt*HzQF&qkf_-kSiG^OtE9-^;9J5hAn3i*s_C4YrM5dclh-3f9L}7W>RC zOWzaGK^D9Z!VuJz0gT6DZt)F5;UI8lu@a5hUt$lHLn5rue$GAHXNp6SQpy(!%1=-? zw-Ro{im@M<6NkL;g;N4Atp(6|kgwxl3{XEhptUz21-Ld)CSSq?tR9xOl(rIiJv)C# zHbLy#=OZbO7;^5zgR7#Oe?ODL;s4=Xf&cYw$rTe?mhRwPFk88_a)Bc-mVdnRCm_$J z?R-k#;veCUm*kT3;7=SzMJT9uO8#t5`~P*vRI8&IR8MjP^D1slGarf{Xfqa}E-D62 z!omZ5iT5T0w&|%?vYRKLYLk&*cvqGgH+tod>QSFxsdIf}*II{XcSXgY8d)3-#C|Q5 zlh=~%_M5!rk$QXYHEz8eKQ=sXA9v(mnS*;3U$eOep$o?v>(n>$i7Q)@u|iK7 zJ~%+rlJ#D7ycWG!*+1Jn>z944zG{NKw_HP>q5r1t)rxXnX-xm<^<8@irBx?kE%;iU zubH3|EPl#7dhK!0;Iw4)#;+}z1k!E+dq@r~Fu+lKofDFHhDV=Uf*Bfqaa6au>IprP zAVddzoOke5-eAGlfRQZAvCRw8b1UFxl4$X6v&-7ingM4wql&@3bR#ggpw4(4rS3h8 zE#rzcns}5zapNkq!UX3wmlH$f(D`SRRFC4$+3&?I`Pbvi^jKda&Ik6HrE6NJWH~OL z?vbyHAf2gd_Q}@jbVgy%t+Y{}Aaj5M+48d%7hcs<0y#K%-(j!?)G8R=TZTFN2oQz3N9sPqiXTO(zU(!pfPiD zz;CDrZPy7W^=RXq&p+u#w+*%WLdc7PJX%nP3TL?w&m3;erEon@9qNtM=_@T3w#3;yd*RPlGpgnBsmBx5~4LZ4i&E3%<7 zuK#{)hwr;HhQ#l8fxo%$BTf;sv6{ukeHG_0VQ*(vM=LbrYa{obu>SGx@n$O)Yoktw z`pvQ?QuGf)L@kq*1o6w^sPf%sIYj;>CPeH~ZK{oL`BOPC522ALSqv}qSWBGMf&{q> z+tgjH$69uz@QLSvcU?E%9l>sH|H5VS?G|sht_CKZYZf%o#kuzGy?xhahShol}B6ZUPN27J79v+ z_0?x4qL5AWKYHOB#Xd;RjOlOw_svk3>AhFGoX-VAxcy&)f9$}IW)8xw`ES6pCT3^b zmw1e9ltdIy(h)4RSiAEE*ICaje*geguHW!YrAt=r@ejmHhZS#VZZngvokP;P^?OIZ=*59Wq+@}U?^kuL;GN`SgGcf+c$tFmTFgiGLa28e^(wog}bY`%>j*fI=jl88;UwmgXJj`YGG?L8rGg%mz+0uATlF|O%OOZSiRJg6}PSFa73Idn41-9K!RsR;oUlvnnWM6wp#uQv_qiIs&!bpUT3m zHISS_ZJQ+cW_eAbyd|N&SEu2P9Q1xxSDoVM;6FR+r4Ip0S;E$#Vjt<_EHS`3Ws3-; zUu>`A59^x%HdS%b;l=<3nDA5haJo*S!^@P(AopNq$=9%{!z?8Ak3G0hxZleuDGUeR z2@Hsm5`=g%M1OTy#+nXAi)4ZhP9iO)pg7A`))2_ zj0Xv{uqSfchdQD>r+$e664kyWri^o6MUxwVmpHz&`KdZ3mJIR7-l&K5SJsdrN zycXHt+J47p_ZXz9mgU)Fy;k>FI0&8pCQ0xF2%UU_mvwpLnxH3XE)KKPf` z=qacss5!MJi)yRU_iKeVqgE_81=2Z+D0ShDQsub_I_f_!uga=QwfVGcCMSO(LSiLM zMrhw+9yx!5Gg3HV$lMBbwM9CvMm(rG54e{rc2rej@uUcZksnw%(TIAtg4_G^|Bdb) z9hCJoSDwlj$Sk{as#mWa^zW!;pf4Nes-wmHk{+f@EmFVlvT+}<_~4R6gKdgscw2E_ zuP*=Lu{=!7|LAOTDDZ_Cz<7%uS}b*~qg=3cR|sWH;1K79vGcQWJ#)7G?sJ;&Yjyus z02H(C8Pc2W@|u;>5J^x9!fxU<%Lw{+#AG4)w}rS&e5UK<+)%vWjjYdKAB>h-Wnl8- z-($ya3C}JifJQF*{aQAi8Q-b?Suxlv_C@2zR+}twucFQ<)v;s@)Lzlo&@h#e!Yrhd1wtBtn8p4(7R`=v|u>25CBUSQAAzI30M4(Wa#NF+1i%(24Fi*^2# zm^s_9Z$@DKX?kFDpm@(v%l)zdIrDN*jJ1L1L=3u*2o`urShv%AfZa7!jrE9kxKX) z=MK<4`I-MDp17rqH}^}c8XaT$OZyOxgGwJ7k0eZ|SmLDav^{r-M*fj>S?^E=-gFY#xL>> zuv}1yQ~k|<5a?a4Z**BrY2SHWfFSffo9&(0xjrVVRN1V@unfGl0S*5gqHHHi&B@E2 zZ3yNcCv~@&2ZQGaq8}=0e4+IXCNKrOb2(SRWu98DkCF7ZbjVYUegyB8`$ppS0OH84Y&Xa_=EH2X&Fb@uBT_g%A1%Djex=ZFOJ~}V- z^9q*Nr;q>&7nf`_7OvMRKJfGh!bKPcK>zJ37{a5?Qmj@>FQ@`|I*%p98xwm9RWr2F zGY2$Au)W8Ye3ECl`PHQ5Q2DV82C}Ge7Js+9@B;B!C8vKd;ye4p1aM3tICb) zYVaR8-_{#41`G4?abzf=cQ=;M3#jg(WyO3wVm(}L6piynQ6v+x%wJkCx*B^m_nd|l zcRn-(Qy@EndF|v|sP$2ZXf4?kl>FLtDXwn1=V*S;?EUEbfTQgOv6+*%00M+#`lzt9 z>Cs5k|IQTv(4m;GEc5QPhWqwiHW1NZPuCUEj8$-$RdF^)lQ0Zw!i=67u#pI3QkxLa zYwkb1A89v!nBUVJ=3h$)-x85~Bp5Wn9+q}DnDY)edLBpxjQT1YZ6@wzV7 z(-GB%tF_D*v6Wy3w%J(TEn~Ak4r}l;y*i$Dd+IQz2riLGzNJA8pZa^UWj9aIoblgi zchj$~y@s-kli$#_R3K^Yt~E&(Abn-6b?Z0)*HQNk*ZF2^l2AW_5Aab+3~f6`=8%^Y;_aT+!hNZUX@VHrT{3%eZ}WbrFPf8a z>TlW?;BO6@YCbnz^|i};>KXORpd?+{lqKJ6T4 z9#5dSCKAsJ6o{=mH51#TZNZrfS9SXazfV zhkq`x4`({tsmAw5?akfE3eT&w_EG3GLt*Ee(oc=wwAej@Td%~?hP@n0oStkBmb5H_ zw_YoM$pqG)42iU0jTL6+%hr%?!fb;U7p(r>lf4Ux!0QCvjFR%1Q39`&jpuA%3qArJ zXX$-{sSkQ@R_x@h%Wqm@qp@ZyNj;>F_rMeD@{WV|0UCn*54R4IY~-@1xAr}be{9ct z)-REoX4J=Z-+j?#sgBaHOoGVMkrE5uqL8DVg`vQKzFlLM<5os{uGg!aP`U0Q;J2PM zaD^)P0F zTbckS4&Ny|C(zL!XuzHdBBnOn?U?xPK!_m@z+cPN>DSS6zhs`^+Mz@SNiy$SBXy+Y z#KjxJtpir?X6B05%6H)^!5g{A+>DAc*l!Y-2v=vyYVUd=Fu5Bsb=C9?qsP*hiV(ayOKy7t~IPb1Td+ znb0f^n40gz$mXX`grG%gq6{~T9DMi(3-&J#MbRSa)AE`H+|lxAp7_Uikc7eD@RZ+>=m| z1EgObWPHT?Jer*Jf+P;S6)+bnKGz7iTtR6g;iLVff;f|u_iwuUJ?x7Z4un)^L^tr@ z;@n%30{h82+G<|z09?l{ccShhwkiDQ(cv77d~EkQ>+5E?hDHGTzD&GimGm0^vY&?1 zfTvVs>88g_6bCH;5#v|jvu zk$**sM4BR+Gn>wo@x<`HpRnt-4sGdxHu&2W8-6|VFx zh_CswyLn%xJ(oC2g2+9)I|H^AEM#E5o&WK$acrAVl*!Rzl&M0gPKmp`EMV;(D$e+AP z5Q+?YCv!!gxw!x}nlDb#FVJCsFP6mA|M@-f65J3j zqlq_+?QVfA^}n=Kh=6Xh>e0&kA88SlK;D7G@y=g~fyO0fja^fZgfd(odd4}wrulS+ z`0gc$`GpH#ukY1{1a;}v?W@MS&Q4}G3lq`1S=*q;Qj@N18a*LUDmI2J)_8<>axRK!98JTng|r+AOXmO zPjBLKw|0&IMxBRk<@Uh2^BIN)&j_sz1)0+dEmy`=2$p85eXp8IM@*KvQBeaGOUk z87T4*%nOrjE+);cZ}c}U;A;x)nGc?qV_&QyS9onocLR)$lABux#vX!(z+blg=2VcJsYB)mm?$ZXBUWCXPDd% z9{H;_=Y%$qZC0KuDa6j0Zym4^*#4b34L@0`ZybfMz_6$>M0F(Z-(iP|n?F*U+^Ze> zPi`*U>H#wdSdzq}qM3{m;j#-QO?20(`y%0?6B3sTMnr1(-{QT2wYY)LIC8K-c1%Zz z+*5BecfRP>J)*G$L)G$Yb6Bk087h`-wiaeR4^CLg z41GV>*buJQvx0n<)NHXIgySE%m3U#jC5w4`>T`;E>6c1%{PE~ImmeBgf|i|Zt3H*0 zw9w@g#IR@IWSsQ)Jy%ctontjgSujq595%FzO?$K!hzJu&_ulB-@!U+(dDFcoF#$5A z9*!%j0*+b>ug+Vuvkg)-5Gu5*lW0X6FqKP-Nf3$sT9gT_IpCKyfpjQY*|g))*0~fb zE7Dfd>3toWR-yJpvW!jD_=J)-c(aZ=geqhEm`&=S&vQJXZhSpbEN`37er> z<_w|d5k=TQ-%P!r!kvva)BlAG)V(J>l;&BFmYWSjkQ{S=pPl`<41|OQH_FT+HS>_u zj_j>4+u9EaD)bij-?vvHx_nZ_w*M;>V>&0~%J97MGDB@K za2h+Zvvaba2Ze~lO|Yg{16{J%DiffRv>%UcdT_fjqU|Dz{%V~cN~aScy98Oyd*@j9 z)dSK@{GAHpCNII)o61vjxs~$qO&;V`yTwWuslST*bG4?quBu6^QOk;$(c_NuDjRA` zIRKOBt>Zfm?L%9fGWPXu7<$Q8Q3k*)zg;;>T2nLA>YZAh{nyr5DB?PBZ?436#IZQ! zj9(ctfYP6#0xdV|7^=&Lr-Evtxih1a@OJBsxjFz-Qye_>{z38qxVS% z`jNifC4C_^rD;>KFPnR&fopjgF~3gwmO8|ZH8$j)7Bk1G#huldBt-4NKkH5JlVrc+{n6_uQB=kr+bS}VyG)!;0s=5n2{oqQjB2f}}Y%Y0ba10KCOoK0Sa z$%XHOGvjBbkG8~``SyVQs~OXs8vl=?^YBZuecL#W9Jz2-E;7r8srfi@fHQl3rq*Mn zCGHY)A(8_{apqnv&4p#9Ws2tBdsK>*1NRn6agqpv^78%*_vgCr`#R6#dmIP)shida zv8n=MOsxzf^c_o$FOym=Gga6f zX!vt=c6s2!NlABqZa1MW)HQyi2V&J1xWoeeP!vg_;SoLOWthZ{w1S~!!%sBN25e;p zy0_Y{N_ItUd44w3Bd-^<<=Ci2C;*m6j(~QXhN9H}E);3|ZV6t+DHL-gi z`5+UKuiA^Kv(Lze*Nk*niuR=~aBys&&jmog{r8Qp+K39z2aP={_MNIwtNUL<=Y@P? z&70IsHyZuZ`_!UGAZ?HiD(w%eUrwcnW5hm-hcngMrv%E9wu=OdXZQ+6JiQ^kcidx> z93{WT>Gy?)6j3Fnyro{L@<`hq55+jjP=Sc$m;P%pLSrZ%xeh3A<4Hpu0PeZX;YBJ~BTxmF(fn+2-mvgh^F z{3xr!)r*OJvn;ip(|S$6={q0hbd)c8pb3ix&O)v7#_acw^`S*NIYACD%6^2?sWwLX z+MyJ*)Yf zJ0i~y=C@-Q1_)_jZX+f%-qC}$66}uyu7$z&Oj$T_n!!{k7i&GIluDfMd>Jh@W0rE5 z!|XCS6)8d0@yb-HjO~M)CGDraj`OoGi$Rm{O*484*vEh`wmQJaqgwk9Mj=;RimTf@ z@(%7s_tQ@=8r49*Y-7gHzq^!E;o;VBdux|E%NwkHLQp_UKVvwrR}S3&GFtZX2hMi= zp|)V;Jv$E(cf3mRN+LaHQd!0S_yW{!WQ6=1dc=gWDBBLMZ3gUtgGvJ8i1j4uK%~x5EU-6M%6&Ls* z1VLMr@+nMOn%pg1KdjrC3R~{_(5?U<&eUUj2JF>Cdb@SI-cn%Im$N|2Q)mNQYUOXb z^b%R#7#I8sc5E<}1kT#%n)y7{?xYH0!q(5cBLM&W&1}=d3TzJ!%;sv$*80mur#7Y| z_A5ukKrT2o`Jj|4wqR7a5N6y*vj$=wY?N{ZK@{u1=PH$*qD)&<<-Rf@Kk$56E&|Al zCRM->%~$nk&O8960a()&TIY|a+eL# zt6IZ$+P)L%we?o?jmqEqm?51?jORSJSVpGPE{?WrN}oFzOJMI4D+#pX1q9X?&MKuo zA1I~5FK=CaS|jN820=I%pVsksh-(|Ts2b7~Qou7QrxON2Fef#3zilD*cDfd-eFNmq z^tbuja(q6U9DQrJ#mTjbh@8K`&S)tYN6A=JjGSx!Ue{k4vfqUV>yQNcLCX#|2n#yb zS#hTzBaF~#93y~-e3x^rEIeKP)g6?&zxWtJdmgFW|9xJ#S2<7)c1_X%YK8>o1l<(Q)*!dY=XAd1wi@7kzDs99XVE6t#+0ki{cmhhgLZS}gEFJJNXUSK7 zPLSU*v~{A1^v)yM-a*%q|BGz(-EZc3?NtqucnShKt0mE&X#_``xYb zK;~2f9d^Ug(b_FkS77z&3gr6+oZ&wz?}HNoQ0zRlyA+U0tuKYBQsnoS2T#YPFl_&F ztz8PVUR+rIawO#;!)UKvkl(L!MG3kocPR{W>DS$RQfbKoyPTLOFF}0(PY21(Tg*(@ z9Dvu1UV=xmy5Zr?Lf!JY_o@U`nubR*s)`@a##blk~rE88Ut1u7w=!w207RD|&Q!kAMwS z4>1wQQ_|le1C1NTUqk5yvWfpN$wE-`jl$qx)qHNWpo$|SVz z`r`aPqoE_Yym($9ckwdpg}re3nX@tRx%1qFj}U^h?c1SL!rL(sb?Ch|v=c(BqPY7FU~Bo#|c66Z+5ZF(mIK{*2ii%o(HuIKP*s zL|0oMzj;U51mYt~DPn)u)1ZZRLhI9G zF8Zb6+G9dSKDsvGkh0MS#?Z@d9ZTb0 zf%;r~k);gJSp{4t)!Bp@fwj`~a}W>C&wNsFxx1wLlK4})@7$DB+Jh6MTP|yX6?vdy z8gK2K%Z42^*@>s)X!s8+4%B;*?`FaOC?e?k5wnxk?U%-0@wevJ1R1y7gYDTULJffq z!s}OO_0NA9G?eB2VqWE6X(m#A{qvzzgAU;6PxRur79cozq4!`Xh%L1uft8%7*zvrn zNSQr-`jb+a0bcY*n-V=1@_m8&NwAFX;dEjkyt0pQX~Di}bwN{wMT_6i>p%w|Z{zy$ zhsIG)_AWA&XjfNT=LIo({HplKCH~Tce=I#8U!8=Y8f<=YiaYP?=B?OB)AAfx5FF`s zY;zm~P`3f|7sN{r_#skq?dF|H=}8Fa-j!~}D!rcI4j5VeM_ZXO=`e5acpY)EX-4Ka zIfDnWKf(&-@lfycXJO-|JS~!bTLeL4b&TeitcHpnR~1C4_wd- zv;W+6n;EM_A7JFxqz^Z>&Eqf<4SZ3kQ2`9uu#{Tv`q*@$hDQJGx**}rTz$EySR9XD zams3=;k0C&gO;zNmmf8ROn%uM9gXXt1?TJqYxa9gqI zm#assWZ-8#o&MI9995n>C78OR8`YX!gfAk;kj z0pXVP6HfM(=I8MwKl_$VaAu1S|A%N4C2fJzO&*JS3Dw_k803&@pH7H+j#&mQy;ThQ zjl7|lgqwJ^$t-%@}2U%sLvfv3dx9C=}SzqYFuVK_15-KTv8 zoOeEmRTGq=dLJGyjZAW_uC^K~Qs&Oz5q{&7-a1@<)D?BdI_NG>mcumzJC;b1Q4@sy zhh#k3Zbo0|K<{Z-j9OEXC(c%KUww;z>yKIadN-axG>cNr(ukp-o~cib3Ck(N-sgQi z;co{jY-(`c%eJYWbWQn*IJyz{Bx;# zdM6$A90RT9vz6Tt^%sI*axj9XzGR8Y)R;r;0P>jcTeTzqY^L!`Jcrz+*f$!=gb)^B zbrl%O2_2<(p4%py>3$iEyiJ#e6ntHKh6%Y~LqR`>q<`1=RIPacJ=Gj7yRU=$-9&XYbN4)@SD3aHh!DH z>w$YW58vJ@w;@(lcYZ>gdJd5eBxpv}*?HU@v!W=VQ`)(&@j6e$`_}+&S29MABBMwe zQAv9R=Eb2Ro!+Pa+eyWlZ8ll_$ax^Ght7#<{RyD29p^(Qi5)UI%mwWB6RMd07UJWj z9uk74$Nq8gq92M-U)yr)U6sk$-Py;R4GMed5xw_}m|?@Z$;wWGMAy)QGjb7KhXOep zA`8zD1LMIn)u9;)Wj>o#A0t6LrfVHXQWUr;S*X@-$4s#4K1qEcAMf$-r$MjyE^LTxIEpS21Z z+y=_ocdNxMW&H|eQ!eTtMrgMHwlf}b=F0SBkGk0AOHSS2Bj}` z;pD&(Ekgt`Y2fXPXfIDui6bm-WpKx2LGRXt83xC9h0#mM*aYO_{_bZ z?Lz0&`=A;Jr@Y$`0Nwf%m%Ghpm3Dwp;x0oi;6WWhR;S zXXFlQL)B&GbgcS0P1fkoP2{{;Pw}O+CIG6uEHK> zIc4{71Wf*=zqXF)byM_I7IEz$iSTh+Tw#UJL!gbulksK@TVD3+;-!Zq-^gPPI$ese6Vt} zmYjKTiLC2gXx{n)%2#_dSa`BMw(m?gH0yZv=?_U@`8nGVQc!D9Y2$OTTT2>$qZ}4Q zyEJ#%-PGN4QA{TXvMc-WNqeY9`_O>pFRR#!B~@trtAWBBpcpU=k%R4->fc(o%@FdzW#czVhB+oY5?(xE zGHFbBS%GAbM|hZR*oB;SCxBQRC-9+cSM!42*5W4W%n-dFY!I?l*;ZF(_@~LOp*Q+9NBBDjqcXvj4FhT-oic-k=McJ}seTba z-&%7RTPkS5apg3os7!1BdvxQ7mnX9PzfRUcf8yqLvaKs8a zCP0t(auuidgE%K}EwRba#Uw#NUK-wZ@>(x;37(c5&cG>R)3?bhs3Y1g#OU|Id<(7V zcthf02Y07g2BY-(XseX6_&%xDf7p80WUAKzy;)QLYCvZ^{m*8&unU+ZUvXw)eI`0b9KU0`fj;>`kN;|2`4c>;nEqo(6ZI zwGtbr^j$#o?2^V>Qr_h|-{*k?i;==kcpGm~)WcR(t9oD7?=OX#)Cvr(;#Lc(h*cMG z^7G6+q?+x?eDVl5>^t(dk)A{We9ZpF@r)^xlv~lb?I*z`)^R1N#2Ljt9^CJ|l zF4yBaFT~EyK!Km|z&=eVtO{7{L2jB3uGfH!uLO zxn)1Ln}vh&6q`A_o|c*o;C398erCS3oH|*xL^0-s%3w&Y4&1zI^oLfSS+O0dzU=;r2COiwp&vzg59#P+CvXijrpGDPjLz|u^PH$jh%AiaLslRl{Q&J zq=DYn6Iub=hI{<26Mc=q2Z5<}5l($geP8mT`}7#9;0esy7Gw-~Xc^uiMs(T)&yzG5g;Qt_nLKy>Wg4%AHCjOtcF%aBocl zu4?`gxWnVdZP+d_IAP6`-yU(iSi~M8Q30wF0BiVn(HZ&TpoAB&P+piCpq!N zt~;X|!T%fM#8ZldtWikcredf?K_G2>+t+4`%f;=|G94s++Itb^i`>iqAK9#b&o=3Q zdrl7wW$>Dyv^ zuX-5$h>||g3Ed7JMx{+lrs~J_wR)7jIy@DF@aCyno$RdaJ>C`DRgJ@UD7q^0YS#U< zj8J9)Lyjjwel3W3``g>HHR6s=FE<`)=wsoW@hH0w;)sb*K+}rlMN>|75Q4YY zx8)@twV-)4&W2Q9)3~M3Jpe6hgy<t5_l%LXFiNK6Z~>RYgw>?ir+t5D=q}IyRD<;au8Fn7*x>*+K`woWP8QCTB2i@ z`}3^UE_J%cBgCVUo&BG@j1HoP%R5XrXevV|{IPrVLskxSKu;iQWrG3hOs6xZT2Ho` z$VKaaca;P5Oao3&@GYuO27Tn3Jlswhs#y)YoS*Ft_)tbvi#c(HwLYT_zzOXtymh6L z{(&c9);iCG3k7R)xi2^iCedw_vl;xMo?4itgs{o&i%>}6Lgc|A>$kXIc*d1IpHZ)~ z@vm?B%G`2M4T01lMb$^i)6R>2uDyqUC#hI zX9nM143l>n5ZTploRxF&h~>N5kh<-2Nfb?Q3SwYrmRPv-E;hIs=9qN-TXg!8JEE#u3W ztonYK#S4F)x!>|H#7u@t zn{akLP&uVuO3;5tX$m3VIx1S^Q&-DintHeY(95{EEDINJDdw+C{*!a^pP5dl_}7g1 zLc}RO57=OtOHjG^zfhW(W=4NBZ?L32Y9}$1wpu?_$S~9(W`UQ%x?r_m`LZuMEb?g0 zfsq#TMLC=^1@M=TzCY@QCtHD>aoAlUrdka8f=NOYx=h2e1G2rnA+;eSVk)o^u4>Zc zU&3SoA4~jpcB#RHBT?|VsM2nDx@0{*&0At9nO^)uMNGq{dmYGmk&DMnds(eQ3P|S z{MH5QyAZ)_4XN}6Nr*)Rg1suZZujh(ylegg=+tp7_M8cce@U!6o8pw~nAY5O3IyG3 z9n>QBD(E2cUB7&E&5ZFcMGEWWiG+ZLuhaHw{11_=xvMutXU|E+X3Imp$#-1w}NcqUwIy|E-<6w*P zT=%V+zl!r!7GFxuTXXywN91OU2<2lVv$5AaGg8#cv(5Dv**&%k%LDM;{4joMZh1(+ z$yTmQOS)Z&zss{!2XWlOTShH*(24UCT_V`jU~YMFvL)rzAfBcW16{Y;7p7@KTd;pq z8!DH{5jH>WKT){+*GKOsl`r~8yZKTj@gqKam+F=iZ3FzmvwmaT@7{2`im0W6&Du$9nwBvQkvtM}!0R)c4(4-n6>phkcLjuSG^;3arU7$XU{YK(LN*#*lTp`I~{F zunPH@%`U~sde9^0R_L;4?1e*26UZ#H<_Oj>xHZxaSFQ@GJ@Z2!>UmI?)V|48pL4im z8u-K8yG?r5;%_8Jfx5vumF?h^%9y?cgeK_Z0aB2LgdIEk7sI6XsY};>SX^~8B&CYb z$^!rxP-Jjt?}GZ7sqNbf9f)O6bhM{}uB3al@tlWi;O0t_#gNoS@*egV_5JnD$HOODVvl6)L&{%!CQ<(O8DxUw8%q71 zJP)t?9p046Yp8kTce0>gtO|sorF-58Y=ec`a~JE9Pr6P$=h2*BTdd}72|6gsE)Bzl zq@ge(Q7QAep|cMX8@F)5&96wm^-tArHlyls)ibVm^J^CoUklA1gvhG4N9VS9O#JSD zM0$)o6|i|f|EZDaaJJd72v4PK=RJt@VTu@bHfYd`YqyVhbc+S2mB(IW-|gCt+gziE9{+8mEfx61Wz{3d3nf9OSwRX^mxUt9V8eyzy>IIK-&IV|PwtJ3g?2goj0JlhqX*@GSu-`^igBi6z;czhnD!B0#Wm7H3qfD3@8c zt?Uo}yiB|a|ONX=2c>O+f+qvSmZHMC_f`p4P^>uSK+cR7e=G`vKV*1ct*92F_6yTjn z`ELZdyfFgiZ0wjH_qe2HN8*W`UDpvt_ryv3=s5`3ZtdBzpRnVq|5m!`-ey$C@aAJS zA}TVaBl$laz`15$&(4j0U_{bx?3ooEBZmQJAHcM(Z-R!e(d+%@`^mFayNVx*MX-bK2#$&Y^S+EqC{F8sr#I_D*ny3_tTf_JWmL%{ghO@6-^ zvlAzG$@GHZvQ9@_qgq}Qo5!{9ZbfYiy(}FSC|rRG=)P5_KXP&B4J7@Zq-VcjgGo~r z!P8yI3p@Tyf5$z4w`oM`v`ipD>)>f{%0`k{#9D8GPlz90=zK`(Ht>a(Wp&Vd4L`Ks zlQiJZ`*vvk{tTy|bykoEnZ{*R&yyMuu3|Yy7taxVCQBRVqnIBA>04hrh$lo$k|QgW z_I8D$sy2Hax0yA?E50#_VHeMC^{YaX^~u`?&gHUzK+DO*Nv)3SOsUR4EQHdpD|?33 zI9z9QSg6YAuU1c7e<;=(k{CO-luEgVUJRe#$1wSG%q_Q zB$-FncM*Iel!=b>qaGSj%uuH64_P~X2WC}{(!->>?8T5h>Cm1Uy}ypWiq45@d%0rX z>cp7E20T?nTyIhiq92?F{7T9n>5HLt79_37Gi6~||NoVJ5XvqNdXN1snOlaskVE#K*Wi^YCvCQ%x>wbI$01m zqEuA&^%8XL8_|F5f9)2ViKtJ*7A?FAb-zz@ygrT&HA=n_V)d$AwDB(enf^$2o*0*m zJG}L;@WG0G(o3iGPSJCVT^%W5->kf!m>_|T^#sgDS>MZM7 z{_NpgeZLg^u%W5#<7jg}Kjpn|+=5yD>89btRxP$c>1o1kbdB!#nW%a(QKaP6RxK>^ zlj0k?OUZ#=ye|04^7Q#T!!||X!~G97M-klmj9fdXZFtHho+fk5iJl3DvaMySrbWIV zUoZc~m2w#uB1X+h@zYC9F-SXvO(GJ>2#hfyR%r;cun@p+lC=93;L_6A9O(}TtgrNN zfgfso*de#B4CbI0J-MI~*y43yh{K7uTy&#k_MRI^u!Cwgn40N$YEtN0(Mi4dN$@W~ z*$-bWw-O-?^W=IkBJv zgCBI?vfHC&MUf-ZMXV<`9DIh6z4+eavY2_QoLBKd5#uOW5t1LK#X z86SvMsMq_9bYkghJE39PbAI3x#>F>dL#9!lKlJkfQhCAxhy+>?%v;0T`1B!NzBnE& z(YNKZlQW=P;;V_tA(1i*R=q0F(@r^SKI~_9~ErC zk-C8vN3UHu4^pm^5}EIY&2&KsO!D(7CqRW$~obT zTL>%ZQ#A9B9m*jy-Maz+ovyt{G94~DNe`L`KUrR>^jUuWEyKoGlWy$!W4}^3fWtGl8KHDxNQzv=S1n%^%(pozP*)^eLL!4$Q|E=f`VA?ykCS%PnJNb6D21qxaII zr@y)`+k)@JgNx*nrYwGp$Nvp=8S5$Xs`+PqMm8ddt609NGFK|y=VXDLC+b=v6rB7i z(Q&L#Ufv+18kdh2@KcT#VlA4+hkD-*m_OIqtH2$RRf72{<`&>NQ?5?3n+DMce>}3~ z>H6v(CD%6}^#UFC_M-krkDNQ6Hz%O&27|Sl8^@b{Z4LW&6|+H@>fz>p0{lD|PB@i| z&>p86Yj+TzZ=ZXnJh5ov=HrZR449eG^H=vSd#)2cMt2+#2vkqmZ@X}jsH{PJp`Tyl z_C>#8vZ2C9Ic`j80GQfeZkAYEc)?2qoSd5!;t%FuF9ln zm!g^Ql8q~!A=6c4A6w9#ofgD_TsI)?usR5(pVJ3k4YiiW+X-)Dm@$i1JjzH7ES{Y4zCrJIVE} zF1hCCiDcGBf#-*|e4+G&!h>gFX~d+J$L*hO+&tpx>$6l5r=V|&U}Z7JFN8-Yr}!%# zJI05lC{2hs@%ZB#hrUt?ri`1gOCX~2#<09I)8gC>lVkJzzDG9u?i%0)ViLWrgIEox zk=s!U+;YJ_>JU;{u_|s8;^op;JD_Ou&WO;zHXXCp(X~z18Kz%d>93W*hKJWxF zWJ^TJWkxV(+<{GB2xNJPyBH(6uM-G@7 zx#9!93R+^Ep@JkIad}nF5VP2$yFB>xfwZ;9KL@6}|2=1W@IFSzbkm$Y0f5_DV;)SiV)WN9;j~I1Z1^Y2krT2NwxHK`tzDAqt0-sS? z5fhiQZ5IZ!0UfAegC+6@lk1fC0g?|D_qb@`t<0Pa>H%BJ;yLtW*m;%#NF+KHfg2tn z6{Aq*oe*uFt6PpM|1-fO_`|Amayy=hm}0~_$u?OwfjqOov>NORI0t|FuXMBovsTM- zr{(^QTt{L7X617fbO6p^P>-l7Ca#CrSz;(-eklk#=chTH9Rfo0cjyc_+yZ5`Xlwx*%(OxO~mEU?7T=} zxqte7TgI9kT$wPgcsyLB7Ri2T1*$3a4F<7^1c)`xjbTz=dikR(Q zZ@+z+m~Qkmu2rpSv06d1K;znpFp^vLnrwZ?%bq&;oONIfy5O8Q1|;qqjGrTcmr%ET zULfM&)ZzUd1Zl~2Gp=QIQ$-~M%y=Q>0qg$Ov{#q+cK)~Qr~^%cqWHSpCTYZe$O@CJ zyJ<+gvYtpw`4_8Lb2QBUTe?9F?r_#w1Z_>|Gzr7z6w9SKoNVu@g|wK+6aeGO=i$Wc{LT(yT(h1d{N1Z z(R;fP`pG_Bejjwk*R^snpjl;;E?0KVvZ7Z3Pg5?GeD@;yyUX(qfk)gCZkl}XG1>O( z+Zy_;vbciPKmMaPtc#EI)X`{G6Tg(Qz9p1yI`zA* zt6I^WbaCM#%>@~GJhyF2Cc3m7-HT4X3Q_2UE(p0RF5@Osmg3GTuHyUP;e&m(b2q|0_xR;XB-=xM^%rG+0sN}BJ zvYS!qU%0+UA%$Ocw>Ao3F57`Jq`8v{_#%{XyImrN>t)dE^R7hCncyj(Rih?cEOSQm z&E=o!*uYQiq#K~HqK$va?(Vse;pe+LBf*4$W5qS!SMoBR8NOX>D;txANB8K*8c00` z3ZY8ci0gMt(po;1->dTBwA@7?Hq|C=>&^1m#LkiNmN?jFA$SOBMDcvXx%*a@z?d1) zuE)!(P$l7*cKRdZbIVD^hi;)&LZN`A>#JhEe6 zE7&e7ZuLBxd3^Oa^3mC#zjwK``GJq~YBUmBo8;P)4b=~xPu3K=BWX6+1t#Io|8L{p zvz4YxxPYAy4^WSCd{?v_vzf{b>FN4Tl%>C$wv-b^3?$?t7Expzj8Ez7OUMD>6@0T zo=)2rs6w$k*%?iE+^VcHMMk-vWIwwTsx~i)&koh-%*!-2DpLI?s@)|8(k`<-JF?0vJ1QUf;qOuE_B zgB_(`-h64N9Qc=)+8ZBa>FB|k;jcz$^r=M}lVfqE;K(&J$jWxj@uF!KqbMr5R#&*{ z`Ppp(%^hFP)4N1RdU3!9&#S%DiigZYBE{-#<&ojBO|hcDgeuo#thZw%&uZrB&j^Em z^E8n1xahz<1&?pkyBMwOsDO3Tho8WM22T2+uJ-=+voj;;TtkxLbIh~@%CKPsB_9!_ zxn#WT*rd2;8xKU@>`%v}kSvdeO3?lUv=1TJ^KW?OGgs8KB;%EFoKtn-_xV9p74ncE zwzuJu6-?j~60AqI6po1usKI2wPWe^T3r1*pwc`^jB9$G+&v&}+E~Xk=RuLsbSU&lK z^ow5<(f*?Hy$%@)R^kQWk^j-%;@T3SDJt9>K1ElR%sJAvw79{XxROs z*0YUI9Hj8On7kgK^Sef(S`inWwJROnZV7}qqwImcO|!1Cb7lmX3}w;$M}CL4Q0gLF zv{}K;ftO-=*ymJAwF1318EAke{6_KoSloY4>fGD$=W>M(Rfoxc$9#Fcm^F98d)4@n zayATr#uOD4G-w?0Jh{q|R^$wq>lxDnW=)x2_e&gSuwTx!kldEi>yRp$;2DOp8L3Z^ zBI2@f=jOCeX28stMnKRdnW%CtN^9xBm#7yyei$h{@f)t-40eu*v8WRaXxVMRH>q}@ zFH{x4S7vslx9pT2M~pqll0UW3Wqi9Z!!k}1X`Jc#M%If*S98bs>9yt~ZT~tiIZ~Cq z%QxeVM@4^U96j=*YQ)67G6c_)Z{}ATg7(f@k^eiJK@@JtkKWP;5(^ycd6w$J>Lc1~ z|GhbdDQd0trCytuJjIkAVxOP?zB#bu!t}vS&FJ^eSV$|UUQ0Hd_<8onYpjR#pTS4L zq$%UPXsN)jnm*Q$%(*CGpz8^W$576ucP9@0Z!!&_Ad(9d!E9 z^|21g^$FxVXWxG@l(e;Szt7;P`TFO{>qRz%_w%o?iyF25NjrSQV7|RWmMQs{*E_$= z@F$w)N416{q(9pq-lH$Pbx949LNw>Jq9y0NPpV5UKhKwTrSF3(%ZAh~friT91F_MBIdA2dQzIlsA5 zG9qeaos}3$$uIhE@*`K-)99tQ|68u`a5=8O+rFozfyo<)6tg$7e|Juu_fvu~#soRk zp6t(7$f_24>a4$Wchf}hD$+U$wK?!V@Pn-Ed@?L?!`>xB!%f2n(aTv&UCBv~Cq_r6 zBS0v-%QCfkgf;4H4v5LA|Ap`681ILtO3lkGiNJSa=26-P&T=+FdZx0(5SlTM&$izF z&GUY(FGj$W5%jdp?`cKlUX39ByqS=s{i?4JAe)ZdQDuvM{gc^L`>6rF)VB ziryYvFtMR*+qx|&ARj}A67*9JU_|8)`AU;PE^lX-l*vg0HdkQ>i|2poFlzl3CIVwsZ*11inB zZw1dT>4B~#6ke-53#8agk=5umrh`qr*N5bTqfXt)m|ghWH~&=aAcD7d3_05!di%fp z$qk*@O(mtxD0#8xJy8Nng}~Y660gI1QGqG!B(T-M_;KA-6@5^gR_V{pWvB;Dg5QQn z91=PX1I)+&Q5t2GxMULDDPTsX-;3P%)bo3SK)D+bWcBqLagnt2uOq~rD!$E{qoH(+ zF20=WB`(`2^Skl(y1PaKp@Af9q-$D@KIyJ43iim*@z4b`_0N$DO<;tW$QZ4>%oJs( z@is_NoR|{>u-rpHcWOQy?Rq z(*zZ(_4iqu6zR;y2LnZ&9lY9t1^8m$I`TZ<2$474x;^>ZM17CSwx3J1(bI};f#Kjc zHH@ApXL%rYhF|c)wov`vYj1x_rt^<;Rt#T-eR{Cta#yHnx=x;SjXS=|sx4!eF_<6@ zR%t--6HyL?=R#i;HvXcV=LQsK&tB?~J2^kF&p0~3ABF6dyH?j=B)sBI8VQA`sF4~i zK*#|&i6i0da=4WQ7vG@vlxjHOX0f&7pa0l?fK>{V@qH~SDKdkD8FfQsW72;R)uIVM z;q;{yRlrLsnAysZ=X5-s)=3u8ytAHXc9X-+A!v>`C+zoV!9Ro)rp$n zbh_+2Ew118{wLh8Ibs&+xAKe9{A zWkOT1!kXIdLprjV+{uul)E}+laz^`{k+bDquSGzwYi6sm>(&AAh1I6CUDM`0GUzyP z&+Y`B3Q&2cLF0_T4mB4ZB>nlXEorw^;aUPle1j+BFf(YATDUA@QaHYn*5+1U=zPn@ zBq>CP`;kNE!4rW)zmtbwj+5rJfl<S&>b2LAC+imY8bQ(Chq9<;mss+d zV%9fhWTulC`h5%wv%zIFycRp?Nl?X4`iQ-5U{yU1=p-ry$T|!s)6K4aIIE7#8}X0n zvU3@Sc9yM~w7)E^=T|A4k=LUpE+6Rp82BwOp-UjoisO*|FPquGteQR2?7=^5(Ut9I z`_A-$)JIN=EAhz=^#4T*HXmC7V*WCA_KTj*_2yExly7@O6(o6Q=|=zCR9@Uyl^d7q z{#3mql25M!o%%^yX-azkZpCAMV;-&3@o|2!n4g6O_Kcajqm zZLU=UQ|xLxvl;&@K(*sIJmqsLr+-kc6OzyUIti{9`Te*+D2LraPbjB0APlrO#wejh=8N`$_LS|GAGq#U z(Ev-yV%p;tp)4VtvjJC+doC^-iL1VijOUljUsf+rP^Y|63^H0q4qKKzI?9?zx^Tz7 zX4P?1#mgvY{)@uaNB=JWm{n2&YGi+vrP@{Z%?s}&7*Tnft%O97ROaK#!AY*ZW|Q}r z(8Ms5Lxj-gYW?<|xAg-5ya_S^T)-wHf}TQ&hF2pZUSN82qpPriO#QUd;O}0_L33xs z8~Xg4WY`I?hFF)DLPQ#86buN83>dWD^Ur53`!61+foA;x_W}q_T$f-t4m9-Sc!b?( z(6M(?klr{u(mj8$i*zzcK%eATd4AIs>LD#T_*;ahscj@Jz~%LMz+@ip)Da-HJzaA< zQxGB@!>7;JJqHeCN6r3I?DZy(cjcDnEupW#~z13vb ziGAUTnq>a8olEkfszll{!Y|ZxJTfbK+jQHeNlTHY6RL#T4Ii?%XsRdcMj*r6T0FQ! z!K?W8jqI(m zfF%BlWSDPY%Bcw74#5)^u&{Pp2;)I~Od2t~AkJUi)=wymAVrSFJ8W@hMAYs=$BeCp zs_u(w^A9HOJ7>Su@fiBx`{gc*_nm^6S4OT>Zyg5#C(1>|l4YDyg5(W(f}gYs>B6)D zQ>VSP0BJ{afm;hK*M@DrD$vVRt%K7??vMv|wN&tnvQV9I8EF zh0<=3-|OfPjG!}g&6M(E-0fzbp|E%mCJ8gNQX1X#xQd_M&YT-%j9|BF*vx}Xv3f!S zJ$F%;G|e*mO!|mEDOYh(k5>jscm&xy`kuA_iXqBDv;Ch=-Qj%-oabIO6KR0{4*$kZ z+&TM(#*@}>ZZ(|9P-;XMt1REk{W1SCqWPte(w!EjfVV`av;V+wYB%l9xgn3Cg4J}{ z`lpR~{-*{QiX;PaTD9Gz^{pB{i*a$(*tTa@`{ zpP9B~2iLnXxC83l-y(()>>xK!@m&$^1DW%*U|-Wp8M=A&sr=|dx9zYs-zD{*dUr+v z-hMNO>n5pC*|_TVGp>zY4zB5$N0D^*l%vSB-D_^cP{M9yEMzB5Q$?NcOJDm?CHKt@ zXVIsJx<;q!ttWeDzmlWr1K|Rn1o^Jx$g)T@#cw5yknVY!f#9NsR&P|lizM>OcY3CI z+T2n=6z3@u_#Y0z%Gomd8m>b5(LlKw_AM*?lm!BI(}BhnY%I@#(0Mz|?m&5v!rQ>Zvx*8aKmm-)o1|KsR9+>&nJHw^AQQq$a{)RyCQ-~`jkdd-!U z=2psu+j8W>G`Es(LvvwSX}L33E}U2nG)-`Cs9Y$DDC@`f_aAT^z~}Qk_kCUG8Pr-# z^$-wia<|$Rd<|`byY0kW^PU8}+y(HXrvoMnQfj@{RNpDWe)y^tLXI=&fm&DFcMmPT zB2tQu(_CHON$#wwBrTcK&ob(L**)u3QDv(Mii>OalYU`VJ@OCr(s1Yx@wo&&JZ3s=pU=1?2(M`Zs(0ta_V^Z^95vX7=(3&vuP_4tjbEMMwzv18Ri%AEj&f;f z5cG_EqqTw_o?Y{c9Ej5gm}Q!5{g^n++m_1bknfGnXzXEkvl2S&!;{xHzRBY{?h->t z%m}S3o5$6M7!csn)TNV`Q7c!XJnGfZ~L{gpb?BT-y1rEc#33=;d}K zHPptt`tH=VWy>5D6R3k?YzwoVKMk-_9sfJwk#*!)Jb?>UPf@!-Se8d4pxSve>sz>N zZp~}w&5j?(ONIuOglI_vM*DCxCSVbmSjZ2@2%gwgr3fR$taugbMLOaeY<_HTZ^VJ& z2e|OM9v1}p>h68F;6*nsqkA}iwY~prZ`2lqjpP0{CbPUVtg)V5ntgrQ2Phkhqp3lf zs{l&xTerH?iI>N%m@o@7L6p_rtNsn+K*0O^xIHYFr^ra~L_4qu^AU^So1av8i*m zvAziT`^-Sirtg)FhqS$##`LQ&st#0_4lZaNhJA<1dl5P^MJXJOAO&o z68Z3W?%)z?=azg<&zNI^JL!n?j>Uu^>e|a?7j~^W8v&bMvULlEAq(L7jV&P%6aC*2CUfV(crsa;%Te{k@V;nmQIgPAYc-a)Kwn9e+gbdcmKty~cnz|H4I`kPuO_>KepNFF_93 z-eww>bkl2~VZmW)+P1;Ry7#Wd67iRl&VBTL-09EvnhWlwETAO+vva5| zZHqv&BX_z-muun#=(FgLc)}1CDO29cQx|`72Nv)m&gki!sX{t(D##i z+Ridc(9kKh%H7e{UyFzJYB}eJ8s<|)nDOl6JT}y}1Re+}^7u3`4N{ccRxzwztEckQ zbqZ~va1clQNr+s9m2Ui-_H@lIAJ0-1=y!werfO zYf)Em(`YlWwOojoR{5goRS1TSM(M5{tBZftPZ2Wc_@`_X6$F+@NP_4Pzx_0<-15=5$5ggAuePP$#*6R{V; z?&)nm?>3^!xHp%F2&g9p&`VecxxLGA=Sx?Y2EGWICvt39)}TZJ2_J5>Ta#aC-+e)U zv-wjp;2DMc+Zlsps~uD4dPk~g8g`PP+|j?3>br6~o0p1i^vUp>Rnk~)T$W8h_BXN_ z4m9gZ1TWzt+w{?)9Htu2sMaqbr+4JS5wgPf!n(v-j}^DV{aA0@#BQ?eEU3Fd)EAhQ zFcQ*T2QgsLT#1&EVywT-U~;l-GFMsGpyaqM$IGGJegzVHH*T$+ihPnILi^f?WA$EB zH7QXHj}qnqT6|(IGz3cZ^)ft@)mg_8J(;K6*e~9)ed)GUNmiN9YS)RX0aH19RUuCD zuxX~?M)&Rt9OnJDIhH#v=xna1p&si6*wbmEI;Q~A!*Kj)rv!8N-;VfZ8d2pLkb6#H zw4rp5N{bY5uJR1|A)a`X7G)416%g{q1`elXw+(PbRrI+3^IU_>%l4+7{-wApomjXnsUA5D*#Z@1R6*594 zL|0%N)NYzarZcna$~{tErxXvwnNZNHof!|k2#5b6Vp0Ow)VZe_BFn5n$w>Ugt^V(W zWtc6sDBmjCsXO&UItP64phby!!)o8h>crU;MrT5Tu zHS0yrpe2lP?bbQVy7mUc+%&CPM^ip>YMnl&$z5~?ivyUO!+7F0Sn9tR>Rmf_OE%=H zFmu@t{JoP1>N-%!{5U9Qwq~q<^hgsc6%|ItSBEu$)0Hk2i@yxut6$vH^$3^rz{@zw zR*oIql((GK`~}|kuPs5WMT^%jOIP4mq11G>w?J`KgO=?9wLKS`uvK_|{-^{LJ!wgt5yBJMXq}>GH zrNKv?JPcOtp?!!g$XBW&MyD%CML1=*+&bB7HQe92`A0m0)#b~{z3bUxi1_=<9TeGg z?#?YMt%t5;^G#8gckTLsdQEgb)xAxuFk~TQ-F;JT`&!T?ny!aIQJfWY+?#rfI2#fC z4rSi9Zap_U)gPBZFtXHIx#OZ|Hd*U!7!JTUf@oH>62S(^@s2=^NV8hUaxTvAL_=E^sH$=?i`()ab%X7q)T8OnQw91+mfp3aMY z!gqa3)(lR+m5aemD|eX;D>CM^R;_P+z3JJCtZ&%c+xFi4jK2O}rV8^ccg4_gF_QUG zW&dmiUI%>}w#GuFE2EY}*|i8ovZ~5kwwGc+B#Tg+Im|t$UBHw%i=N?;>r6EpA%OQE zmpMas`y<|dc+%Gh%f6C`gtu?*A-DI;Q@+W6}(=|fKW0qpj zN)~<2{tlS;iwhpn*a>xba1JZ-WWQ;=uQX=ZHm(K~;F3F9dTQRlPiNdvze}bdG>86v zbX#FUwkWf~eOiJqJwV!;|MR?)ux6d9exkyb`f1~;A z;#MAJaq50Y)!n|O6oL*j?U~r|Ss7@RD$`Dpu_4zRSmt*x;pbr9b{G+)UW4{g766T;|zW+dgHQM;aaw;J4$uWmwpH*-`mtH?F^{I>`;ZWf`Z@Jo5c;J$>B4 zb(CKzEr8iwmBY3bs$j6V}Vg`UrV)&8fG!1yYcQa zRjE7NIlw~BjUE=G!pR$%@l5P-Av@4!j(Fs>#GhoM@)~H5q~buzllMk{dhLw77zNI4 zoBsBN7?*e)dGKxxQ%t^f;zfSbvb!?$v*Pr4&;OQLVab$=;Ma)HpwKvp`iy!6>5@sm zoGZX;6IH50Y zr)F6_O0^VCQkXT#KU?K$aFYjI9^>=^rHX3T4GGo-w40>C$EQ!O)^Q#yb@gBL+y(~# z)N6C|ua=Vbmdp_RZTM}@*{DGrh&_QYcXmwV3FmQ1pCj;Pkzwfd-TC!Ct}E#IBHq1i z8ThH4)6~=S^IJl!h;4F{zMvo5IG~JIv1sjh(u98c$kMSQ}2j`^YR*osyxS2b3L(8Ni7U~;H!aGdiDI~W=Kh=F&RM&-+D13RUZw3O zDXyJ+N);$;ojId!`-@AV?PZ$Y#=7>n;g8g4$(vlHpQ_Zq9YD!Zx8TJ-%kOI)M~Yv1 ziWno?R4Zfh4|D4#_Dd@Kn&kghT_aB~W(s<2KTB!rZ>PZox(Yk`-L(2k z@}72u{sXDAZ=43{EyeCWN+5BI%p7mWW}%=$Z$Gx7tz`L6cDk590S`LDr4H|+&XF&z zUSL?Mm{|jAlzwZk3UteG1oM46ldi*9m`#xQURwVZ!_e%l*)05D*lAbkAl*TUTQaWH z!>s>-gEw2c^ch4k_*>$vQNqTr8}oUH!qnAxU6_K`T!B+{2C@EwXT(-+Uzhc*ni+=Z zvEgg_`Lh8sEIlU{cWw3bcDO?SVV!27B)Snfm7=6ybnb<6iN1`J+vl$iK@wiK&=e? z6L?_>E6@ER#l9wmMIRg|2-_r3iJ$k_>X>(TQ+ern=hF`AAQ_sZ{TTKo0r8BDYVmvpwp2et1s<=mVWIU*8q2i8xH5lsW zu@9CHw+~Atht_VaJS__!sTGAU#E45;|5$&?vp8H_knhB08Lz?xuC+|qND(fs&Lh_v z9&rT|-07-dFiXxp-xF0N8`}w%eL?zhQ%_vu>-pwaD%W5{oG_K1ePpg%zRj%X8^2+>2K` zmRe5n`Mc}~g|-Tdok^Y@#!{0!(=@mJ_zdvP^TjHL7NMWCJ?*cvYXvG)v+AUSDacJ# z?BdmktrNp9TD`#?GOOF= zB|sCS_B-3|9qv{o;(diL6ui6F1{T+(SaIHN{*~&Q*z!zTS7*<23dgR$zGSR=1-W%a|7@M>C#~hzsT;9Jotvbh5OM`j zt9dz%(z}>rPEo?eJ%-BwT$O%vc_tdelcIULNpuH*$V07J1FdkW$)uW_M zxSnE2zAm(<(D0@)P{xKTgg?`wE1@t1zFmL+j^x|Xd8OM*WBlj=sV*{F`)9)}4WDCo ztqTS+IBmBhf@xni3ypgG+9?Ox&@9y)CQlOfQp>Fa9nYva)!lwhR~>tH@rW%r`65$fn;_J-*U;ZJem(ZsSGUa2sKJ_E-9GI%QiUvPWAR~@6FNCAW?K0DZ&sL`(OF;j zu1-ppy6`l=4Jc)f8HMv0^~dURp5K?51B44tfEw~y+x8pnbW|@U@$@??Bj>q`il<6e zSKZxZUX7ncF1-k`%FyMAhQ`C&(q_~JcCI+o_ZJ%cgT+z}6dYWAI|ed5Qli$A4TOr! z{uYhG9(FY#GgX-XA<14LCmj$+jd( ze3vs@<)0Jz%Obm}ek>PVnLj&J2u=S-iH3c=rJ`TNm-7i1prPe$J1fO;iBOjqZu)3B9#7#SAfvXTcsSx z0fqS)fah5xCPI)(ngPtC5`6Zex;HKY9I6*`4dV=Vq?7%WXS-N242mLYHoB2K#}i0+ zJnG+F-q# zE8W80AY;-ip8Og*+p>TAGEWS@dFXw!tc%1o%iQ&6m!}KT3YtB7jw4|Mc^FnysnQTJ z9HYN9bLOv11f})#bkY;kp_ayNQAPrO^^rQ6e`{1aVr$M@uPgVv8T#Kfkrfjgci|N| z*ZaQlhgJ2OaYmxDkFhWt z+?@`~+z)&A*Q$7LHW2hu6a;VR3C&BLMF-zsYXRc#KUw0cq|!ByX8X@LayrqB6RvGk zxNv2PA~9@IgJ=NjtgrkONfVY}jo%Y|pECo94@*Go4uwY}!1YM(&sWUUmD`e$U> zT{092GU%VQS+%P%YnB=^MIfju(_CYWa08fDLSBTW(;lan6CPecnCRKYR_9>%O4^T0 z*t^8^)N}|VQQ5T+0w<3~oT|4z1{60USvu#UHJoP9udLP@ylFB51(SP7i--*K*{|2P zujH1SQI}^oHlfnAgJ&pxVd22pI9atT12W2;iUT>=SAF=i|4xFA$Ihq_Zpm+K;taZK zU%|#kV|MvwNvDdyi=^-YZ*Ia&0d?IZ#qX??9BU-QZl0hvpL8(?h`t|BHCPr-RA#2845B5Dn;$HRho`Edqt5@41OKoh=Q=$s~?U zHjlDAs(U;mohd(j-vy8m-lqLXyb=mlia%xGeyynOhqjU{?G6<{v_M^m%s^mEq1Kn2 zh-ed%zW`P1WZwIH*R@wyqjcevvElR*#d$kPfc9Hm7`V^m!YYCBOa7+;rgE`jDN!R$CibT2(bTvzP3 zl;LREdjr`M3_FC!6{v-hLrh%#rDUhf#LSd)O$!VB#Q+W4-xjWFMGB^wuU#1A@bBCG z*mFInsQKYegLYJpl?QL&hK)v?KHICbXw{MWbEhXHMy`7=$dKX~UJ@=SS<(tpkr~a_@k;CZ4r`}b2Qpfd}T#xVz`i9~fy&H&Dqq#_yrs!Uq`(7#iPbXtvWy?2}{_%Ax=m zj+bQ!ydq%$LEv~j2Z(!I)=&4#y~yp=H_2qF+_20p5?TC2iKhAwmrK!5UbIeke?AtI zDGqI-Zu4#kJ#VcLeCi%^F)=*U)iolWVKe?BS^A+Rec4Z-&L#VC$-|ZGzm}+4F8`AC~0~UnN(%3d0 zN$sg6qVz~oasWfCj{(Ko^QzSfe=vI!KCpgsZZK;P>A>@V>|DxzI}i9+V<_JkOO6Tt4f= zO%X=EBQDv$QfZfPVmh|Kce}ky)JyUp&hvi#TblVBS-E;4)+R9)byhlu7l-`WOLlZ|p zaVx1LyzuHZR~fiTpQcOt@7Ue3rjxXq)=BW1R!g**;pJLCb6qul1`gE!=GZBAOk^~e z%h~TPE*2akaM*Zb?GKawilZ^C=8Z#J6UaDn*qox zP6lxlBe(Y!$&<)ZTKSg4%lji0tt~eciaQZb0n(|0f+-oyz_ZFxs}F+#ic?Q!JO*N7 z{~%Y9#u>~%;fYIQ`)GQCq9#*ji;$Rj@UhI3!(V|cFN^vH)}x1QtR>*;0f2<+DO? zE@`QMXmjbot)wsiuz*bQ-(+;w`!d~LwS1m@i63^0MJB&Zxl9f_iPcQ6f#n`vEyLd_ zm&q4JnRwxTP4x==ZJ38~SC4F%RGKMM{*=ez=4_19B%w_;K>WGp zdsta2l{XU(0$a_^)sf&q)91SNv`ojO+(?ymhBZ$3(FKEY{vb))4s5?JD=g7nZs`F8NW6~@H7fwKBK156q_bsr1%al_ z7D+%NX%k*a|LT3E$@}jQk{e6Ms(JPkMHAk znjb%`nEy~Z2UAe}wATD`HVsk;2mC1?rkNt5UE6GcIDGeTYHz$N$yrnkWv_sK8JP2O z!sF4_r z48nB0{mpeA6}Y6|MIq!@3qlho9%0o;#pETK@M= z@?SFvP{3{Z8iy_pc{~@eb}lD5=iy~cGKB1|_(8hDXc~B{t9&}*r<04!Ce-x{=0Ze& z&>mMu(V=@8n=jT#`ZLtya@>c5HYdc}$M2MQ%kEg9{;AKVIataADjT{HxCyQF#2fo| zlAFf~p5?TexJQc`{`l(Mk0_F!3YL$ z4M`gCzekv)op9nvZ4h^&alj3_0)0S%h9GaZaP4#c(EP;~S0$-;P6OK4Jr!=hSfO*| zguruEe%>@JsnUArCD+u4g?>78o3pg()$KYTHYnWFd|WEg)ACm|#SK&KVR#A@@Y5CM zQ4I{ur7R6RK9qZ0P6p!h5Us~=`V>SK0~V`cWki@c&77378aC1ij-Tem%YAhaPc~&S z=*qQ(4JqLYg7o^de?EpcH<`nKH>)P!C%ihMW}_eXkHp`VB}f(2{$gw2u-)ha8co%}&?UEHM>LCgmWH2cK5YAS>k5Zo@ag4AX?HcH z>c_eoU#DEW%Xv}qK5@Ed&i7Yr@9eA$FEQzalRpcoPr&7pLq)_Fs9C_s@x`5kPpK!X zQ2;=AFq`-YE2ieoPP;Vq{v*nJTLEy=-kp=k>UJ`snd2unw3_xzue8MRK0*jrs`#$| zoBUP~6}7Qx;Kpp7lx)9Z8AOj}3xKc_E7h7V2%(zxqQs4_!af)!cK@XWKRvQFr2#K=0c#vyra(_OeLxZ2 z{9u83l2pdgiR4-q2S9__N~Pf;jJ=iNv?E@Z)NWni2BB>TRbvge!09DHP{AmWlwi?x zseVq0@_5nfS+B&B!lvB$ri; zbV=;*Pdg{(_=t!($0X^@CrX7>-{qLP`2Jc_I=6uE(uY=?>^jopQOhU&B7gxxaak}^ z!J$dtBHnCQFXE6s{_XQZWZKr-st(hSZ>hhHpoSW>p*P3plSPg#v#(^X0SudznEtL6 z!u;YOmuUNkb;X&u5P-(xcA$Z~bhRqHlwJ-Tl1c=QU$sWrChW8J zK(wWlQaBT=SEiZ3rCSz*aNyVr3P6Eti8W3O=pn(S0vLO!%IQs_{1ikX=d4y84Oz*R z3<_!j;rx&c`N7I8X-WN4eJ)Di?ZPZm_kos9x{iEv9+Lz4MBqPgb;V)y=!7odfn!5~ zg4W0A?86^FqfhmTGn$n&=oah4vw{RSK_Z&-xA27LrI^CH$YOKX4M+K;OEwpz|3kNP zI-|Yq5Z;e$-Ls&&_qIXt{Qdr;c}I_eq6te!*DsrutmMYbBq)TMkO50lR`U^UwWTs5 zqII#e0mcS~ukn5c(L4YAmT$ff!--&G4BdBE^Ir543LDbj-`1maWfgabZY>o zAwGUV8i0$YvE5{cKOq~el6m3ZZGlb#DSH#xU86@3yoG!Bnyv6}NbDu%NL8n5K^=K4GXBkfZ+G;-qmPgK zuO3YnQa_8qRd(JkZ^mlzh{dgi-56|@{#jj)cQTIf@B9Hp&cxBlf22F^p_-1K4z6EY z8U%!TMZkUJ;nizu16YO8gz4<)A9?e<_MiKp@F)rFhDr0~Z*a;1Mk;P}68*9+ba6`i zz6vR1Lmu!tdP!JXph)KVYutaw9-l8qx$?d)Cv#?ZJG*oO{`eqAQM`|`RXkv}5O1kj zZI3eHW9bIOgvtC<$Q|&T#vqnFHm}bNtJnPa?4r95b3pTTKKXPG;lOZ7o>!oKX;cLv ze~~E1ye6h72=8UA=6b9ou3bY#Gnmf}_e0p1hmeO48iT)gL1Ge_>hDwmo@$<~lqO)` zfx%s<6Z&DSzR^1V3l~VO3zAz0Gb2?Fg!#Gt>!lDQd0Xpq9pMW?5C4|@{&7f#%0n)lbN3y-@O#DU2QhHoW=P@C^9#{jicrl2h8+XW(+{?)#NvoBqfj zL5XHs0SoD|_h!o8Q#i`yYi`i&*TOrq;$~H(k?;qD2uy~Nv&%O9OtTc125Y(wPPRH} z`N$P^F6+qIZd&T^V@tuQ3RumyWBWSD<=})2+u~&kR+2EG41c$AM*|XEdL6>oC z`@!rlNzQ7*|M@ziTBK9h_IU%wkYzj4BINsRl?a2{bE};=|L=)(Y+rsiV>4wJ829w? zSd+a0L9WGgF3KZ!yTAj%xVZBLsE$IK?H&sv=QrxQX}(cZuDCoptGvq`AZRl86nIaB z&yL7_1q6fG=KcU^j%qx!cZmM%*tVZTA56NPYdE539wzkOlP=2qlUi1ol}&xrj~t!2 z)4LRoICSBhtd4;@raY+{t>c(<`KRpD_Up>Gxb?Eb*6h*f7PYdud}z&R8*j~wl-*9H z?_sPU_r?8qfl%A!*U^{n;q_@T^frw19G1{Dhk;4Z&Xv;HYXb>|f#o>xis#bEW8(3* zm(=Rl-3k|bp15}Nmvyw}P9MyhqLsWHe-8bke2vgq7X%#No$r?ox4Z37zg4jsa4U?{ zh?6K>ej?*mSw<~35i+7zY|~8m_St{y6T(jZ=JBAR3bt!Y2~^@nes>&&ML5}T`v!Lf z$}^SAOdAmtV9e2|su`*70Se8_zId}Wfy2&hNfGn!G8PKlL-=?v{voXaMz&=DOj2S$ zgl(!m@w)htSFw1%8&fny*|U+a_|wH$3fmyj(V-V`oq^7BR)_(Ugx>NJThHB_)-w=n zT_P=h$ukHTiEg%3@#Iq{8@XAo$i${o;K2#0Y_RElOe8)sr>%Le`t;xV=gIwpt)E9& zRm&K+x}fHi3j+c-87me!qLa%x7n5Ze7iH+9LP2|mkvL>1zO(vY_3~ic*Fl{xP4V&H zlTG9Mki>|hnj`6jp)1KBa;A$3Oa7csW&@B)&pzQx7*6GbkrL@G-LSyJ=ZQ`FNP*=? zinYQTx=MF-wl^@+?(Khz!<>qafX3lXcqeKU7ltOY4yHb{4DyZ!Uje(ntDf~QpOpgD zi!FZ5pWv|Du74}Ke5hcl@)Q>pqR>TKSaN0uq*w5bJxUY40cALxZ~^2M#j`??M-C*@AIm{|bQ} z*^Cr8We*V@ytAL}H}7{or%s-3XqP*zPrIK8+_x^-TkGWhve#iFaO;nSJit#)$vIX% z$uvm#)so_NA#isDI#;w*FMY``=mp3JZNdXjJiw$;tLyfNv&u^EpP%C8JP2G#+6e#pV0#?)Vt z8%u*rXB78CK8`z1xU-#7a+4mk(;{q6gIN`14V0reDN%$EoY$gOq>w}DU z^P-kjiMFxk?VgKWPZn+UYwQKh2AyrX)!?bhGVrGdmw%PeUY+Qc^~ehXcPQE#%f7P9 z2r)R5)V*d2=XwcrYnwYVPCykvTb1lQUo5Slp<^qDRs;I%E%S)+N0`BOWvPX<8*o7cV6Fut;5(?;Q@2eca%1xO>qIHnR^YaXXYKwA5`&~ zax&C(uu?2JJNe+Mw-`C&XRgSOH zXMT6T@pd)dW`$%@p82-vL0uJC?}q8((JX@!Ih3M{Rv@KBZuoS5M$A5_`^bUPOpl`P zzo>bHG7OiQT@W8p_4<@%5W@Ca>OO()!0zb*LvSg&qx$4b&F06E07QEYv^8pggf&`9- zV~{w5o{rrO9 z+*c<2l=^_=8W*1UqNB^zSOeB>dSust;63QNcWJuMJz5y5d8%crj;tN$#x7`Amkd+) zlqTOYzR4l$42lE> zYRUvW?DS&q_XfM)7WxKj#{sb8Na$*E1Yz zT1L+{$)A?W;b-q6zohmq-NTmq^d?~N$bB@N7zZ)4Ui+5CJ-)%&jodF{gsltbaFux` zChR8a0wMemQ?^!vY2SjXAGs}5uNRWce`+3~bDNv&_ktl_#G0tef$M9KodtYr7#&khnnUpdm&128EFVTKNh`+%Fqt{WMT zj5?f5m@q5Y5&Plon_e2p4n@j)3Xbx6vhBn)nO2OhU}7F(XTKt2rK{AL2X6iR9SG^y z=)+TGI^9qJPNzA7jkbMMK&7-3O=@)_x1uJ+bO+bC){hHcayz}zJd%r5Q9vQ0zZ>Hp za0~3kv}r)3&*+7ZrhdrLX%2U3LgyvUs@x;ET<#x`|NB)Dy_PA>D+tNBp@6+Ar+bEd zD*b~t4PJu%_}Iy-;)&yrS<(UgFM#rgU&O~P7mYg_WEww~x58eL2N{db>7(k`jInF= zk+X8CF$>JoVk4hVj0qCsByD_gvU78Atz2xm^aG0>%A6t#R{AVFh|7fiKGr`yD$v3N z##7wxPW@P8%SI8smSM|r%ShuIyC)Mwtz+&lGkY&5D@6T`Jd~ub2PYH@l>yZi{)$i@ z#>pQ0ilGo(41uVfH5{v?MX`||7pBLUBjbTbsYVKWj)8jYQ?e$1G?Aw>(wW;gk;jL!-9_0?K0MG1OfbTrg#|6&zjx0ptUNcG7#J=%(3YoJ~N zkz_+#FVqifkW{#u*gkJvTz30)%M&4m;v(DLmyEGkAz^-pt+xNT7TCK^%<{Q4RXzA@ ztx`37{&nOc)FQv^Lj!&dCtYQWw~XKGDQ&YX#lHiS&x4zD(2#t-ZtSDy4?B7!PQ*ja zg%B)%24bD?1l{Ew1oj_~SFbO(85A&v-*Wu4=D3fRZQym8x+UdkG6VDA43qd}WsOUN zu-b^^3=jcLaC;}S&3v+Z>B zq8~z#oIPo@m0!>ZENHUSAYX}HE-vRHd)i%60L)QkJnJwo5;glj`CU$>+>P`iX42U3eC;OjNcIiEYFYI)LW^P37R1V%3^-6(I)Qj5SwmF zb#{b}$HX7{R&|S_iuEkqLMS?1 zF@O1&KWY(N-7E=dBQ2Ht&cKT5H_&IQ@Y5vOcKPAKLYod1a0S+|O#UKk)jPUk2R z5GjhiJ9lB0x>8jzaQ#>!!tk`)OrBcA(wr#!IoV0H9p0y>u0Td>n4uoVigT-RSN7Nq zIyYU%+vSXXfaNyG7Zxq94LF-v$^`>TA9M$1alw&?Q5MfJe-OrT#X=)!cC{(0pT`x5 zblM)zGEmTrE!K>6=#q%qnc}%46ez|h?IbW$6z0qS=i;wxoHiT9oG7W zc!N4rsIbPT_4i3IyX?h}@o6T_SYUP4>tnET^LEMHn&|MJiUyf=d-RXBA@wJHcw9+- zSUak-{+Y@BTHi)0y7ZRfvTLWm(_QqzY8LfwypGm1{Z zA=~9|pQn}u$w{gKj!!KPlt8xPuys&LJ$|@xq6#1s4FY}!KA!|SfY}t!l?hYCI?@Cd z#rvWT4l7aUNb~1E4OsAaK7Y1=xtmc#e@sw8O)+uUdwydS4!vn&=ZGvtNL~10i6Bkk z$--y<&G#Zutrh7O>C+O+A0jKICEaY{wH5r@*KPWru&nFlb!>5%w|>Z) z&CIE=yAeKrB*f(8X2d@uQj`K9A~fIm34ycA&)E$?m9ZX8kkljC2F$zoFo+Hvp}voo z3It0%5~*tl(y7mua*n0!^np-C=DD-JxA03*@zs!3*?Jsyhx^8G2-HlUz}fm`!bE9| z@uN=ayL}$=NW8gqbyq*I!*NVOukG}lcXp?w__=0qQKs3C1`D!6!i(99ngPq&J@9VA zTnF|~0eYt3xiA^%Uw3Z*u)&6PN4#~I>vLW2uT}MwX3^ZyH`04HIBd@EPO7O_mA3!V zL9r%k!Kf@ZT5htGU;y18>-2Dndyi%pF9IiIWuv)m z_qmqqDuHFt_-D~c#k6v5k@Tw8FoXR+qVV|34T;=}E8w2Qa-iZ6`X(yJIJRqZsqmS? zq0}y*qq|5Xb<0;`7pGQFF8G>b0HEMq3k673wOdA zcWr_My~gbKz)h;lF@t51bv_5*~9`Y~Vk!cV-lCKi!{vOX|o>6r@MLMbPb&PMsbFkxymZdxf;`2f= z)Q9LX?ch)U@isHdD>UxX*-rJ;r@D&mM#DZ!u2WZvv2n$o^$$Pm%C^~GDc{@2 z*zedULDyCDwj12aZ+poYw`)G-sIKhnU)Q`RfI|%RO%5->TCP?Pe)btaO*sz$CRkmF zFp%!8(4krpex4i%33t$$)6)VQx8*$NrJ` z?zAy@wV~0yT<#0N9X8krs)wJn+9zmX$KUCw;c>7>9_mJo^d-R0Mj_Y9&xADxm@mX@ zzC<@;6Xt7^kb93Y#lH`Ll$|ubGMYMSRQ;&qwWwar72Y)7=BpCY6-&_eHPoNJf@EH+ zxuG2PkG$7t%iZ>(8vca$m_s?|noly2sBK#lAf7c7wo4q_H3oTGJln^WKnw``xO}-6 z@mF1p5jSdPKKqdKj2h5U%jYEkl=efuh|O!R2b<3mz}kfH8Ub8t0$!?wa5V^JpX0;7 z)xi2AH$VGFesmCji?BUL1CS>G4rBSJfp0Yc41I;U=VcuQ{HDl2P*;NA?eGs@!xlEgqCQ|&bwup1 zz104?M(5>c-DYtA?L&f&X=HY|R6O2b3!94HsIoESiobPKQHtqe6#FaV+a2or) z6!Hl64Dc7obHv7vQZ}ewsd6rKo_I)u0ZC2)nd^Bh!T%yQ0GsP_4XiW#QnRkSUcxLj z{nx^0$2v1NfLP;?umv2~HQi486S%{^{|-j_K0*rc%o(;6>R_yXYBu;$N#~(4Fpy>} z)odTe4ceCqdl`571@T!+YmXBJ)Ztt-4b>db+SCA;@7KS69MI?Eeq7N6;Me`!?l1k# zWBh`79rd4ev`OG`t;LT3`WgRu_s^#U$BTfJGadoh9sM`~Ap5vZyEOpz4<|6}S?}H@ z&oEXgws+Jpj9APuCa|l#M#Y@|)ed-)&G+QCRD$!l(+b4lGpWCQd;Y7G zpzQ`C_eOICKJTwV|LBnC&o~;CCtJa@a>*w4tpTW7bXUGL0JHAn@z{XZa9e@U<~GJ> zinZ!-$CI`b0qF3du8%P%o38EG=i*7j7Hi|Hnq8;s7HmxhDXKM~E3rLpuyXwoZ?L+U zU#)|^l+D1UaaqUX;J=sLoHKB%8Gwz)sgc8LEION;%)$P~`dyRv;c$kHYh`@EJbf1` z$bZPIGzKiJ`CObUVL0Y&hZ43OhlU{6fG_jShObG+7&&>Z8j+)rXEDfUOz+_kHvkNG zjmy|RwYczmov88ad<1~6@8Row1?T+7dC(v*sP+5(d>Rn8?OFdm=6JKm?*Js!&qo0X zdG-PP5JP-B@+Vv5qlt)d#oLR3Px?tV0QPSIH1uiw1T>qotzrx+CWiU|y7{xYBnf-?3J4qk4YO;kWYYCUHIVFwa@*O5+;Y8^K-3=Ut%sr zxknvZ+rc#K)Fd3b?JM9x2E-$7#x&rTrsMviM%s_{+}F_8+*-?&u;jHEv}2ECgMHST zeirZ3VaGXqO+T81ip}x(Es3hJG!!WY_xa8P8ij-_Vls|%hYWCtSKlITM#{zzMom}R z-Nta;;xFJU>h~#LqZ@FCxB<}5zzqT#fWN}Cerf=gqkD$`=JRnj3>)A9d2STqHwex+ zY5>l60UG`Qw%H%jKJV}w>eLKS+&DS-(QGLAWk7BK>~5c7KW&fE3{XR$O~C-T`7?IF zTw^)M^9ab#=x7Y87Tw`v&bhwUEgvcE0sq-7uzdZ5|FjX{L>$Mq>F=5a$%;WEu)uVw zcO{3F+Rb)ZbFNn>3ze5zavT0qKR-jk^U~IG8;xU*+PC8n%kx7961BZV)|>#^TFb6z zW-2c1I!Df7uR2*v?HjzazS=mq8WzjHs1XeZ`|@*sFgV7w>XZ-u$lrGT1#`+b1~$Nsbvd^H zTlQr?R735@JY!eC=3y=5@Y)XAw2k@{cZ_EPa7!Gc@K)(sT3_ScPmPVPr8#RI0FlQR z@?0O!X5vZ!v)Z>N;-+$~ZVD(r?XWql6PibzMcRz;eE6*9Vyi~LY}pJ{JRrW+`G}az zTbcl#qXCE){r2bofPXym58Y}AI9I`b*#NN58UP0Jgg-X{33dX1pB5zCH~0(a$K1dB z-#-Y1M!_3^UlH)%lGv8uIQ;6%CV}$-or;r_2Ka_}{k6vQZFZM62@u!8{BG7Ca%e3! zjU&~mgvO#4Y_=}N>bn*WOqsK7^?O}uFw(|rDR^(f{42z@#=8l(#BuLg(+=p&+?3er z-?h-Vn~Ekv?X@n=*BXS^u+QW>;NYSTFK&36%=ec7tpQ-Lzf=Y;wUsX+Ut>W3@ypxeltIMxzlQ>> zG#)kQ9vG&PH-U^=rwyO&jQ_rJpqmJ68WVm1JYpICczF^Hz<{LI^t^~4{v}6++!#{> zu*ANo?h`QY3`7}sEB0($7`ExdoO0^LPd+86JgUdGEe`7}jYBs84+;BC>6aYXSy%Qg zhGVtS&{&K&yF#)=aVo8cc;t>))XFBn?b3i8%?Rybtf6+FXM>};h@-gzn*G~1N=9t@ zr|n_9kKi^tg-GdoLxA5c`xc|{Tuh- za5MmK-x8P==8G&A^7-P2-KF5?xNS|uvCrpG_l)a1e6!=qDqCHzn*d%{fjjoLNaIId zg4pLY{wgJCal&!A$INRK}VP{Di(M=LVH+ z4Q>J!|D_Jt2h8`E8%Z^9_%|>y*V?BPz5t%a{qVxRSsD{kI9Gf&BOHg?<1=s*K()e_ zP=ARu*6P`Q(r$2Mdug-XXaY8y+S#wR%RB=c`*f~SKfrizweoL=CZzlt|0k4#e{V*v zbk&Styfpv;_I@!i-UsM^?1viw|NVbE%BLgzu7y*Ai)a0t@<)lh0XU!WF93g5e;7aM zYnopRl-R@exf+09Spy(|E^wz9q~0tHoiUrx6wF#@+-=Po)o3iWRR)^^wb_uvcJ@my zq_9777geq_02{bD{*Xb-o6pY%;7S1Mi|o1)c?qoJS%g7c88`JFe%<$s?rKk`xrllMGN@Ut!L0G!v# zu}f;I{g`idA17Fs`qhl++-(NI(6NTr8qx+}gZqp*YDoP9-itVH%`s@Z#5*2mmWL2hcE zAZ#Z9P`vEN(4X%JU<}xgqx_?m`s8GQ8UWLu#k2hr#H((;B zsNx$Qk9ozM;xBR;q7(AFZJZ=jBd|9BN8LPm=y`${u}dSN`x(BY9_2gm!w>i$4M4_e z1Aw@B0?@E$h%>Ys><#bAkp|#U`D7h|e>4CD;OirMgSP_x`k8;d*{}J?(-Q%z7Y)GY z1|q}yYP`+=L@LN`dXxS)p9{jAqhMwKOZ1x9Tk)$sVQLKtHzjwb1S8@A-c19q z^Xq?SS_{!uFx8-QQ`d=smirUbWl<$3>6iEC5*+s97 z9X5jvjc?VeM+X_R%44Xpu$q~tj~=xC@Nvu*uW>2fW%45NPRBc z*=v*V1YgTN;@8~IejV{#_m-BL4p;KUJl0rqGUg?!dN=akzWw}kHRXJ{`@fZcsdwkq z;52L;OY%LvGl{Qq=AO42!?yW1NgP90?R@2zIbW?ix?(K4S$oTSn%C)p#$f!MwEhn% zYbMn8N&$+){(g^BJA+#D5zjFktF{-*YT7+NC!?~w@HZuY5uoa-6<~?pZ3-&9& z`gCs^dntwLB8OzgZr@_q8UWRJ5p(hX5V~p}w6S3L^GN|33iy8gZ_xl8;J%?gEr=$7 zp*~^>>c^3P`j1n9oR0>;bbJ+1;mx+MZ2-h?|0oc~qX9@zI{ZyER&X9bz6IyYJcF~G zK3pnemvwx9Vh7BQx@@C;4FHNb<|-#_@mXpv4FKnA{%d5X0&2UGuan?&8?Lv6_*=0Y zBLZmE23`61(Zqo8pHg>oj?;^6PriSPFMS^ve`W5C2EafT<2Y?l{~o&wAPwmDnr)YT z0B98Ry(F~?{;ydB@yHb$;I2T{7_}*w)qfT9+W5_0u+(|k?K920>+y);vH=jguDPxC zJ@nEBV8k-~r2+W2YycGIx5N!V!F!2Qs2_Lx*#PL{1N*lL#t#9R@Iyd5$oC`vDL{UK z{U&K5&;a*cZpWmAHgd!B*?Q#xZU?PeKlDd0#8u|J&H} z*f;3_@S-i&Z3e0(UgK*1g7}KlSlChp%EdP|UuYb;>Q4<2i|wVls`)CP0qL&C{K&)e z(y!W@2YpvztP8u&xdz2MDAUgWv^K{awbr_*p|)L!<99G%{~CF|0g&fnQ?2U}NJj%8 zzOU7Q`43dnv^5FZ2;BDB`vtSP0l?#{mI>6dgZ&=`%e)^%Tk{gOXaEA{ z2iOzNdY2!f*oy{WyW>|Kj{$N%PXO|Vehx@4pdQEhm!|-zwbaC&e>D~nt47S*Q2BkFdoZ8dbI%#8xnZNmVDpdIu08g!#FUNeBB$m{ z5=?3chlR7}W_!&UMuk){z@4;%_s8?%0 z0dc$wkyjSt)qW|C&3&9P@$Q6!QGM?|@Ac^Kc4^ymBTfPRT5Y*6t*LQ%3Df;~dQm== z!A|GzEpLe>ziOOXz_!F|%q=;HuVirNILz}JP|n7nu4!kbP2W#AVj09*gJRHNRKAZl zm|qDe8e2}(>INWS%-`E@*za)HW?|md%Zb7Q|5X{=4M2T0kD{_2~BVV+|MEzJpPY4u}rOoHHvVpnM zb9G;Fim>Wp?*Q)+FS#D$x$|$)`P~R?a^GkiY<|YM-rh-sA3xX} zYP-W(1keV!`>Hv7g+?8NH_ufB;j1{dbIk+hZfnS+NvH-wYWo}wz`s6x`T6lRz-|Z% z-Ua@?v*$6xo9i6#*ZGCy9e|e|-=FUYMC|(Zzsc_QGp?TZr`_}F6ks+0-)=xgW3c%~ zTmZNl0ju{Wbi}@(?g32BQ=8;OGjP^8{qcJST4&Z08MMehYtre+MV!aJUFswh3ycuO zC{SliyvS!)s~vF7Z$jLv|COpe$Y&UP(>)tR%9s0HYI2Rv4M+z3ByHLF;5+hhOVJ@@)dYhl!uth*k|-Lc?we4;+l^j(#Q3YQ?<6a)`hs~z#{?ASsqtp zt-Z+$-|1I73};U9|l0+z+unCm*kVtve~1oRTq zV9l7L2Ca_v%$9BuHuK|AZO~OC#$_Ka^)C%pI z2T%v>*(bGc)?HNK9QCu=uo$lS1oe@hv7Z0hQwq`m-D1aBPaa?!W15%r2bP}GRh>7v z{^o}*K{ej1Am2+BHAqX$h_(N~`*r_{Ca$aA-SB7KThgyr`ds}oAN8TlcKGPA#@+IW zBZUUzvf20}>VUQFGxy3q%Zf~H4r>E z3Cz*pARplGm=peptJ4Lx80hOPnrX3M9>seZpL9fUN?Q~;|1Ew zp#gGTYpQ-wYJorU752TKrIE1lD;fZvcLOkCj`3gl&-^Y80Kt1a3dp(o#~eQ$d?8yi zeh5gR&Ufjn?bb;F*>HysQ6u0d0yalZHVt+H@XfE#0K7~VtMLwY@;9Ip{7+Zp4ZX>D z%0ET0uh_7~y0~u5i$Xse1YU3WrI8^4uFvU!vDmL{zBjggJ8P}-A8DdHeW}^@_&Y>S z`^SEl8iy=KRM1p^)trwA>X#Vv6u`$fq<)>NZu;M)YHq*WXyfzo36BA~VUyYeh+Z3W zGy&WU^k>xwYF<%N@^blzMLNoOagE~o_yK}bdzy507nhA-NjlCu&kp{p0Vc7b*Oo9pyt{P zYt-p=2-LKO$G}H(>1?5vXQnwLM-m0I;38{0N}o-beg=U1iWF@bjI0 z-RUDn^6YJY06!XytXB;HzxcPo|58f>z<2s4Y66fG_V|flZwfNb^b>ysFrf@E9_Nz~8yg&vuTmeehO7D2w zClOo&+H6*n*V=M@Otsx+dA6TyexeqdfQ-%k-jvtKIyDZTe(iJ>_M!DgZ77=~v1yFv zalDW3sE)x_@&WEGABq@&zjKjaaA&~Dygh4=GofDPw3 z5wPF+H+%iwf5Mp`7Yvx^V}t*e@Yg$gRW|@oxP|da4=kIADL7 z>o%%uW1oLMAB*Um?8hS(`nhV2W$;zaD`nnQ{FQy=`#2zcP@d08?6?lA=4lE;Jw zB(a9pV|(SDjf2L7BCb9kjgPovjeWhcXTA8$`@C$a1Mbf%n<24}69F1?W8#efV%`~W z5ZBF0-Rb){Rdwl_pe~TIIF{=i%C*SWwcwk6RY1H!uXP%#0chO$Ber3ku+>~y&n4il z2EctZCvlzF>s+JO0{CIWS~ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/bottle_notification_icon.xml b/app/src/main/res/drawable/bottle_notification_icon.xml new file mode 100644 index 00000000..d28a4e13 --- /dev/null +++ b/app/src/main/res/drawable/bottle_notification_icon.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/mipmap-anydpi-v26/bottle_app_icon.xml b/app/src/main/res/mipmap-anydpi-v26/bottle_app_icon.xml index 0742a7d7..b89ea6a0 100644 --- a/app/src/main/res/mipmap-anydpi-v26/bottle_app_icon.xml +++ b/app/src/main/res/mipmap-anydpi-v26/bottle_app_icon.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/bottle_app_icon_round.xml b/app/src/main/res/mipmap-anydpi-v26/bottle_app_icon_round.xml index 0742a7d7..b89ea6a0 100644 --- a/app/src/main/res/mipmap-anydpi-v26/bottle_app_icon_round.xml +++ b/app/src/main/res/mipmap-anydpi-v26/bottle_app_icon_round.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/bottle_app_icon.webp b/app/src/main/res/mipmap-hdpi/bottle_app_icon.webp index cb9664314f194633834365d6ccfe38e46e717e22..b70c586f5d29e205817cf2973c6e9ab82de16a69 100644 GIT binary patch literal 2358 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 diff --git a/app/src/main/res/mipmap-hdpi/bottle_app_icon_round.webp b/app/src/main/res/mipmap-hdpi/bottle_app_icon_round.webp index 4ddadccd62e3fe329f8f068d6a57ceee46382964..6f3d3980bdcc821f06b1a327f440f8506a142b44 100644 GIT binary patch literal 4174 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 U3Cc%Ron`*VFf21&PnQDVf29?BbpQYW literal 4332 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 A4*&oF literal 2714 zcmV;L3T5?DNk&GJ3IG6CMM6+kP&iD53IG5vFTe{BO^{96rbyDQ5&e&Xtskf01?~Xa zpcabSHj)CN2v*A z((`_iQHi!~TdQ8#*zpwlB)YF$H@3a(t!L&8Y}>XySrr)(-%H81ZPT{Y_uA+A|FCV_ zHd4;nMh$*4n2ZuQA{miF32fUo?!C`%?==B}LVrDqY(I#NUj7?rx;(QB8pQ>5qnC~| zU5+lh7rG!>y?#egzg87&04(H9(>CSi&Ulu|Wug06UVQ_%fxkee|Tbn!M$y&10!4-&^iAqOElVR^TS&t zaghfcQaBk0f`L$RC???|H`^`w;p@)7`m(Up$LUHLfGZ;ejT`UrNfO-{(Lp{CbjMvN z1VJzY2EnSrz3K`H2l>H`H*xMH2Cr-w{e!4JRq7Kwt9nkMA+s0JKrjLrj02>!!-phv zjW(PR4^CwuW#&N+RU+SuN@U@5!YOXp)WaAD0=>plE;esl(GNv3ob2Xg6+Watr}9+7 zfuniG(bYb5SNrC4xLnieY8i?Co=3QD3+I?Bhq$`G#)&(c^Z&E8hNVxno=OlNx#()o z-BrHH>03K>TN$9=VFsK}npKl1_+F&EDwbn-unWDH!%pR?0l{ZT-A5{f(->>clv(YX zMEdplmQ;F1<&+Yx#E6T!k4fv#4-*WB72DgUf}4KTi&hc#O|=MSk(e}$v026BO6Xh6 zno?<3a}Bd0DojFn$<-mv7MpyHy)7+8mio9Mctf;rQ9UFWAtEBZy9uU~=>;^TXHPS% z^skx4Zn2Kyq$CC8r7v};Ir8q$o2si~{qyq~zjG_MUK3dAhXzz9a2p;A-*hDd3Q?sT z$2K$tQ(;zR|4wtuWxr-!vs6yk@XVwhIDf;{XTfP5JVx@&B{-q1ikaj5zqHkz@srhB z*M=&r+Bw|mvf!zhzNq-nK{0*zyGPzltJDzNY%K64n)CpR$qi~*BQZ-UjEsy3!Bju| z1Bb|E{AJVT`zNWw6?Se7f~8#Y{z&>Sih)VQ7r&9hkh>gb5AeHV} zDQt3azRXYq^DG`HzdM3SkSd;E-Yd&I##y^&we!y>)p$zQSkUgst3Lnv&kvzsBNZ<) z6>Z9n@@zIbc{a|}A3JX0l;;a4!Nm;Kq3&2Ll{0Ko;h_9{sXV_^Ppj$X_*1$qY#n(x z_APJeNk}lqNX%(7Rm+x>&cF4j_wPV(LqLXq;B^y&P z)d-tr{$y*&?ax`iXqqr#D2B$BO(XYD$8z79tg=R#q;eLon`#91waAv)##bOtctp;5 zl(Y7;2&RfD;1tv8QO-hp2!cT{Py@vX*y#o?wkN%_fjl%F`w69FEOE8O6fgyIfd4;P zp|umMkz6;JFcbqd0tTO}S<-3Y$ti3>zV;hRBZ(=Pf(6B=S#RB2ufV3G8v8OLOb{?o zjDQiaNx{m>u8P$Pg5_zg#VCgf9pj3Gb+gXUJNd!UFW5|Po;DTg{ZO| zPFl$a9mSu>sSLgl$d*_VX@_RF1C0N!A4!L1yHxT80TMoID6hPPaSg zJ}IIA2mlfk1ONjC&wWF;Do#JY-TT8^8K#ud8?`9nK?r7UlXo6HzAcwzbj8gUiHZai z1^@#Bg%-<}(y6&tcJSs4g4qWnuHr(_*He1BR4SeIBu`=?PLX+$YvTq3&|VbQuFW^{ zKWlpuItG(U4EtewyiyD9e7*u1?q(#kFI_uTO+58~b zp#S1vKNV82wypo)J23gt5&1^>dW_~pM6&!!F{v1!hs7e-d!3p~Q92_BF8*j6lkb1y z$gM2Q{;|q1uWT#9@8|#RJoR*%4&fyETrwCxC*5h(qH@XYJtDU+&z$UwXJt z-yQzVgFNUAPdQytXE4%3bgQE90 z^~d9Po*z6X_~-je^z$$V_q!WL);Jbb4gxYPS!iV5n56RtIZ$ USC>mY`ZQZEO=Zn`SF6%r00HnWCIA2c diff --git a/app/src/main/res/mipmap-xhdpi/bottle_app_icon.webp b/app/src/main/res/mipmap-xhdpi/bottle_app_icon.webp index 50fc8ce178aa877b24e00aee023014609c5e598e..8f55264f37e0ac2b8ca83d8552fbaa3b5ae53c27 100644 GIT binary patch delta 3614 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 delta 3809 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 diff --git a/app/src/main/res/mipmap-xxhdpi/bottle_app_icon.webp b/app/src/main/res/mipmap-xxhdpi/bottle_app_icon.webp index 44d6df6ae483ec2b682abc889807c9244d55da01..ede4f70b1d6521ca1f2a8882df10e2ec09f4c100 100644 GIT binary patch literal 6452 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 OBJ*1;mh|l%UZoVFb`2l^ literal 6722 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 W;9M|+!PqTp02%-^00saCz^G`1tDFn~ diff --git a/app/src/main/res/mipmap-xxxhdpi/bottle_app_icon.webp b/app/src/main/res/mipmap-xxxhdpi/bottle_app_icon.webp index 06966e220c821e4842846ee9cef69d2d98f31e2f..e1cb45edddb1b23189474d9e299751fb400f1816 100644 GIT binary patch literal 11072 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 G0viC;5>v|n literal 11250 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≶*>216!^(UvL7 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 literal 16820 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 n0viGm#v-Wz0tf^G2;u+(3yq7u diff --git a/app/src/main/res/values/bottle_app_icon_background.xml b/app/src/main/res/values/bottle_app_icon_background.xml new file mode 100644 index 00000000..28337c0a --- /dev/null +++ b/app/src/main/res/values/bottle_app_icon_background.xml @@ -0,0 +1,4 @@ + + + #FFFFFF + \ No newline at end of file diff --git a/app/src/main/res/values/string.xml b/app/src/main/res/values/string.xml index a340b46a..b7b93f95 100644 --- a/app/src/main/res/values/string.xml +++ b/app/src/main/res/values/string.xml @@ -1,5 +1,5 @@ fcm_channel_id - fcm_channel_name + 푸쉬 알림 \ No newline at end of file diff --git a/core/data/build.gradle.kts b/core/data/build.gradle.kts index 050975d3..4de0bc26 100644 --- a/core/data/build.gradle.kts +++ b/core/data/build.gradle.kts @@ -11,6 +11,7 @@ dependencies { implementation(projects.core.domain) implementation(projects.core.network) implementation(projects.core.datastore) + implementation(projects.core.local) implementation(libs.jakewharton.timber) } \ No newline at end of file diff --git a/core/data/src/main/kotlin/com/team/bottles/core/data/mapper/AlimyResponseMapper.kt b/core/data/src/main/kotlin/com/team/bottles/core/data/mapper/AlimyResponseMapper.kt new file mode 100644 index 00000000..e1b332c0 --- /dev/null +++ b/core/data/src/main/kotlin/com/team/bottles/core/data/mapper/AlimyResponseMapper.kt @@ -0,0 +1,20 @@ +package com.team.bottles.core.data.mapper + +import com.team.bottles.core.domain.user.model.Notification +import com.team.bottles.core.domain.user.model.NotificationType +import com.team.bottles.network.dto.user.response.AlimyResponse +import com.team.bottles.network.dto.user.response.AlimyType + +fun AlimyResponse.toNotification(): Notification = + Notification( + notificationType = this.alimyType.toNotificationType(), + enabled = this.enabled + ) + +fun AlimyType.toNotificationType(): NotificationType = + when (this) { + AlimyType.MARKETING -> NotificationType.MARKETING + AlimyType.DAILY_RANDOM -> NotificationType.DAILY_RANDOM + AlimyType.PING_PONG -> NotificationType.PING_PONG + AlimyType.RECEIVE_LIKE -> NotificationType.RECEIVE_LIKE + } \ No newline at end of file diff --git a/core/data/src/main/kotlin/com/team/bottles/core/data/mapper/NotificationTypeMapper.kt b/core/data/src/main/kotlin/com/team/bottles/core/data/mapper/NotificationTypeMapper.kt new file mode 100644 index 00000000..2bf438ad --- /dev/null +++ b/core/data/src/main/kotlin/com/team/bottles/core/data/mapper/NotificationTypeMapper.kt @@ -0,0 +1,12 @@ +package com.team.bottles.core.data.mapper + +import com.team.bottles.core.domain.user.model.NotificationType +import com.team.bottles.network.dto.user.response.AlimyType + +fun NotificationType.toAlimyType(): AlimyType = + when (this) { + NotificationType.PING_PONG -> AlimyType.PING_PONG + NotificationType.MARKETING -> AlimyType.MARKETING + NotificationType.DAILY_RANDOM -> AlimyType.DAILY_RANDOM + NotificationType.RECEIVE_LIKE -> AlimyType.RECEIVE_LIKE + } \ No newline at end of file diff --git a/core/data/src/main/kotlin/com/team/bottles/core/data/mapper/UpdateAppVersionResponseMapper.kt b/core/data/src/main/kotlin/com/team/bottles/core/data/mapper/UpdateAppVersionResponseMapper.kt new file mode 100644 index 00000000..1e691fc4 --- /dev/null +++ b/core/data/src/main/kotlin/com/team/bottles/core/data/mapper/UpdateAppVersionResponseMapper.kt @@ -0,0 +1,9 @@ +package com.team.bottles.core.data.mapper + +import com.team.bottles.network.dto.auth.response.UpdateAppVersionResponse + +fun UpdateAppVersionResponse.toLatestVersionCode(): Int = + this.latestAndroidVersion?: 10007 + +fun UpdateAppVersionResponse.toMinimumVersionCode(): Int = + this.minimumAndroidVersion?: 10007 \ No newline at end of file diff --git a/core/data/src/main/kotlin/com/team/bottles/core/data/repository/AuthRepositoryImpl.kt b/core/data/src/main/kotlin/com/team/bottles/core/data/repository/AuthRepositoryImpl.kt index f29c6347..d4de122a 100644 --- a/core/data/src/main/kotlin/com/team/bottles/core/data/repository/AuthRepositoryImpl.kt +++ b/core/data/src/main/kotlin/com/team/bottles/core/data/repository/AuthRepositoryImpl.kt @@ -1,6 +1,8 @@ package com.team.bottles.core.data.repository import com.team.bottles.core.data.mapper.toAuthResult +import com.team.bottles.core.data.mapper.toLatestVersionCode +import com.team.bottles.core.data.mapper.toMinimumVersionCode import com.team.bottles.core.datastore.datasource.TokenDataSource import com.team.bottles.core.domain.auth.model.AuthResult import com.team.bottles.core.domain.auth.model.Token @@ -73,4 +75,10 @@ class AuthRepositoryImpl @Inject constructor( override suspend fun getSavedLocalFcmToken(): String = tokenDataSource.getFcmDeviceToken() + override suspend fun getLatestAppVersion(): Int = + authDataSource.fetchRequiredMinimumAppVersion().toLatestVersionCode() + + override suspend fun getRequiredAppVersion(): Int = + authDataSource.fetchRequiredMinimumAppVersion().toMinimumVersionCode() + } diff --git a/core/data/src/main/kotlin/com/team/bottles/core/data/repository/UserRepositoryImpl.kt b/core/data/src/main/kotlin/com/team/bottles/core/data/repository/UserRepositoryImpl.kt index d0c3b4b3..ee53d8ae 100644 --- a/core/data/src/main/kotlin/com/team/bottles/core/data/repository/UserRepositoryImpl.kt +++ b/core/data/src/main/kotlin/com/team/bottles/core/data/repository/UserRepositoryImpl.kt @@ -1,12 +1,19 @@ package com.team.bottles.core.data.repository +import com.team.bottles.core.data.mapper.toAlimyType +import com.team.bottles.core.data.mapper.toNotification +import com.team.bottles.core.domain.user.model.Notification import com.team.bottles.core.domain.user.repository.UserRepository +import com.team.bottles.local.datasource.DeviceDataSource import com.team.bottles.network.datasource.UserDataSource +import com.team.bottles.network.dto.auth.request.BlockContactListRequest +import com.team.bottles.network.dto.user.request.AlimyOnOffRequest import com.team.bottles.network.dto.user.request.ReportUserRequest import javax.inject.Inject class UserRepositoryImpl @Inject constructor( private val userDataSource: UserDataSource, + private val deviceDataSource: DeviceDataSource, ) : UserRepository { override suspend fun reportUser(userId: Int, contents: String) { @@ -18,4 +25,29 @@ class UserRepositoryImpl @Inject constructor( ) } + override suspend fun loadContacts(): List = + deviceDataSource.getContacts() + + override suspend fun updateBlockingContacts(contacts: List) { + userDataSource.updateWantToBlockContacts( + request = BlockContactListRequest( + blockContacts = contacts + ) + ) + } + + override suspend fun loadSettingNotifications(): List = + userDataSource.fetchSettingNotifications().map { response -> + response.toNotification() + } + + override suspend fun updateSettingNotification(notification: Notification) { + userDataSource.updateSettingNotification( + request = AlimyOnOffRequest( + alimyType = notification.notificationType.toAlimyType(), + enabled = notification.enabled + ) + ) + } + } \ No newline at end of file diff --git a/core/datastore/src/main/java/com/team/bottles/core/datastore/di/LocalDataSourceModule.kt b/core/datastore/src/main/java/com/team/bottles/core/datastore/di/DataStoreDataSourceModule.kt similarity index 91% rename from core/datastore/src/main/java/com/team/bottles/core/datastore/di/LocalDataSourceModule.kt rename to core/datastore/src/main/java/com/team/bottles/core/datastore/di/DataStoreDataSourceModule.kt index b04e1a81..76bab67b 100644 --- a/core/datastore/src/main/java/com/team/bottles/core/datastore/di/LocalDataSourceModule.kt +++ b/core/datastore/src/main/java/com/team/bottles/core/datastore/di/DataStoreDataSourceModule.kt @@ -9,7 +9,7 @@ import dagger.hilt.components.SingletonComponent @Module @InstallIn(SingletonComponent::class) -abstract class LocalDataSourceModule { +abstract class DataStoreDataSourceModule { @Binds abstract fun bindsTokenDataSource(dataSourceImpl: TokenDataSourceImpl): TokenDataSource diff --git a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/bars/BottomBar.kt b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/bars/BottomBar.kt index 10d3079b..788fc4ea 100644 --- a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/bars/BottomBar.kt +++ b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/bars/BottomBar.kt @@ -3,6 +3,7 @@ package com.team.bottles.core.designsystem.components.bars import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -18,16 +19,14 @@ fun BottlesBottomBar( modifier: Modifier = Modifier, text: String, onClick: () -> Unit, - enabled: Boolean = false + enabled: Boolean = false, + isDebounce: Boolean = true, ) { Box( modifier = modifier + .height(height = 88.dp) .background(brush = BottlesTheme.color.background.tertiary) - .padding( - top = 24.dp, - start = 16.dp, - end = 16.dp - ), + .padding(horizontal = BottlesTheme.spacing.medium), contentAlignment = Alignment.BottomCenter ) { BottlesSolidButton( @@ -36,7 +35,7 @@ fun BottlesBottomBar( text = text, enabled = enabled, onClick = onClick, - isDebounce = true, + isDebounce = isDebounce, ) } } diff --git a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/bars/TopBar.kt b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/bars/TopBar.kt index 9a6c26fb..2e950b60 100644 --- a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/bars/TopBar.kt +++ b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/bars/TopBar.kt @@ -29,12 +29,13 @@ fun BottlesTopBar( Box( modifier = modifier .fillMaxWidth() - .height(48.dp) - .padding(horizontal = 16.dp), + .height(48.dp), contentAlignment = Alignment.Center, ) { Row( - modifier = Modifier.fillMaxWidth(), + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = BottlesTheme.spacing.medium), horizontalArrangement = if (leadingIcon == null) Arrangement.End else Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically ) { diff --git a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/buttons/IconButton.kt b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/buttons/IconButton.kt index 23716d06..2f048b21 100644 --- a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/buttons/IconButton.kt +++ b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/buttons/IconButton.kt @@ -8,11 +8,13 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.Icon import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -39,13 +41,14 @@ fun BottlesIconButtonWithText( color = BottlesTheme.color.border.enabled, shape = BottlesTheme.shape.extraSmall ) - .padding( - horizontal = BottlesTheme.spacing.small, - vertical = 7.5f.dp - ) + .clip(shape = BottlesTheme.shape.extraSmall) .noRippleClickable( onClick = onClick, enabled = enabled + ) + .padding( + horizontal = BottlesTheme.spacing.small, + vertical = 7.5f.dp ), horizontalArrangement = Arrangement.spacedBy( space = BottlesTheme.spacing.doubleExtraSmall, @@ -66,29 +69,46 @@ fun BottlesIconButtonWithText( } } +enum class IconButtonType { + CIRCLE, + RECTANGLE, + ; +} + @Composable fun BottlesIconButton( modifier: Modifier = Modifier, + iconButtonType: IconButtonType, @DrawableRes icon: Int, onClick: () -> Unit, enabled: Boolean = true ) { + val shape = when (iconButtonType) { + IconButtonType.RECTANGLE -> BottlesTheme.shape.extraSmall + IconButtonType.CIRCLE -> CircleShape + } + val padding = when (iconButtonType) { + IconButtonType.RECTANGLE -> 10.dp + IconButtonType.CIRCLE -> 6.dp + } + Box( modifier = modifier .background( color = BottlesTheme.color.container.enabledPrimary, - shape = BottlesTheme.shape.extraSmall + shape = shape ) .border( width = 1.dp, color = BottlesTheme.color.border.enabled, - shape = BottlesTheme.shape.extraSmall + shape = shape ) - .padding(10.dp) + .clip(shape = shape) .noRippleClickable( onClick = onClick, enabled = enabled ) + .padding(all = padding) ) { Icon( painter = painterResource(id = icon), @@ -98,13 +118,14 @@ fun BottlesIconButton( } } -@Preview +@Preview(showBackground = true) @Composable private fun BottlesIconButtonPreview() { BottlesTheme { - Column { + Column(verticalArrangement = Arrangement.spacedBy(3.dp)) { BottlesIconButton( icon = R.drawable.ic_close_16, + iconButtonType = IconButtonType.RECTANGLE, onClick = {} ) BottlesIconButtonWithText( @@ -112,6 +133,11 @@ private fun BottlesIconButtonPreview() { icon = R.drawable.ic_group_14, onClick = {} ) + BottlesIconButton( + icon = R.drawable.ic_pencil_12, + iconButtonType = IconButtonType.CIRCLE, + onClick = {} + ) } } } \ No newline at end of file diff --git a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/buttons/SolidButton.kt b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/buttons/SolidButton.kt index d6a3f984..b0cde580 100644 --- a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/buttons/SolidButton.kt +++ b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/buttons/SolidButton.kt @@ -17,6 +17,7 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Shape import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp @@ -25,8 +26,7 @@ import com.team.bottles.core.designsystem.modifier.debounceClickable import com.team.bottles.core.designsystem.theme.BottlesTheme enum class SolidButtonType(val height: Dp) { - XS(height = 36.dp), - SM(height = 56.dp), + SM(height = 36.dp), MD(height = 56.dp), LG(height = 64.dp), ; @@ -46,8 +46,15 @@ fun BottlesSolidButton( val isPressed by interactionSource.collectIsPressedAsState() val shape = when(buttonType) { - SolidButtonType.XS -> BottlesTheme.shape.extraSmall - else -> BottlesTheme.shape.small + SolidButtonType.SM -> BottlesTheme.shape.extraSmall + SolidButtonType.MD -> BottlesTheme.shape.small + SolidButtonType.LG -> BottlesTheme.shape.medium + } + + val backgroundColor = when { + !enabled -> BottlesTheme.color.container.disabledSecondary + isPressed -> BottlesTheme.color.container.pressed + else -> BottlesTheme.color.container.enabledSecondary } SolidButton( @@ -55,9 +62,9 @@ fun BottlesSolidButton( onClick = onClick, enabled = enabled, shape = shape, + backgroundColor = backgroundColor, isDebounce = isDebounce, interactionSource = interactionSource, - isPressed = isPressed, buttonType = buttonType, contentHorizontalPadding = contentHorizontalPadding ) { @@ -68,7 +75,7 @@ fun BottlesSolidButton( } val textStyle = when(buttonType) { - SolidButtonType.XS -> BottlesTheme.typography.body + SolidButtonType.SM -> BottlesTheme.typography.body else -> BottlesTheme.typography.subTitle1 } @@ -86,19 +93,13 @@ fun SolidButton( onClick: () -> Unit, enabled: Boolean, shape: Shape, + backgroundColor: Color, buttonType: SolidButtonType, contentHorizontalPadding: Dp, isDebounce: Boolean, interactionSource: MutableInteractionSource, - isPressed: Boolean, content: @Composable () -> Unit, ) { - val backgroundColor = when { - !enabled -> BottlesTheme.color.container.disabledSecondary - isPressed -> BottlesTheme.color.container.pressed - else -> BottlesTheme.color.container.enabledSecondary - } - Box( modifier = modifier .height(height = buttonType.height) @@ -107,11 +108,6 @@ fun SolidButton( shape = shape ) .clip(shape = shape) - .padding( - paddingValues = PaddingValues( - horizontal = contentHorizontalPadding, - ), - ) .then( if (isDebounce) { Modifier.debounceClickable( @@ -128,6 +124,11 @@ fun SolidButton( indication = null ) } + ) + .padding( + paddingValues = PaddingValues( + horizontal = contentHorizontalPadding, + ), ), contentAlignment = Alignment.Center ) { @@ -142,12 +143,6 @@ fun SolidButton( private fun SolidButtonPreview() { BottlesTheme { Column(verticalArrangement = Arrangement.spacedBy(3.dp)) { - BottlesSolidButton( - buttonType = SolidButtonType.XS, - text = "Text", - onClick = { }, - contentHorizontalPadding = 12.dp - ) BottlesSolidButton( buttonType = SolidButtonType.SM, text = "Text", diff --git a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/cards/Card.kt b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/cards/Card.kt new file mode 100644 index 00000000..e59278d9 --- /dev/null +++ b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/cards/Card.kt @@ -0,0 +1,63 @@ +package com.team.bottles.core.designsystem.components.cards + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.team.bottles.core.designsystem.components.lists.BottlesSettingItemWithArrow +import com.team.bottles.core.designsystem.theme.BottlesTheme + +@Composable +fun BottlesCard( + modifier: Modifier = Modifier, + verticalArrangement: Arrangement.Vertical = Arrangement.Top, + contents: @Composable () -> Unit +) { + Column( + modifier = modifier + .background( + color = BottlesTheme.color.container.primary, + shape = BottlesTheme.shape.extraLarge + ) + .border( + width = 1.dp, + shape = BottlesTheme.shape.extraLarge, + color = BottlesTheme.color.border.primary + ) + .clip(shape = BottlesTheme.shape.extraLarge) + .padding( + vertical = BottlesTheme.spacing.extraLarge, + horizontal = BottlesTheme.spacing.medium + ), + verticalArrangement = verticalArrangement + ) { + contents.invoke() + } +} + +@Preview +@Composable +private fun BottlesCardPreview() { + BottlesTheme { + BottlesCard( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp), + verticalArrangement = Arrangement.spacedBy( + space = BottlesTheme.spacing.extraLarge + ) + ) { + BottlesSettingItemWithArrow( + title = "프로필 수정", + onClickItem = {} + ) + } + } +} \ No newline at end of file diff --git a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/etc/Profile.kt b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/etc/Profile.kt new file mode 100644 index 00000000..477740ea --- /dev/null +++ b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/etc/Profile.kt @@ -0,0 +1,143 @@ +package com.team.bottles.core.designsystem.components.etc + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material3.Icon +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import com.skydoves.cloudy.cloudy +import com.skydoves.landscapist.ImageOptions +import com.skydoves.landscapist.coil.CoilImage +import com.team.bottles.core.designsystem.R +import com.team.bottles.core.designsystem.modifier.debounceNoRippleClickable +import com.team.bottles.core.designsystem.theme.BottlesTheme + +enum class ProfileImageType(val size: Dp) { + SM(size = 40.dp), + LG(size = 80.dp), + ; +} + +@Composable +fun BottlesProfileEdit( + modifier: Modifier = Modifier, + onClickImage: () -> Unit, + imageUrl: String, + profileImageType: ProfileImageType = ProfileImageType.LG, +) { + Box( + modifier = modifier + .debounceNoRippleClickable(onClick = onClickImage) + ) { + BottlesProfile( + imageUrl = imageUrl, + profileImageType = profileImageType, + isBlur = false + ) + Box( + modifier = modifier + .align(Alignment.BottomEnd) + .offset(x = 5.dp) + .background( + color = BottlesTheme.color.container.enabledPrimary, + shape = CircleShape + ) + .border( + width = 1.dp, + color = BottlesTheme.color.border.enabled, + shape = CircleShape + ) + .clip(shape = CircleShape) + .padding(all = 6.dp), + ) { + Icon( + painter = painterResource(id = R.drawable.ic_pencil_12), + contentDescription = null, + tint = BottlesTheme.color.icon.primary + ) + } + } +} + +@Composable +fun BottlesProfile( + modifier: Modifier = Modifier, + imageUrl: String, + profileImageType: ProfileImageType, + isBlur: Boolean = true +) { + CoilImage( + modifier = modifier + .size(size = profileImageType.size) + .clip(shape = CircleShape) + .then( + if (isBlur) { + Modifier.cloudy(radius = 5) + } else { + Modifier + } + ), + imageModel = { imageUrl }, + previewPlaceholder = painterResource(id = R.drawable.sample_image), + imageOptions = ImageOptions( + contentScale = ContentScale.Crop + ), + loading = { + Box( + modifier = Modifier + .size(80.dp) + .background( + color = BottlesTheme.color.icon.secondary, + shape = CircleShape + ) + .clip(shape = CircleShape) + ) + }, + failure = { + Box( + modifier = Modifier + .size(80.dp) + .background( + color = BottlesTheme.color.icon.secondary, + shape = CircleShape + ) + .clip(shape = CircleShape) + ) + } + ) +} + +@Preview +@Composable +private fun ProfileEditPreview() { + BottlesTheme { + Column(verticalArrangement = Arrangement.spacedBy(3.dp)) { + BottlesProfileEdit( + onClickImage = { /*TODO*/ }, + imageUrl = "" + ) + BottlesProfile( + imageUrl = "", + profileImageType = ProfileImageType.LG + ) + BottlesProfile( + imageUrl = "", + profileImageType = ProfileImageType.SM + ) + } + } +} \ No newline at end of file diff --git a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/etc/Toggle.kt b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/etc/Toggle.kt new file mode 100644 index 00000000..92708123 --- /dev/null +++ b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/etc/Toggle.kt @@ -0,0 +1,78 @@ +package com.team.bottles.core.designsystem.components.etc + +import androidx.compose.foundation.Canvas +import androidx.compose.foundation.background +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.selection.toggleable +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.team.bottles.core.designsystem.modifier.noRippleClickable +import com.team.bottles.core.designsystem.theme.BottlesTheme + +@Composable +fun BottlesToggleButton( + modifier: Modifier = Modifier, + checked: Boolean, + onCheckedChange: () -> Unit, + enabled: Boolean = true, +) { + val backgroundColor = if (checked) { + BottlesTheme.color.icon.selected + } else { + BottlesTheme.color.icon.disabled + } + val shape = RoundedCornerShape(100.dp) + + Box( + modifier = modifier + .width(44.dp) + .background( + color = backgroundColor, + shape = shape + ) + .clip(shape = shape) + .padding(2.dp) + .noRippleClickable( + onClick = onCheckedChange, + enabled = enabled + ), + contentAlignment = if (checked) Alignment.TopEnd else Alignment.TopStart + ) { + Canvas( + modifier = Modifier + .size(size = 22.dp) + ) { + drawCircle(color = Color.White) + } + } +} + +@Preview +@Composable +private fun BottlesToggleButtonPreview() { + BottlesTheme { + Column(verticalArrangement = Arrangement.spacedBy(3.dp)) { + BottlesToggleButton( + checked = false, + onCheckedChange = {} + ) + BottlesToggleButton( + checked = true, + onCheckedChange = {} + ) + } + } +} \ No newline at end of file diff --git a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/etc/UserInfo.kt b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/etc/UserInfo.kt index fd018d54..1b497528 100644 --- a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/etc/UserInfo.kt +++ b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/etc/UserInfo.kt @@ -4,32 +4,25 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.Icon import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import com.skydoves.cloudy.cloudy -import com.skydoves.landscapist.ImageOptions -import com.skydoves.landscapist.coil.CoilImage import com.team.bottles.core.designsystem.R import com.team.bottles.core.designsystem.theme.BottlesTheme @Composable -fun UserInfo( +fun BottlesUserInfo( modifier: Modifier = Modifier, + onClickImage: () -> Unit, imageUrl: String, userName: String, userAge: Int, - isBlur: Boolean = true + profileImageType: ProfileImageType = ProfileImageType.LG ) { Column( modifier = modifier.fillMaxWidth(), @@ -38,29 +31,64 @@ fun UserInfo( ), horizontalAlignment = Alignment.CenterHorizontally ) { - CoilImage( - modifier = Modifier - .size(80.dp) - .clip(shape = CircleShape) - .then( - if (isBlur) { - Modifier.cloudy(radius = 5) - } else { - Modifier - } - ), - imageModel = { imageUrl }, - previewPlaceholder = painterResource(id = R.drawable.sample_image), - imageOptions = ImageOptions( - contentScale = ContentScale.Crop - ), - loading = { + BottlesProfileEdit( + imageUrl = imageUrl, + profileImageType = profileImageType, + onClickImage = onClickImage + ) + + Row( + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy( + space = BottlesTheme.spacing.extraSmall + ) + ) { + Text( + text = userName, + style = BottlesTheme.typography.subTitle1, + color = BottlesTheme.color.text.secondary + ) - }, - failure = { + Icon( + painter = painterResource(id = R.drawable.ic_spacing_bar_3_15), + contentDescription = null, + tint = BottlesTheme.color.border.secondary + ) + + Text( + text = stringResource( + id = R.string.user_age_user_info, + formatArgs = arrayOf(userAge) + ), + style = BottlesTheme.typography.body, + color = BottlesTheme.color.text.secondary + ) + } + } +} - } +@Composable +fun BottlesUserInfo( + modifier: Modifier = Modifier, + imageUrl: String, + userName: String, + userAge: Int, + isBlur: Boolean = true, + profileImageType: ProfileImageType = ProfileImageType.LG +) { + Column( + modifier = modifier.fillMaxWidth(), + verticalArrangement = Arrangement.spacedBy( + space = BottlesTheme.spacing.small + ), + horizontalAlignment = Alignment.CenterHorizontally + ) { + BottlesProfile( + imageUrl = imageUrl, + profileImageType = profileImageType, + isBlur = isBlur ) + Row( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy( @@ -72,11 +100,13 @@ fun UserInfo( style = BottlesTheme.typography.subTitle1, color = BottlesTheme.color.text.secondary ) + Icon( painter = painterResource(id = R.drawable.ic_spacing_bar_3_15), contentDescription = null, tint = BottlesTheme.color.border.secondary ) + Text( text = stringResource( id = R.string.user_age_user_info, @@ -93,10 +123,23 @@ fun UserInfo( @Composable private fun UserInfoPreview() { BottlesTheme { - UserInfo( + BottlesUserInfo( + imageUrl = "", + userName = "냥냥이", + userAge = 15, + ) + } +} + +@Preview(showBackground = true) +@Composable +private fun UserInfoEditPreview() { + BottlesTheme { + BottlesUserInfo( imageUrl = "", userName = "냥냥이", - userAge = 15 + userAge = 15, + onClickImage = {} ) } } \ No newline at end of file diff --git a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/lists/SettingItem.kt b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/lists/SettingItem.kt new file mode 100644 index 00000000..241e4f7f --- /dev/null +++ b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/lists/SettingItem.kt @@ -0,0 +1,226 @@ +package com.team.bottles.core.designsystem.components.lists + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.width +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.team.bottles.core.designsystem.R +import com.team.bottles.core.designsystem.components.buttons.BottlesOutLinedButton +import com.team.bottles.core.designsystem.components.buttons.OutlinedButtonType +import com.team.bottles.core.designsystem.components.etc.BottlesToggleButton +import com.team.bottles.core.designsystem.modifier.noRippleClickable +import com.team.bottles.core.designsystem.theme.BottlesTheme + +@Composable +fun BottlesSettingItemWithButton( + modifier: Modifier = Modifier, + title: String, + subTitle: String, + onClickButton: () -> Unit, + buttonText: String, +) { + SettingItem( + modifier = modifier, + leadingTitle = { + SettingItemTitleAndSubTitle(title = title, subTitle = subTitle) + }, + trailingComponent = { + BottlesOutLinedButton( + text = buttonText, + buttonType = OutlinedButtonType.SM, + onClick = onClickButton, + contentHorizontalPadding = BottlesTheme.spacing.small + ) + } + ) +} + +@Composable +fun BottlesSettingItemWithToggleButton( + modifier: Modifier = Modifier, + title: String, + subTitle: String? = null, + checked: Boolean, + onCheckedChange: () -> Unit, + enabled: Boolean = true +) { + SettingItem( + modifier = modifier, + leadingTitle = { + if (subTitle == null) { + SettingItemSingleTitle(title = title) + } else { + SettingItemTitleAndSubTitle(title = title, subTitle = subTitle) + } + }, + trailingComponent = { + BottlesToggleButton( + checked = checked, + onCheckedChange = onCheckedChange, + enabled = enabled + ) + } + ) +} + +@Composable +fun BottlesSettingItemWithArrow( + modifier: Modifier = Modifier, + title: String, + subTitle: String? = null, + onClickItem: () -> Unit +) { + SettingItem( + modifier = modifier.noRippleClickable(onClick = onClickItem), + leadingTitle = { + if (subTitle == null) { + SettingItemSingleTitle(title = title) + } else { + SettingItemTitleAndSubTitle(title = title, subTitle = subTitle) + } + }, + trailingComponent = { + Icon( + painter = painterResource(id = R.drawable.ic_right_16), + contentDescription = null, + tint = BottlesTheme.color.icon.primary + ) + } + ) +} + +@Composable +fun BottlesSettingItem( + modifier: Modifier = Modifier, + title: String, + subTitle: String, +) { + SettingItem( + modifier = modifier, + leadingTitle = { + SettingItemTitleAndSubTitle(title = title, subTitle = subTitle) + }, + ) +} + +@Composable +private fun RowScope.SettingItemSingleTitle( + modifier: Modifier = Modifier, + title: String, +) { + Box( + modifier = modifier + .weight(weight = 1f) + .height(height = 26.dp), + contentAlignment = Alignment.CenterStart + ) { + Text( + text = title, + style = BottlesTheme.typography.subTitle2, + color = BottlesTheme.color.text.secondary + ) + } +} + +@Composable +private fun RowScope.SettingItemTitleAndSubTitle( + modifier: Modifier = Modifier, + title: String, + subTitle: String +) { + Column( + modifier = modifier + .weight(weight = 1f), + verticalArrangement = Arrangement.spacedBy( + space = BottlesTheme.spacing.extraSmall + ) + ) { + Text( + text = title, + style = BottlesTheme.typography.subTitle2, + color = BottlesTheme.color.text.secondary + ) + Text( + modifier = Modifier.fillMaxWidth(), + text = subTitle, + style = BottlesTheme.typography.caption, + color = BottlesTheme.color.text.tertiary + ) + } +} + +@Composable +private fun SettingItem( + modifier: Modifier = Modifier, + leadingTitle: @Composable (RowScope.() -> Unit)? = null, + trailingComponent: @Composable (RowScope.() -> Unit)? = null, +) { + Row( + modifier = modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically + ) { + if (leadingTitle != null) { + leadingTitle() + } + + if (leadingTitle != null && trailingComponent != null) { + Spacer(modifier = Modifier.width(width = BottlesTheme.spacing.extraSmall)) + } + + if (trailingComponent != null) { + trailingComponent() + } + } +} + +@Preview(showBackground = true) +@Composable +private fun BottlesListTitleAndArrowPreview() { + BottlesTheme { + Column(verticalArrangement = Arrangement.spacedBy(20.dp)) { + BottlesSettingItemWithArrow( + title = "text", + onClickItem = {} + ) + BottlesSettingItemWithArrow( + title = "text", + subTitle = "subText", + onClickItem = {} + ) + BottlesSettingItemWithToggleButton( + title = "text", + checked = true, + onCheckedChange = {} + ) + BottlesSettingItemWithToggleButton( + title = "text", + subTitle = "subText", + checked = true, + onCheckedChange = {} + ) + BottlesSettingItemWithButton( + title = "text", + subTitle = "subText", + onClickButton = { /*TODO*/ }, + buttonText = "Text" + ) + BottlesSettingItem( + title = "text", + subTitle = "subText", + ) + } + } +} \ No newline at end of file diff --git a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/popup/BalloonPopup.kt b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/popup/BalloonPopup.kt index 56c20218..0346f6d3 100644 --- a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/popup/BalloonPopup.kt +++ b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/components/popup/BalloonPopup.kt @@ -15,13 +15,19 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.withStyle import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.team.bottles.core.designsystem.R import com.team.bottles.core.designsystem.components.buttons.BottlesSolidButton import com.team.bottles.core.designsystem.components.buttons.SolidButtonType +import com.team.bottles.core.designsystem.components.etc.chips.BottlesChip import com.team.bottles.core.designsystem.theme.BottlesTheme @Composable @@ -31,17 +37,18 @@ fun BottlesBalloonPopup( ) { val shape = RoundedCornerShape(20.dp) - Column(modifier = modifier) { + Column(modifier = modifier.shadow(4.dp, shape)) { Box( modifier = Modifier + .height(height = 42.dp) .background( color = BottlesTheme.color.container.primary, shape = shape ) .padding( horizontal = BottlesTheme.spacing.large, - vertical = BottlesTheme.spacing.small - ) + ), + contentAlignment = Alignment.Center ) { Text( text = text, @@ -55,7 +62,7 @@ fun BottlesBalloonPopup( .offset(y = (-0.2).dp), painter = painterResource(id = R.drawable.ic_balloon_vertex_10_6), contentDescription = null, - tint = BottlesTheme.color.border.primary + tint = BottlesTheme.color.container.primary ) } } @@ -67,17 +74,20 @@ fun BottlesBalloonPopup( ) { val shape = RoundedCornerShape(20.dp) - Column(modifier = modifier) { + Column( + modifier = modifier.shadow(4.dp, shape) + ) { Box( modifier = Modifier + .height(height = 42.dp) .background( color = BottlesTheme.color.container.primary, shape = shape ) .padding( horizontal = BottlesTheme.spacing.large, - vertical = BottlesTheme.spacing.small - ) + ), + contentAlignment = Alignment.Center ) { Text( text = text, @@ -105,7 +115,7 @@ fun BottlesBalloonPopupWithButton( ) { val shape = RoundedCornerShape(20.dp) - Column(modifier = modifier) { + Column(modifier = modifier.shadow(8.dp, shape)) { Column( modifier = Modifier .background( @@ -122,7 +132,7 @@ fun BottlesBalloonPopupWithButton( ) Spacer(modifier = Modifier.height(height = BottlesTheme.spacing.small)) BottlesSolidButton( - buttonType = SolidButtonType.XS, + buttonType = SolidButtonType.SM, text = buttonText, onClick = onClick, contentHorizontalPadding = 12.dp @@ -139,20 +149,50 @@ fun BottlesBalloonPopupWithButton( } } +@Composable +fun BottlesBalloonPopupWithChip( + modifier: Modifier = Modifier, + text: String, + count: Int +) { + Box(modifier = modifier) { + BottlesBalloonPopup( + text = text + ) + BottlesChip( + modifier = Modifier + .align(Alignment.TopEnd) + .offset(y = (-12).dp), + number = count + ) + } +} -@Preview +@Preview(heightDp = 800, showBackground = true) @Composable private fun BottlesBalloonPopupPreview() { BottlesTheme { Column(verticalArrangement = Arrangement.spacedBy(3.dp)) { BottlesBalloonPopup( - text = "새로운 보틀이 도착했어요!" + text = "보틀을 클릭해 보세요" ) BottlesBalloonPopupWithButton( text = "자기소개 작성 후 열어볼 수 있어요", buttonText = "자기소개 작성하기", onClick = {} ) + BottlesBalloonPopup( + text = buildAnnotatedString { + withStyle(style = SpanStyle(color = Color(0xFF615EFA))) { + append("00") + } + append("시간후 새로운 보틀이 도착해요") + } + ) + BottlesBalloonPopupWithChip( + text = "보틀을 클릭해 보세요", + count = 3 + ) } } } \ No newline at end of file diff --git a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/foundation/Color.kt b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/foundation/Color.kt index 1e9aae72..64525c31 100644 --- a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/foundation/Color.kt +++ b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/foundation/Color.kt @@ -113,4 +113,5 @@ internal object IconColors { internal val iconSecondary = Neutral200 internal val iconDisabled = Neutral200 internal val iconUpdate = Red + internal val iconSelected = PrimaryPurple500 } \ No newline at end of file diff --git a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/foundation/Shape.kt b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/foundation/Shape.kt index 03983726..74bad497 100644 --- a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/foundation/Shape.kt +++ b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/foundation/Shape.kt @@ -8,6 +8,7 @@ internal enum class BottlesShapeDefaults(val shape: Shape) { RADIUS_XS(shape = RoundedCornerShape(8.dp)), RADIUS_S(shape = RoundedCornerShape(12.dp)), RADIUS_M(shape = RoundedCornerShape(16.dp)), + RADIUS_L(shape = RoundedCornerShape(20.dp)), RADIUS_XL(shape = RoundedCornerShape(24.dp)), ; } \ No newline at end of file diff --git a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/theme/BottlesColor.kt b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/theme/BottlesColor.kt index 5f0813eb..0fc02fef 100644 --- a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/theme/BottlesColor.kt +++ b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/theme/BottlesColor.kt @@ -123,5 +123,6 @@ data class Icon( val primary: Color = IconColors.iconPrimary, val secondary: Color = IconColors.iconSecondary, val disabled: Color = IconColors.iconDisabled, - val update: Color = IconColors.iconUpdate + val update: Color = IconColors.iconUpdate, + val selected: Color = IconColors.iconSelected ) diff --git a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/theme/BottlesShape.kt b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/theme/BottlesShape.kt index 2b9b033e..b164a37c 100644 --- a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/theme/BottlesShape.kt +++ b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/theme/BottlesShape.kt @@ -21,6 +21,7 @@ data class BottlesShape( val extraSmall: Shape, val small: Shape, val medium: Shape, + val large: Shape, val extraLarge: Shape, ) { companion object { @@ -28,6 +29,7 @@ data class BottlesShape( extraSmall = BottlesShapeDefaults.RADIUS_XS.shape, small = BottlesShapeDefaults.RADIUS_S.shape, medium = BottlesShapeDefaults.RADIUS_M.shape, + large = BottlesShapeDefaults.RADIUS_L.shape, extraLarge = BottlesShapeDefaults.RADIUS_XL.shape, ) } diff --git a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/theme/BottlesTypography.kt b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/theme/BottlesTypography.kt index aefa93d2..da4b6ca5 100644 --- a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/theme/BottlesTypography.kt +++ b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/theme/BottlesTypography.kt @@ -39,7 +39,7 @@ data class BottlesTypography( fontWeight = FontWeight.Bold, fontSize = 32.sp, letterSpacing = 0.sp, - lineHeight = 24.sp * 1.3f, + lineHeight = 41.6f.sp, ), title2 = TextStyle( @@ -47,7 +47,7 @@ data class BottlesTypography( fontWeight = FontWeight.Bold, fontSize = 24.sp, letterSpacing = 0.sp, - lineHeight = 20.sp * 1.3f, + lineHeight = 31.2f.sp, ), title3 = TextStyle( @@ -55,7 +55,7 @@ data class BottlesTypography( fontWeight = FontWeight.Bold, fontSize = 20.sp, letterSpacing = 0.sp, - lineHeight = 20.sp * 1.3f, + lineHeight = 26.sp, ), subTitle1 = TextStyle( @@ -63,7 +63,7 @@ data class BottlesTypography( fontWeight = FontWeight.SemiBold, fontSize = 16.sp, letterSpacing = 0.sp, - lineHeight = 16.sp * 1.3f, + lineHeight = 20.8f.sp, ), subTitle2 = TextStyle( @@ -71,7 +71,7 @@ data class BottlesTypography( fontWeight = FontWeight.SemiBold, fontSize = 14.sp, letterSpacing = 0.sp, - lineHeight = 14.sp * 1.3f, + lineHeight = 18.2f.sp, ), body = TextStyle( @@ -79,7 +79,7 @@ data class BottlesTypography( fontWeight = FontWeight.Medium, fontSize = 14.sp, letterSpacing = 0.sp, - lineHeight = 14.sp * 1.5f, + lineHeight = 21.sp, ), caption = TextStyle( @@ -87,7 +87,7 @@ data class BottlesTypography( fontWeight = FontWeight.Medium, fontSize = 12.sp, letterSpacing = 0.sp, - lineHeight = 12.sp * 1.5f, + lineHeight = 18.sp, ), kakaoLogin = TextStyle( @@ -95,7 +95,7 @@ data class BottlesTypography( fontWeight = FontWeight.Medium, fontSize = 14.sp, letterSpacing = 0.15.sp, - lineHeight = 14.sp * 1.4f, + lineHeight = 19.6f.sp, ), ) } @@ -112,8 +112,8 @@ private fun TypographyPreview() { ) { Text( modifier = Modifier.border(1.dp, Color.Blue), - text = "진심을 담은 보틀로\n서로를 밀도있게 알아가요", - style = BottlesTheme.typography.title3, + text = "아직 보틀을\n찾지 못했어요", + style = BottlesTheme.typography.title1, color = Color.Black, textAlign = TextAlign.Center ) diff --git a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/util/BottlesIcons.kt b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/util/BottlesIcons.kt index 47f1bcb3..eb7050bc 100644 --- a/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/util/BottlesIcons.kt +++ b/core/design-system/src/main/kotlin/com/team/bottles/core/designsystem/util/BottlesIcons.kt @@ -18,4 +18,6 @@ object BottlesIcons { val ic_beach_32 = R.drawable.ic_beach_32 val ic_close_16 = R.drawable.ic_close_16 val ic_spacing_bar_3_15 = R.drawable.ic_spacing_bar_3_15 + val ic_pencil_12 = R.drawable.ic_pencil_12 + val ic_warning_24 = R.drawable.ic_warning_24 } diff --git a/core/design-system/src/main/res/drawable/ic_pencil_12.xml b/core/design-system/src/main/res/drawable/ic_pencil_12.xml new file mode 100644 index 00000000..7e481c3e --- /dev/null +++ b/core/design-system/src/main/res/drawable/ic_pencil_12.xml @@ -0,0 +1,14 @@ + + + + + + diff --git a/core/design-system/src/main/res/drawable/ic_warning_24.xml b/core/design-system/src/main/res/drawable/ic_warning_24.xml new file mode 100644 index 00000000..1e56a5f6 --- /dev/null +++ b/core/design-system/src/main/res/drawable/ic_warning_24.xml @@ -0,0 +1,14 @@ + + + + + + diff --git a/core/domain/src/main/kotlin/com/team/bottles/core/domain/auth/repository/AuthRepository.kt b/core/domain/src/main/kotlin/com/team/bottles/core/domain/auth/repository/AuthRepository.kt index 4129d09a..057f6b3e 100644 --- a/core/domain/src/main/kotlin/com/team/bottles/core/domain/auth/repository/AuthRepository.kt +++ b/core/domain/src/main/kotlin/com/team/bottles/core/domain/auth/repository/AuthRepository.kt @@ -21,4 +21,8 @@ interface AuthRepository { suspend fun getSavedLocalFcmToken(): String + suspend fun getLatestAppVersion(): Int + + suspend fun getRequiredAppVersion(): Int + } \ No newline at end of file diff --git a/core/domain/src/main/kotlin/com/team/bottles/core/domain/auth/usecase/GetLatestAppVersionUseCase.kt b/core/domain/src/main/kotlin/com/team/bottles/core/domain/auth/usecase/GetLatestAppVersionUseCase.kt new file mode 100644 index 00000000..6fd17e4e --- /dev/null +++ b/core/domain/src/main/kotlin/com/team/bottles/core/domain/auth/usecase/GetLatestAppVersionUseCase.kt @@ -0,0 +1,19 @@ +package com.team.bottles.core.domain.auth.usecase + +import com.team.bottles.core.domain.auth.repository.AuthRepository +import javax.inject.Inject + +class GetLatestAppVersionUseCaseImpl @Inject constructor( + private val authRepository: AuthRepository, +): GetLatestAppVersionUseCase { + + override suspend fun invoke(): Int = + authRepository.getLatestAppVersion() + +} + +interface GetLatestAppVersionUseCase { + + suspend operator fun invoke(): Int + +} \ No newline at end of file diff --git a/core/domain/src/main/kotlin/com/team/bottles/core/domain/auth/usecase/GetRequiredAppVersionUseCase.kt b/core/domain/src/main/kotlin/com/team/bottles/core/domain/auth/usecase/GetRequiredAppVersionUseCase.kt new file mode 100644 index 00000000..40f5c898 --- /dev/null +++ b/core/domain/src/main/kotlin/com/team/bottles/core/domain/auth/usecase/GetRequiredAppVersionUseCase.kt @@ -0,0 +1,19 @@ +package com.team.bottles.core.domain.auth.usecase + +import com.team.bottles.core.domain.auth.repository.AuthRepository +import javax.inject.Inject + +class GetRequiredAppVersionUseCaseImpl @Inject constructor( + private val authRepository: AuthRepository, +) : GetRequiredAppVersionUseCase { + + override suspend fun invoke(): Int = + authRepository.getRequiredAppVersion() + +} + +interface GetRequiredAppVersionUseCase { + + suspend operator fun invoke(): Int + +} \ No newline at end of file diff --git a/core/domain/src/main/kotlin/com/team/bottles/core/domain/user/model/Notification.kt b/core/domain/src/main/kotlin/com/team/bottles/core/domain/user/model/Notification.kt new file mode 100644 index 00000000..5e5392b3 --- /dev/null +++ b/core/domain/src/main/kotlin/com/team/bottles/core/domain/user/model/Notification.kt @@ -0,0 +1,14 @@ +package com.team.bottles.core.domain.user.model + +data class Notification( + val notificationType: NotificationType, + val enabled: Boolean +) + +enum class NotificationType { + DAILY_RANDOM, + RECEIVE_LIKE, + PING_PONG, + MARKETING, + ; +} \ No newline at end of file diff --git a/core/domain/src/main/kotlin/com/team/bottles/core/domain/user/repository/UserRepository.kt b/core/domain/src/main/kotlin/com/team/bottles/core/domain/user/repository/UserRepository.kt index 0eaa25a4..0dc9b08c 100644 --- a/core/domain/src/main/kotlin/com/team/bottles/core/domain/user/repository/UserRepository.kt +++ b/core/domain/src/main/kotlin/com/team/bottles/core/domain/user/repository/UserRepository.kt @@ -1,5 +1,7 @@ package com.team.bottles.core.domain.user.repository +import com.team.bottles.core.domain.user.model.Notification + interface UserRepository { suspend fun reportUser( @@ -7,4 +9,12 @@ interface UserRepository { contents: String ) + suspend fun loadContacts(): List + + suspend fun updateBlockingContacts(contacts: List) + + suspend fun loadSettingNotifications(): List + + suspend fun updateSettingNotification(notification: Notification) + } \ No newline at end of file diff --git a/core/domain/src/main/kotlin/com/team/bottles/core/domain/user/usecase/GetContactsUseCase.kt b/core/domain/src/main/kotlin/com/team/bottles/core/domain/user/usecase/GetContactsUseCase.kt new file mode 100644 index 00000000..024db075 --- /dev/null +++ b/core/domain/src/main/kotlin/com/team/bottles/core/domain/user/usecase/GetContactsUseCase.kt @@ -0,0 +1,19 @@ +package com.team.bottles.core.domain.user.usecase + +import com.team.bottles.core.domain.user.repository.UserRepository +import javax.inject.Inject + +class GetContactsUseCaseImpl @Inject constructor( + private val userRepository: UserRepository, +): GetContactsUseCase { + + override suspend fun invoke(): List = + userRepository.loadContacts() + +} + +interface GetContactsUseCase { + + suspend operator fun invoke(): List + +} \ No newline at end of file diff --git a/core/domain/src/main/kotlin/com/team/bottles/core/domain/user/usecase/GetSettingNotificationsUseCase.kt b/core/domain/src/main/kotlin/com/team/bottles/core/domain/user/usecase/GetSettingNotificationsUseCase.kt new file mode 100644 index 00000000..a6081678 --- /dev/null +++ b/core/domain/src/main/kotlin/com/team/bottles/core/domain/user/usecase/GetSettingNotificationsUseCase.kt @@ -0,0 +1,20 @@ +package com.team.bottles.core.domain.user.usecase + +import com.team.bottles.core.domain.user.model.Notification +import com.team.bottles.core.domain.user.repository.UserRepository +import javax.inject.Inject + +class GetSettingNotificationsUseCaseImpl @Inject constructor( + private val userRepository: UserRepository, +) : GetSettingNotificationsUseCase { + + override suspend fun invoke(): List = + userRepository.loadSettingNotifications() + +} + +interface GetSettingNotificationsUseCase { + + suspend operator fun invoke(): List + +} \ No newline at end of file diff --git a/core/domain/src/main/kotlin/com/team/bottles/core/domain/user/usecase/UpdateBlockingContactsUseCase.kt b/core/domain/src/main/kotlin/com/team/bottles/core/domain/user/usecase/UpdateBlockingContactsUseCase.kt new file mode 100644 index 00000000..4882c041 --- /dev/null +++ b/core/domain/src/main/kotlin/com/team/bottles/core/domain/user/usecase/UpdateBlockingContactsUseCase.kt @@ -0,0 +1,20 @@ +package com.team.bottles.core.domain.user.usecase + +import com.team.bottles.core.domain.user.repository.UserRepository +import javax.inject.Inject + +class UpdateBlockingContactsUseCaseImpl @Inject constructor( + private val userRepository: UserRepository, +): UpdateBlockingContactsUseCase { + + override suspend fun invoke(contacts: List) { + userRepository.updateBlockingContacts(contacts = contacts) + } + +} + +interface UpdateBlockingContactsUseCase { + + suspend operator fun invoke(contacts: List) + +} \ No newline at end of file diff --git a/core/domain/src/main/kotlin/com/team/bottles/core/domain/user/usecase/UpdateSettingNotificationUseCase.kt b/core/domain/src/main/kotlin/com/team/bottles/core/domain/user/usecase/UpdateSettingNotificationUseCase.kt new file mode 100644 index 00000000..944f2ceb --- /dev/null +++ b/core/domain/src/main/kotlin/com/team/bottles/core/domain/user/usecase/UpdateSettingNotificationUseCase.kt @@ -0,0 +1,21 @@ +package com.team.bottles.core.domain.user.usecase + +import com.team.bottles.core.domain.user.model.Notification +import com.team.bottles.core.domain.user.repository.UserRepository +import javax.inject.Inject + +class UpdateSettingNotificationUseCaseImpl @Inject constructor( + private val userRepository: UserRepository, +): UpdateSettingNotificationUseCase { + + override suspend fun invoke(notification: Notification) { + userRepository.updateSettingNotification(notification = notification) + } + +} + +interface UpdateSettingNotificationUseCase { + + suspend operator fun invoke(notification: Notification) + +} \ No newline at end of file diff --git a/core/local/.gitignore b/core/local/.gitignore new file mode 100644 index 00000000..42afabfd --- /dev/null +++ b/core/local/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/core/local/build.gradle.kts b/core/local/build.gradle.kts new file mode 100644 index 00000000..de030653 --- /dev/null +++ b/core/local/build.gradle.kts @@ -0,0 +1,12 @@ +plugins { + id("team.bottles.android.library") + id("team.bottles.android.hilt") +} + +android { + namespace = "com.team.bottles.local" +} + +dependencies { + +} \ No newline at end of file diff --git a/core/local/src/main/kotlin/com/team/bottles/local/datasource/DeviceDataSource.kt b/core/local/src/main/kotlin/com/team/bottles/local/datasource/DeviceDataSource.kt new file mode 100644 index 00000000..38ab631b --- /dev/null +++ b/core/local/src/main/kotlin/com/team/bottles/local/datasource/DeviceDataSource.kt @@ -0,0 +1,7 @@ +package com.team.bottles.local.datasource + +interface DeviceDataSource { + + suspend fun getContacts(): List + +} \ No newline at end of file diff --git a/core/local/src/main/kotlin/com/team/bottles/local/datasource/DeviceDataSourceImpl.kt b/core/local/src/main/kotlin/com/team/bottles/local/datasource/DeviceDataSourceImpl.kt new file mode 100644 index 00000000..6d5e4973 --- /dev/null +++ b/core/local/src/main/kotlin/com/team/bottles/local/datasource/DeviceDataSourceImpl.kt @@ -0,0 +1,37 @@ +package com.team.bottles.local.datasource + +import android.content.ContentResolver +import android.content.Context +import android.database.Cursor +import android.provider.ContactsContract +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject + +class DeviceDataSourceImpl @Inject constructor( + @ApplicationContext private val context: Context, +) : DeviceDataSource { + + override suspend fun getContacts(): List { + val contacts = mutableSetOf() + val contentResolver: ContentResolver = context.contentResolver + val cursor: Cursor? = contentResolver.query( + ContactsContract.CommonDataKinds.Phone.CONTENT_URI, + null, + null, + null, + null + ) + + cursor?.use { + val numberIndex = it.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER) + + while (it.moveToNext()) { + val number = it.getString(numberIndex).replace(Regex("[^0-9]"), "") + contacts.add(number) + } + } + + return contacts.toList() + } + +} \ No newline at end of file diff --git a/core/local/src/main/kotlin/com/team/bottles/local/di/LocalDataSourceModule.kt b/core/local/src/main/kotlin/com/team/bottles/local/di/LocalDataSourceModule.kt new file mode 100644 index 00000000..795d7e1c --- /dev/null +++ b/core/local/src/main/kotlin/com/team/bottles/local/di/LocalDataSourceModule.kt @@ -0,0 +1,17 @@ +package com.team.bottles.local.di + +import com.team.bottles.local.datasource.DeviceDataSource +import com.team.bottles.local.datasource.DeviceDataSourceImpl +import dagger.Binds +import dagger.Module +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent + +@Module +@InstallIn(SingletonComponent::class) +abstract class LocalDataSourceModule { + + @Binds + abstract fun bindsDeviceDataSource(dataSourceImpl: DeviceDataSourceImpl): DeviceDataSource + +} \ No newline at end of file diff --git a/core/navigator/src/main/kotlin/SettingNavigator.kt b/core/navigator/src/main/kotlin/SettingNavigator.kt new file mode 100644 index 00000000..334b6f4a --- /dev/null +++ b/core/navigator/src/main/kotlin/SettingNavigator.kt @@ -0,0 +1,11 @@ +import kotlinx.serialization.Serializable + +sealed interface SettingNavigator { + + @Serializable + data object Notification : SettingNavigator + + @Serializable + data object Account : SettingNavigator + +} diff --git a/core/network/src/main/kotlin/com/team/bottles/network/api/AuthService.kt b/core/network/src/main/kotlin/com/team/bottles/network/api/AuthService.kt index d996bed2..0dee2bfa 100644 --- a/core/network/src/main/kotlin/com/team/bottles/network/api/AuthService.kt +++ b/core/network/src/main/kotlin/com/team/bottles/network/api/AuthService.kt @@ -8,7 +8,9 @@ import com.team.bottles.network.dto.auth.request.SignUpRequest import com.team.bottles.network.dto.auth.request.SmsSignInRequest import com.team.bottles.network.dto.auth.response.KakaoSignInUpResponse import com.team.bottles.network.dto.auth.response.TokensResponse +import com.team.bottles.network.dto.auth.response.UpdateAppVersionResponse import retrofit2.http.Body +import retrofit2.http.GET import retrofit2.http.Header import retrofit2.http.POST @@ -61,4 +63,7 @@ interface AuthService { @Body fcmUpdateRequest: FcmUpdateRequest ) + @GET("/api/v1/auth/app-version") + suspend fun getRequiredMinimumAppVersion(): UpdateAppVersionResponse + } diff --git a/core/network/src/main/kotlin/com/team/bottles/network/api/UserService.kt b/core/network/src/main/kotlin/com/team/bottles/network/api/UserService.kt index 2e67fae8..ca263de5 100644 --- a/core/network/src/main/kotlin/com/team/bottles/network/api/UserService.kt +++ b/core/network/src/main/kotlin/com/team/bottles/network/api/UserService.kt @@ -1,7 +1,11 @@ package com.team.bottles.network.api +import com.team.bottles.network.dto.auth.request.BlockContactListRequest +import com.team.bottles.network.dto.user.request.AlimyOnOffRequest import com.team.bottles.network.dto.user.request.ReportUserRequest +import com.team.bottles.network.dto.user.response.AlimyResponse import retrofit2.http.Body +import retrofit2.http.GET import retrofit2.http.POST interface UserService { @@ -11,4 +15,17 @@ interface UserService { @Body request: ReportUserRequest ) + @POST("/api/v1/user/block/contact-list") + suspend fun postBlockedContacts( + @Body request: BlockContactListRequest + ) + + @GET("/api/v1/user/alimy") + suspend fun getSettingNotifications(): List + + @POST("/api/v1/user/alimy") + suspend fun postSettingNotification( + @Body request: AlimyOnOffRequest + ) + } \ No newline at end of file diff --git a/core/network/src/main/kotlin/com/team/bottles/network/datasource/AuthDataSource.kt b/core/network/src/main/kotlin/com/team/bottles/network/datasource/AuthDataSource.kt index 928afcbf..2013fecf 100644 --- a/core/network/src/main/kotlin/com/team/bottles/network/datasource/AuthDataSource.kt +++ b/core/network/src/main/kotlin/com/team/bottles/network/datasource/AuthDataSource.kt @@ -8,6 +8,7 @@ import com.team.bottles.network.dto.auth.request.SignUpRequest import com.team.bottles.network.dto.auth.request.SmsSignInRequest import com.team.bottles.network.dto.auth.response.KakaoSignInUpResponse import com.team.bottles.network.dto.auth.response.TokensResponse +import com.team.bottles.network.dto.auth.response.UpdateAppVersionResponse interface AuthDataSource { @@ -41,4 +42,6 @@ interface AuthDataSource { request: FcmUpdateRequest ) + suspend fun fetchRequiredMinimumAppVersion(): UpdateAppVersionResponse + } \ No newline at end of file diff --git a/core/network/src/main/kotlin/com/team/bottles/network/datasource/AuthDataSourceImpl.kt b/core/network/src/main/kotlin/com/team/bottles/network/datasource/AuthDataSourceImpl.kt index 62dc5ee0..54ad6c2a 100644 --- a/core/network/src/main/kotlin/com/team/bottles/network/datasource/AuthDataSourceImpl.kt +++ b/core/network/src/main/kotlin/com/team/bottles/network/datasource/AuthDataSourceImpl.kt @@ -9,6 +9,7 @@ import com.team.bottles.network.dto.auth.request.SignUpRequest import com.team.bottles.network.dto.auth.request.SmsSignInRequest import com.team.bottles.network.dto.auth.response.KakaoSignInUpResponse import com.team.bottles.network.dto.auth.response.TokensResponse +import com.team.bottles.network.dto.auth.response.UpdateAppVersionResponse import javax.inject.Inject class AuthDataSourceImpl @Inject constructor( @@ -47,6 +48,9 @@ class AuthDataSourceImpl @Inject constructor( authService.postUpdatedFcmToken(accessToken = "$TOKEN_TYPE $accessToken", fcmUpdateRequest = request) } + override suspend fun fetchRequiredMinimumAppVersion(): UpdateAppVersionResponse = + authService.getRequiredMinimumAppVersion() + companion object { private const val TOKEN_TYPE = "Bearer" } diff --git a/core/network/src/main/kotlin/com/team/bottles/network/datasource/UserDataSource.kt b/core/network/src/main/kotlin/com/team/bottles/network/datasource/UserDataSource.kt index 8e1df838..68785d82 100644 --- a/core/network/src/main/kotlin/com/team/bottles/network/datasource/UserDataSource.kt +++ b/core/network/src/main/kotlin/com/team/bottles/network/datasource/UserDataSource.kt @@ -1,9 +1,18 @@ package com.team.bottles.network.datasource +import com.team.bottles.network.dto.auth.request.BlockContactListRequest +import com.team.bottles.network.dto.user.request.AlimyOnOffRequest import com.team.bottles.network.dto.user.request.ReportUserRequest +import com.team.bottles.network.dto.user.response.AlimyResponse interface UserDataSource { suspend fun sendReportContents(request: ReportUserRequest) + suspend fun updateWantToBlockContacts(request: BlockContactListRequest) + + suspend fun fetchSettingNotifications(): List + + suspend fun updateSettingNotification(request: AlimyOnOffRequest) + } \ No newline at end of file diff --git a/core/network/src/main/kotlin/com/team/bottles/network/datasource/UserDataSourceImpl.kt b/core/network/src/main/kotlin/com/team/bottles/network/datasource/UserDataSourceImpl.kt index bd79d645..370e8b33 100644 --- a/core/network/src/main/kotlin/com/team/bottles/network/datasource/UserDataSourceImpl.kt +++ b/core/network/src/main/kotlin/com/team/bottles/network/datasource/UserDataSourceImpl.kt @@ -1,7 +1,10 @@ package com.team.bottles.network.datasource import com.team.bottles.network.api.UserService +import com.team.bottles.network.dto.auth.request.BlockContactListRequest +import com.team.bottles.network.dto.user.request.AlimyOnOffRequest import com.team.bottles.network.dto.user.request.ReportUserRequest +import com.team.bottles.network.dto.user.response.AlimyResponse import javax.inject.Inject class UserDataSourceImpl @Inject constructor( @@ -12,4 +15,15 @@ class UserDataSourceImpl @Inject constructor( userService.postReportUser(request = request) } + override suspend fun updateWantToBlockContacts(request: BlockContactListRequest) { + userService.postBlockedContacts(request = request) + } + + override suspend fun fetchSettingNotifications(): List = + userService.getSettingNotifications() + + override suspend fun updateSettingNotification(request: AlimyOnOffRequest) { + userService.postSettingNotification(request = request) + } + } \ No newline at end of file diff --git a/core/network/src/main/kotlin/com/team/bottles/network/di/NetworkModule.kt b/core/network/src/main/kotlin/com/team/bottles/network/di/NetworkModule.kt index 278f53c2..e401d74c 100644 --- a/core/network/src/main/kotlin/com/team/bottles/network/di/NetworkModule.kt +++ b/core/network/src/main/kotlin/com/team/bottles/network/di/NetworkModule.kt @@ -31,6 +31,7 @@ object NetworkModule { fun provideJson(): Json = Json { coerceInputValues = true prettyPrint = true + ignoreUnknownKeys = true } @Singleton diff --git a/core/network/src/main/kotlin/com/team/bottles/network/dto/auth/request/BlockContactListRequest.kt b/core/network/src/main/kotlin/com/team/bottles/network/dto/auth/request/BlockContactListRequest.kt new file mode 100644 index 00000000..c053c642 --- /dev/null +++ b/core/network/src/main/kotlin/com/team/bottles/network/dto/auth/request/BlockContactListRequest.kt @@ -0,0 +1,9 @@ +package com.team.bottles.network.dto.auth.request + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class BlockContactListRequest( + @SerialName("blockContacts") val blockContacts: List +) \ No newline at end of file diff --git a/core/network/src/main/kotlin/com/team/bottles/network/dto/auth/response/UpdateAppVersionResponse.kt b/core/network/src/main/kotlin/com/team/bottles/network/dto/auth/response/UpdateAppVersionResponse.kt new file mode 100644 index 00000000..a19e40e0 --- /dev/null +++ b/core/network/src/main/kotlin/com/team/bottles/network/dto/auth/response/UpdateAppVersionResponse.kt @@ -0,0 +1,10 @@ +package com.team.bottles.network.dto.auth.response + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class UpdateAppVersionResponse( + @SerialName("minimumAndroidVersion") val minimumAndroidVersion: Int?, + @SerialName("latestAndroidVersion") val latestAndroidVersion: Int? +) \ No newline at end of file diff --git a/core/network/src/main/kotlin/com/team/bottles/network/dto/user/request/AlimyOnOffRequest.kt b/core/network/src/main/kotlin/com/team/bottles/network/dto/user/request/AlimyOnOffRequest.kt new file mode 100644 index 00000000..07fe8592 --- /dev/null +++ b/core/network/src/main/kotlin/com/team/bottles/network/dto/user/request/AlimyOnOffRequest.kt @@ -0,0 +1,11 @@ +package com.team.bottles.network.dto.user.request + +import com.team.bottles.network.dto.user.response.AlimyType +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class AlimyOnOffRequest( + @SerialName("alimyType") val alimyType: AlimyType, + @SerialName("enabled") val enabled: Boolean +) \ No newline at end of file diff --git a/core/network/src/main/kotlin/com/team/bottles/network/dto/user/response/AlimyResponse.kt b/core/network/src/main/kotlin/com/team/bottles/network/dto/user/response/AlimyResponse.kt new file mode 100644 index 00000000..301bb245 --- /dev/null +++ b/core/network/src/main/kotlin/com/team/bottles/network/dto/user/response/AlimyResponse.kt @@ -0,0 +1,19 @@ +package com.team.bottles.network.dto.user.response + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class AlimyResponse( + @SerialName("alimyType") val alimyType: AlimyType, + @SerialName("enabled") val enabled: Boolean +) + +@Serializable +enum class AlimyType { + @SerialName("DAILY_RANDOM") DAILY_RANDOM, + @SerialName("RECEIVE_LIKE") RECEIVE_LIKE, + @SerialName("PINGPONG") PING_PONG, + @SerialName("MARKETING") MARKETING, + ; +} \ No newline at end of file diff --git a/core/ui/src/main/kotlin/com/team/bottles/core/ui/Alert.kt b/core/ui/src/main/kotlin/com/team/bottles/core/ui/Alert.kt index a4a295de..d0a396d7 100644 --- a/core/ui/src/main/kotlin/com/team/bottles/core/ui/Alert.kt +++ b/core/ui/src/main/kotlin/com/team/bottles/core/ui/Alert.kt @@ -1,78 +1,292 @@ package com.team.bottles.core.ui -import androidx.compose.material3.AlertDialog +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.material3.BasicAlertDialog +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.team.bottles.core.designsystem.R import com.team.bottles.core.designsystem.modifier.noRippleClickable import com.team.bottles.core.designsystem.theme.BottlesTheme @Composable -fun BottlesAlertDialog( +fun BottlesAlertConfirmDialog( modifier: Modifier = Modifier, onClose: () -> Unit, onConfirm: () -> Unit, - confirmText: String, - dismissText: String, + confirmButtonText: String, title: String, - content: String + content: String, ) { - AlertDialog( + BottlesAlertDialog( modifier = modifier, - onDismissRequest = onClose, - confirmButton = { + onClose = onClose, + title = title, + content = content + ) { + Box( + modifier = modifier + .fillMaxWidth() + .height(height = 36.dp) + .background( + color = BottlesTheme.color.container.enabledSecondary, + shape = BottlesTheme.shape.extraSmall + ) + .clip(shape = BottlesTheme.shape.extraSmall) + .noRippleClickable(onClick = onConfirm) + .padding(horizontal = 12.dp), + contentAlignment = Alignment.Center + ) { Text( - modifier = Modifier - .noRippleClickable( - onClick = onConfirm - ), - text = confirmText, - style = BottlesTheme.typography.kakaoLogin, - color = Color.Red + text = confirmButtonText, + style = BottlesTheme.typography.body, + color = BottlesTheme.color.text.enabledPrimary ) - }, - dismissButton = { - Text( - modifier = Modifier - .noRippleClickable( - onClick = onClose - ), - text = dismissText, - style = BottlesTheme.typography.kakaoLogin, - color = Color.Black + } + } +} + +@Composable +fun BottlesAlertDialogLeftConfirmRightDismiss( + modifier: Modifier = Modifier, + onClose: () -> Unit, + onDismiss: () -> Unit, + onConfirm: () -> Unit, + confirmButtonText: String, + dismissButtonText: String, + title: String, + content: String, +) { + BottlesAlertDialog( + modifier = modifier, + onClose = onClose, + title = title, + content = content + ) { + Row { + AlertDialogLeftButton( + onClick = onConfirm, + text = confirmButtonText, + ) + + Spacer(modifier = Modifier.width(width = BottlesTheme.spacing.small)) + + AlertDialogRightButton( + onClick = onDismiss, + text = dismissButtonText, + ) + } + } +} + +@Composable +fun BottlesAlertDialogLeftDismissRightConfirm( + modifier: Modifier = Modifier, + onClose: () -> Unit, + onDismiss: () -> Unit, + onConfirm: () -> Unit, + confirmButtonText: String, + dismissButtonText: String, + title: String, + content: String, +) { + BottlesAlertDialog( + modifier = modifier, + onClose = onClose, + title = title, + content = content + ) { + Row { + AlertDialogLeftButton( + onClick = onDismiss, + text = dismissButtonText, + ) + + Spacer(modifier = Modifier.width(width = BottlesTheme.spacing.small)) + + AlertDialogRightButton( + onClick = onConfirm, + text = confirmButtonText, ) - }, - title = { + } + } +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun BottlesAlertDialog( + modifier: Modifier = Modifier, + onClose: () -> Unit, + title: String, + content: String, + buttons: @Composable () -> Unit +) { + BasicAlertDialog( + modifier = modifier, + onDismissRequest = onClose + ) { + Column( + modifier = Modifier + .background( + color = Color.White, + shape = BottlesTheme.shape.large + ) + .padding( + top = BottlesTheme.spacing.large, + bottom = BottlesTheme.spacing.medium, + start = BottlesTheme.spacing.medium, + end = BottlesTheme.spacing.medium, + ), + horizontalAlignment = Alignment.CenterHorizontally + ) { + Icon( + painter = painterResource(id = R.drawable.ic_warning_24), + contentDescription = null, + tint = Color.Unspecified + ) + + Spacer(modifier = Modifier.height(height = BottlesTheme.spacing.extraSmall)) + Text( text = title, style = BottlesTheme.typography.subTitle1, - color = Color.Black + color = BottlesTheme.color.text.primary ) - }, - text = { + + Spacer(modifier = Modifier.height(height = BottlesTheme.spacing.doubleExtraSmall)) + Text( text = content, + textAlign = TextAlign.Center, style = BottlesTheme.typography.body, - color = Color.Gray + color = BottlesTheme.color.text.secondary ) + + Spacer( + modifier = Modifier.height( + height = BottlesTheme.spacing.small + BottlesTheme.spacing.medium + ) + ) + + buttons() } - ) + } +} +@Composable +private fun RowScope.AlertDialogRightButton( + modifier: Modifier = Modifier, + onClick: () -> Unit, + text: String, +) { + Box( + modifier = modifier + .height(height = 36.dp) + .weight(1f) + .background( + color = BottlesTheme.color.container.enabledSecondary, + shape = BottlesTheme.shape.extraSmall + ) + .clip(shape = BottlesTheme.shape.extraSmall) + .noRippleClickable(onClick = onClick) + .padding(horizontal = 12.dp), + contentAlignment = Alignment.Center + ) { + Text( + text = text, + style = BottlesTheme.typography.body, + color = BottlesTheme.color.text.enabledPrimary + ) + } +} + +@Composable +private fun RowScope.AlertDialogLeftButton( + modifier: Modifier = Modifier, + onClick: () -> Unit, + text: String, +) { + Box( + modifier = modifier + .height(height = 36.dp) + .weight(1f) + .background( + color = BottlesTheme.color.container.disabledSecondary, + shape = BottlesTheme.shape.extraSmall + ) + .clip(shape = BottlesTheme.shape.extraSmall) + .noRippleClickable(onClick = onClick) + .padding(horizontal = 12.dp), + contentAlignment = Alignment.Center + ) { + Text( + text = text, + style = BottlesTheme.typography.body, + color = BottlesTheme.color.text.enabledPrimary + ) + } +} + +@Preview(widthDp = 360, heightDp = 640, showBackground = true) +@Composable +private fun BottlesAlertDialogLeftDismissRightConfirmPreview() { + BottlesTheme { + BottlesAlertDialogLeftDismissRightConfirm( + onClose = {}, + onConfirm = {}, + onDismiss = {}, + confirmButtonText = "차단하기", + dismissButtonText = "취소하기", + title = "연락처 차단", + content = "주소록에 있는 000개의\n전화번호를 차단할까요?", + ) + } +} + +@Preview(widthDp = 360, heightDp = 640, showBackground = true) +@Composable +private fun BottlesAlertDialogLeftConfirmRightDismissPreview() { + BottlesTheme { + BottlesAlertDialogLeftConfirmRightDismiss( + onClose = {}, + onConfirm = {}, + onDismiss = {}, + confirmButtonText = "로그아웃하기", + dismissButtonText = "취소하기", + title = "로그아웃", + content = "정말 로그아웃하시겠어요?", + ) + } } -@Preview +@Preview(widthDp = 360, heightDp = 640, showBackground = true) @Composable -private fun BottlesAlterDialogPreview() { +private fun BottlesAlertConfirmDialogPreview() { BottlesTheme { - BottlesAlertDialog( + BottlesAlertConfirmDialog( onClose = {}, onConfirm = {}, - confirmText = "탈퇴하기", - dismissText = "취소하기", - title = "탈퇴하기", - content = "탈퇴 시 계정 복구가 어려워요.\n정말 탈퇴하시겠어요?" + confirmButtonText = "업데이트 하기", + title = "업데이트 안내", + content = "최적의 사용 환경을 위해\n최신 버전의 앱으로 업데이트 해주세요", ) } } \ No newline at end of file diff --git a/core/ui/src/main/kotlin/com/team/bottles/core/ui/CardProfile.kt b/core/ui/src/main/kotlin/com/team/bottles/core/ui/CardProfile.kt index 3ae96cfd..5415d53e 100644 --- a/core/ui/src/main/kotlin/com/team/bottles/core/ui/CardProfile.kt +++ b/core/ui/src/main/kotlin/com/team/bottles/core/ui/CardProfile.kt @@ -2,45 +2,29 @@ package com.team.bottles.core.ui -import androidx.compose.foundation.background -import androidx.compose.foundation.border import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.team.bottles.core.designsystem.components.buttons.BottlesOutLinedButton import com.team.bottles.core.designsystem.components.buttons.OutlinedButtonType +import com.team.bottles.core.designsystem.components.cards.BottlesCard import com.team.bottles.core.designsystem.theme.BottlesTheme import com.team.bottles.core.ui.model.UserKeyPoint @Composable fun CardProfile( + modifier: Modifier = Modifier, keyPoints: List, ) { - Column( - modifier = Modifier - .background( - color = BottlesTheme.color.container.primary, - shape = BottlesTheme.shape.extraLarge - ) - .clip(shape = BottlesTheme.shape.extraLarge) - .border( - width = 1.dp, - shape = BottlesTheme.shape.extraLarge, - color = BottlesTheme.color.border.primary - ) - .padding( - vertical = BottlesTheme.spacing.extraLarge, - horizontal = BottlesTheme.spacing.small - ), + BottlesCard( + modifier = modifier, verticalArrangement = Arrangement.spacedBy( space = BottlesTheme.spacing.extraLarge ) diff --git a/core/ui/src/main/kotlin/com/team/bottles/core/ui/model/AlertType.kt b/core/ui/src/main/kotlin/com/team/bottles/core/ui/model/AlertType.kt index 641e93fa..68069dd8 100644 --- a/core/ui/src/main/kotlin/com/team/bottles/core/ui/model/AlertType.kt +++ b/core/ui/src/main/kotlin/com/team/bottles/core/ui/model/AlertType.kt @@ -17,24 +17,34 @@ enum class AlertType( override val dismissText: String, override val title: String, override val content: String -): AlertInfo { +) : AlertInfo { LOG_OUT( title = "로그아웃", content = "정말 로그아웃 하시겠어요?", - confirmText = "로그아웃", + confirmText = "로그아웃하기", dismissText = "취소하기" ), DELETE_USER( title = "탈퇴하기", - content = "탈퇴 시 계정 복구가 어려워요.\n정말 탈퇴하시겠어요?", + content = "탈퇴 시 계정 복구가 어려워요.\n" + + "정말 탈퇴하시겠어요?", confirmText = "탈퇴하기", dismissText = "취소하기" ), STOP_PING_PONG( title = "중단하기", - content = "중단 시 모든 핑퐁 내용이 사라져요.\n정말 중단하시겠어요?", + content = "중단 시 모든 핑퐁 내용이 사라져요.\n" + + "정말 중단하시겠어요?", confirmText = "중단하기", dismissText = "계속하기" ), + USER_REPORT( + title = "신고하기", + content = "접수 후 취소할 수 없으며\n" + + "해당 사용자는 차단돼요.\n" + + "정말 신고하시겠어요?", + confirmText = "신고하기", + dismissText = "계속하기" + ) ; } diff --git a/feat/mypage/build.gradle.kts b/feat/mypage/build.gradle.kts index f117b579..961f5472 100644 --- a/feat/mypage/build.gradle.kts +++ b/feat/mypage/build.gradle.kts @@ -1,5 +1,3 @@ -import org.jetbrains.kotlin.konan.properties.Properties - plugins { id("team.bottles.android.library.compose") id("team.bottles.android.library") @@ -11,24 +9,9 @@ plugins { android { namespace = "com.team.bottles.feat.mypage" - buildTypes { - val debugUrl = "BOTTLES_MY_PAGE_URL" - val properties = Properties().apply { load(rootProject.file("local.properties").inputStream()) } - - getByName("release") { - buildConfigField( - "String", - debugUrl, // TODO : 릴리즈 용 URL 생성 가능성 있음 - properties.getProperty(debugUrl) // // TODO : 릴리즈 용 URL 생성 가능성 있음 - ) - } - getByName("debug") { - buildConfigField( - "String", - debugUrl, - properties.getProperty(debugUrl) - ) - } + defaultConfig { + buildConfigField("String", "VERSION_NAME", "\"${libs.versions.versionName.get()}\"") + buildConfigField("Integer", "VERSION_CODE", libs.versions.versionCode.get()) } } diff --git a/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/MyPageBridge.kt b/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/MyPageBridge.kt deleted file mode 100644 index 9b557d07..00000000 --- a/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/MyPageBridge.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.team.bottles.feat.mypage - -import android.webkit.JavascriptInterface - -internal class MyPageBridge(private val onAction: (MyPageWebAction) -> Unit) : MyPageBridgeListener { - - @JavascriptInterface - override fun logout() { - onAction(MyPageWebAction.OnLogOut) - } - - @JavascriptInterface - override fun deleteUser() { - onAction(MyPageWebAction.OnDeleteUser) - } - - companion object { - const val NAME = "Native" - } - -} - -sealed interface MyPageWebAction { - - data object OnLogOut : MyPageWebAction - - data object OnDeleteUser : MyPageWebAction - -} - -interface MyPageBridgeListener { - - fun logout() - - fun deleteUser() - -} diff --git a/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/MyPageRoute.kt b/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/MyPageRoute.kt index a1b42c25..c53b3dc3 100644 --- a/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/MyPageRoute.kt +++ b/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/MyPageRoute.kt @@ -1,8 +1,19 @@ package com.team.bottles.feat.mypage +import android.Manifest +import android.content.ActivityNotFoundException +import android.content.Intent +import android.content.pm.PackageManager +import android.net.Uri +import android.provider.Settings +import android.widget.Toast +import androidx.activity.compose.rememberLauncherForActivityResult +import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue +import androidx.compose.ui.platform.LocalContext +import androidx.core.content.ContextCompat import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.team.bottles.feat.mypage.mvi.MyPageSideEffect @@ -10,14 +21,75 @@ import com.team.bottles.feat.mypage.mvi.MyPageSideEffect @Composable internal fun MyPageRoute( viewModel: MyPageViewModel = hiltViewModel(), - navigateToLoginEndPoint: () -> Unit + navigateToEditProfile: () -> Unit, + navigateToSettingNotification: () -> Unit, + navigateToSettingAccountManagement: () -> Unit, ) { val uiState by viewModel.state.collectAsStateWithLifecycle() + val context = LocalContext.current + val permissionLauncher = rememberLauncherForActivityResult( + contract = ActivityResultContracts.RequestPermission(), + onResult = { isGranted -> + if (isGranted) { + viewModel.fetchContacts() + } else { + Toast.makeText(context,"연락처 권한을 동의 해야합니다.", Toast.LENGTH_SHORT).show() + + val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply { + data = Uri.fromParts("package", context.packageName, null) + flags = Intent.FLAG_ACTIVITY_NEW_TASK + } + + context.startActivity(intent) + } + } + ) + + LaunchedEffect(Unit) { + viewModel.checkAppVersion() + } LaunchedEffect(Unit) { viewModel.sideEffect.collect { sideEffect -> when (sideEffect) { - is MyPageSideEffect.NavigateToLoginEndPoint -> navigateToLoginEndPoint() + is MyPageSideEffect.NavigateToEditProfile -> navigateToEditProfile() + is MyPageSideEffect.NavigateToSettingNotification -> navigateToSettingNotification() + is MyPageSideEffect.NavigateToSettingAccountManagement -> navigateToSettingAccountManagement() + is MyPageSideEffect.NavigateToPolicyNotion -> { + val intent = + Intent(Intent.ACTION_VIEW, Uri.parse("https://spiral-ogre-a4d.notion.site/abb2fd284516408e8c2fc267d07c6421")) // 개인 정보 처리 방침 URL + context.startActivity(intent) + } + is MyPageSideEffect.NavigateToTermsOfUseNotion -> { + val intent = + Intent(Intent.ACTION_VIEW, Uri.parse("https://spiral-ogre-a4d.notion.site/240724-e3676639ea864147bb293cfcda40d99f")) // 이용약관 URL + context.startActivity(intent) + } + is MyPageSideEffect.NavigateToKakaoBusinessChannel -> { + try { + val intent = Intent(Intent.ACTION_VIEW, Uri.parse("kakaoplus://plusfriend/friend/_hDIQG")) // 카톡으로 카카오 플러스 열기 + context.startActivity(intent) + } catch (e: ActivityNotFoundException) { + val webIntent = Intent(Intent.ACTION_VIEW, Uri.parse("https://pf.kakao.com/_hDIQG")) // URL로 카카오 플러스 열기 + context.startActivity(webIntent) + } + } + is MyPageSideEffect.CheckContactPermission -> { + if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { + permissionLauncher.launch(Manifest.permission.READ_CONTACTS) + } else { + viewModel.fetchContacts() + } + } + is MyPageSideEffect.NavigateToPlayStore -> { + try { + val intent = Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.team.bottles&hl=ko")) + context.startActivity(intent) + } catch (e: ActivityNotFoundException) { + val webIntent = Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=com.team.bottles&hl=ko")) + context.startActivity(webIntent) + } + } } } } diff --git a/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/MyPageScreen.kt b/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/MyPageScreen.kt index 6033acdc..5b4fc9ad 100644 --- a/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/MyPageScreen.kt +++ b/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/MyPageScreen.kt @@ -1,68 +1,79 @@ package com.team.bottles.feat.mypage -import android.annotation.SuppressLint -import android.webkit.WebView -import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll import androidx.compose.runtime.Composable -import androidx.compose.runtime.remember import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.team.bottles.core.designsystem.components.bars.BottlesTopBar +import com.team.bottles.core.designsystem.components.etc.BottlesUserInfo import com.team.bottles.core.designsystem.theme.BottlesTheme -import com.team.bottles.core.ui.BottlesAlertDialog -import com.team.bottles.core.ui.BottlesWebView -import com.team.bottles.core.ui.model.AlertType +import com.team.bottles.core.ui.BottlesAlertDialogLeftDismissRightConfirm +import com.team.bottles.feat.mypage.components.SettingList import com.team.bottles.feat.mypage.mvi.MyPageIntent import com.team.bottles.feat.mypage.mvi.MyPageUiState -@SuppressLint("JavascriptInterface") @Composable internal fun MyPageScreen( uiState: MyPageUiState, onIntent: (MyPageIntent) -> Unit ) { - val context = LocalContext.current - val webView = remember { - WebView(context).apply { - addJavascriptInterface( - MyPageBridge { webAction -> - when (webAction) { - is MyPageWebAction.OnDeleteUser -> onIntent(MyPageIntent.ClickWebDeleteUserButton) - is MyPageWebAction.OnLogOut -> onIntent(MyPageIntent.ClickWebLogOutButton) - } - }, - MyPageBridge.NAME - ) - } + val scrollState = rememberScrollState() + + if (uiState.showDialog) { + BottlesAlertDialogLeftDismissRightConfirm( + onClose = { onIntent(MyPageIntent.CloseDialog) }, + onDismiss = { onIntent(MyPageIntent.CloseDialog) }, + onConfirm = { onIntent(MyPageIntent.ClickConfirmButton) }, + confirmButtonText = "차단하기", + dismissButtonText = "취소하기", + title = "연락처 차단", + content = "주소록에 있는 ${uiState.inDeviceContacts.size}개의\n" + + "전화번호를 차단할까요?" + ) } - Box( - modifier = Modifier.fillMaxSize() + Column( + modifier = Modifier + .fillMaxSize() + .verticalScroll(state = scrollState) ) { - if (uiState.showDialog) { - BottlesAlertDialog( - onClose = { onIntent(MyPageIntent.ClickCancel) }, - onConfirm = { - if (uiState.alertType == AlertType.LOG_OUT) { - onIntent(MyPageIntent.ClickDialogLogOutButton) - } else if (uiState.alertType == AlertType.DELETE_USER) { - onIntent(MyPageIntent.ClickDialogDeleteUserButton) - } - }, - confirmText = uiState.alertType.confirmText, - dismissText = uiState.alertType.dismissText, - title = uiState.alertType.title, - content = uiState.alertType.content - ) - } + BottlesTopBar() + + Spacer(modifier = Modifier.height(height = BottlesTheme.spacing.doubleExtraLarge)) + + BottlesUserInfo( + modifier = Modifier.padding(horizontal = 32.dp), + imageUrl = uiState.imageUrl, + userName = uiState.userName, + userAge = uiState.userAge, + isBlur = false + ) + + Spacer(modifier = Modifier.height(height = BottlesTheme.spacing.doubleExtraLarge)) + + SettingList( + modifier = Modifier.padding(horizontal = 16.dp), + onClickEditProfile = { onIntent(MyPageIntent.ClickEditProfile) }, + onClickUpdateBlockContact = { onIntent(MyPageIntent.ClickUpdateBlockContact) }, + onClickSettingNotification = { onIntent(MyPageIntent.ClickSettingNotification) }, + onClickAccountManagement = { onIntent(MyPageIntent.ClickAccountManagement) }, + onClickUpdateAppVersion = { onIntent(MyPageIntent.ClickUpdateAppVersion) }, + onClickAsk = { onIntent(MyPageIntent.ClickAsk) }, + onClickTermsOfUse = { onIntent(MyPageIntent.ClickTermsOfUse) }, + onClickPolicy = { onIntent(MyPageIntent.ClickPolicy) }, + blockedUserValue = uiState.blockedUserValue, + appVersion = uiState.appVersionName, + canUpdateAppVersion = uiState.canUpdateAppVersion + ) - if (uiState.token.accessToken.isNotEmpty() && uiState.token.refreshToken.isNotEmpty()) { - BottlesWebView( - url = BuildConfig.BOTTLES_MY_PAGE_URL + "?accessToken=${uiState.token.accessToken}&refreshToken=${uiState.token.refreshToken}", - webView = webView - ) - } + Spacer(modifier = Modifier.height(height = 24.dp)) } } @@ -71,7 +82,11 @@ internal fun MyPageScreen( private fun MyPageScreenPreview() { BottlesTheme { MyPageScreen( - uiState = MyPageUiState(showDialog = true), + uiState = MyPageUiState( + userName = "뇽뇽이", + userAge = 15, + appVersionName = "1.0.0" + ), onIntent = {} ) } diff --git a/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/MyPageViewModel.kt b/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/MyPageViewModel.kt index 6f116b44..08dd4a17 100644 --- a/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/MyPageViewModel.kt +++ b/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/MyPageViewModel.kt @@ -2,11 +2,10 @@ package com.team.bottles.feat.mypage import androidx.lifecycle.SavedStateHandle import com.team.bottles.core.common.BaseViewModel -import com.team.bottles.core.domain.auth.model.Token -import com.team.bottles.core.domain.auth.usecase.DeleteUserUseCase -import com.team.bottles.core.domain.auth.usecase.LogOutUseCase -import com.team.bottles.core.domain.auth.usecase.WebViewConnectUseCase -import com.team.bottles.core.ui.model.AlertType +import com.team.bottles.core.domain.auth.usecase.GetLatestAppVersionUseCase +import com.team.bottles.core.domain.profile.usecase.GetUserProfileUseCase +import com.team.bottles.core.domain.user.usecase.GetContactsUseCase +import com.team.bottles.core.domain.user.usecase.UpdateBlockingContactsUseCase import com.team.bottles.feat.mypage.mvi.MyPageIntent import com.team.bottles.feat.mypage.mvi.MyPageSideEffect import com.team.bottles.feat.mypage.mvi.MyPageUiState @@ -15,16 +14,23 @@ import javax.inject.Inject @HiltViewModel class MyPageViewModel @Inject constructor( - private val logOutUseCase: LogOutUseCase, - private val deleteUserUseCase: DeleteUserUseCase, - private val webViewConnectUseCase: WebViewConnectUseCase, + private val getContactsUseCase: GetContactsUseCase, + private val getLatestAppVersionUseCase: GetLatestAppVersionUseCase, + private val updateBlockingContactsUseCase: UpdateBlockingContactsUseCase, + private val getUserProfileUseCase: GetUserProfileUseCase, savedStateHandle: SavedStateHandle ) : BaseViewModel( savedStateHandle ) { init { - initialWebConnect() + launch { + val profile = getUserProfileUseCase() + val userImageUrl = profile.imageUrl + val userName = profile.userName + val userAge = profile.age + reduce { copy(imageUrl = userImageUrl, userName = userName, userAge = userAge) } + } } override fun createInitialState(savedStateHandle: SavedStateHandle): MyPageUiState = @@ -32,11 +38,16 @@ class MyPageViewModel @Inject constructor( override suspend fun handleIntent(intent: MyPageIntent) { when (intent) { - is MyPageIntent.ClickWebLogOutButton -> reduce { copy(alertType = AlertType.LOG_OUT, showDialog = true) } - is MyPageIntent.ClickWebDeleteUserButton -> reduce { copy(alertType = AlertType.DELETE_USER, showDialog = true) } - is MyPageIntent.ClickCancel -> reduce { copy(showDialog = false) } - is MyPageIntent.ClickDialogLogOutButton -> logOut() - is MyPageIntent.ClickDialogDeleteUserButton -> deleteUser() + is MyPageIntent.ClickEditProfile -> navigateToEditProfile() + is MyPageIntent.ClickUpdateBlockContact -> checkContactPermission() + is MyPageIntent.ClickSettingNotification -> navigateToSettingNotification() + is MyPageIntent.ClickAccountManagement -> navigateToSettingAccountManagement() + is MyPageIntent.ClickUpdateAppVersion -> navigateToPlayStore() + is MyPageIntent.ClickAsk -> navigateToKakaoBusinessChannel() + is MyPageIntent.ClickTermsOfUse -> navigateToTermsOfUseNotion() + is MyPageIntent.ClickPolicy -> navigateToPolicyNotion() + is MyPageIntent.ClickConfirmButton -> updateBlockContact() + is MyPageIntent.CloseDialog -> closeDialog() } } @@ -44,35 +55,71 @@ class MyPageViewModel @Inject constructor( TODO("Not yet implemented") } - private fun logOut() { + private fun navigateToEditProfile() { + postSideEffect(MyPageSideEffect.NavigateToEditProfile) + } + + private fun navigateToSettingNotification() { + postSideEffect(MyPageSideEffect.NavigateToSettingNotification) + } + + private fun navigateToSettingAccountManagement() { + postSideEffect(MyPageSideEffect.NavigateToSettingAccountManagement) + } + + private fun navigateToKakaoBusinessChannel() { + postSideEffect(MyPageSideEffect.NavigateToKakaoBusinessChannel) + } + + private fun navigateToTermsOfUseNotion() { + postSideEffect(MyPageSideEffect.NavigateToTermsOfUseNotion) + } + + private fun navigateToPolicyNotion() { + postSideEffect(MyPageSideEffect.NavigateToPolicyNotion) + } + + private fun navigateToPlayStore() { + postSideEffect(MyPageSideEffect.NavigateToPlayStore) + } + + private fun checkContactPermission() { + postSideEffect(MyPageSideEffect.CheckContactPermission) + } + + private fun showBlockContactDialog() { + reduce { copy(showDialog = true) } + } + + private fun closeDialog() { + reduce { copy(showDialog = false) } + } + + private fun updateBlockContact() { launch { - logOutUseCase() + updateBlockingContactsUseCase(contacts = currentState.inDeviceContacts) + // TODO : 차단한 연락처 갯수 얻는 API 호출 reduce { copy(showDialog = false) } - postSideEffect(MyPageSideEffect.NavigateToLoginEndPoint) } } - private fun deleteUser() { + fun checkAppVersion() { launch { - deleteUserUseCase() - reduce { copy(showDialog = false) } - postSideEffect(MyPageSideEffect.NavigateToLoginEndPoint) + val latestAppVersionCode = getLatestAppVersionUseCase() + val currentAppVersion = currentState.appVersionCode + + if (latestAppVersionCode > currentAppVersion) { + reduce { copy(canUpdateAppVersion = true) } + } } } - private fun initialWebConnect() { + fun fetchContacts() { launch { - webViewConnectUseCase.getLocalToken().run { - reduce { - copy( - token = Token( - accessToken = accessToken, - refreshToken = refreshToken - ) - ) - } - } + val contacts = getContactsUseCase() + reduce { copy(inDeviceContacts = contacts) } + showBlockContactDialog() } } -} \ No newline at end of file +} diff --git a/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/components/SettingList.kt b/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/components/SettingList.kt new file mode 100644 index 00000000..ebaf950d --- /dev/null +++ b/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/components/SettingList.kt @@ -0,0 +1,129 @@ +package com.team.bottles.feat.mypage.components + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.material3.HorizontalDivider +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.team.bottles.core.designsystem.components.cards.BottlesCard +import com.team.bottles.core.designsystem.components.lists.BottlesSettingItem +import com.team.bottles.core.designsystem.components.lists.BottlesSettingItemWithArrow +import com.team.bottles.core.designsystem.components.lists.BottlesSettingItemWithButton +import com.team.bottles.core.designsystem.theme.BottlesTheme + +@Composable +internal fun SettingList( + modifier: Modifier = Modifier, + onClickEditProfile: () -> Unit, + onClickUpdateBlockContact: () -> Unit, + onClickSettingNotification: () -> Unit, + onClickAccountManagement: () -> Unit, + onClickUpdateAppVersion: () -> Unit, + onClickAsk: () -> Unit, + onClickTermsOfUse: () -> Unit, + onClickPolicy: () -> Unit, + blockedUserValue: Int, + appVersion: String, + canUpdateAppVersion: Boolean, +) { + Column( + modifier = modifier, + verticalArrangement = Arrangement.spacedBy( + space = BottlesTheme.spacing.small + ) + ) { + /*BottlesCard { + BottlesSettingItemWithArrow( + title = "프로필 수정", + onClickItem = onClickEditProfile + ) + }*/ // TODO : 웹뷰 작업 완료시 기능 추가 + + BottlesCard( + verticalArrangement = Arrangement.spacedBy( + space = BottlesTheme.spacing.large + ) + ) { + BottlesSettingItemWithButton( + title = "연락처 차단", + subTitle = "기기 내 모든 연락처 차단", // TODO : 연락처 속 ${blockedUserValue}명을 차단햇어요 + onClickButton = onClickUpdateBlockContact, + buttonText = "업데이트" + ) + + BottlesSettingItemWithArrow( + title = "알림 설정", + onClickItem = onClickSettingNotification + ) + + BottlesSettingItemWithArrow( + title = "계정 관리", + onClickItem = onClickAccountManagement + ) + + HorizontalDivider( + modifier = Modifier.fillMaxWidth(), + thickness = 1.dp, + color = BottlesTheme.color.border.secondary + ) + + if (canUpdateAppVersion) { + BottlesSettingItemWithButton( + title = "앱 버전", + subTitle = appVersion, + onClickButton = onClickUpdateAppVersion, + buttonText = "업데이트" + ) + } else { + BottlesSettingItem( + title = "앱 버전", + subTitle = appVersion + ) + } + + BottlesSettingItemWithArrow( + title = "1:1 문의", + onClickItem = onClickAsk + ) + + HorizontalDivider( + modifier = Modifier.fillMaxWidth(), + thickness = 1.dp, + color = BottlesTheme.color.border.secondary + ) + + BottlesSettingItemWithArrow( + title = "보틀 이용약관", + onClickItem = onClickTermsOfUse + ) + + BottlesSettingItemWithArrow( + title = "개인정보처리방침", + onClickItem = onClickPolicy + ) + } + } +} + +@Preview +@Composable +private fun SettingListPreview() { + BottlesTheme { + SettingList( + onClickEditProfile = { /*TODO*/ }, + onClickUpdateBlockContact = { /*TODO*/ }, + onClickSettingNotification = { /*TODO*/ }, + onClickAccountManagement = { /*TODO*/ }, + onClickUpdateAppVersion = { /*TODO*/ }, + onClickAsk = { /*TODO*/ }, + onClickTermsOfUse = { /*TODO*/ }, + onClickPolicy = { /*TODO*/ }, + blockedUserValue = 5, + appVersion = "1.0.0", + canUpdateAppVersion = false + ) + } +} \ No newline at end of file diff --git a/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/mvi/MyPageIntent.kt b/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/mvi/MyPageIntent.kt index 128c6b6b..a2950f4a 100644 --- a/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/mvi/MyPageIntent.kt +++ b/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/mvi/MyPageIntent.kt @@ -4,14 +4,24 @@ import com.team.bottles.core.common.UiIntent sealed interface MyPageIntent : UiIntent { - data object ClickWebLogOutButton : MyPageIntent + data object ClickEditProfile : MyPageIntent - data object ClickWebDeleteUserButton : MyPageIntent + data object ClickUpdateBlockContact : MyPageIntent - data object ClickDialogDeleteUserButton : MyPageIntent + data object ClickSettingNotification : MyPageIntent - data object ClickDialogLogOutButton : MyPageIntent + data object ClickAccountManagement : MyPageIntent - data object ClickCancel : MyPageIntent + data object ClickUpdateAppVersion : MyPageIntent + + data object ClickAsk : MyPageIntent + + data object ClickTermsOfUse : MyPageIntent + + data object ClickPolicy : MyPageIntent + + data object ClickConfirmButton : MyPageIntent + + data object CloseDialog : MyPageIntent } \ No newline at end of file diff --git a/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/mvi/MyPageSideEffect.kt b/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/mvi/MyPageSideEffect.kt index ae6dbf73..aa7b9e44 100644 --- a/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/mvi/MyPageSideEffect.kt +++ b/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/mvi/MyPageSideEffect.kt @@ -4,6 +4,20 @@ import com.team.bottles.core.common.UiSideEffect sealed interface MyPageSideEffect : UiSideEffect { - data object NavigateToLoginEndPoint : MyPageSideEffect + data object NavigateToEditProfile : MyPageSideEffect + + data object NavigateToSettingNotification : MyPageSideEffect + + data object NavigateToSettingAccountManagement : MyPageSideEffect + + data object NavigateToKakaoBusinessChannel : MyPageSideEffect + + data object NavigateToTermsOfUseNotion : MyPageSideEffect + + data object NavigateToPolicyNotion : MyPageSideEffect + + data object CheckContactPermission : MyPageSideEffect + + data object NavigateToPlayStore : MyPageSideEffect } \ No newline at end of file diff --git a/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/mvi/MyPageUiState.kt b/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/mvi/MyPageUiState.kt index 91124d72..6a0d4f6a 100644 --- a/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/mvi/MyPageUiState.kt +++ b/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/mvi/MyPageUiState.kt @@ -1,11 +1,16 @@ package com.team.bottles.feat.mypage.mvi import com.team.bottles.core.common.UiState -import com.team.bottles.core.domain.auth.model.Token -import com.team.bottles.core.ui.model.AlertType +import com.team.bottles.feat.mypage.BuildConfig data class MyPageUiState( - val token: Token = Token(), - val alertType: AlertType = AlertType.LOG_OUT, val showDialog: Boolean = false, + val imageUrl: String = "", + val userName: String = "", + val userAge: Int = 0, + val blockedUserValue: Int = 0, + val appVersionName: String = BuildConfig.VERSION_NAME, + val appVersionCode: Int = BuildConfig.VERSION_CODE, + val canUpdateAppVersion: Boolean = false, + val inDeviceContacts: List = emptyList(), ) : UiState diff --git a/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/navigation/MyPageNavigation.kt b/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/navigation/MyPageNavigation.kt index 8b453c01..2d44222e 100644 --- a/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/navigation/MyPageNavigation.kt +++ b/feat/mypage/src/main/kotlin/com/team/bottles/feat/mypage/navigation/MyPageNavigation.kt @@ -6,9 +6,15 @@ import androidx.navigation.compose.composable import com.team.bottles.feat.mypage.MyPageRoute fun NavGraphBuilder.myPageScreen( - navigateToLoginEndPoint: () -> Unit + navigateToEditProfile: () -> Unit, + navigateToSettingNotification: () -> Unit, + navigateToSettingAccountManagement: () -> Unit, ) { composable { - MyPageRoute(navigateToLoginEndPoint = navigateToLoginEndPoint) + MyPageRoute( + navigateToEditProfile = navigateToEditProfile, + navigateToSettingNotification = navigateToSettingNotification, + navigateToSettingAccountManagement = navigateToSettingAccountManagement + ) } } diff --git a/feat/onboarding/src/main/kotlin/com/team/bottles/feat/onboarding/OnboardingScreen.kt b/feat/onboarding/src/main/kotlin/com/team/bottles/feat/onboarding/OnboardingScreen.kt index 31df87a2..77c603ab 100644 --- a/feat/onboarding/src/main/kotlin/com/team/bottles/feat/onboarding/OnboardingScreen.kt +++ b/feat/onboarding/src/main/kotlin/com/team/bottles/feat/onboarding/OnboardingScreen.kt @@ -11,8 +11,14 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Icon import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import com.team.bottles.core.designsystem.R @@ -34,8 +40,10 @@ internal fun OnboardingScreen( uiState: OnboardingUiState, onIntent: (OnboardingIntent) -> Unit ) { + var bottomBarHeight by remember { mutableIntStateOf(0) } + Scaffold( - containerColor = BottlesTheme.color.background.primary, + containerColor = Color.Transparent, modifier = Modifier.fillMaxSize(), topBar = { BottlesTopBar( @@ -52,8 +60,27 @@ internal fun OnboardingScreen( } ) }, + bottomBar = { + BottlesBottomBar( + modifier = Modifier + .onGloballyPositioned { + bottomBarHeight = it.size.height + }, + text = if (uiState.currentPage.ordinal + 2 != uiState.maxPage) "다음" + else "확인", + onClick = { onIntent(OnboardingIntent.ClickNextButton) }, + enabled = true, + isDebounce = false + ) + } ) { contentPadding -> - Box(modifier = Modifier.padding(contentPadding)) { + Box( + modifier = Modifier + .background(color = BottlesTheme.color.background.primary) + .padding( + top = contentPadding.calculateTopPadding(), + ) + ) { Column( modifier = Modifier .fillMaxSize() @@ -63,7 +90,7 @@ internal fun OnboardingScreen( Spacer(modifier = Modifier.height(height = BottlesTheme.spacing.extraLarge)) StepTitle( - currentPage = uiState.currentPage.ordinal + 2, + currentPage = uiState.currentPage.ordinal + 1, maxPage = uiState.maxPage, titleText = uiState.currentPage.title ) @@ -77,16 +104,8 @@ internal fun OnboardingScreen( OnboardingPage.FOUR -> StepFour() } - Spacer(modifier = Modifier.height(height = BottlesTheme.spacing.extraLarge)) + Spacer(modifier = Modifier.height(height = (bottomBarHeight / 2).dp)) } - - BottlesBottomBar( - modifier = Modifier.align(Alignment.BottomCenter), - text = if (uiState.currentPage.ordinal + 2 != uiState.maxPage) "다음" - else "확인", - onClick = { onIntent(OnboardingIntent.ClickNextButton) }, - enabled = true - ) } } } diff --git a/feat/onboarding/src/main/kotlin/com/team/bottles/feat/onboarding/OnboardingViewModel.kt b/feat/onboarding/src/main/kotlin/com/team/bottles/feat/onboarding/OnboardingViewModel.kt index 06eed36d..f1954964 100644 --- a/feat/onboarding/src/main/kotlin/com/team/bottles/feat/onboarding/OnboardingViewModel.kt +++ b/feat/onboarding/src/main/kotlin/com/team/bottles/feat/onboarding/OnboardingViewModel.kt @@ -30,7 +30,7 @@ class OnboardingViewModel @Inject constructor( } private fun nextPage() { - if (currentState.currentPage.ordinal + 3 > currentState.maxPage) { + if (currentState.currentPage.ordinal + 2 > currentState.maxPage) { navigateToCreateProfile() } else { reduce { copy(currentPage = OnboardingPage.entries[currentPage.ordinal + 1]) } diff --git a/feat/onboarding/src/main/kotlin/com/team/bottles/feat/onboarding/mvi/OnboardingUiState.kt b/feat/onboarding/src/main/kotlin/com/team/bottles/feat/onboarding/mvi/OnboardingUiState.kt index 0106d7f3..62a72e05 100644 --- a/feat/onboarding/src/main/kotlin/com/team/bottles/feat/onboarding/mvi/OnboardingUiState.kt +++ b/feat/onboarding/src/main/kotlin/com/team/bottles/feat/onboarding/mvi/OnboardingUiState.kt @@ -4,7 +4,7 @@ import com.team.bottles.core.common.UiState data class OnboardingUiState( val currentPage: OnboardingPage = OnboardingPage.ONE, - val maxPage: Int = OnboardingPage.entries.size + 1, + val maxPage: Int = OnboardingPage.entries.size, ): UiState enum class OnboardingPage(val title: String) { diff --git a/feat/ping-pong/src/main/kotlin/com/team/bottles/feat/pingpong/PingPongScreen.kt b/feat/ping-pong/src/main/kotlin/com/team/bottles/feat/pingpong/PingPongScreen.kt index e8ceaf6a..132e85df 100644 --- a/feat/ping-pong/src/main/kotlin/com/team/bottles/feat/pingpong/PingPongScreen.kt +++ b/feat/ping-pong/src/main/kotlin/com/team/bottles/feat/pingpong/PingPongScreen.kt @@ -31,7 +31,7 @@ import com.team.bottles.core.designsystem.theme.BottlesTheme import com.team.bottles.core.domain.bottle.model.PingPongLetter import com.team.bottles.core.domain.bottle.model.PingPongMatchStatus import com.team.bottles.core.domain.profile.model.UserProfile -import com.team.bottles.core.ui.BottlesAlertDialog +import com.team.bottles.core.ui.BottlesAlertDialogLeftDismissRightConfirm import com.team.bottles.core.ui.model.AlertType import com.team.bottles.feat.pingpong.components.PingPongBottomBar import com.team.bottles.feat.pingpong.components.PingPongTopBar @@ -75,11 +75,12 @@ internal fun PingPongScreen( } if (uiState.showDialog) { - BottlesAlertDialog( + BottlesAlertDialogLeftDismissRightConfirm( onClose = { onIntent(PingPongIntent.ClickCloseAlert) }, onConfirm = { onIntent(PingPongIntent.ClickConfirmAlert) }, - confirmText = AlertType.STOP_PING_PONG.confirmText, - dismissText = AlertType.STOP_PING_PONG.dismissText, + onDismiss = { onIntent(PingPongIntent.ClickCloseAlert) }, + confirmButtonText = AlertType.STOP_PING_PONG.confirmText, + dismissButtonText = AlertType.STOP_PING_PONG.dismissText, title = AlertType.STOP_PING_PONG.title, content = AlertType.STOP_PING_PONG.content ) @@ -233,6 +234,7 @@ private fun PingPongScreenPreview() { BottlesTheme { PingPongScreen( uiState = PingPongUiState( + showDialog = true, currentTab = PingPongTab.INTRODUCTION, pingPongMatchStatus = PingPongMatchStatus.NONE, partnerProfile = UserProfile.sampleUserProfile(), diff --git a/feat/ping-pong/src/main/kotlin/com/team/bottles/feat/pingpong/components/IntroductionContents.kt b/feat/ping-pong/src/main/kotlin/com/team/bottles/feat/pingpong/components/IntroductionContents.kt index bbc5d750..5f241914 100644 --- a/feat/ping-pong/src/main/kotlin/com/team/bottles/feat/pingpong/components/IntroductionContents.kt +++ b/feat/ping-pong/src/main/kotlin/com/team/bottles/feat/pingpong/components/IntroductionContents.kt @@ -13,7 +13,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import com.team.bottles.core.designsystem.R -import com.team.bottles.core.designsystem.components.etc.UserInfo +import com.team.bottles.core.designsystem.components.etc.BottlesUserInfo import com.team.bottles.core.designsystem.theme.BottlesTheme import com.team.bottles.core.domain.profile.model.UserProfile import com.team.bottles.core.ui.CardProfile @@ -31,7 +31,7 @@ internal fun LazyListScope.introductionContents( item(key = "Introduction Contents") { when (isStoppedPingPong) { false -> { - UserInfo( + BottlesUserInfo( imageUrl = partnerProfile.imageUrl, userName = partnerProfile.userName, userAge = partnerProfile.age diff --git a/feat/profile/src/main/kotlin/com/team/bottles/feat/profile/introduction/IntroductionScreen.kt b/feat/profile/src/main/kotlin/com/team/bottles/feat/profile/introduction/IntroductionScreen.kt index 4825b530..50a977ce 100644 --- a/feat/profile/src/main/kotlin/com/team/bottles/feat/profile/introduction/IntroductionScreen.kt +++ b/feat/profile/src/main/kotlin/com/team/bottles/feat/profile/introduction/IntroductionScreen.kt @@ -75,9 +75,10 @@ internal fun IntroductionScreen( modifier = Modifier.background(color = BottlesTheme.color.background.primary), leadingIcon = { Icon( - modifier = Modifier.noRippleClickable( - onClick = { onIntent(IntroductionIntent.ClickBackButton) } - ), + modifier = Modifier + .noRippleClickable( + onClick = { onIntent(IntroductionIntent.ClickBackButton) } + ), painter = painterResource(id = R.drawable.ic_arrow_left_24), contentDescription = null, tint = BottlesTheme.color.icon.primary diff --git a/feat/profile/src/main/kotlin/com/team/bottles/feat/profile/introduction/component/SelecteImage.kt b/feat/profile/src/main/kotlin/com/team/bottles/feat/profile/introduction/component/SelecteImage.kt index 88b1705e..f7ed85d1 100644 --- a/feat/profile/src/main/kotlin/com/team/bottles/feat/profile/introduction/component/SelecteImage.kt +++ b/feat/profile/src/main/kotlin/com/team/bottles/feat/profile/introduction/component/SelecteImage.kt @@ -29,6 +29,7 @@ import com.skydoves.landscapist.coil.CoilImage import com.team.bottles.core.common.extension.toFile import com.team.bottles.core.designsystem.R import com.team.bottles.core.designsystem.components.buttons.BottlesIconButton +import com.team.bottles.core.designsystem.components.buttons.IconButtonType import com.team.bottles.core.designsystem.theme.BottlesTheme import com.team.bottles.feat.profile.introduction.mvi.IntroductionIntent import kotlinx.coroutines.Dispatchers @@ -87,6 +88,7 @@ internal fun SelectImageCard( .offset(x = (-16).dp, y = 16.dp) .align(Alignment.TopEnd), icon = R.drawable.ic_close_16, + iconButtonType = IconButtonType.RECTANGLE, onClick = { onIntent(IntroductionIntent.ClickDeleteButton) } ) } else { diff --git a/feat/report/src/main/kotlin/com/team/bottles/feat/report/ReportScreen.kt b/feat/report/src/main/kotlin/com/team/bottles/feat/report/ReportScreen.kt index 2db5bf7d..33c05914 100644 --- a/feat/report/src/main/kotlin/com/team/bottles/feat/report/ReportScreen.kt +++ b/feat/report/src/main/kotlin/com/team/bottles/feat/report/ReportScreen.kt @@ -1,6 +1,5 @@ package com.team.bottles.feat.report -import androidx.compose.foundation.clickable import androidx.compose.foundation.gestures.detectTapGestures import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.collectIsFocusedAsState @@ -26,11 +25,12 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import com.team.bottles.core.designsystem.R import com.team.bottles.core.designsystem.components.bars.BottlesTopBar -import com.team.bottles.core.designsystem.components.etc.UserInfo +import com.team.bottles.core.designsystem.components.etc.BottlesUserInfo import com.team.bottles.core.designsystem.components.textfield.BottlesLineTextFieldWithTrailingIcon import com.team.bottles.core.designsystem.modifier.noRippleClickable import com.team.bottles.core.designsystem.theme.BottlesTheme -import com.team.bottles.core.ui.BottlesAlertDialog +import com.team.bottles.core.ui.BottlesAlertDialogLeftDismissRightConfirm +import com.team.bottles.core.ui.model.AlertType import com.team.bottles.feat.report.components.ReportBottomBar import com.team.bottles.feat.report.mvi.ReportIntent import com.team.bottles.feat.report.mvi.ReportUiState @@ -49,13 +49,14 @@ internal fun ReportScreen( } if (uiState.showDialog) { - BottlesAlertDialog( + BottlesAlertDialogLeftDismissRightConfirm( onClose = { onIntent(ReportIntent.ClickDialogConfirm) }, onConfirm = { onIntent(ReportIntent.ClickDialogCancel) }, - confirmText = "신고하기", - dismissText = "계속하기", - title = "신고하기", - content = "접수 후 취소할 수 없으며 해당 사용자는 차단되요.\n정말 신고하시겠어요?" + onDismiss = { onIntent(ReportIntent.ClickDialogConfirm) }, + confirmButtonText = AlertType.USER_REPORT.confirmText, + dismissButtonText = AlertType.USER_REPORT.dismissText, + title = AlertType.USER_REPORT.title, + content = AlertType.USER_REPORT.content, ) } @@ -105,7 +106,7 @@ internal fun ReportScreen( Spacer(modifier = Modifier.height(height = BottlesTheme.spacing.doubleExtraLarge)) - UserInfo( + BottlesUserInfo( imageUrl = uiState.userImageUrl, userName = uiState.userName, userAge = uiState.userAge @@ -143,6 +144,7 @@ private fun ReportScreenPreview() { BottlesTheme { ReportScreen( uiState = ReportUiState( + showDialog = true, userName = "뇽뇽이", userAge = 15 ), diff --git a/feat/sandbeach/build.gradle.kts b/feat/sandbeach/build.gradle.kts index a21313f9..f7e81be0 100644 --- a/feat/sandbeach/build.gradle.kts +++ b/feat/sandbeach/build.gradle.kts @@ -8,6 +8,10 @@ plugins { android { namespace = "com.team.bottles.feat.sandbeach" + + defaultConfig { + buildConfigField("Integer", "VERSION_CODE", libs.versions.versionCode.get()) + } } dependencies { diff --git a/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/SandBeachRoute.kt b/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/SandBeachRoute.kt index fc327cd4..8a83e6f2 100644 --- a/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/SandBeachRoute.kt +++ b/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/SandBeachRoute.kt @@ -1,7 +1,10 @@ package com.team.bottles.feat.sandbeach import android.Manifest +import android.content.ActivityNotFoundException +import android.content.Intent import android.content.pm.PackageManager +import android.net.Uri import android.os.Build import android.widget.Toast import androidx.activity.compose.rememberLauncherForActivityResult @@ -29,19 +32,26 @@ internal fun SandBeachRoute( val context = LocalContext.current val notificationPermissionGranted = remember { - ContextCompat.checkSelfPermission(context, Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + ContextCompat.checkSelfPermission(context, Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED + } else { + true + } } val permissionLauncher = rememberLauncherForActivityResult( contract = ActivityResultContracts.RequestPermission() ) { isGranted -> if (isGranted) { + viewModel.confirmPermission() Toast.makeText(context, "알림에 동의 하였습니다.", Toast.LENGTH_SHORT).show() } } LaunchedEffect(notificationPermissionGranted) { if (!notificationPermissionGranted) { - permissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + permissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) + } } } @@ -51,6 +61,15 @@ internal fun SandBeachRoute( is SandBeachSideEffect.NavigateToIntroduction -> navigateToIntroduction() is SandBeachSideEffect.NavigateToArrivedBottle -> navigateToArrivedBottles() is SandBeachSideEffect.NavigateToBottleBox -> navigateToBottleBox() + is SandBeachSideEffect.NavigateToPlayStore -> { + try { + val intent = Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.team.bottles&hl=ko")) + context.startActivity(intent) + } catch (e: ActivityNotFoundException) { + val webIntent = Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=com.team.bottles&hl=ko")) + context.startActivity(webIntent) + } + } } } } diff --git a/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/SandBeachScreen.kt b/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/SandBeachScreen.kt index 0669a288..4ed26861 100644 --- a/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/SandBeachScreen.kt +++ b/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/SandBeachScreen.kt @@ -21,6 +21,7 @@ import com.team.bottles.core.designsystem.R import com.team.bottles.core.designsystem.components.bars.BottlesTopBar import com.team.bottles.core.designsystem.modifier.debounceNoRippleClickable import com.team.bottles.core.designsystem.theme.BottlesTheme +import com.team.bottles.core.ui.BottlesAlertConfirmDialog import com.team.bottles.feat.sandbeach.component.BottleStatusMessage import com.team.bottles.feat.sandbeach.component.InArrivedBottle import com.team.bottles.feat.sandbeach.component.InBottleBox @@ -35,6 +36,16 @@ internal fun SandBeachScreen( uiState: SandBeachUiState, onIntent: (SandBeachIntent) -> Unit ) { + if (uiState.showDialog) { + BottlesAlertConfirmDialog( + onClose = { /* 닫기 없음 */ }, + onConfirm = { onIntent(SandBeachIntent.ClickConfirmButton) }, + confirmButtonText = "업데이트 하기", + title = "업데이트 안내", + content = "최적의 사용 환경을 위해\n최신 버전의 앱으로 업데이트 해주세요", + ) + } + Column( modifier = Modifier.fillMaxSize(), horizontalAlignment = Alignment.CenterHorizontally, @@ -107,7 +118,9 @@ private fun SandBeachScreenPreview() { contentScale = ContentScale.FillWidth ) SandBeachScreen( - uiState = SandBeachUiState(bottleStatus = BottleStatus.IN_ARRIVED_BOTTLE), + uiState = SandBeachUiState( + bottleStatus = BottleStatus.IN_ARRIVED_BOTTLE, + ), onIntent = {} ) } diff --git a/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/SandBeachViewModel.kt b/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/SandBeachViewModel.kt index fdf849b8..5235c73e 100644 --- a/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/SandBeachViewModel.kt +++ b/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/SandBeachViewModel.kt @@ -2,11 +2,14 @@ package com.team.bottles.feat.sandbeach import androidx.lifecycle.SavedStateHandle import com.team.bottles.core.common.BaseViewModel +import com.team.bottles.core.domain.auth.usecase.GetRequiredAppVersionUseCase import com.team.bottles.core.domain.bottle.usecase.GetBottleListUseCase import com.team.bottles.core.domain.bottle.usecase.GetPingPongListUseCase import com.team.bottles.core.domain.profile.model.UserProfileStatus -import com.team.bottles.core.domain.profile.usecase.GetUserIntroductionStatusUseCase import com.team.bottles.core.domain.profile.usecase.GetUserProfileStatusUseCase +import com.team.bottles.core.domain.user.model.Notification +import com.team.bottles.core.domain.user.model.NotificationType +import com.team.bottles.core.domain.user.usecase.UpdateSettingNotificationUseCase import com.team.bottles.feat.sandbeach.mvi.BottleStatus import com.team.bottles.feat.sandbeach.mvi.SandBeachIntent import com.team.bottles.feat.sandbeach.mvi.SandBeachSideEffect @@ -19,11 +22,20 @@ class SandBeachViewModel @Inject constructor( private val getUserProfileStatusUseCase: GetUserProfileStatusUseCase, private val getBottleListUseCase: GetBottleListUseCase, private val getPingPongListUseCase: GetPingPongListUseCase, + private val getRequiredAppVersionUseCase: GetRequiredAppVersionUseCase, + private val updateSettingNotificationUseCase: UpdateSettingNotificationUseCase, savedStateHandle: SavedStateHandle ) : BaseViewModel(savedStateHandle) { init { setSandBeachState() + launch { + val requiredAppVersion = getRequiredAppVersionUseCase() + + if (requiredAppVersion > currentState.appVersionCode) { + reduce { copy(showDialog = true) } + } + } } override fun createInitialState(savedStateHandle: SavedStateHandle): SandBeachUiState = @@ -84,6 +96,7 @@ class SandBeachViewModel @Inject constructor( when (intent) { is SandBeachIntent.ClickCreateIntroductionButton -> navigateToIntroduction() is SandBeachIntent.ClickSandBeach -> onClickSandBeach() + is SandBeachIntent.ClickConfirmButton -> navigateToPlayStore() } } @@ -108,4 +121,21 @@ class SandBeachViewModel @Inject constructor( postSideEffect(SandBeachSideEffect.NavigateToArrivedBottle) } + private fun navigateToPlayStore() { + postSideEffect(SandBeachSideEffect.NavigateToPlayStore) + } + + fun confirmPermission() { + launch { + NotificationType.entries.forEach { type -> + updateSettingNotificationUseCase( + notification = Notification( + notificationType = type, + enabled = true + ) + ) + } + } + } + } \ No newline at end of file diff --git a/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/mvi/SandBeachIntent.kt b/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/mvi/SandBeachIntent.kt index bd6d64f1..a32ba0c1 100644 --- a/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/mvi/SandBeachIntent.kt +++ b/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/mvi/SandBeachIntent.kt @@ -8,4 +8,6 @@ sealed interface SandBeachIntent : UiIntent { data object ClickSandBeach : SandBeachIntent + data object ClickConfirmButton : SandBeachIntent + } \ No newline at end of file diff --git a/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/mvi/SandBeachSideEffect.kt b/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/mvi/SandBeachSideEffect.kt index 7ab10f9b..3109ec55 100644 --- a/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/mvi/SandBeachSideEffect.kt +++ b/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/mvi/SandBeachSideEffect.kt @@ -10,4 +10,6 @@ sealed interface SandBeachSideEffect : UiSideEffect { data object NavigateToBottleBox : SandBeachSideEffect + data object NavigateToPlayStore : SandBeachSideEffect + } \ No newline at end of file diff --git a/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/mvi/SandBeachUiState.kt b/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/mvi/SandBeachUiState.kt index 4d3c4235..ac0ad550 100644 --- a/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/mvi/SandBeachUiState.kt +++ b/feat/sandbeach/src/main/kotlin/com/team/bottles/feat/sandbeach/mvi/SandBeachUiState.kt @@ -1,12 +1,15 @@ package com.team.bottles.feat.sandbeach.mvi import com.team.bottles.core.common.UiState +import com.team.bottles.feat.sandbeach.BuildConfig data class SandBeachUiState( + val showDialog: Boolean = false, val bottleStatus: BottleStatus = BottleStatus.NONE_BOTTLE, val newBottleValue: Int = 0, val bottleBoxValue: Int = 0, - val afterArrivedTime: Int = 0 + val afterArrivedTime: Int = 0, + val appVersionCode: Int = BuildConfig.VERSION_CODE ): UiState enum class BottleStatus { @@ -16,8 +19,3 @@ enum class BottleStatus { NONE_BOTTLE, ; } - -// 자기소개 받아야 하는 상태 -// 도착한보틀 O, 보틀 보관함 X - 1순위 -// 도착한보틀 x, 보틀 보관함 O - 2순위 -// 도착한보틀 x, 보틀 보관함 x - 3순위 \ No newline at end of file diff --git a/feat/setting/.gitignore b/feat/setting/.gitignore new file mode 100644 index 00000000..42afabfd --- /dev/null +++ b/feat/setting/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/feat/setting/build.gradle.kts b/feat/setting/build.gradle.kts new file mode 100644 index 00000000..3be08d95 --- /dev/null +++ b/feat/setting/build.gradle.kts @@ -0,0 +1,15 @@ +plugins { + id("team.bottles.android.library.compose") + id("team.bottles.android.library") + id("team.bottles.android.feature") + id("team.bottles.android.hilt") + id("team.bottles.kotlin.serialization") +} + +android { + namespace = "com.team.bottles.feat.setting" +} + +dependencies { + +} \ No newline at end of file diff --git a/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/AccountSettingRoute.kt b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/AccountSettingRoute.kt new file mode 100644 index 00000000..352affcb --- /dev/null +++ b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/AccountSettingRoute.kt @@ -0,0 +1,32 @@ +package com.team.bottles.feat.setting.account + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.team.bottles.feat.setting.account.mvi.AccountSettingSideEffect +import com.team.bottles.feat.setting.notification.mvi.NotificationSideEffect + +@Composable +internal fun AccountSettingRoute( + viewModel: AccountSettingViewModel = hiltViewModel(), + navigateToLoginEndpoint: () -> Unit, + navigateToMyPage: () -> Unit, +) { + val uiState by viewModel.state.collectAsStateWithLifecycle() + + LaunchedEffect(Unit) { + viewModel.sideEffect.collect { sideEffect -> + when (sideEffect) { + is AccountSettingSideEffect.NavigateToLoginEndpoint -> navigateToLoginEndpoint() + is AccountSettingSideEffect.NavigateToMyPage -> navigateToMyPage() + } + } + } + + AccountSettingScreen( + uiState = uiState, + onIntent = { intent -> viewModel.intent(intent) }, + ) +} \ No newline at end of file diff --git a/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/AccountSettingScreen.kt b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/AccountSettingScreen.kt new file mode 100644 index 00000000..f3e9efef --- /dev/null +++ b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/AccountSettingScreen.kt @@ -0,0 +1,76 @@ +package com.team.bottles.feat.setting.account + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Icon +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.team.bottles.core.designsystem.R +import com.team.bottles.core.designsystem.components.bars.BottlesTopBar +import com.team.bottles.core.designsystem.modifier.noRippleClickable +import com.team.bottles.core.designsystem.theme.BottlesTheme +import com.team.bottles.core.ui.BottlesAlertDialogLeftConfirmRightDismiss +import com.team.bottles.feat.setting.account.mvi.AccountSettingIntent +import com.team.bottles.feat.setting.account.mvi.AccountSettingUiState +import com.team.bottles.feat.setting.components.AccountSetting + +@Composable +internal fun AccountSettingScreen( + uiState: AccountSettingUiState, + onIntent: (AccountSettingIntent) -> Unit, +) { + if (uiState.showDialog) { + BottlesAlertDialogLeftConfirmRightDismiss( + onClose = { onIntent(AccountSettingIntent.ClickDismissDialogButton) }, + onDismiss = { onIntent(AccountSettingIntent.ClickDismissDialogButton) }, + onConfirm = { onIntent(AccountSettingIntent.ClickConfirmDialogButton) }, + confirmButtonText = uiState.dialogType.confirmText, + dismissButtonText = uiState.dialogType.dismissText, + title = uiState.dialogType.title, + content = uiState.dialogType.content + ) + } + + Column( + modifier = Modifier.fillMaxSize() + ) { + BottlesTopBar( + leadingIcon = { + Icon( + modifier = Modifier + .noRippleClickable(onClick = { onIntent(AccountSettingIntent.ClickBackButton) }), + painter = painterResource(id = R.drawable.ic_arrow_left_24), + contentDescription = null, + tint = BottlesTheme.color.icon.primary + ) + } + ) + + Spacer(modifier = Modifier.height(height = 32.dp)) + + AccountSetting( + modifier = Modifier.padding(horizontal = 16.dp), + isMatchingActive = uiState.isMatchingActive, + onChangeMatchingActive = { onIntent(AccountSettingIntent.ClickMatchingActiveToggleButton) }, + onClickLogOut = { onIntent(AccountSettingIntent.ClickLogOutButton) }, + onClickDeleteUser = { onIntent(AccountSettingIntent.ClickDeleteUserButton) }, + ) + } +} + +@Preview(showBackground = true) +@Composable +private fun AccountSettingScreenPreview() { + BottlesTheme { + AccountSettingScreen( + uiState = AccountSettingUiState(), + onIntent = {}, + ) + } +} \ No newline at end of file diff --git a/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/AccountSettingViewModel.kt b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/AccountSettingViewModel.kt new file mode 100644 index 00000000..bda960fb --- /dev/null +++ b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/AccountSettingViewModel.kt @@ -0,0 +1,84 @@ +package com.team.bottles.feat.setting.account + +import androidx.lifecycle.SavedStateHandle +import com.team.bottles.core.common.BaseViewModel +import com.team.bottles.core.domain.auth.usecase.DeleteUserUseCase +import com.team.bottles.core.domain.auth.usecase.LogOutUseCase +import com.team.bottles.feat.setting.account.mvi.AccountSettingIntent +import com.team.bottles.feat.setting.account.mvi.AccountSettingSideEffect +import com.team.bottles.feat.setting.account.mvi.AccountSettingUiState +import com.team.bottles.feat.setting.account.mvi.SettingAlertDialogType +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class AccountSettingViewModel @Inject constructor( + private val logOutUseCase: LogOutUseCase, + private val deleteUserUseCase: DeleteUserUseCase, + savedStateHandle: SavedStateHandle +) : BaseViewModel( + savedStateHandle +) { + override fun createInitialState(savedStateHandle: SavedStateHandle): AccountSettingUiState = + AccountSettingUiState() + + override fun handleClientException(throwable: Throwable) { + TODO("Not yet implemented") + } + + override suspend fun handleIntent(intent: AccountSettingIntent) { + when (intent) { + is AccountSettingIntent.ClickConfirmDialogButton -> confirm() + is AccountSettingIntent.ClickDismissDialogButton -> dismiss() + is AccountSettingIntent.ClickLogOutButton -> showLogoutDialog() + is AccountSettingIntent.ClickDeleteUserButton -> showDeleteUserDialog() + is AccountSettingIntent.ClickBackButton -> navigateToMyPage() + is AccountSettingIntent.ClickMatchingActiveToggleButton -> changeMatchingActive() + } + } + + private fun confirm() { + launch { + when (currentState.dialogType) { + SettingAlertDialogType.LOG_OUT -> logOutUseCase() + SettingAlertDialogType.DELETE_USER -> deleteUserUseCase() + } + reduce { copy(showDialog = false) } + postSideEffect(AccountSettingSideEffect.NavigateToLoginEndpoint) + } + } + + private fun dismiss() { + reduce { copy(showDialog = false) } + } + + private fun showLogoutDialog() { + reduce { + copy( + showDialog = true, + dialogType = SettingAlertDialogType.LOG_OUT + ) + } + } + + private fun showDeleteUserDialog() { + reduce { + copy( + showDialog = true, + dialogType = SettingAlertDialogType.DELETE_USER + ) + } + } + + private fun navigateToMyPage() { + postSideEffect(AccountSettingSideEffect.NavigateToMyPage) + } + + private fun changeMatchingActive() { + launch { + // TODO : 매칭 활성화 on/off 로직 + reduce { copy(isMatchingActive = !isMatchingActive) } + } + } + +} diff --git a/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/mvi/AccountSettingIntent.kt b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/mvi/AccountSettingIntent.kt new file mode 100644 index 00000000..70994806 --- /dev/null +++ b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/mvi/AccountSettingIntent.kt @@ -0,0 +1,19 @@ +package com.team.bottles.feat.setting.account.mvi + +import com.team.bottles.core.common.UiIntent + +sealed interface AccountSettingIntent : UiIntent { + + data object ClickBackButton : AccountSettingIntent + + data object ClickMatchingActiveToggleButton : AccountSettingIntent + + data object ClickLogOutButton : AccountSettingIntent + + data object ClickDeleteUserButton : AccountSettingIntent + + data object ClickConfirmDialogButton : AccountSettingIntent + + data object ClickDismissDialogButton : AccountSettingIntent + +} \ No newline at end of file diff --git a/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/mvi/AccountSettingSideEffect.kt b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/mvi/AccountSettingSideEffect.kt new file mode 100644 index 00000000..36ed8182 --- /dev/null +++ b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/mvi/AccountSettingSideEffect.kt @@ -0,0 +1,11 @@ +package com.team.bottles.feat.setting.account.mvi + +import com.team.bottles.core.common.UiSideEffect + +sealed interface AccountSettingSideEffect : UiSideEffect { + + data object NavigateToMyPage : AccountSettingSideEffect + + data object NavigateToLoginEndpoint : AccountSettingSideEffect + +} \ No newline at end of file diff --git a/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/mvi/AccountSettingUiState.kt b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/mvi/AccountSettingUiState.kt new file mode 100644 index 00000000..8acd3f99 --- /dev/null +++ b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/account/mvi/AccountSettingUiState.kt @@ -0,0 +1,31 @@ +package com.team.bottles.feat.setting.account.mvi + +import com.team.bottles.core.common.UiState + +data class AccountSettingUiState( + val showDialog: Boolean = false, + val dialogType: SettingAlertDialogType = SettingAlertDialogType.LOG_OUT, + val isMatchingActive: Boolean = false, +) : UiState + +enum class SettingAlertDialogType( + val title: String, + val content: String, + val dismissText: String, + val confirmText: String +) { + LOG_OUT( + title = "로그아웃", + content = "정말 로그아웃 하시겠어요?", + confirmText = "로그아웃하기", + dismissText = "취소하기" + ), + DELETE_USER( + title = "탈퇴하기", + content = "탈퇴 시 계정 복구가 어려워요.\n" + + "정말 탈퇴하시겠어요?", + confirmText = "탈퇴하기", + dismissText = "취소하기" + ), + ; +} diff --git a/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/components/AccountSetting.kt b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/components/AccountSetting.kt new file mode 100644 index 00000000..6b80297b --- /dev/null +++ b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/components/AccountSetting.kt @@ -0,0 +1,57 @@ +package com.team.bottles.feat.setting.components + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import com.team.bottles.core.designsystem.components.cards.BottlesCard +import com.team.bottles.core.designsystem.components.lists.BottlesSettingItemWithArrow +import com.team.bottles.core.designsystem.components.lists.BottlesSettingItemWithToggleButton +import com.team.bottles.core.designsystem.theme.BottlesTheme + +@Composable +internal fun AccountSetting( + modifier: Modifier = Modifier, + isMatchingActive: Boolean, + onChangeMatchingActive: () -> Unit, + onClickLogOut: () -> Unit, + onClickDeleteUser: () -> Unit, +) { + BottlesCard( + modifier = modifier, + verticalArrangement = Arrangement.spacedBy( + space = BottlesTheme.spacing.large + ) + ) { +// BottlesSettingItemWithToggleButton( +// title = "매칭 활성화", +// subTitle = "비활성화 시 다른 사람을 추천 받을 수 없고\n" + +// "회원님도 다른 사람에게 추천되지 않아요", +// checked = isMatchingActive, +// onCheckedChange = onChangeMatchingActive +// ) TODO : 매칭 활성화 API 구현시 UI 수정 + + BottlesSettingItemWithArrow( + title = "로그아웃", + onClickItem = onClickLogOut + ) + + BottlesSettingItemWithArrow( + title = "탈퇴하기", + onClickItem = onClickDeleteUser + ) + } +} + +@Preview +@Composable +private fun AccountSettingPreview() { + BottlesTheme { + AccountSetting( + isMatchingActive = true, + onChangeMatchingActive = {}, + onClickDeleteUser = {}, + onClickLogOut = {} + ) + } +} \ No newline at end of file diff --git a/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/components/NotificationSetting.kt b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/components/NotificationSetting.kt new file mode 100644 index 00000000..a5a591ec --- /dev/null +++ b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/components/NotificationSetting.kt @@ -0,0 +1,82 @@ +package com.team.bottles.feat.setting.components + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.material3.HorizontalDivider +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.team.bottles.core.designsystem.components.cards.BottlesCard +import com.team.bottles.core.designsystem.components.lists.BottlesSettingItemWithToggleButton +import com.team.bottles.core.designsystem.theme.BottlesTheme + +@Composable +internal fun NotificationSetting( + modifier: Modifier = Modifier, + isFloatingBottle: Boolean, + isGoodFeelingArrived: Boolean, + isConversation: Boolean, + isMarketingResponse: Boolean, + onChangeFloatingBottle: () -> Unit, + onChangeGoodFeelingArrived: () -> Unit, + onChangeConversation: () -> Unit, + onChangeMarketingResponse: () -> Unit, +) { + BottlesCard( + modifier = modifier, + verticalArrangement = Arrangement.spacedBy( + space = BottlesTheme.spacing.large + ) + ) { + BottlesSettingItemWithToggleButton( + title = "떠다니는 보틀 알림", + subTitle = "매일 랜덤으로 추천되는 보틀 안내", + checked = isFloatingBottle, + onCheckedChange = onChangeFloatingBottle + ) + + BottlesSettingItemWithToggleButton( + title = "호감 도착 알림", + subTitle = "내가 받은 호감 안내", + checked = isGoodFeelingArrived, + onCheckedChange = onChangeGoodFeelingArrived + ) + + BottlesSettingItemWithToggleButton( + title = "대화 알림", + subTitle = "가치관 문답 시작 · 진행 · 중단 , 매칭 안내", + checked = isConversation, + onCheckedChange = onChangeConversation + ) + + HorizontalDivider( + modifier = Modifier.fillMaxWidth(), + color = BottlesTheme.color.border.secondary, + thickness = 1.dp + ) + + BottlesSettingItemWithToggleButton( + title = "마케팅 수신 동의", + checked = isMarketingResponse, + onCheckedChange = onChangeMarketingResponse + ) + } +} + +@Preview +@Composable +private fun AccountSettingPreview() { + BottlesTheme { + NotificationSetting( + isFloatingBottle = true, + isGoodFeelingArrived = true, + isConversation = true, + isMarketingResponse = true, + onChangeFloatingBottle = {}, + onChangeGoodFeelingArrived = {}, + onChangeConversation = {}, + onChangeMarketingResponse = {} + ) + } +} \ No newline at end of file diff --git a/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/navigation/SettingNavigation.kt b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/navigation/SettingNavigation.kt new file mode 100644 index 00000000..00b2f875 --- /dev/null +++ b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/navigation/SettingNavigation.kt @@ -0,0 +1,29 @@ +package com.team.bottles.feat.setting.navigation + +import SettingNavigator +import androidx.navigation.NavGraphBuilder +import androidx.navigation.compose.composable +import com.team.bottles.feat.setting.account.AccountSettingRoute +import com.team.bottles.feat.setting.notification.NotificationSettingRoute + +fun NavGraphBuilder.accountSettingScreen( + navigateToLoginEndpoint: () -> Unit, + navigateToMyPage: () -> Unit, +) { + composable { + AccountSettingRoute( + navigateToLoginEndpoint = navigateToLoginEndpoint, + navigateToMyPage = navigateToMyPage, + ) + } +} + +fun NavGraphBuilder.notificationSettingScreen( + navigateToMyPage: () -> Unit, +) { + composable { + NotificationSettingRoute( + navigateToMyPage = navigateToMyPage + ) + } +} \ No newline at end of file diff --git a/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/NotificationSettingRoute.kt b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/NotificationSettingRoute.kt new file mode 100644 index 00000000..894d475c --- /dev/null +++ b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/NotificationSettingRoute.kt @@ -0,0 +1,29 @@ +package com.team.bottles.feat.setting.notification + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.team.bottles.feat.setting.notification.mvi.NotificationSideEffect + +@Composable +internal fun NotificationSettingRoute( + viewModel: NotificationSettingViewModel = hiltViewModel(), + navigateToMyPage: () -> Unit +) { + val uiState by viewModel.state.collectAsStateWithLifecycle() + + LaunchedEffect(Unit) { + viewModel.sideEffect.collect { sideEffect -> + if (sideEffect is NotificationSideEffect.NavigateToMyPage) { + navigateToMyPage() + } + } + } + + NotificationSettingScreen( + uiState = uiState, + onIntent = { intent -> viewModel.intent(intent) }, + ) +} \ No newline at end of file diff --git a/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/NotificationSettingScreen.kt b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/NotificationSettingScreen.kt new file mode 100644 index 00000000..44881695 --- /dev/null +++ b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/NotificationSettingScreen.kt @@ -0,0 +1,67 @@ +package com.team.bottles.feat.setting.notification + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Icon +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.team.bottles.core.designsystem.R +import com.team.bottles.core.designsystem.components.bars.BottlesTopBar +import com.team.bottles.core.designsystem.modifier.noRippleClickable +import com.team.bottles.core.designsystem.theme.BottlesTheme +import com.team.bottles.feat.setting.components.NotificationSetting +import com.team.bottles.feat.setting.notification.mvi.NotificationIntent +import com.team.bottles.feat.setting.notification.mvi.NotificationUiState + +@Composable +internal fun NotificationSettingScreen( + uiState: NotificationUiState, + onIntent: (NotificationIntent) -> Unit, +) { + Column( + modifier = Modifier.fillMaxSize() + ) { + BottlesTopBar( + leadingIcon = { + Icon( + modifier = Modifier + .noRippleClickable(onClick = { onIntent(NotificationIntent.ClickBackButton) }), + painter = painterResource(id = R.drawable.ic_arrow_left_24), + contentDescription = null, + tint = BottlesTheme.color.icon.primary + ) + }, + ) + + Spacer(modifier = Modifier.height(height = 32.dp)) + + NotificationSetting( + modifier = Modifier.padding(horizontal = 16.dp), + isFloatingBottle = uiState.isFloatingBottle, + isGoodFeelingArrived = uiState.isGoodFeelingArrived, + isConversation = uiState.isConversation, + isMarketingResponse = uiState.isMarketingResponse, + onChangeFloatingBottle = { onIntent(NotificationIntent.ClickFloatingBottleToggleButton) }, + onChangeGoodFeelingArrived = { onIntent(NotificationIntent.ClickGoodFeelingArrivedToggleButton) }, + onChangeConversation = { onIntent(NotificationIntent.ClickConversationToggleButton) }, + onChangeMarketingResponse = { onIntent(NotificationIntent.ClickMarketingResponseToggleButton) }, + ) + } +} + +@Preview(showBackground = true) +@Composable +private fun NotificationSettingScreenPreview() { + BottlesTheme { + NotificationSettingScreen( + uiState = NotificationUiState(), + onIntent = {}, + ) + } +} \ No newline at end of file diff --git a/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/NotificationSettingViewModel.kt b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/NotificationSettingViewModel.kt new file mode 100644 index 00000000..efe788cb --- /dev/null +++ b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/NotificationSettingViewModel.kt @@ -0,0 +1,111 @@ +package com.team.bottles.feat.setting.notification + +import androidx.lifecycle.SavedStateHandle +import com.team.bottles.core.common.BaseViewModel +import com.team.bottles.core.domain.user.model.Notification +import com.team.bottles.core.domain.user.model.NotificationType +import com.team.bottles.core.domain.user.usecase.GetSettingNotificationsUseCase +import com.team.bottles.core.domain.user.usecase.UpdateSettingNotificationUseCase +import com.team.bottles.feat.setting.notification.mvi.NotificationIntent +import com.team.bottles.feat.setting.notification.mvi.NotificationSideEffect +import com.team.bottles.feat.setting.notification.mvi.NotificationUiState +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class NotificationSettingViewModel @Inject constructor( + private val getSettingNotificationsUseCase: GetSettingNotificationsUseCase, + private val updateSettingNotificationUseCase: UpdateSettingNotificationUseCase, + savedStateHandle: SavedStateHandle +) : BaseViewModel(savedStateHandle) { + + init { + launch { + val notifications = getSettingNotificationsUseCase() + + val isConversation = notifications.find { it.notificationType == NotificationType.PING_PONG }?.enabled?: false + val isMarketingResponse = notifications.find { it.notificationType == NotificationType.MARKETING }?.enabled?: false + val isFloatingBottle = notifications.find { it.notificationType == NotificationType.DAILY_RANDOM }?.enabled?: false + val isGoodFeelingArrived = notifications.find { it.notificationType == NotificationType.RECEIVE_LIKE }?.enabled?: false + + reduce { + copy( + isConversation = isConversation, + isMarketingResponse = isMarketingResponse, + isFloatingBottle = isFloatingBottle, + isGoodFeelingArrived = isGoodFeelingArrived + ) + } + } + } + + override fun createInitialState(savedStateHandle: SavedStateHandle): NotificationUiState = + NotificationUiState() + + override suspend fun handleIntent(intent: NotificationIntent) { + when (intent) { + is NotificationIntent.ClickBackButton -> navigateToMyPage() + is NotificationIntent.ClickConversationToggleButton -> changeConversationNotification() + is NotificationIntent.ClickFloatingBottleToggleButton -> changeFloatingBottleNotification() + is NotificationIntent.ClickMarketingResponseToggleButton -> changeMarketingResponseNotification() + is NotificationIntent.ClickGoodFeelingArrivedToggleButton -> changeGoodFeelingArrivedNotification() + } + } + + override fun handleClientException(throwable: Throwable) { + TODO("Not yet implemented") + } + + private fun navigateToMyPage() { + postSideEffect(NotificationSideEffect.NavigateToMyPage) + } + + private fun changeFloatingBottleNotification() { + launch { + updateSettingNotificationUseCase( + notification = Notification( + notificationType = NotificationType.DAILY_RANDOM, + enabled = !currentState.isFloatingBottle + ) + ) + reduce { copy(isFloatingBottle = !isFloatingBottle) } + } + } + + private fun changeGoodFeelingArrivedNotification() { + launch { + updateSettingNotificationUseCase( + notification = Notification( + notificationType = NotificationType.RECEIVE_LIKE, + enabled = !currentState.isGoodFeelingArrived + ) + ) + reduce { copy(isGoodFeelingArrived = !isGoodFeelingArrived) } + } + } + + private fun changeConversationNotification() { + launch { + updateSettingNotificationUseCase( + notification = Notification( + notificationType = NotificationType.PING_PONG, + enabled = !currentState.isConversation + ) + ) + reduce { copy(isConversation = !isConversation) } + } + } + + private fun changeMarketingResponseNotification() { + launch { + updateSettingNotificationUseCase( + notification = Notification( + notificationType = NotificationType.MARKETING, + enabled = !currentState.isMarketingResponse + ) + ) + reduce { copy(isMarketingResponse = !isMarketingResponse) } + } + } + +} \ No newline at end of file diff --git a/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/mvi/NotificationIntent.kt b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/mvi/NotificationIntent.kt new file mode 100644 index 00000000..4a265249 --- /dev/null +++ b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/mvi/NotificationIntent.kt @@ -0,0 +1,17 @@ +package com.team.bottles.feat.setting.notification.mvi + +import com.team.bottles.core.common.UiIntent + +sealed interface NotificationIntent : UiIntent { + + data object ClickBackButton : NotificationIntent + + data object ClickFloatingBottleToggleButton : NotificationIntent + + data object ClickGoodFeelingArrivedToggleButton : NotificationIntent + + data object ClickConversationToggleButton : NotificationIntent + + data object ClickMarketingResponseToggleButton : NotificationIntent + +} \ No newline at end of file diff --git a/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/mvi/NotificationSideEffect.kt b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/mvi/NotificationSideEffect.kt new file mode 100644 index 00000000..fa30bddf --- /dev/null +++ b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/mvi/NotificationSideEffect.kt @@ -0,0 +1,9 @@ +package com.team.bottles.feat.setting.notification.mvi + +import com.team.bottles.core.common.UiSideEffect + +sealed interface NotificationSideEffect : UiSideEffect { + + data object NavigateToMyPage : NotificationSideEffect + +} \ No newline at end of file diff --git a/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/mvi/NotificationUiState.kt b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/mvi/NotificationUiState.kt new file mode 100644 index 00000000..b6b4d47e --- /dev/null +++ b/feat/setting/src/main/kotlin/com/team/bottles/feat/setting/notification/mvi/NotificationUiState.kt @@ -0,0 +1,10 @@ +package com.team.bottles.feat.setting.notification.mvi + +import com.team.bottles.core.common.UiState + +data class NotificationUiState( + val isFloatingBottle: Boolean = false, + val isGoodFeelingArrived: Boolean = false, + val isConversation: Boolean = false, + val isMarketingResponse: Boolean = false, +) : UiState diff --git a/feat/splash/build.gradle.kts b/feat/splash/build.gradle.kts index f34690b0..e6b413a3 100644 --- a/feat/splash/build.gradle.kts +++ b/feat/splash/build.gradle.kts @@ -8,6 +8,10 @@ plugins { android { namespace = "com.team.bottles.feat.splash" + + defaultConfig { + buildConfigField("Integer", "VERSION_CODE", libs.versions.versionCode.get()) + } } dependencies { diff --git a/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/SplashRoute.kt b/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/SplashRoute.kt index b17e6ef5..9e808326 100644 --- a/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/SplashRoute.kt +++ b/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/SplashRoute.kt @@ -1,8 +1,15 @@ package com.team.bottles.feat.splash +import android.content.ActivityNotFoundException +import android.content.Intent +import android.net.Uri import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.ui.platform.LocalContext import androidx.hilt.navigation.compose.hiltViewModel +import com.team.bottles.feat.splash.mvi.SplashSideEffect @Composable fun SplashRoute( @@ -11,15 +18,30 @@ fun SplashRoute( navigateToSandBeach: () -> Unit, navigateToOnboarding: () -> Unit ) { + val uiState by viewModel.state.collectAsState() + val context = LocalContext.current + LaunchedEffect(Unit) { viewModel.sideEffect.collect { sideEffect -> when (sideEffect) { is SplashSideEffect.NavigateToSandBeach -> navigateToSandBeach() is SplashSideEffect.NavigateToLoginEndpoint -> navigateToLoginEndpoint() is SplashSideEffect.NavigateToOnboarding -> navigateToOnboarding() + is SplashSideEffect.NavigateToPlayStore -> { + try { + val intent = Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.team.bottles&hl=ko")) + context.startActivity(intent) + } catch (e: ActivityNotFoundException) { + val webIntent = Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=com.team.bottles&hl=ko")) + context.startActivity(webIntent) + } + } } } } - SplashScreen() + SplashScreen( + uiState = uiState, + onIntent = { intent -> viewModel.intent(intent = intent) } + ) } diff --git a/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/SplashScreen.kt b/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/SplashScreen.kt index 98c1a597..71d200ae 100644 --- a/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/SplashScreen.kt +++ b/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/SplashScreen.kt @@ -15,9 +15,25 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.team.bottles.core.designsystem.R import com.team.bottles.core.designsystem.theme.BottlesTheme +import com.team.bottles.core.ui.BottlesAlertConfirmDialog +import com.team.bottles.feat.splash.mvi.SplashIntent +import com.team.bottles.feat.splash.mvi.SplashUiState @Composable -internal fun SplashScreen() { +internal fun SplashScreen( + uiState: SplashUiState, + onIntent: (SplashIntent) -> Unit +) { + if (uiState.showDialog) { + BottlesAlertConfirmDialog( + onClose = { /* 닫기 없음 */ }, + onConfirm = { onIntent(SplashIntent.ClickConfirmButton) }, + confirmButtonText = "업데이트 하기", + title = "업데이트 안내", + content = "최적의 사용 환경을 위해\n최신 버전의 앱으로 업데이트 해주세요", + ) + } + Column( modifier = Modifier .fillMaxSize() @@ -45,6 +61,11 @@ internal fun SplashScreen() { @Composable private fun SplashScreenPreview() { BottlesTheme { - SplashScreen() + SplashScreen( + uiState = SplashUiState( + showDialog = true + ), + onIntent = {} + ) } } \ No newline at end of file diff --git a/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/SplashSideEffect.kt b/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/SplashSideEffect.kt deleted file mode 100644 index fc0ab698..00000000 --- a/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/SplashSideEffect.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.team.bottles.feat.splash - -sealed interface SplashSideEffect { - - data object NavigateToLoginEndpoint : SplashSideEffect - - data object NavigateToSandBeach : SplashSideEffect - - data object NavigateToOnboarding : SplashSideEffect - -} \ No newline at end of file diff --git a/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/SplashViewModel.kt b/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/SplashViewModel.kt index 8de27eef..c04507b1 100644 --- a/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/SplashViewModel.kt +++ b/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/SplashViewModel.kt @@ -1,43 +1,62 @@ package com.team.bottles.feat.splash -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope +import androidx.lifecycle.SavedStateHandle +import com.team.bottles.core.common.BaseViewModel +import com.team.bottles.core.domain.auth.usecase.GetRequiredAppVersionUseCase import com.team.bottles.core.domain.auth.usecase.WebViewConnectUseCase import com.team.bottles.core.domain.profile.model.UserProfileStatus import com.team.bottles.core.domain.profile.usecase.GetUserProfileStatusUseCase +import com.team.bottles.feat.splash.mvi.SplashIntent +import com.team.bottles.feat.splash.mvi.SplashSideEffect +import com.team.bottles.feat.splash.mvi.SplashUiState import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.delay -import kotlinx.coroutines.flow.MutableSharedFlow -import kotlinx.coroutines.flow.asSharedFlow -import kotlinx.coroutines.launch import javax.inject.Inject @HiltViewModel class SplashViewModel @Inject constructor( private val getTokenStatus: WebViewConnectUseCase, - private val getUserProfileStatusUseCase: GetUserProfileStatusUseCase -): ViewModel() { - - private val _sideEffect: MutableSharedFlow = MutableSharedFlow() - val sideEffect = _sideEffect.asSharedFlow() + private val getUserProfileStatusUseCase: GetUserProfileStatusUseCase, + private val getRequiredAppVersionUseCase: GetRequiredAppVersionUseCase, + savedStateHandle: SavedStateHandle, +): BaseViewModel(savedStateHandle) { init { - viewModelScope.launch { - val tokens = getTokenStatus.getLocalToken() - - delay(1000L) + launch { + val requiredAppVersion = getRequiredAppVersionUseCase() - if (tokens.accessToken.isEmpty()) { - _sideEffect.emit(SplashSideEffect.NavigateToLoginEndpoint) + if (requiredAppVersion > currentState.appVersionCode) { + reduce { copy(showDialog = true) } } else { - val profileStatus = getUserProfileStatusUseCase() + val tokens = getTokenStatus.getLocalToken() + + delay(1000L) - when (profileStatus) { - UserProfileStatus.EMPTY -> _sideEffect.emit(SplashSideEffect.NavigateToOnboarding) - else -> _sideEffect.emit(SplashSideEffect.NavigateToSandBeach) + if (tokens.accessToken.isEmpty()) { + postSideEffect(SplashSideEffect.NavigateToLoginEndpoint) + } else { + val profileStatus = getUserProfileStatusUseCase() + + when (profileStatus) { + UserProfileStatus.EMPTY -> postSideEffect(SplashSideEffect.NavigateToOnboarding) + else -> postSideEffect(SplashSideEffect.NavigateToSandBeach) + } } } } } + override fun createInitialState(savedStateHandle: SavedStateHandle): SplashUiState = + SplashUiState() + + override suspend fun handleIntent(intent: SplashIntent) { + when (intent) { + is SplashIntent.ClickConfirmButton -> postSideEffect(SplashSideEffect.NavigateToPlayStore) + } + } + + override fun handleClientException(throwable: Throwable) { + TODO("Not yet implemented") + } + } \ No newline at end of file diff --git a/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/mvi/SplashIntent.kt b/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/mvi/SplashIntent.kt new file mode 100644 index 00000000..718ad8a1 --- /dev/null +++ b/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/mvi/SplashIntent.kt @@ -0,0 +1,9 @@ +package com.team.bottles.feat.splash.mvi + +import com.team.bottles.core.common.UiIntent + +sealed interface SplashIntent : UiIntent { + + data object ClickConfirmButton : SplashIntent + +} \ No newline at end of file diff --git a/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/mvi/SplashSideEffect.kt b/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/mvi/SplashSideEffect.kt new file mode 100644 index 00000000..a7e8899f --- /dev/null +++ b/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/mvi/SplashSideEffect.kt @@ -0,0 +1,15 @@ +package com.team.bottles.feat.splash.mvi + +import com.team.bottles.core.common.UiSideEffect + +sealed interface SplashSideEffect : UiSideEffect { + + data object NavigateToLoginEndpoint : SplashSideEffect + + data object NavigateToSandBeach : SplashSideEffect + + data object NavigateToOnboarding : SplashSideEffect + + data object NavigateToPlayStore : SplashSideEffect + +} \ No newline at end of file diff --git a/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/mvi/SplashUiState.kt b/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/mvi/SplashUiState.kt new file mode 100644 index 00000000..d4efe7b9 --- /dev/null +++ b/feat/splash/src/main/kotlin/com/team/bottles/feat/splash/mvi/SplashUiState.kt @@ -0,0 +1,9 @@ +package com.team.bottles.feat.splash.mvi + +import com.team.bottles.core.common.UiState +import com.team.bottles.feat.splash.BuildConfig + +data class SplashUiState( + val appVersionCode: Int = BuildConfig.VERSION_CODE, + val showDialog: Boolean = false, +) : UiState \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9208720b..d6511f3f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,9 +3,9 @@ compileSdk = "34" minSdk = "28" targetSdk = "34" -appVersion = "0.9.5-beta" -versionCode = "10007" -versionName = "0.9.5" +appVersion = "1.0.0" +versionCode = "10008" +versionName = "1.0.0" # kotlin diff --git a/settings.gradle.kts b/settings.gradle.kts index 2f093c55..daa59b0f 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -34,6 +34,7 @@ include(":core:datastore") include(":core:ui") include(":core:navigator") include(":core:common") +include(":core:local") include(":feat:bottle") include(":feat:sandbeach") @@ -43,4 +44,5 @@ include(":feat:onboarding") include(":feat:profile") include(":feat:ping-pong") include(":feat:splash") -include(":feat:report") \ No newline at end of file +include(":feat:report") +include(":feat:setting") \ No newline at end of file