From 8392a3fb6b571177abda4eff80119b244c373022 Mon Sep 17 00:00:00 2001 From: "sp.wack" <83104063+amanape@users.noreply.github.com> Date: Fri, 6 Sep 2024 22:45:18 +0300 Subject: [PATCH] Remove unwanted (large) keys when sharing feedback (#3766) --- .../modals/feedback/FeedbackModal.tsx | 4 +- frontend/src/utils/utils.ts | 41 +++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/modals/feedback/FeedbackModal.tsx b/frontend/src/components/modals/feedback/FeedbackModal.tsx index adec7722aaf5..4acae073bd7e 100644 --- a/frontend/src/components/modals/feedback/FeedbackModal.tsx +++ b/frontend/src/components/modals/feedback/FeedbackModal.tsx @@ -8,7 +8,7 @@ import { Feedback, sendFeedback } from "#/services/feedbackService"; import toast from "#/utils/toast"; import { getToken } from "#/services/auth"; import Session from "#/services/session"; -import { removeApiKey } from "#/utils/utils"; +import { removeApiKey, removeUnwantedKeys } from "#/utils/utils"; const isEmailValid = (email: string) => { // Regular expression to validate email format @@ -95,7 +95,7 @@ function FeedbackModal({ email, permissions, token: getToken(), - trajectory: removeApiKey(Session._history), + trajectory: removeApiKey(removeUnwantedKeys(Session._history)), }; try { diff --git a/frontend/src/utils/utils.ts b/frontend/src/utils/utils.ts index 1d4dabd68ba7..4535ada4a2dd 100644 --- a/frontend/src/utils/utils.ts +++ b/frontend/src/utils/utils.ts @@ -10,9 +10,50 @@ interface EventActionHistory { LLM_API_KEY?: string; [key: string]: unknown; }; + extras?: { + open_page_urls: string[]; + active_page_index: number; + dom_object: Record; + axtree_object: Record; + extra_element_properties: Record; + last_browser_action: string; + last_browser_action_error: unknown; + focused_element_bid: string; + }; [key: string]: unknown; } +export const removeUnwantedKeys = ( + data: EventActionHistory[], +): EventActionHistory[] => { + const UNDESIRED_KEYS = [ + "open_page_urls", + "active_page_index", + "dom_object", + "axtree_object", + "extra_element_properties", + "last_browser_action", + "last_browser_action_error", + "focused_element_bid", + ]; + + return data.map((item) => { + // Create a shallow copy of item + const newItem = { ...item }; + + // Check if extras exists and delete it from a new extras object + if (newItem.extras) { + const newExtras = { ...newItem.extras }; + UNDESIRED_KEYS.forEach((key) => { + delete newExtras[key as keyof typeof newExtras]; + }); + newItem.extras = newExtras; + } + + return newItem; + }); +}; + export const removeApiKey = ( data: EventActionHistory[], ): EventActionHistory[] =>