@@ -46,10 +46,11 @@ class AlarmReceiver : BroadcastReceiver() {
4646 val alarmServiceIntent = createAlarmServiceIntent(context, intent)
4747 when (intent.action) {
4848 AlarmConstants .ACTION_ALARM_TRIGGERED -> {
49- Log .d(" AlarmReceiver" , " Alarm Triggered" )
50-
5149 val alarm: Alarm ? = if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .TIRAMISU ) {
52- alarmServiceIntent.getParcelableExtra(AlarmConstants .EXTRA_ALARM , Alarm ::class .java)
50+ alarmServiceIntent.getParcelableExtra(
51+ AlarmConstants .EXTRA_ALARM ,
52+ Alarm ::class .java,
53+ )
5354 } else {
5455 @Suppress(" DEPRECATION" )
5556 alarmServiceIntent.getParcelableExtra(AlarmConstants .EXTRA_ALARM )
@@ -68,8 +69,6 @@ class AlarmReceiver : BroadcastReceiver() {
6869 }
6970
7071 AlarmConstants .ACTION_ALARM_SNOOZED -> {
71- Log .d(" AlarmReceiver" , " Alarm Snoozed" )
72-
7372 val alarm: Alarm ? = if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .TIRAMISU ) {
7473 intent.getParcelableExtra(AlarmConstants .EXTRA_ALARM , Alarm ::class .java)
7574 } else {
@@ -86,44 +85,54 @@ class AlarmReceiver : BroadcastReceiver() {
8685 )
8786 alarm?.let { handleSnooze(context, it) }
8887
89- Toast .makeText(context, " μλμ΄ ${alarm?.snoozeInterval} λΆ ν λ€μ μΈλ €μ" , Toast .LENGTH_SHORT ).show()
88+ Toast .makeText(
89+ context,
90+ " μλμ΄ ${alarm?.snoozeInterval} λΆ ν λ€μ μΈλ €μ" ,
91+ Toast .LENGTH_SHORT ,
92+ ).show()
9093 }
9194
9295 AlarmConstants .ACTION_ALARM_DISMISSED -> {
93- Log .d(" AlarmReceiver" , " Alarm Dismissed" )
94-
95- val alarmId = intent.getLongExtra(AlarmConstants .EXTRA_NOTIFICATION_ID , - 1L )
96- if (alarmId != - 1L ) {
97- CoroutineScope (Dispatchers .IO ).launch {
98- val alarms = alarmUseCase.getAllAlarms().first().sortedBy { it.isAlarmActive }
99- val isFirstAlarm = alarms.firstOrNull()?.id == alarmId
100-
101- analyticsHelper.logEvent(
102- AnalyticsEvent (
103- type = " alarm_dismiss" ,
104- properties = mapOf (
105- AnalyticsEvent .AlarmPropertiesKeys .ALARM_ID to " $alarmId " ,
106- AnalyticsEvent .AlarmPropertiesKeys .DISMISS_IS_FIRST_ALARM to isFirstAlarm,
107- ),
108- ),
109- )
110- val existingId = fortuneRepository.firstDismissedAlarmIdFlow.firstOrNull()
111- if (existingId == null ) {
112- // 첫 λ²μ§Έ μλ ν΄μ κΈ°λ‘
113- fortuneRepository.saveFirstDismissedAlarmId(alarmId)
114- } else if (existingId != alarmId) {
115- // λ λ²μ§Έ μλ ν΄μ κ°μ§ - κΈ°μ‘΄ κΈ°λ‘ μμ
116- fortuneRepository.clearDismissedAlarmId()
117- }
118- }
96+ val notificationId = intent.getLongExtra(AlarmConstants .EXTRA_NOTIFICATION_ID , - 1L )
97+ val missionType = intent.getIntExtra(AlarmConstants .EXTRA_MISSION_TYPE , - 1 )
98+ val missionCount = intent.getIntExtra(AlarmConstants .EXTRA_MISSION_COUNT , - 1 )
11999
120- androidAlarmScheduler.cancelSnoozedAlarm(alarmId)
121- } else {
122- Log .e( " AlarmReceiver " , " μλ ID μμ μ€ν¨ " )
100+ if (notificationId == - 1L ) {
101+ Log .e( " AlarmReceiver " , " notificationId μμ μ€ν¨ " )
102+ return
123103 }
124- androidAlarmScheduler.cancelSnoozedAlarm(alarmId)
104+
105+ androidAlarmScheduler.cancelSnoozedAlarm(notificationId)
125106 context.stopService(alarmServiceIntent)
126- sendBroadCastToCloseAlarmInteractionActivity(context)
107+
108+ sendBroadCastToCloseAlarmInteractionActivity(
109+ context = context,
110+ notificationId = notificationId,
111+ missionType = missionType,
112+ missionCount = missionCount,
113+ )
114+
115+ CoroutineScope (Dispatchers .IO ).launch {
116+ val alarms = alarmUseCase.getAllAlarms().first().sortedBy { it.isAlarmActive }
117+ val isFirstAlarm = alarms.firstOrNull()?.id == notificationId
118+
119+ analyticsHelper.logEvent(
120+ AnalyticsEvent (
121+ type = " alarm_dismiss" ,
122+ properties = mapOf (
123+ AnalyticsEvent .AlarmPropertiesKeys .ALARM_ID to " $notificationId " ,
124+ AnalyticsEvent .AlarmPropertiesKeys .DISMISS_IS_FIRST_ALARM to isFirstAlarm,
125+ ),
126+ ),
127+ )
128+
129+ val existingId = fortuneRepository.firstDismissedAlarmIdFlow.firstOrNull()
130+ if (existingId == null ) {
131+ fortuneRepository.saveFirstDismissedAlarmId(notificationId)
132+ } else if (existingId != notificationId) {
133+ fortuneRepository.clearDismissedAlarmId()
134+ }
135+ }
127136
128137 Toast .makeText(context, " μλμ΄ ν΄μ λμμ΄μ" , Toast .LENGTH_SHORT ).show()
129138 }
@@ -160,21 +169,22 @@ class AlarmReceiver : BroadcastReceiver() {
160169 id = alarm.id + AlarmConstants .SNOOZE_ID_OFFSET ,
161170 )
162171
163- Log .d(
164- " AlarmReceiver" ,
165- " Scheduling snooze alarm: alarmId=${updatedAlarm.id} , newTime=${updatedAlarm.hour} :${updatedAlarm.minute} , remaining snoozeCount=$newSnoozeCount " ,
166- )
167-
168172 context.stopService(Intent (context, AlarmService ::class .java))
169173 androidAlarmScheduler.scheduleAlarm(updatedAlarm)
170174 }
171175
172- private fun sendBroadCastToCloseAlarmInteractionActivity (context : Context ) {
173- Log .d(" AlarmReceiver" , " Send Broadcast to close Alarm Interaction Activity" )
174- val alarmAlertActivityCloseIntent =
175- Intent (AlarmConstants .ACTION_ALARM_INTERACTION_ACTIVITY_CLOSE ).apply {
176- putExtra(AlarmConstants .EXTRA_IS_SNOOZED , false )
177- }
178- context.sendBroadcast(alarmAlertActivityCloseIntent)
176+ private fun sendBroadCastToCloseAlarmInteractionActivity (
177+ context : Context ,
178+ notificationId : Long ,
179+ missionType : Int ,
180+ missionCount : Int ,
181+ ) {
182+ val intent = Intent (AlarmConstants .ACTION_ALARM_INTERACTION_ACTIVITY_CLOSE ).apply {
183+ putExtra(AlarmConstants .EXTRA_IS_SNOOZED , false )
184+ putExtra(AlarmConstants .EXTRA_NOTIFICATION_ID , notificationId)
185+ putExtra(AlarmConstants .EXTRA_MISSION_TYPE , missionType)
186+ putExtra(AlarmConstants .EXTRA_MISSION_COUNT , missionCount)
187+ }
188+ context.sendBroadcast(intent)
179189 }
180190}
0 commit comments