diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/appmanager/AbstractAppManagerFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/appmanager/AbstractAppManagerFragment.java index 3be595881..f8bce8a52 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/appmanager/AbstractAppManagerFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/appmanager/AbstractAppManagerFragment.java @@ -65,6 +65,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper; import nodomain.freeyourgadget.gadgetbridge.util.FileUtils; import nodomain.freeyourgadget.gadgetbridge.util.GridAutoFitLayoutManager; import nodomain.freeyourgadget.gadgetbridge.util.PebbleUtils; +import nodomain.freeyourgadget.gadgetbridge.util.Version; public abstract class AbstractAppManagerFragment extends Fragment { @@ -133,6 +134,13 @@ public abstract class AbstractAppManagerFragment extends Fragment { if ((mGBDevice.getType() == DeviceType.FOSSILQHYBRID) && (app.getType() == GBDeviceApp.Type.WATCHFACE) && (!QHybridConstants.HYBRIDHR_WATCHFACE_VERSION.equals(appVersion))) { app.setUpToDate(false); } + try { + if ((app.getType() == GBDeviceApp.Type.APP_GENERIC) && ((new Version(app.getVersion())).smallerThan(new Version(QHybridConstants.KNOWN_WAPP_VERSIONS.get(app.getName()))))) { + app.setUpToDate(false); + } + } catch (IllegalArgumentException e) { + LOG.warn("Couldn't read app version", e); + } if (filterApp(app)) { appList.add(app); } @@ -206,8 +214,13 @@ public abstract class AbstractAppManagerFragment extends Fragment { String jsonstring = FileUtils.getStringFromFile(jsonFile); JSONObject json = new JSONObject(jsonstring); GBDeviceApp app = new GBDeviceApp(json, configFile.exists(), getAppPreviewImage(baseName)); - if ((mGBDevice.getType() == DeviceType.FOSSILQHYBRID) && (app.getType() == GBDeviceApp.Type.WATCHFACE) && (!QHybridConstants.HYBRIDHR_WATCHFACE_VERSION.equals(app.getVersion()))) { - app.setUpToDate(false); + if (mGBDevice.getType() == DeviceType.FOSSILQHYBRID) { + if ((app.getType() == GBDeviceApp.Type.WATCHFACE) && (!QHybridConstants.HYBRIDHR_WATCHFACE_VERSION.equals(app.getVersion()))) { + app.setUpToDate(false); + } + if ((app.getType() == GBDeviceApp.Type.APP_GENERIC) && ((new Version(app.getVersion())).smallerThan(new Version(QHybridConstants.KNOWN_WAPP_VERSIONS.get(app.getName()))))) { + app.setUpToDate(false); + } } cachedAppList.add(app); } catch (Exception e) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridConstants.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridConstants.java index dfc99f53d..b6a68e6b2 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridConstants.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridConstants.java @@ -16,6 +16,25 @@ along with this program. If not, see . */ package nodomain.freeyourgadget.gadgetbridge.devices.qhybrid; +import java.util.HashMap; +import java.util.Map; + public final class QHybridConstants { public static final String HYBRIDHR_WATCHFACE_VERSION = "1.1"; + + public static Map KNOWN_WAPP_VERSIONS = new HashMap() { + { + put("buddyChallengeApp", "2.10"); + put("commuteApp", "2.5"); + put("launcherApp", "3.8"); + put("musicApp", "3.4"); + put("notificationsPanelApp", "3.5"); + put("ringPhoneApp", "3.7"); + put("settingApp", "3.12"); + put("stopwatchApp", "3.5"); + put("timerApp", "3.8"); + put("weatherApp", "3.10"); + put("wellnessApp", "3.15"); + } + }; }