From 5287b37f459de0079fed3908ce3d218b709e39c3 Mon Sep 17 00:00:00 2001
From: matt1432 <matt@nelim.org>
Date: Mon, 26 Feb 2024 01:48:55 -0500
Subject: [PATCH] feat(ags razer): hide percent when charging

---
 .../ags/config/ts/bar/items/razer-stats.ts    | 80 ++++++++-----------
 1 file changed, 34 insertions(+), 46 deletions(-)

diff --git a/modules/ags/config/ts/bar/items/razer-stats.ts b/modules/ags/config/ts/bar/items/razer-stats.ts
index ebf068b9..267f4ca8 100644
--- a/modules/ags/config/ts/bar/items/razer-stats.ts
+++ b/modules/ags/config/ts/bar/items/razer-stats.ts
@@ -53,53 +53,41 @@ const fetchInfo = () => {
 
 interval(RAZER_POLL, fetchInfo);
 
-// TODO: add charging indicator
-export default () => Box({
-    class_name: 'razer',
-    children: [
-        Icon({
-            hpack: 'start',
-            icon: RazerBat.bind().transform((v) => {
-                return v.disconnected ?
-                    'content-loading-symbolic' :
-                    'mouse-razer-symbolic';
-            }),
-            setup: (self) => {
-                self.hook(RazerBat, () => {
-                    const v = RazerBat.value;
+export default () => {
+    const percentage = Label({ vpack: 'center' });
 
-                    self.setCss(
-                        v.disconnected ?
-                            'margin-right: -5px;' :
-                            '',
-                    );
+    const icon = Icon({ hpack: 'start' })
+        .hook(RazerBat, (self) => {
+            const v = RazerBat.value;
 
-                    self.toggleClassName(
-                        'high',
-                        v.battery > 66,
-                    );
-                    self.toggleClassName(
-                        'medium',
-                        v.battery > LOW_BATT && v.battery <= 66,
-                    );
-                    self.toggleClassName(
-                        'low',
-                        v.battery <= LOW_BATT,
-                    );
-                });
-            },
-        }),
+            percentage.visible = !(v.disconnected || v.charging);
+            percentage.label = `${v.battery}%`;
 
-        Label({
-            vpack: 'center',
-            label: RazerBat.bind().transform((v) => {
-                if (!v.disconnected) {
-                    // TODO: find better way to indicate charging
-                    return v.battery + (v.charging ? '󱐋' : '%');
-                }
+            self.icon = v.disconnected ?
+                'content-loading-symbolic' :
+                'mouse-razer-symbolic';
+            self.setCss(
+                v.disconnected || v.charging ?
+                    'margin-right: -5px;' :
+                    '',
+            );
 
-                return '';
-            }),
-        }),
-    ],
-});
+            self.toggleClassName(
+                'high',
+                v.battery > 66,
+            );
+            self.toggleClassName(
+                'medium',
+                v.battery > LOW_BATT && v.battery <= 66,
+            );
+            self.toggleClassName(
+                'low',
+                v.battery <= LOW_BATT,
+            );
+        });
+
+    return Box({
+        class_name: 'razer',
+        children: [icon, percentage],
+    });
+};