fix(ui): localize native Android action displays
This commit is contained in:
1 parent
4b12ae7728
commit
6a69a595ef
5 files changed
+192
-3
No files matched your search
@@ -16,6 +16,7 @@
|
||||
|
||||
import { ActionParam } from '../core/models/stream.model';
|
||||
import { extractNumbersFromCoordinateValue, isPureDirectionString, parseSequenceCoordinates } from './image-overlay.util';
|
||||
import { formatNativeActionParam, getNativeActionArgs, getNativeActionTitle } from './native-action-labels.util';
|
||||
|
||||
// Tool objects are replaced (not mutated) when a trace is updated, so a
|
||||
// WeakMap keyed on the tool is a safe memo for the parsed-args lookup that
|
||||
@@ -553,6 +554,8 @@ export function getToolDisplayLabel(tool: any, isFirstSaveNote: boolean = false)
|
||||
const cleanName = tool.name.replace(/^(_)?exec_/, '');
|
||||
const nameLower = cleanName.toLowerCase();
|
||||
const args = getToolArgs(tool);
|
||||
const nativeTitle = getNativeActionTitle(tool.name, args);
|
||||
if (nativeTitle) return nativeTitle;
|
||||
|
||||
switch (nameLower) {
|
||||
case 'manage_app':
|
||||
@@ -899,6 +902,8 @@ export function getToolIcon(tool: any): string {
|
||||
*/
|
||||
export function getToolTitle(tool: any): string {
|
||||
if (!tool || !tool.name) return "工具调用";
|
||||
const nativeTitle = getNativeActionTitle(tool.name, getToolArgs(tool));
|
||||
if (nativeTitle) return nativeTitle;
|
||||
const cleanName = tool.name.replace(/^(_)?exec_/, '');
|
||||
const name = cleanName.toLowerCase();
|
||||
switch (name) {
|
||||
@@ -1191,6 +1196,9 @@ export function getAdbTerminalId(tool: any): string {
|
||||
*/
|
||||
export function getToolGenericDetails(tool: any): string {
|
||||
if (!tool) return '';
|
||||
if (getNativeActionTitle(tool.name || '', getToolArgs(tool))) {
|
||||
return extractToolExtraParams(tool).map(param => `${param.key}:${param.value}`).join(',');
|
||||
}
|
||||
if (isAdbCommandTool(tool)) {
|
||||
return '';
|
||||
}
|
||||
@@ -1235,7 +1243,9 @@ export function getToolErrorMessage(tool: any): string {
|
||||
*/
|
||||
export function extractToolExtraParams(toolData: any, cache?: WeakMap<any, ActionParam[]>): ActionParam[] {
|
||||
if (!toolData) return [];
|
||||
const payload = toolData.payload || toolData.args || toolData;
|
||||
const nativeArgs = getNativeActionArgs(getToolArgs(toolData));
|
||||
const native = getNativeActionTitle(toolData.name || '', nativeArgs) !== null;
|
||||
const payload = native ? nativeArgs : (toolData.payload || toolData.args || toolData);
|
||||
if (!payload || typeof payload !== 'object') return [];
|
||||
if (cache && cache.has(payload)) {
|
||||
return cache.get(payload)!;
|
||||
@@ -1272,11 +1282,16 @@ export function extractToolExtraParams(toolData: any, cache?: WeakMap<any, Actio
|
||||
}
|
||||
|
||||
const mergedObj = { ...toolData, ...(typeof payload === 'object' ? payload : {}), ...parsedArgs };
|
||||
if (native) Object.assign(mergedObj, nativeArgs);
|
||||
|
||||
for (const [k, v] of Object.entries(mergedObj)) {
|
||||
const lowerK = k.toLowerCase();
|
||||
if (standardKeys.has(lowerK)) continue;
|
||||
if (standardKeys.has(lowerK) && !(native && lowerK === 'target')) continue;
|
||||
if (v === null || v === undefined || v === '') continue;
|
||||
if (native) {
|
||||
result.push(formatNativeActionParam(k, v));
|
||||
continue;
|
||||
}
|
||||
|
||||
let valStr = String(v);
|
||||
if (valStr.includes('object at 0x') || valStr.startsWith('<artemis.') || valStr.includes('<controller') || valStr.includes('<android_world')) continue;
|
||||
|
||||
Reference in new issue
Block a user