diff --git a/src/renderer/src/config/providers.ts b/src/renderer/src/config/providers.ts index 88aceda957..9e2831ee6e 100644 --- a/src/renderer/src/config/providers.ts +++ b/src/renderer/src/config/providers.ts @@ -1089,7 +1089,7 @@ export const PROVIDER_URLS: Record = { websites: { official: 'https://platform.minimaxi.com/', apiKey: 'https://platform.minimaxi.com/user-center/basic-information/interface-key', - docs: 'https://platform.minimaxi.com/document/Announcement', + docs: 'https://platform.minimaxi.com/docs/api-reference/text-openai-api', models: 'https://platform.minimaxi.com/document/Models' } }, diff --git a/src/renderer/src/hooks/useAppInit.ts b/src/renderer/src/hooks/useAppInit.ts index 1c9f5adeee..c847c3b7d8 100644 --- a/src/renderer/src/hooks/useAppInit.ts +++ b/src/renderer/src/hooks/useAppInit.ts @@ -13,7 +13,6 @@ import { useAppDispatch } from '@renderer/store' import { useAppSelector } from '@renderer/store' import { handleSaveData } from '@renderer/store' import { selectMemoryConfig } from '@renderer/store/memory' -import { setIsOvmsSupported } from '@renderer/store/runtime' import { type ToolPermissionRequestPayload, type ToolPermissionResultPayload, @@ -275,17 +274,4 @@ export function useAppInit() { useEffect(() => { checkDataLimit() }, []) - - useEffect(() => { - // Check once when initing - window.api.ovms - .isSupported() - .then((result) => { - dispatch(setIsOvmsSupported(result)) - }) - .catch((e) => { - logger.error('Failed to check isOvmsSupported. Fallback to false.', e as Error) - dispatch(setIsOvmsSupported(false)) - }) - }, [dispatch]) } diff --git a/src/renderer/src/pages/settings/ProviderSettings/ProviderList.tsx b/src/renderer/src/pages/settings/ProviderSettings/ProviderList.tsx index bf72bcb293..6246804ed8 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ProviderList.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ProviderList.tsx @@ -9,7 +9,6 @@ import { import { DeleteIcon, EditIcon } from '@renderer/components/Icons' import { ProviderAvatar } from '@renderer/components/ProviderAvatar' import { useAllProviders, useProviders } from '@renderer/hooks/useProvider' -import { useRuntime } from '@renderer/hooks/useRuntime' import { useTimer } from '@renderer/hooks/useTimer' import ImageStorage from '@renderer/services/ImageStorage' import type { Provider, ProviderType } from '@renderer/types' @@ -23,6 +22,7 @@ import { startTransition, useCallback, useEffect, useRef, useState } from 'react import { useTranslation } from 'react-i18next' import { useSearchParams } from 'react-router-dom' import styled from 'styled-components' +import useSWRImmutable from 'swr/immutable' import AddProviderPopup from './AddProviderPopup' import ModelNotesPopup from './ModelNotesPopup' @@ -33,6 +33,16 @@ const logger = loggerService.withContext('ProviderList') const BUTTON_WRAPPER_HEIGHT = 50 +const getIsOvmsSupported = async (): Promise => { + try { + const result = await window.api.ovms.isSupported() + return result + } catch (e) { + logger.warn('Fetching isOvmsSupported failed. Fallback to false.', e as Error) + return false + } +} + const ProviderList: FC = () => { const [searchParams, setSearchParams] = useSearchParams() const providers = useAllProviders() @@ -44,7 +54,8 @@ const ProviderList: FC = () => { const [dragging, setDragging] = useState(false) const [providerLogos, setProviderLogos] = useState>({}) const listRef = useRef(null) - const { isOvmsSupported } = useRuntime() + + const { data: isOvmsSupported } = useSWRImmutable('ovms/isSupported', getIsOvmsSupported) const setSelectedProvider = useCallback((provider: Provider) => { startTransition(() => _setSelectedProvider(provider)) @@ -279,6 +290,7 @@ const ProviderList: FC = () => { } const filteredProviders = providers.filter((provider) => { + // don't show it when isOvmsSupported is loading if (provider.id === 'ovms' && !isOvmsSupported) { return false } diff --git a/src/renderer/src/store/runtime.ts b/src/renderer/src/store/runtime.ts index 3efbc79f20..88b795c295 100644 --- a/src/renderer/src/store/runtime.ts +++ b/src/renderer/src/store/runtime.ts @@ -72,7 +72,6 @@ export interface RuntimeState { // chat: ChatState // websearch: WebSearchState placeHolder: string - isOvmsSupported: boolean | undefined } // export interface ExportState { @@ -116,8 +115,7 @@ const initialState: RuntimeState = { // websearch: { // activeSearches: {} // }, - placeHolder: '', - isOvmsSupported: undefined + placeHolder: '' } const runtimeSlice = createSlice({ @@ -163,9 +161,6 @@ const runtimeSlice = createSlice({ // setExportState: (state, action: PayloadAction>) => { // state.export = { ...state.export, ...action.payload } // }, - setIsOvmsSupported: (state, action: PayloadAction) => { - state.isOvmsSupported = action.payload - }, // // Chat related actions // toggleMultiSelectMode: (state, action: PayloadAction) => { // state.chat.isMultiSelectMode = action.payload @@ -232,7 +227,6 @@ export const { // setResourcesPath, // setUpdateState, // setExportState, - setIsOvmsSupported, // // Chat related actions // toggleMultiSelectMode, // setSelectedMessageIds,