summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYurenHao0426 <blackhao0426@gmail.com>2026-02-13 18:43:35 +0000
committerYurenHao0426 <blackhao0426@gmail.com>2026-02-13 18:43:35 +0000
commitfb72ce4fa11ca1f3252bdf24c489de2d16097752 (patch)
treedd5db9d437035018a3c28b74617970f56f0ede52
parent2137e76e9dfcc13a2fcb1753844762cc4b99582a (diff)
Remove provider badge from file list and add upload indicator to right sidebar
- Remove per-provider label from left sidebar file list since files are now uploaded to all providers simultaneously - Add uploading spinner to right sidebar "Upload & Attach" button - Always upload with provider 'local' from right sidebar settings tab Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
-rw-r--r--frontend/src/components/LeftSidebar.tsx5
-rw-r--r--frontend/src/components/Sidebar.tsx24
2 files changed, 9 insertions, 20 deletions
diff --git a/frontend/src/components/LeftSidebar.tsx b/frontend/src/components/LeftSidebar.tsx
index 5c464bb..54c2527 100644
--- a/frontend/src/components/LeftSidebar.tsx
+++ b/frontend/src/components/LeftSidebar.tsx
@@ -1041,11 +1041,6 @@ const LeftSidebar: React.FC<LeftSidebarProps> = ({ isOpen, onToggle }) => {
<span className={`text-[11px] ${isDark ? 'text-gray-500' : 'text-gray-500'}`}>
{formatSize(f.size)} • {new Date(f.created_at * 1000).toLocaleString()}
</span>
- {f.provider && (
- <span className={`text-[11px] inline-flex items-center gap-1 mt-0.5 px-2 py-0.5 rounded ${isDark ? 'bg-gray-800 text-gray-300 border border-gray-700' : 'bg-gray-100 text-gray-700 border border-gray-200'}`}>
- Provider: {f.provider === 'openai' ? 'OpenAI' : f.provider === 'google' ? 'Gemini' : f.provider}
- </span>
- )}
</div>
<div className="flex items-center gap-2">
<button
diff --git a/frontend/src/components/Sidebar.tsx b/frontend/src/components/Sidebar.tsx
index 65d5cd2..f3a0679 100644
--- a/frontend/src/components/Sidebar.tsx
+++ b/frontend/src/components/Sidebar.tsx
@@ -38,6 +38,7 @@ const Sidebar: React.FC<SidebarProps> = ({ isOpen, onToggle, onInteract }) => {
const [showAttachModal, setShowAttachModal] = useState(false);
const [attachSearch, setAttachSearch] = useState('');
const settingsUploadRef = useRef<HTMLInputElement>(null);
+ const [settingsUploading, setSettingsUploading] = useState(false);
// Response Modal & Edit states
const [isModalOpen, setIsModalOpen] = useState(false);
@@ -164,22 +165,15 @@ const Sidebar: React.FC<SidebarProps> = ({ isOpen, onToggle, onInteract }) => {
const handleUploadAndAttach = async (e: React.ChangeEvent<HTMLInputElement>) => {
if (!e.target.files || e.target.files.length === 0 || !selectedNode) return;
const file = e.target.files[0];
+ setSettingsUploading(true);
try {
- // Determine provider based on node model
- const model = selectedNode.data.model;
- let provider: 'local' | 'openai' | 'google' = 'local';
- if (model.startsWith('gpt') || model.startsWith('o1') || model.startsWith('o3')) {
- provider = 'openai';
- } else if (model.startsWith('gemini')) {
- provider = 'google';
- }
-
- const meta = await uploadFile(file, { provider });
+ const meta = await uploadFile(file, { provider: 'local' });
handleAttach(meta.id);
} catch (err) {
alert(`Upload failed: ${(err as Error).message}`);
} finally {
e.target.value = '';
+ setSettingsUploading(false);
}
};
@@ -1937,16 +1931,16 @@ const Sidebar: React.FC<SidebarProps> = ({ isOpen, onToggle, onInteract }) => {
<div className="flex gap-2 mb-3">
<button
onClick={() => settingsUploadRef.current?.click()}
- disabled={isGemini}
+ disabled={isGemini || settingsUploading}
className={`flex-1 flex items-center justify-center gap-1.5 py-1.5 px-3 rounded text-xs font-medium transition-colors ${
- isGemini
+ isGemini || settingsUploading
? 'opacity-50 cursor-not-allowed bg-gray-400 text-gray-200'
: isDark ? 'bg-blue-600 hover:bg-blue-700 text-white' : 'bg-blue-600 hover:bg-blue-700 text-white'
}`}
- title={isGemini ? 'Not supported for Gemini models' : 'Upload & Attach'}
+ title={isGemini ? 'Not supported for Gemini models' : settingsUploading ? 'Uploading...' : 'Upload & Attach'}
>
- <Upload size={14} />
- Upload & Attach
+ {settingsUploading ? <Loader2 size={14} className="animate-spin" /> : <Upload size={14} />}
+ {settingsUploading ? 'Uploading...' : 'Upload & Attach'}
</button>
<input
ref={settingsUploadRef}