diff --git a/android/app/src/main/java/com/hyzq/boss/WechatSurfaceMapper.java b/android/app/src/main/java/com/hyzq/boss/WechatSurfaceMapper.java index 0c85385..6cb2fd2 100644 --- a/android/app/src/main/java/com/hyzq/boss/WechatSurfaceMapper.java +++ b/android/app/src/main/java/com/hyzq/boss/WechatSurfaceMapper.java @@ -59,9 +59,15 @@ public final class WechatSurfaceMapper { } private static String buildSubtitle(JSONObject source) { - String status = source.optBoolean("online", "online".equals(source.optString("status", ""))) - ? "在线" - : "离线"; + String statusValue = source.optString("status", ""); + String status; + if (source.optBoolean("online", false) || "online".equals(statusValue)) { + status = "在线"; + } else if ("abnormal".equals(statusValue)) { + status = "异常"; + } else { + status = "离线"; + } String account = source.optString("account", ""); if (account.isEmpty()) { return status; diff --git a/android/app/src/test/java/com/hyzq/boss/WechatSurfaceMapperTest.java b/android/app/src/test/java/com/hyzq/boss/WechatSurfaceMapperTest.java index b3f12d0..d7e0c20 100644 --- a/android/app/src/test/java/com/hyzq/boss/WechatSurfaceMapperTest.java +++ b/android/app/src/test/java/com/hyzq/boss/WechatSurfaceMapperTest.java @@ -40,6 +40,19 @@ public class WechatSurfaceMapperTest { assertEquals("在线 · 17600003315", row.subtitle); } + @Test + public void toDeviceRow_preservesAbnormalStatus() throws Exception { + JSONObject item = new StubJSONObject() + .withString("name", "Mac Studio") + .withString("status", "abnormal") + .withString("account", "17600003315"); + + WechatSurfaceMapper.DeviceRow row = WechatSurfaceMapper.toDeviceRow(item); + + assertEquals("Mac Studio", row.title); + assertEquals("异常 · 17600003315", row.subtitle); + } + @Test public void rootMeMenuTitles_matchApprovedSimpleMenu() throws Exception { assertArrayEquals(