diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Context.kt index 05cdb551..eb6bf695 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Context.kt @@ -145,10 +145,10 @@ fun Context.setupAlarmClock(alarm: Alarm, triggerInSeconds: Int) { AlarmManagerCompat.setAlarmClock(alarmManager, targetMS, getOpenAlarmTabIntent(), getAlarmIntent(alarm)) // Trigger a notification to dismiss the alarm 5 minutes before the alarm if the screen is on - val dismissalTriggerTime = if (targetMS - System.currentTimeMillis() < (5.minutes.inWholeMilliseconds)) { - (System.currentTimeMillis() + 500) + val dismissalTriggerTime = if (targetMS - System.currentTimeMillis() < 5.minutes.inWholeMilliseconds) { + System.currentTimeMillis() + 500 } else { - targetMS - (5.minutes.inWholeMilliseconds) + targetMS - 5.minutes.inWholeMilliseconds } AlarmManagerCompat.setExactAndAllowWhileIdle(alarmManager, 0, dismissalTriggerTime, getEarlyAlarmDismissalIntent(alarm)) } catch (e: Exception) { diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/receivers/DismissAlarmReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/DismissAlarmReceiver.kt index 36bee5c7..ead1c86c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/receivers/DismissAlarmReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/DismissAlarmReceiver.kt @@ -40,13 +40,10 @@ class DismissAlarmReceiver: BroadcastReceiver() { private fun removeTodayFromBitmask(bitmask: Int): Int { val calendar = Calendar.getInstance() - var dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - Calendar.MONDAY // This will give values from 0 (Monday) to 6 (Sunday) + calendar.firstDayOfWeek = Calendar.MONDAY + val dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - Calendar.MONDAY // This will give values from 0 (Monday) to 6 (Sunday) - if (dayOfWeek < 0) { // Adjust for Calendar.MONDAY being 2 - dayOfWeek += 7 - } - - val todayBitmask = 1 shl dayOfWeek // This will shift the number 1 to the left by dayOfWeek places, creating a bitmask for today + val todayBitmask = 1 shl dayOfWeek // This will left shift 0000001 by dayOfWeek places, creating a bitmask for today return bitmask and todayBitmask.inv() // This will return a new bitmask without today included } } diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/receivers/EarlyAlarmDismissalReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/EarlyAlarmDismissalReceiver.kt index 6897519e..bd4380e1 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/receivers/EarlyAlarmDismissalReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/EarlyAlarmDismissalReceiver.kt @@ -19,13 +19,15 @@ class EarlyAlarmDismissalReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { val alarmId = intent.getIntExtra(ALARM_ID, -1) - if (alarmId == -1) return + if (alarmId == -1) { + return + } + val alarmTime = intent.getIntExtra(ALARM_TIME, -1) triggerEarlyDismissalNotification(context, alarmTime, alarmId) } private fun triggerEarlyDismissalNotification(context: Context, alarmTime: Int, alarmId: Int) { - val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager if (isOreoPlus()) { NotificationChannel(EARLY_ALARM_DISMISSAL_CHANNEL_ID, context.getString(R.string.early_alarm_dismissal), NotificationManager.IMPORTANCE_DEFAULT).apply { @@ -34,6 +36,7 @@ class EarlyAlarmDismissalReceiver : BroadcastReceiver() { notificationManager.createNotificationChannel(this) } } + val dismissIntent = context.getDismissAlarmPendingIntent(alarmId, EARLY_ALARM_NOTIF_ID) val contentIntent = context.getOpenAlarmTabIntent() val notification = NotificationCompat.Builder(context)