DeveloperAcademy-POSTECH / 2024-MacC-M11-1Byte

TEAM: 1BYTE 🍀
2 stars 0 forks source link

[Trudy/Fix/#130] notification 관련 이슈 해결 #139

Closed Trudy2645 closed 23 hours ago

Trudy2645 commented 23 hours ago

📓 Overview

🤔 고민 내용

설정했던 요일을 해제했을 때 해당 알림이 삭제되어야 하는데 어떤 이유에선지 계속 로그에 찍혔습니다. 그래서 제 지식선에서 최고의 디버깅 방법 print문을 사용했고 두가지 로직 문제를 발견했습니다.

// 알림 설정 호출
if isRemind {
         let selectedDays = getSelectedDays()
         viewModel.createNotification(detailGoal: detailGoal, newTitle: newTitle, selectedDays: selectedDays)

} else {
          viewModel.deleteNotification(detailGoal: detailGoal)
}

위 코드는 저장 버튼을 눌렀을 때의 일어나는 로직입니다. 문제점이 보이시나요?

isRemind가 켜져있으면서 월요일을 취소하려 한다면 else문 이전에 true인 날짜를 생성하는 것 이외에도 false인 날짜를 지워주어야 합니다. 또한 어느 요일을 삭제할지도 넘겨주어야 하죠. 그래서 false로 되어있는 것을 배열로 가져오는 함수를 생성하고 반환받은 배열을 deleteNotification 에 넘겨주어야 합니다. 다음으로 isRemind가 false라면 모든 요일의 알림을 삭제해야하죠. 그래서 아래의 형태로 로직을 수정했습니다.

// 알림 설정 호출
if isRemind {
     viewModel.createNotification(detailGoal: detailGoal, newTitle: newTitle, selectedDays: selectedDays)
     viewModel.deleteNotification(detailGoal: detailGoal, days: notSelectedDays)
} else {
     viewModel.deleteNotification(detailGoal: detailGoal, days: ["월", "화", "수", "목", "금", "토", "일"])
}

이와 마찬가지로 다른 페이지에서도 루틴 혹은 목표를 삭제할 경우에도 모든 알림을 삭제해주어야 합니다. 해당 로직도 모두 수정해두었고, 이제 잘 돌아갑니다 허허 Print문 한 백번 찍어가며 확인했으니 이제 Notification 관련해서는 웬만하면 이슈가 발생하지 않을 겁니다..!

📸 Screenshot

Simulator Screen Recording - iPhone 12 mini - 2024-12-02 at 22 54 18