From a1d686682a91988ff74316fff65f6393e0dec650 Mon Sep 17 00:00:00 2001 From: ironAiken2 <51399982+ironAiken2@users.noreply.github.com> Date: Tue, 11 Nov 2025 07:57:52 +0000 Subject: [PATCH] feat(FR-1656): enhance file browser session notifications with primary app option (#4602) Resolves #4598 ([FR-1656](https://lablup.atlassian.net/browse/FR-1656)) ## Summary This PR enhances file browser session notifications by adding a primary app option for file browser, similar to how Jupyter notebooks are handled. This helps users understand when they're creating file browser-specific sessions. ## Changes - Added new `BAIFileBrowserIcon` React component for file browser icon - Added file browser SVG icon asset - Enhanced `SessionActionButtons` to support "filebrowser" as a primary app option - Updated `FolderExplorerHeader` to pass filebrowser app option in session notifications ## Test Plan - [x] File browser icon displays correctly in session action buttons - [x] Session notifications properly indicate file browser sessions - [x] Primary app option works for both Jupyter and file browser [FR-1656]: https://lablup.atlassian.net/browse/FR-1656?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ --- .../src/icons/BAIFileBrowserIcon.tsx | 11 ++ .../backend.ai-ui/src/icons/Filebrowser.svg | 42 ++++++ packages/backend.ai-ui/src/icons/index.ts | 1 + .../SessionActionButtons.tsx | 120 ++++++++++++------ react/src/components/FolderExplorerHeader.tsx | 9 +- 5 files changed, 144 insertions(+), 39 deletions(-) create mode 100644 packages/backend.ai-ui/src/icons/BAIFileBrowserIcon.tsx create mode 100644 packages/backend.ai-ui/src/icons/Filebrowser.svg diff --git a/packages/backend.ai-ui/src/icons/BAIFileBrowserIcon.tsx b/packages/backend.ai-ui/src/icons/BAIFileBrowserIcon.tsx new file mode 100644 index 0000000000..279015f0f6 --- /dev/null +++ b/packages/backend.ai-ui/src/icons/BAIFileBrowserIcon.tsx @@ -0,0 +1,11 @@ +import { default as logo } from './Filebrowser.svg?react'; +import Icon from '@ant-design/icons'; +import { CustomIconComponentProps } from '@ant-design/icons/lib/components/Icon'; + +interface BAIFileBrowserIconProps + extends Omit {} +const BAIFileBrowserIcon: React.FC = (props) => { + return ; +}; + +export default BAIFileBrowserIcon; diff --git a/packages/backend.ai-ui/src/icons/Filebrowser.svg b/packages/backend.ai-ui/src/icons/Filebrowser.svg new file mode 100644 index 0000000000..45b67afb08 --- /dev/null +++ b/packages/backend.ai-ui/src/icons/Filebrowser.svg @@ -0,0 +1,42 @@ + + + + +Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + + + + + + + + diff --git a/packages/backend.ai-ui/src/icons/index.ts b/packages/backend.ai-ui/src/icons/index.ts index ab8e4b5e5b..e43af2b567 100644 --- a/packages/backend.ai-ui/src/icons/index.ts +++ b/packages/backend.ai-ui/src/icons/index.ts @@ -41,3 +41,4 @@ export { default as BAIUserUnionIcon } from './BAIUserUnionIcon'; export { default as BAIHuggingFaceIcon } from './BAIHuggingFaceIcon'; export { default as BAISftpIcon } from './BAISftpIcon'; export { default as BAIJupyterIcon } from './BAIJupyterIcon'; +export { default as BAIFileBrowserIcon } from './BAIFileBrowserIcon'; diff --git a/react/src/components/ComputeSessionNodeItems/SessionActionButtons.tsx b/react/src/components/ComputeSessionNodeItems/SessionActionButtons.tsx index 831d536423..b163606bbb 100644 --- a/react/src/components/ComputeSessionNodeItems/SessionActionButtons.tsx +++ b/react/src/components/ComputeSessionNodeItems/SessionActionButtons.tsx @@ -14,6 +14,7 @@ import { Tooltip, Button, theme, Space, ButtonProps } from 'antd'; import { BAIAppIcon, BAIContainerCommitIcon, + BAIFileBrowserIcon, BAIJupyterIcon, BAISessionLogIcon, BAISftpIcon, @@ -36,7 +37,7 @@ type SessionActionButtonKey = | 'terminate'; export type PrimaryAppOption = { - appName: 'jupyter'; + appName: 'jupyter' | 'filebrowser'; urlPostfix?: string; }; @@ -146,44 +147,87 @@ const SessionActionButtons: React.FC = ({ return session ? ( <> - {primaryAppOption && primaryAppOption.appName === 'jupyter' && ( - -