From d92b546704c7d10cccfdfb9e892bd24dd8b043fd Mon Sep 17 00:00:00 2001 From: greg-in-a-box <103291617+greg-in-a-box@users.noreply.github.com> Date: Tue, 4 Feb 2025 11:48:27 -0500 Subject: [PATCH] fix(content-sidebar): Fixed circular dependency for box ai sidebar (#3884) Apply suggestions from code review Co-authored-by: Trevor <7311041+tjuanitas@users.noreply.github.com> --- src/elements/content-sidebar/BoxAISidebar.tsx | 27 ++----------------- .../content-sidebar/BoxAISidebarContent.tsx | 2 +- .../context/BoxAISidebarContext.ts | 27 +++++++++++++++++++ 3 files changed, 30 insertions(+), 26 deletions(-) create mode 100644 src/elements/content-sidebar/context/BoxAISidebarContext.ts diff --git a/src/elements/content-sidebar/BoxAISidebar.tsx b/src/elements/content-sidebar/BoxAISidebar.tsx index d9d5665134..448e14fa7a 100644 --- a/src/elements/content-sidebar/BoxAISidebar.tsx +++ b/src/elements/content-sidebar/BoxAISidebar.tsx @@ -3,38 +3,15 @@ * @author Box */ import * as React from 'react'; -import noop from 'lodash/noop'; import { useIntl } from 'react-intl'; import { type QuestionType } from '@box/box-ai-content-answers'; import { RecordActionType } from '@box/box-ai-agent-selector'; import BoxAISidebarContent from './BoxAISidebarContent'; +import { BoxAISidebarContext } from './context/BoxAISidebarContext'; import { DOCUMENT_SUGGESTED_QUESTIONS, SPREADSHEET_FILE_EXTENSIONS } from '../common/content-answers/constants'; import messages from '../common/content-answers/messages'; -export interface BoxAISidebarContextValues { - cache: { encodedSession?: string | null; questions?: QuestionType[] }; - contentName: string; - elementId: string; - fileExtension: string; - isStopResponseEnabled: boolean; - itemSize?: string; - recordAction: (params: RecordActionType) => void; - setCacheValue: (key: 'encodedSession' | 'questions', value: string | null | QuestionType[]) => void; - userInfo: { name: string; avatarURL: string }; -} - -export const BoxAISidebarContext = React.createContext({ - cache: null, - contentName: '', - elementId: '', - fileExtension: '', - isStopResponseEnabled: false, - recordAction: noop, - setCacheValue: noop, - userInfo: { name: '', avatarURL: '' }, -}); - export interface BoxAISidebarProps { contentName: string; cache: { encodedSession?: string | null; questions?: QuestionType[] }; @@ -107,7 +84,7 @@ const BoxAISidebar = (props: BoxAISidebarProps) => { }, []); React.useEffect(() => { - document.addEventListener('keydown', handleKeyPress,{ capture: true }); + document.addEventListener('keydown', handleKeyPress, { capture: true }); return () => { document.removeEventListener('keydown', handleKeyPress, { capture: true }); }; diff --git a/src/elements/content-sidebar/BoxAISidebarContent.tsx b/src/elements/content-sidebar/BoxAISidebarContent.tsx index 40a4a8c5ed..9723689c2b 100644 --- a/src/elements/content-sidebar/BoxAISidebarContent.tsx +++ b/src/elements/content-sidebar/BoxAISidebarContent.tsx @@ -24,7 +24,7 @@ import { withLogger } from '../common/logger'; import { ORIGIN_BOXAI_SIDEBAR, SIDEBAR_VIEW_BOXAI } from '../../constants'; import { EVENT_JS_READY } from '../common/logger/constants'; import { mark } from '../../utils/performance'; -import { BoxAISidebarContext } from './BoxAISidebar'; +import { BoxAISidebarContext } from './context/BoxAISidebarContext'; import messages from '../common/messages'; diff --git a/src/elements/content-sidebar/context/BoxAISidebarContext.ts b/src/elements/content-sidebar/context/BoxAISidebarContext.ts new file mode 100644 index 0000000000..651356b2c9 --- /dev/null +++ b/src/elements/content-sidebar/context/BoxAISidebarContext.ts @@ -0,0 +1,27 @@ +import * as React from 'react'; +import noop from 'lodash/noop'; +import { RecordActionType } from '@box/box-ai-agent-selector'; +import type { QuestionType } from '@box/box-ai-content-answers'; + +export interface BoxAISidebarContextValues { + cache: { encodedSession?: string | null; questions?: QuestionType[] }; + contentName: string; + elementId: string; + fileExtension: string; + isStopResponseEnabled: boolean; + itemSize?: string; + recordAction: (params: RecordActionType) => void; + setCacheValue: (key: 'encodedSession' | 'questions', value: string | null | QuestionType[]) => void; + userInfo: { name: string; avatarURL: string }; +} + +export const BoxAISidebarContext = React.createContext({ + cache: null, + contentName: '', + elementId: '', + fileExtension: '', + isStopResponseEnabled: false, + recordAction: noop, + setCacheValue: noop, + userInfo: { name: '', avatarURL: '' }, +});