From 459b301939d38f26dff66be5c1295b0731ad320d Mon Sep 17 00:00:00 2001 From: kris Date: Fri, 3 Apr 2026 09:51:21 +0800 Subject: [PATCH] style: unify project detail top menu --- .../com/hyzq/boss/ProjectDetailActivity.java | 20 +++++++++++++++++- ...jectDetailActivityMasterAgentMenuTest.java | 21 +++++++++++++++++++ .../boss/ProjectDetailActivityUiTest.java | 21 +++++++++++++++++++ 3 files changed, 61 insertions(+), 1 deletion(-) diff --git a/android/app/src/main/java/com/hyzq/boss/ProjectDetailActivity.java b/android/app/src/main/java/com/hyzq/boss/ProjectDetailActivity.java index 1161b1a..cde54b8 100644 --- a/android/app/src/main/java/com/hyzq/boss/ProjectDetailActivity.java +++ b/android/app/src/main/java/com/hyzq/boss/ProjectDetailActivity.java @@ -700,6 +700,24 @@ public class ProjectDetailActivity extends BossScreenActivity { .show(); } + private void showConversationMoreMenu() { + new AlertDialog.Builder(this) + .setItems(new CharSequence[]{"会话信息", "刷新"}, (dialog, which) -> { + switch (which) { + case 0: + openConversationInfo(); + break; + case 1: + reload(true); + break; + default: + dialog.dismiss(); + break; + } + }) + .show(); + } + private void showMasterAgentModelPicker() { if (!isMasterAgentConversation()) { return; @@ -1452,7 +1470,7 @@ public class ProjectDetailActivity extends BossScreenActivity { } else if (isMasterAgentConversation()) { setHeaderAction("...", v -> showMasterAgentMoreMenu()); } else if (bindings.showHeaderAction) { - setHeaderAction(WechatSurfaceMapper.conversationInfoActionLabel(), v -> openConversationInfo()); + setHeaderAction("...", v -> showConversationMoreMenu()); } else { hideHeaderAction(); } diff --git a/android/app/src/test/java/com/hyzq/boss/ProjectDetailActivityMasterAgentMenuTest.java b/android/app/src/test/java/com/hyzq/boss/ProjectDetailActivityMasterAgentMenuTest.java index 8dfecf5..03ebd95 100644 --- a/android/app/src/test/java/com/hyzq/boss/ProjectDetailActivityMasterAgentMenuTest.java +++ b/android/app/src/test/java/com/hyzq/boss/ProjectDetailActivityMasterAgentMenuTest.java @@ -50,6 +50,27 @@ public class ProjectDetailActivityMasterAgentMenuTest { assertMenuItem(listView, 5, "刷新"); } + @Test + public void normalConversationMoreMenuShowsInfoAndRefresh() { + Intent intent = new Intent() + .putExtra(ProjectDetailActivity.EXTRA_PROJECT_ID, "project-1") + .putExtra(ProjectDetailActivity.EXTRA_PROJECT_NAME, "Boss 移动控制台"); + ProjectDetailActivityUiTest.TestProjectDetailActivity activity = Robolectric + .buildActivity(ProjectDetailActivityUiTest.TestProjectDetailActivity.class, intent) + .setup() + .get(); + + ReflectionHelpers.callInstanceMethod(activity, "showConversationMoreMenu"); + + android.app.Dialog latestDialog = ShadowDialog.getLatestDialog(); + assertTrue(latestDialog instanceof AlertDialog); + AlertDialog actionDialog = (AlertDialog) latestDialog; + ListView listView = actionDialog.getListView(); + + assertMenuItem(listView, 0, "会话信息"); + assertMenuItem(listView, 1, "刷新"); + } + @Test public void masterAgentWaitingStateRendersThinkingPlaceholder() throws Exception { Intent intent = new Intent() diff --git a/android/app/src/test/java/com/hyzq/boss/ProjectDetailActivityUiTest.java b/android/app/src/test/java/com/hyzq/boss/ProjectDetailActivityUiTest.java index 82f1cd9..cb367d5 100644 --- a/android/app/src/test/java/com/hyzq/boss/ProjectDetailActivityUiTest.java +++ b/android/app/src/test/java/com/hyzq/boss/ProjectDetailActivityUiTest.java @@ -253,6 +253,27 @@ public class ProjectDetailActivityUiTest { assertEquals("...", headerAction.getText().toString()); } + @Test + public void normalConversationHeaderUsesWechatMoreMenuLabel() { + Intent intent = new Intent() + .putExtra(ProjectDetailActivity.EXTRA_PROJECT_ID, "project-1") + .putExtra(ProjectDetailActivity.EXTRA_PROJECT_NAME, "Boss 移动控制台"); + TestProjectDetailActivity activity = Robolectric + .buildActivity(TestProjectDetailActivity.class, intent) + .setup() + .get(); + + ReflectionHelpers.setField(activity, "conversationInfoReady", true); + ReflectionHelpers.setField(activity, "currentScreenTitle", "Boss 移动控制台"); + ReflectionHelpers.setField(activity, "currentScreenSubtitle", "归档确认"); + + ReflectionHelpers.callInstanceMethod(activity, "updateSelectionUi"); + + Button headerAction = activity.findViewById(R.id.screen_header_action); + assertEquals(View.VISIBLE, headerAction.getVisibility()); + assertEquals("...", headerAction.getText().toString()); + } + @Test public void renderProjectKeepsMasterAgentWaitingStateVisibleInMessageFlow() throws Exception { Intent intent = new Intent()