From 507aa4e00fbfa82aa4a6878bbbed37a640d0ffc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A0=EC=A7=84?= Date: Thu, 14 Nov 2024 16:59:38 +0900 Subject: [PATCH] Release/2.1.2 (#235) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Production to develop (#228) * release 1.1.15 * Release/2.0.0 (#209) * [Refactor/#165] 문의하기 리팩토링 (#189) * refactor: inquire * add: todo * [Chore] migrate build.gradle.kts & lib.version.toml (#194) * chore: migrate build.gradle.kts & lib.version.toml * chore: toml use kebab-case * [Fix/#141] remote config ENUM값 있는걸로 교체 (#193) * fix: as Restaurant 타입 캐스팅 안되는 중 * fix: conflict * ds * chore: add gitignore ".DS_Store" * [Fix/#139] 리뷰 수정시 정보가 안넘어가던 현상 고치기 (#192) * release 1.1.15 * fix: 리뷰 수정하기 정보 안넘어가던거 성공 * fix: 맛 별점이 양 별점으로 잘못 들어가는거 수정 * fix: endpoint "s" * [chore/#195] change new color scheme (#196) * chore: change new color scheme * chore: naming * chore: naming lower * chore: missing "1" * chore: change missing color * [Redesign] change home design (#198) * redesign: calendar * redesign: item_cafeteria_section.xml * fix: top 여백을 fragment에서 item으로 변경 * feat: 장소 바인딩 * chore: indicator width min * add: ic good, bad * Revert "add: ic good, bad" This reverts commit f115b5feb91ab756a059780298cf0cbcc847492d. * Revert "chore: indicator width min" This reverts commit afc2f16d13c85d0d2aa666f6ec5c258a9c7a311e. * [Feat] 현재 시간에 따른 아침/점심/저녁 구분 (#201) * feat: TabLayout 시간대 설정 * feat: TabLayout 시간대 설정 * [Redesign/#203] my page 리디자인 적용 (#204) * redesign: 마이페이지 UI 변경 * redesign: 닉네임 변경 디자인 변경 * redesign: 닉네임 변경 디자인 변경 * delete: 안쓰는 drawable 삭제 * add: 정말 탈퇴하시겠습니까? 뷰 * feat: 닉네임 설정 로직 3개 완료 * feat: 정말 탈퇴하시겠습니까? * feat: 만든 사람들 * [Redesign/#200] review보기 리디자인 적용 (#202) * resign: 액션바 색상 변경 * add: 리사이클러뷰 메뉴 아이템 생성 * chore: 프로그래스 바 간격 맞추기 * chore: 맛&양 -> 굿&배드 * feat: 카드뷰로 사진 테두리 구현 * feat: 카드뷰로 사진 둥근테두리 구현 * feat: 간격 값 조정 * chore: gitignore 수정 * fix: 사진 있을 때만 imageView&CardView 보이게 * delete: ds_store * fix: missing files * chore: 바 추가 * chore: 리뷰 없을 때 간격 조정 * chore: 시간 대 조정 * [Redesign/#199] Info 리디자인 적용 + bottomSheet로 변경 (#205) * redesign: info bottomsheet로 변경 * feat: 식당 운영정보 실제 정보로 바인딩 * [Redesign] menus (#208) * refactor: material menus로 신고/수정/삭제 분리 * fix: 삭제 안되는거 수정 dialog import 수정, context를 this로 수정 * fix: 리뷰 삭제 후 리스트 재로딩 * [Redesign/#206] report 리디자인 적용 +문의하기 웹뷰처리 (#207) * add: shape, selector 파일 * delete: 문의하기 카카오채널로 변경 * refactor: 신고하기 flow로 리팩토링 * chore: 로고 변경 * chore: 메뉴이름 임시 바인딩 * chore: 굿배드 주석처리 * chore: 리뷰 작성 임시 처리 * fix: 리뷰 사진 안보이는거 해결 * fix: 메뉴이름 Text style * fix: 식당 사진 똑같게 들어가던거 수정 * chore: 체크박스 색상 변경 * fix: 텍스트 비정상적으로 작은거 해결 * chore: tablayout indicator 수정 * fix: NPE 뜨는 부분 주석처리 * fix: 사진이 없는데 자리 차지 하던거 고침 * fix: 아이콘 없대서 다시 되돌림 * [Release/2.1.0] (#223) * Update release_tag.yml * Update bug_report.md * Production to develop (#213) * release 1.1.15 * Release/2.0.0 (#209) * [Refactor/#165] 문의하기 리팩토링 (#189) * refactor: inquire * add: todo * [Chore] migrate build.gradle.kts & lib.version.toml (#194) * chore: migrate build.gradle.kts & lib.version.toml * chore: toml use kebab-case * [Fix/#141] remote config ENUM값 있는걸로 교체 (#193) * fix: as Restaurant 타입 캐스팅 안되는 중 * fix: conflict * ds * chore: add gitignore ".DS_Store" * [Fix/#139] 리뷰 수정시 정보가 안넘어가던 현상 고치기 (#192) * release 1.1.15 * fix: 리뷰 수정하기 정보 안넘어가던거 성공 * fix: 맛 별점이 양 별점으로 잘못 들어가는거 수정 * fix: endpoint "s" * [chore/#195] change new color scheme (#196) * chore: change new color scheme * chore: naming * chore: naming lower * chore: missing "1" * chore: change missing color * [Redesign] change home design (#198) * redesign: calendar * redesign: item_cafeteria_section.xml * fix: top 여백을 fragment에서 item으로 변경 * feat: 장소 바인딩 * chore: indicator width min * add: ic good, bad * Revert "add: ic good, bad" This reverts commit f115b5feb91ab756a059780298cf0cbcc847492d. * Revert "chore: indicator width min" This reverts commit afc2f16d13c85d0d2aa666f6ec5c258a9c7a311e. * [Feat] 현재 시간에 따른 아침/점심/저녁 구분 (#201) * feat: TabLayout 시간대 설정 * feat: TabLayout 시간대 설정 * [Redesign/#203] my page 리디자인 적용 (#204) * redesign: 마이페이지 UI 변경 * redesign: 닉네임 변경 디자인 변경 * redesign: 닉네임 변경 디자인 변경 * delete: 안쓰는 drawable 삭제 * add: 정말 탈퇴하시겠습니까? 뷰 * feat: 닉네임 설정 로직 3개 완료 * feat: 정말 탈퇴하시겠습니까? * feat: 만든 사람들 * [Redesign/#200] review보기 리디자인 적용 (#202) * resign: 액션바 색상 변경 * add: 리사이클러뷰 메뉴 아이템 생성 * chore: 프로그래스 바 간격 맞추기 * chore: 맛&양 -> 굿&배드 * feat: 카드뷰로 사진 테두리 구현 * feat: 카드뷰로 사진 둥근테두리 구현 * feat: 간격 값 조정 * chore: gitignore 수정 * fix: 사진 있을 때만 imageView&CardView 보이게 * delete: ds_store * fix: missing files * chore: 바 추가 * chore: 리뷰 없을 때 간격 조정 * chore: 시간 대 조정 * [Redesign/#199] Info 리디자인 적용 + bottomSheet로 변경 (#205) * redesign: info bottomsheet로 변경 * feat: 식당 운영정보 실제 정보로 바인딩 * [Redesign] menus (#208) * refactor: material menus로 신고/수정/삭제 분리 * fix: 삭제 안되는거 수정 dialog import 수정, context를 this로 수정 * fix: 리뷰 삭제 후 리스트 재로딩 * [Redesign/#206] report 리디자인 적용 +문의하기 웹뷰처리 (#207) * add: shape, selector 파일 * delete: 문의하기 카카오채널로 변경 * refactor: 신고하기 flow로 리팩토링 * chore: 로고 변경 * chore: 메뉴이름 임시 바인딩 * chore: 굿배드 주석처리 * chore: 리뷰 작성 임시 처리 * fix: 리뷰 사진 안보이는거 해결 * fix: 메뉴이름 Text style * fix: 식당 사진 똑같게 들어가던거 수정 * chore: 체크박스 색상 변경 * fix: 텍스트 비정상적으로 작은거 해결 * chore: tablayout indicator 수정 * fix: NPE 뜨는 부분 주석처리 * fix: 사진이 없는데 자리 차지 하던거 고침 * fix: 아이콘 없대서 다시 되돌림 * Create qa_apk (#218) * Rename qa_apk to qa_apk.yml * feat: colored on today was not selected (#219) * Update README.md * Update README.md * [Feat] Notification (#216) * feat: test notify 성공 * add: notify 작업 파일 스테이징 * feat: workManager로 구현 * chore: modify workManager * modify: change workManager to AlarmManager it working on api 28, but not working on api 33 * chore: notify on 11 am * feat: save notification statue in datastore * modify: change mypage design * chore: modify layout * chore: modify code * chore: modify code * delete: work manager * chore: change alarm logo file to vector * chore: move code loading app version * chore: change padding * chore: separate setting alarm code at UI * chore: at 11 * [Redesign/login] 로그인 화면 리디자인 적용 (#222) * chore: delete firebase version * chore: delete default splash (android 12) * chore: set new splash * redesign: login activity * chore: delete unused logo files * chore: dark mode * version 2.1.0 * release/2.1.1 (#227) * Update release_tag.yml * Update bug_report.md * Production to develop (#213) * release 1.1.15 * Release/2.0.0 (#209) * [Refactor/#165] 문의하기 리팩토링 (#189) * refactor: inquire * add: todo * [Chore] migrate build.gradle.kts & lib.version.toml (#194) * chore: migrate build.gradle.kts & lib.version.toml * chore: toml use kebab-case * [Fix/#141] remote config ENUM값 있는걸로 교체 (#193) * fix: as Restaurant 타입 캐스팅 안되는 중 * fix: conflict * ds * chore: add gitignore ".DS_Store" * [Fix/#139] 리뷰 수정시 정보가 안넘어가던 현상 고치기 (#192) * release 1.1.15 * fix: 리뷰 수정하기 정보 안넘어가던거 성공 * fix: 맛 별점이 양 별점으로 잘못 들어가는거 수정 * fix: endpoint "s" * [chore/#195] change new color scheme (#196) * chore: change new color scheme * chore: naming * chore: naming lower * chore: missing "1" * chore: change missing color * [Redesign] change home design (#198) * redesign: calendar * redesign: item_cafeteria_section.xml * fix: top 여백을 fragment에서 item으로 변경 * feat: 장소 바인딩 * chore: indicator width min * add: ic good, bad * Revert "add: ic good, bad" This reverts commit f115b5feb91ab756a059780298cf0cbcc847492d. * Revert "chore: indicator width min" This reverts commit afc2f16d13c85d0d2aa666f6ec5c258a9c7a311e. * [Feat] 현재 시간에 따른 아침/점심/저녁 구분 (#201) * feat: TabLayout 시간대 설정 * feat: TabLayout 시간대 설정 * [Redesign/#203] my page 리디자인 적용 (#204) * redesign: 마이페이지 UI 변경 * redesign: 닉네임 변경 디자인 변경 * redesign: 닉네임 변경 디자인 변경 * delete: 안쓰는 drawable 삭제 * add: 정말 탈퇴하시겠습니까? 뷰 * feat: 닉네임 설정 로직 3개 완료 * feat: 정말 탈퇴하시겠습니까? * feat: 만든 사람들 * [Redesign/#200] review보기 리디자인 적용 (#202) * resign: 액션바 색상 변경 * add: 리사이클러뷰 메뉴 아이템 생성 * chore: 프로그래스 바 간격 맞추기 * chore: 맛&양 -> 굿&배드 * feat: 카드뷰로 사진 테두리 구현 * feat: 카드뷰로 사진 둥근테두리 구현 * feat: 간격 값 조정 * chore: gitignore 수정 * fix: 사진 있을 때만 imageView&CardView 보이게 * delete: ds_store * fix: missing files * chore: 바 추가 * chore: 리뷰 없을 때 간격 조정 * chore: 시간 대 조정 * [Redesign/#199] Info 리디자인 적용 + bottomSheet로 변경 (#205) * redesign: info bottomsheet로 변경 * feat: 식당 운영정보 실제 정보로 바인딩 * [Redesign] menus (#208) * refactor: material menus로 신고/수정/삭제 분리 * fix: 삭제 안되는거 수정 dialog import 수정, context를 this로 수정 * fix: 리뷰 삭제 후 리스트 재로딩 * [Redesign/#206] report 리디자인 적용 +문의하기 웹뷰처리 (#207) * add: shape, selector 파일 * delete: 문의하기 카카오채널로 변경 * refactor: 신고하기 flow로 리팩토링 * chore: 로고 변경 * chore: 메뉴이름 임시 바인딩 * chore: 굿배드 주석처리 * chore: 리뷰 작성 임시 처리 * fix: 리뷰 사진 안보이는거 해결 * fix: 메뉴이름 Text style * fix: 식당 사진 똑같게 들어가던거 수정 * chore: 체크박스 색상 변경 * fix: 텍스트 비정상적으로 작은거 해결 * chore: tablayout indicator 수정 * fix: NPE 뜨는 부분 주석처리 * fix: 사진이 없는데 자리 차지 하던거 고침 * fix: 아이콘 없대서 다시 되돌림 * Create qa_apk (#218) * Rename qa_apk to qa_apk.yml * feat: colored on today was not selected (#219) * Update README.md * Update README.md * [Feat] Notification (#216) * feat: test notify 성공 * add: notify 작업 파일 스테이징 * feat: workManager로 구현 * chore: modify workManager * modify: change workManager to AlarmManager it working on api 28, but not working on api 33 * chore: notify on 11 am * feat: save notification statue in datastore * modify: change mypage design * chore: modify layout * chore: modify code * chore: modify code * delete: work manager * chore: change alarm logo file to vector * chore: move code loading app version * chore: change padding * chore: separate setting alarm code at UI * chore: at 11 * [Redesign/login] 로그인 화면 리디자인 적용 (#222) * chore: delete firebase version * chore: delete default splash (android 12) * chore: set new splash * redesign: login activity * chore: delete unused logo files * chore: dark mode * [Refactor/remote config] 리모트 컨피그 관련 로직 수정 + info 버튼 터치 영역 확대 (#224) * chore: change small size logo file * delete: infoviewmodelfactory 제거 * chore: modify default config * chore: modify real location data * chore: more larger touch area(cafetria info btn) * [Refactor/#167] Hilt를 통해 ApplicationContext 주입하기 (#226) * add: appContext to di * chore: clean code * release/2.1.1 * Update README.md * Update README.md * Update README.md * Update README.md * Refactor/package (#230) * chore: change package name * clean * Revert "Refactor/package (#230)" (#231) This reverts commit 734620d04683b6852ec6ca5c856cb4f78a605922. * [Fix/toast] 스낵바로 변경 (#234) * fix: fix toast error and change snack bar * chore: formated * feat: onReceive at day, not weekend. on api 26+ * release: 2.1.2 --- README.md | 46 +++++++++---------- app/build.gradle.kts | 4 +- .../android/ui/mypage/MyPageActivity.kt | 42 ++++++++++++----- .../android/util/NotificationReceiver.kt | 10 +++- 4 files changed, 64 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 74182d9c..2b969a94 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,7 @@ # 숭실대에서 먹자, 잇슈! - - -## 📌 Project Init - - 숭실대 학식 리뷰 앱 - 기간: 2023.03 ~ -- [PlayStore 바로가기](https://play.google.com/store/apps/details?id=com.eassu.android) +- [PlayStore](https://play.google.com/store/apps/details?id=com.eassu.android) 출시일 2023.11.28 ~ ![그래픽이미지](https://github.com/user-attachments/assets/e89f46bb-dece-45a9-a453-a00bf9d463cd) @@ -31,24 +27,28 @@ ## 📄 Package ``` -com.eatssu.android -├── base -├── data -│ ├── dto -│ │ ├── request -│ │ └── response -│ ├── enums -│ ├── model -│ ├── repository -│ ├── service -│ └── usecase -├── di -├── ui -│ ├── common -│ └── feature -│ ├── ViewModel -│ └── View -└── util +📦com.eatssu.android +├── 📂base +├── 📂data +│ ├── 📂db +│ ├── 📂dto +│ │ ├── 📂request +│ │ └── 📂response +│ ├── 📂enums +│ └── 📂repository(impl) +├── 📂di +├── 📂domain +│ ├── 📂model +│ ├── 📂repository +│ ├── 📂service +│ └── 📂usecase +├── 📂presentation +│ ├── 📂common +│ └── 📂feature +│ ├── 📂viewModel +│ └── 📂view +├── 📂util +└── 📄App ``` diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 716e102d..f3674674 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -21,8 +21,8 @@ android { applicationId = "com.eatssu.android" minSdk = 23 targetSdk = 34 - versionCode = 21 - versionName = "2.1.1" + versionCode = 22 + versionName = "2.1.2" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/eatssu/android/ui/mypage/MyPageActivity.kt b/app/src/main/java/com/eatssu/android/ui/mypage/MyPageActivity.kt index 4645b303..bfff4ae0 100644 --- a/app/src/main/java/com/eatssu/android/ui/mypage/MyPageActivity.kt +++ b/app/src/main/java/com/eatssu/android/ui/mypage/MyPageActivity.kt @@ -27,9 +27,12 @@ import com.eatssu.android.ui.mypage.terms.WebViewActivity import com.eatssu.android.ui.mypage.usernamechange.UserNameChangeActivity import com.eatssu.android.util.extension.showToast import com.eatssu.android.util.extension.startActivity +import com.google.android.material.snackbar.Snackbar import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch +import java.time.LocalDateTime +import java.time.format.DateTimeFormatter @AndroidEntryPoint class MyPageActivity : BaseActivity(ActivityMyPageBinding::inflate) { @@ -47,6 +50,7 @@ class MyPageActivity : BaseActivity(ActivityMyPageBinding } + @RequiresApi(Build.VERSION_CODES.O) private fun setupObservers() { lifecycleScope.launch { repeatOnLifecycle(Lifecycle.State.STARTED) { @@ -57,29 +61,40 @@ class MyPageActivity : BaseActivity(ActivityMyPageBinding binding.tvNickname.text = it.nickname } + // Switch 상태를 설정할 때 리스너를 임시로 null로 설정 + binding.alarmSwitch.setOnCheckedChangeListener(null) binding.alarmSwitch.isChecked = it.isAlarmOn + // 상태 설정 후에 리스너 추가 + binding.alarmSwitch.setOnCheckedChangeListener { _, isChecked -> + handleAlarmSwitchChange(isChecked) + } } } } } @RequiresApi(Build.VERSION_CODES.O) - private fun setOnClickListener() { + private fun handleAlarmSwitchChange(isChecked: Boolean) { + val nowDatetime = LocalDateTime.now() + val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm") + val formattedDate = nowDatetime.format(formatter) - binding.alarmSwitch.setOnCheckedChangeListener { _, isChecked -> - if (isChecked) { - if (checkNotificationPermission(this)) { //허용되어 있는 상태 - myPageViewModel.setNotificationOn() - showToast("EAT-SSU 알림 수신을 동의하였습니다.") - } else { // 알림 권한이 없을 때 사용자에게 설정 화면으로 이동하라고 알림 - showNotificationPermissionDialog() - } - } else { - myPageViewModel.setNotificationOff() - showToast("EAT-SSU 알림 수신을 거부하였습니다.") + if (isChecked) { + if (checkNotificationPermission(this)) { // 권한이 있는 상태 + myPageViewModel.setNotificationOn() + showSnackbar("EAT-SSU 알림 수신을 동의하였습니다.\n$formattedDate") + } else { // 권한이 없으면 설정 화면으로 이동 알림 + showNotificationPermissionDialog() } + } else { + myPageViewModel.setNotificationOff() + showSnackbar("EAT-SSU 알림 수신을 거부하였습니다.\n$formattedDate") } + } + + @RequiresApi(Build.VERSION_CODES.O) + private fun setOnClickListener() { binding.llNickname.setOnClickListener { startActivity() } @@ -271,6 +286,9 @@ class MyPageActivity : BaseActivity(ActivityMyPageBinding context.startActivity(intent) } + private fun showSnackbar(message: String) { + Snackbar.make(binding.root, message, Snackbar.LENGTH_SHORT).show() + } companion object { private const val REQUEST_NOTIFICATION_PERMISSION = 1001 diff --git a/app/src/main/java/com/eatssu/android/util/NotificationReceiver.kt b/app/src/main/java/com/eatssu/android/util/NotificationReceiver.kt index 3d40135d..3b1c1417 100644 --- a/app/src/main/java/com/eatssu/android/util/NotificationReceiver.kt +++ b/app/src/main/java/com/eatssu/android/util/NotificationReceiver.kt @@ -7,14 +7,22 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Build +import androidx.annotation.RequiresApi import androidx.core.app.NotificationCompat import com.eatssu.android.R import com.eatssu.android.ui.main.MainActivity +import java.time.DayOfWeek +import java.time.LocalDateTime class NotificationReceiver : BroadcastReceiver() { + @RequiresApi(Build.VERSION_CODES.O) override fun onReceive(context: Context, intent: Intent) { - showNotification(context) + // 현재 요일이 평일인 경우에만 알림을 발송 + val currentDay = LocalDateTime.now().dayOfWeek + if (currentDay != DayOfWeek.SATURDAY && currentDay != DayOfWeek.SUNDAY) { + showNotification(context) + } } private fun showNotification(context: Context) {