From 372cb56a058800afd682d1f2476a5993c43f0788 Mon Sep 17 00:00:00 2001
From: ave <ave@ave.zone>
Date: Sun, 26 Nov 2023 17:02:10 +0100
Subject: [PATCH] updat3r: regex the version string instead

---
 CHANGELOG.md                            | 10 ++++++++++
 python_payload/apps/updat3r/__init__.py | 16 +++++++++-------
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index f2b8332c40..fcc9cee145 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,10 +4,20 @@ All notable changes to this project will be documented in this file.
 
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 
+## [Unreleased]
+
+### Added
+
+### Changed
+
+### Fixed
+- updat3r: Improved version comparison logic, making the "you are up to date :)" logic work
+
 ## [1.3.0] - 2023-11-26
 ### Summary
 - Wifi connection UI
 - Media framework
+- SD card works reliably
 - Performance improvements
 - Backend improvements
 - Wider micropython API
diff --git a/python_payload/apps/updat3r/__init__.py b/python_payload/apps/updat3r/__init__.py
index fe5a95464e..cb60e00499 100644
--- a/python_payload/apps/updat3r/__init__.py
+++ b/python_payload/apps/updat3r/__init__.py
@@ -7,6 +7,7 @@ import sys_kernel
 import urequests
 import math
 import sys
+import re
 from st3m.ui.view import ViewManager
 import st3m.wifi
 
@@ -62,11 +63,15 @@ class UpdaterApp(Application):
             ctx.move_to(0, 55)
             ctx.text("enter Wi-Fi settings")
 
-    def version_to_number(self, version: str):
-        if "dev" in version:
+    def version_to_number(self, version_raw: str):
+        if "dev" in version_raw:
             return 0
 
-        major, minor, patch = version.split(".")
+        version_re = re.search("[0-9]+.[0-9]+.[0-9]+", version_raw)
+        if not version_re:
+            return 0
+
+        major, minor, patch = version_re.group(0).split(".")
 
         try:
             version_number = (int(major) * 1000000) + (int(major) * 1000) + int(patch)
@@ -151,9 +156,7 @@ class UpdaterApp(Application):
             self._state_text = "latest dev build\n\npress app shoulder button\nto start downloading\n\n(tilt shoulder left to\nswitch to latest version)"
         elif self.fetched_version:
             self.selected_version = self.fetched_version[0]
-            latest_version_number = self.version_to_number(
-                self.selected_version["tag"].replace("v", "")
-            )
+            latest_version_number = self.version_to_number(self.selected_version["tag"])
             self._state_text = f"latest version: \n{self.selected_version['name']}"
             if latest_version_number > self._firmware_version_number:
                 self._state_text += (
@@ -168,7 +171,6 @@ class UpdaterApp(Application):
         super().think(ins, delta_ms)
 
         # TODO: verify hash
-        # TODO: download percentage
 
         if self.input.buttons.app.right.pressed:
             self.use_dev_version = True
-- 
GitLab