diff --git a/android/app/src/main/kotlin/com/example/uac_companion/AlarmServices/BroadcastReceivers/AlarmSnoozeReceiver.kt b/android/app/src/main/kotlin/com/example/uac_companion/AlarmServices/BroadcastReceivers/AlarmSnoozeReceiver.kt index 1b2bbcb..aab3466 100644 --- a/android/app/src/main/kotlin/com/example/uac_companion/AlarmServices/BroadcastReceivers/AlarmSnoozeReceiver.kt +++ b/android/app/src/main/kotlin/com/example/uac_companion/AlarmServices/BroadcastReceivers/AlarmSnoozeReceiver.kt @@ -1,5 +1,7 @@ package com.ccextractor.uac_companion +import com.ccextractor.uac_companion.Utils.Preferences + import android.app.* import android.content.* import android.os.Build @@ -9,14 +11,16 @@ import kotlin.math.abs class AlarmSnoozeReceiver : BroadcastReceiver() { final val TAG = "AlarmSnoozeReceiver" -//!need fixes alarm snoozes but with warning - W/Ringtone: Neither local nor remote playback available that makes the alarm to ring after 5 min but the alrm do not ring +// Handles snooze action for alarms - reschedules alarm after configured snooze duration override fun onReceive(context: Context, intent: Intent) { - // val alarmId = intent.getIntExtra("alarmId", -1) + val alarmId = intent.getIntExtra("alarmId", -1) + // ... later in code: + putExtra("alarmId", alarmId) // Cleaner than intent.getIntExtra("alarmId", -1) val uniqueSyncId = intent.getStringExtra("uniqueSyncId") ?: "" val hour = intent.getIntExtra("hour", -1) val minute = intent.getIntExtra("minute", -1) - // val isSnoozed = intent.getBooleanExtra("isSnoozed", false) - val fromPhone = intent.getBooleanExtra("fromPhone", false) ?: false + // val isSnoozed = intent.getBooleanExtra("isSnoozed", false) + val fromPhone = intent.getBooleanExtra("fromPhone", false) if (!fromPhone) { WatchAlarmSender.sendActionToPhone(context, "snooze", uniqueSyncId) @@ -26,20 +30,27 @@ class AlarmSnoozeReceiver : BroadcastReceiver() { // Stop current sound/vibration/notification AlarmServiceHolder.ringtone?.stop() + AlarmServiceHolder.ringtone = null // added AlarmServiceHolder.vibrator?.cancel() + AlarmServiceHolder.vibrator = null // added val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.cancel(NOTIFICATION_ID) // Reschedule the alarm 5 minute ahead val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager // val triggerAtMillis = System.currentTimeMillis() + 300_000 - val triggerAtMillis = System.currentTimeMillis() + 300_000 + + //Preferences.kt added and AlarmSnoozeReceiver updated. + val snoozeMinutes = Preferences.getSnoozeDurationMinutes(context) + val triggerAtMillis = System.currentTimeMillis() + snoozeMinutes * 60 * 1000 + val snoozeIntent = Intent(context, AlarmBroadcastReceiver::class.java).apply { - // putExtra("alarmId", alarmId) + putExtra("alarmId", intent.getIntExtra("alarmId", -1)) // Preserve original alarmId putExtra("uniqueSyncId", uniqueSyncId) putExtra("hour", hour) putExtra("minute", minute) + putExtra("days", intent.getStringExtra("days") ?: "") // ← ADD THIS (optional) putExtra("isSnoozed", true) action = "com.ccextractor.uac_companion.ALARM_TRIGGERED_$uniqueSyncId" } diff --git a/android/app/src/main/kotlin/com/example/uac_companion/Utils/Preferences.kt b/android/app/src/main/kotlin/com/example/uac_companion/Utils/Preferences.kt new file mode 100644 index 0000000..7e5228a --- /dev/null +++ b/android/app/src/main/kotlin/com/example/uac_companion/Utils/Preferences.kt @@ -0,0 +1,20 @@ +package com.ccextractor.uac_companion.Utils + +import android.content.Context + +object Preferences { + + private const val PREF_NAME = "uac_companion_prefs" + private const val KEY_SNOOZE_DURATION_MINUTES = "snooze_duration_minutes" + private const val DEFAULT_SNOOZE_MINUTES = 5 + + fun getSnoozeDurationMinutes(context: Context): Int { + val prefs = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE) + return prefs.getInt(KEY_SNOOZE_DURATION_MINUTES, DEFAULT_SNOOZE_MINUTES) + } + + fun setSnoozeDurationMinutes(context: Context, minutes: Int) { + val prefs = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE) + prefs.edit().putInt(KEY_SNOOZE_DURATION_MINUTES, minutes).apply() + } +}