From e2d7798e36ae33ee632a778a0b1464aeda52cf8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rebelo?= Date: Sun, 22 Oct 2023 11:58:55 +0100 Subject: [PATCH] Xiaomi: Refuse delete of active watchface --- .../xiaomi/services/XiaomiWatchfaceService.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiWatchfaceService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiWatchfaceService.java index f290547ab..5c41dcdd3 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiWatchfaceService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiWatchfaceService.java @@ -46,6 +46,7 @@ public class XiaomiWatchfaceService extends AbstractXiaomiService { private final Set allWatchfaces = new HashSet<>(); private final Set userWatchfaces = new HashSet<>(); + private UUID activeWatchface = null; public XiaomiWatchfaceService(final XiaomiSupport support) { super(support); @@ -89,6 +90,7 @@ public class XiaomiWatchfaceService extends AbstractXiaomiService { allWatchfaces.clear(); userWatchfaces.clear(); + activeWatchface = null; final List gbDeviceApps = new ArrayList<>(); @@ -98,6 +100,9 @@ public class XiaomiWatchfaceService extends AbstractXiaomiService { if (watchface.getCanDelete()) { userWatchfaces.add(uuid); } + if (watchface.getActive()) { + activeWatchface = uuid; + } GBDeviceApp gbDeviceApp = new GBDeviceApp( uuid, @@ -120,6 +125,8 @@ public class XiaomiWatchfaceService extends AbstractXiaomiService { return; } + activeWatchface = uuid; + LOG.debug("Set watchface to {}", uuid); getSupport().sendCommand( @@ -147,6 +154,11 @@ public class XiaomiWatchfaceService extends AbstractXiaomiService { return; } + if (uuid.equals(activeWatchface)) { + LOG.warn("Refusing to delete active watchface {}", uuid); + return; + } + LOG.debug("Delete watchface {}", uuid); allWatchfaces.remove(uuid);