From 7f2255c00f56c6a2873980cdf2fdeccdd962c603 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rebelo?= Date: Thu, 23 Apr 2026 22:03:29 +0100 Subject: [PATCH] Xiaomi: Fix reminder crash on unknown repetition --- .../adapter/GBReminderListAdapter.java | 27 ++++---------- .../services/XiaomiScheduleService.java | 37 +++++++++++++------ 2 files changed, 34 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/adapter/GBReminderListAdapter.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/adapter/GBReminderListAdapter.java index ceba4a0253..4b6cc5d667 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/adapter/GBReminderListAdapter.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/adapter/GBReminderListAdapter.java @@ -110,25 +110,14 @@ public class GBReminderListAdapter extends RecyclerView.Adapter R.string.reminder_time_once; + case Reminder.EVERY_DAY -> R.string.reminder_time_every_day; + case Reminder.EVERY_WEEK -> R.string.reminder_time_every_week; + case Reminder.EVERY_MONTH -> R.string.reminder_time_every_month; + case Reminder.EVERY_YEAR -> R.string.reminder_time_every_year; + default -> R.string.unknown; + }; final String reminderTimeText = mContext.getString(stringResId, format.format(time)); holder.reminderTime.setText(reminderTimeText); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiScheduleService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiScheduleService.java index ec63a97a6b..890d27bfaf 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiScheduleService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiScheduleService.java @@ -191,14 +191,22 @@ public class XiaomiScheduleService extends AbstractXiaomiService { gbReminder.setDate(XiaomiPreferences.toDate(reminder.getReminderDetails().getDate(), reminder.getReminderDetails().getTime())); switch (reminder.getReminderDetails().getRepeatMode()) { - case REPETITION_ONCE: - gbReminder.setRepetition(Alarm.ALARM_ONCE); - break; case REPETITION_DAILY: - gbReminder.setRepetition(Alarm.ALARM_DAILY); + gbReminder.setRepetition(Reminder.EVERY_DAY); break; case REPETITION_WEEKLY: - gbReminder.setRepetition(reminder.getReminderDetails().getRepeatFlags()); + gbReminder.setRepetition(Reminder.EVERY_WEEK); + // TODO support for weekly repeat flags reminder.getReminderDetails().getRepeatFlags() + break; + case REPETITION_MONTHLY: + gbReminder.setRepetition(Reminder.EVERY_MONTH); + break; + case REPETITION_YEARLY: + gbReminder.setRepetition(Reminder.EVERY_YEAR); + break; + case REPETITION_ONCE: + default: + gbReminder.setRepetition(Reminder.ONCE); break; } @@ -315,15 +323,22 @@ public class XiaomiScheduleService extends AbstractXiaomiService { .setTitle(reminder.getMessage()); switch (reminder.getRepetition()) { - case Alarm.ALARM_ONCE: - reminderDetails.setRepeatMode(REPETITION_ONCE); - break; - case Alarm.ALARM_DAILY: + case Reminder.EVERY_DAY: reminderDetails.setRepeatMode(REPETITION_DAILY); break; - default: + case Reminder.EVERY_WEEK: reminderDetails.setRepeatMode(REPETITION_WEEKLY); - reminderDetails.setRepeatFlags(reminder.getRepetition()); + reminderDetails.setRepeatFlags((reminderTime.get(Calendar.DAY_OF_WEEK) + 5) % 7 + 1); + break; + case Reminder.EVERY_MONTH: + reminderDetails.setRepeatMode(REPETITION_MONTHLY); + break; + case Reminder.EVERY_YEAR: + reminderDetails.setRepeatMode(REPETITION_YEARLY); + break; + case Reminder.ONCE: + default: + reminderDetails.setRepeatMode(REPETITION_ONCE); break; }