aboutsummaryrefslogtreecommitdiffstats
path: root/desktop
diff options
context:
space:
mode:
Diffstat (limited to 'desktop')
-rw-r--r--desktop/island/Logic.js4
-rw-r--r--desktop/island/test_logic.js3
2 files changed, 6 insertions, 1 deletions
diff --git a/desktop/island/Logic.js b/desktop/island/Logic.js
index 8df35de..e79625c 100644
--- a/desktop/island/Logic.js
+++ b/desktop/island/Logic.js
@@ -13,7 +13,9 @@
// The default sink's icon name. Thresholds in thirds, as waybar's wb-icon did.
function volumeIcon(volume, muted) {
- if (muted || volume <= 0) return "audio-volume-muted";
+ // !(> 0) also catches a volume not populated yet (undefined, NaN), which
+ // would otherwise fall through every test and read as high.
+ if (muted || !(volume > 0)) return "audio-volume-muted";
if (volume < 0.33) return "audio-volume-low";
if (volume < 0.66) return "audio-volume-medium";
return "audio-volume-high";
diff --git a/desktop/island/test_logic.js b/desktop/island/test_logic.js
index 44e7a73..5932991 100644
--- a/desktop/island/test_logic.js
+++ b/desktop/island/test_logic.js
@@ -14,6 +14,9 @@ const L = new Function(src +
assert.strictEqual(L.volumeIcon(0.5, true), "audio-volume-muted");
assert.strictEqual(L.volumeIcon(0, false), "audio-volume-muted");
assert.strictEqual(L.volumeIcon(0.2, false), "audio-volume-low");
+assert.strictEqual(L.volumeIcon(undefined, false), "audio-volume-muted");
+assert.strictEqual(L.volumeIcon(NaN, false), "audio-volume-muted");
+assert.strictEqual(L.volumeIcon(0.33, false), "audio-volume-medium");
assert.strictEqual(L.volumeIcon(0.5, false), "audio-volume-medium");
assert.strictEqual(L.volumeIcon(0.66, false), "audio-volume-high");
assert.strictEqual(L.volumeIcon(1.2, false), "audio-volume-high");