From 30823691f96e6cb052db7e2586333768c907b8c3 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Thu, 12 Jun 2025 10:13:42 +0800 Subject: [PATCH] refactor(SettingsPage): implement lazy loading for ProvidersList with Suspense and Spin component; remove unnecessary loading state from ProvidersList --- .../src/pages/settings/ProviderSettings/index.tsx | 15 +-------------- src/renderer/src/pages/settings/SettingsPage.tsx | 12 ++++++++++-- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/renderer/src/pages/settings/ProviderSettings/index.tsx b/src/renderer/src/pages/settings/ProviderSettings/index.tsx index 33f2d32d35..bb06dfe995 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/index.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/index.tsx @@ -7,7 +7,7 @@ import ImageStorage from '@renderer/services/ImageStorage' import { INITIAL_PROVIDERS } from '@renderer/store/llm' import { Provider } from '@renderer/types' import { droppableReorder, generateColorFromChar, getFirstCharacter, uuid } from '@renderer/utils' -import { Avatar, Button, Dropdown, Input, MenuProps, Spin, Tag } from 'antd' +import { Avatar, Button, Dropdown, Input, MenuProps, Tag } from 'antd' import { Search, UserPen } from 'lucide-react' import { FC, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' @@ -27,7 +27,6 @@ const ProvidersList: FC = () => { const [searchText, setSearchText] = useState('') const [dragging, setDragging] = useState(false) const [providerLogos, setProviderLogos] = useState>({}) - const [ready, setReady] = useState(false) useEffect(() => { const loadAllLogos = async () => { @@ -242,18 +241,6 @@ const ProvidersList: FC = () => { return isProviderMatch || isModelMatch }) - useEffect(() => { - setTimeout(() => setReady(true), 200) - }, []) - - if (!ready) { - return ( -
- -
- ) - } - return ( diff --git a/src/renderer/src/pages/settings/SettingsPage.tsx b/src/renderer/src/pages/settings/SettingsPage.tsx index 6c84970b2a..897713adf6 100644 --- a/src/renderer/src/pages/settings/SettingsPage.tsx +++ b/src/renderer/src/pages/settings/SettingsPage.tsx @@ -1,5 +1,6 @@ import { NavbarCenter, NavbarMain } from '@renderer/components/app/Navbar' import ModelSettings from '@renderer/pages/settings/ModelSettings/ModelSettings' +import { Spin } from 'antd' import { Cloud, Command, @@ -13,7 +14,7 @@ import { TextCursorInput, Zap } from 'lucide-react' -import { FC } from 'react' +import { FC, Suspense } from 'react' import { useTranslation } from 'react-i18next' import { Link, Route, Routes, useLocation } from 'react-router-dom' import styled from 'styled-components' @@ -111,7 +112,14 @@ const SettingsPage: FC = () => { - } /> + }> + + + } + /> } /> } /> } />