fix: image upload button does not work - refresh models list persist current selected engine (#4768)
This commit is contained in:
parent
45f957475d
commit
889ab953e0
@ -477,20 +477,23 @@ export const useRefreshModelList = (engine: string) => {
|
|||||||
const [refreshingModels, setRefreshingModels] = useState(false)
|
const [refreshingModels, setRefreshingModels] = useState(false)
|
||||||
const { mutate: fetchRemoteModels } = useGetRemoteModels(engine)
|
const { mutate: fetchRemoteModels } = useGetRemoteModels(engine)
|
||||||
|
|
||||||
const refreshModels = useCallback(() => {
|
const refreshModels = useCallback(
|
||||||
setRefreshingModels(true)
|
(engine: string) => {
|
||||||
fetchRemoteModels()
|
setRefreshingModels(true)
|
||||||
.then((remoteModelList) =>
|
fetchRemoteModels()
|
||||||
Promise.all(
|
.then((remoteModelList) =>
|
||||||
remoteModelList?.data?.map((model: { id?: string }) =>
|
Promise.all(
|
||||||
model?.id
|
remoteModelList?.data?.map((model: { id?: string }) =>
|
||||||
? addRemoteEngineModel(model.id, engine).catch(() => {})
|
model?.id
|
||||||
: {}
|
? addRemoteEngineModel(model.id, engine).catch(() => {})
|
||||||
) ?? []
|
: {}
|
||||||
|
) ?? []
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
.finally(() => setRefreshingModels(false))
|
||||||
.finally(() => setRefreshingModels(false))
|
},
|
||||||
}, [fetchRemoteModels])
|
[fetchRemoteModels]
|
||||||
|
)
|
||||||
|
|
||||||
return { refreshingModels, refreshModels }
|
return { refreshingModels, refreshModels }
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,15 +6,15 @@ import Spinner from '@/containers/Loader/Spinner'
|
|||||||
|
|
||||||
import { useRefreshModelList } from '@/hooks/useEngineManagement'
|
import { useRefreshModelList } from '@/hooks/useEngineManagement'
|
||||||
|
|
||||||
function RemoteModelRefresh({ id }: { id: string }) {
|
function RemoteModelRefresh({ engine }: { engine: string }) {
|
||||||
const { refreshingModels, refreshModels } = useRefreshModelList(id)
|
const { refreshingModels, refreshModels } = useRefreshModelList(engine)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Button
|
<Button
|
||||||
theme={'ghost'}
|
theme={'ghost'}
|
||||||
variant={'outline'}
|
variant={'outline'}
|
||||||
className="h-7 px-2"
|
className="h-7 px-2"
|
||||||
onClick={() => refreshModels()}
|
onClick={() => refreshModels(engine)}
|
||||||
>
|
>
|
||||||
{refreshingModels ? (
|
{refreshingModels ? (
|
||||||
<Spinner size={16} strokeWidth={2} className="mr-2" />
|
<Spinner size={16} strokeWidth={2} className="mr-2" />
|
||||||
|
|||||||
@ -158,7 +158,7 @@ const ModelPage = ({ model, onGoBack }: Props) => {
|
|||||||
)}
|
)}
|
||||||
<th className="w-[120px]">
|
<th className="w-[120px]">
|
||||||
{model.type === 'cloud' && (
|
{model.type === 'cloud' && (
|
||||||
<RemoteModelRefresh id={model.id} />
|
<RemoteModelRefresh engine={model.id} />
|
||||||
)}
|
)}
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@ -368,10 +368,10 @@ const HubScreen = () => {
|
|||||||
{hubBannerOption === 'upload' && (
|
{hubBannerOption === 'upload' && (
|
||||||
<div
|
<div
|
||||||
className={`mx-2 mb-2 flex h-[172px] cursor-pointer items-center justify-center rounded-md border`}
|
className={`mx-2 mb-2 flex h-[172px] cursor-pointer items-center justify-center rounded-md border`}
|
||||||
|
{...getRootProps()}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
imageInputRef.current?.click()
|
imageInputRef.current?.click()
|
||||||
}}
|
}}
|
||||||
{...getRootProps()}
|
|
||||||
>
|
>
|
||||||
<div className="flex flex-col items-center justify-center">
|
<div className="flex flex-col items-center justify-center">
|
||||||
<div className="mx-auto inline-flex h-10 w-10 items-center justify-center rounded-full bg-gray-200">
|
<div className="mx-auto inline-flex h-10 w-10 items-center justify-center rounded-full bg-gray-200">
|
||||||
|
|||||||
@ -52,25 +52,25 @@ import { showScrollBarAtom } from '@/helpers/atoms/Setting.atom'
|
|||||||
import { threadsAtom } from '@/helpers/atoms/Thread.atom'
|
import { threadsAtom } from '@/helpers/atoms/Thread.atom'
|
||||||
|
|
||||||
const RemoteEngineSettings = ({
|
const RemoteEngineSettings = ({
|
||||||
engine: name,
|
engine: engineName,
|
||||||
}: {
|
}: {
|
||||||
engine: InferenceEngine
|
engine: InferenceEngine
|
||||||
}) => {
|
}) => {
|
||||||
const { engines, mutate } = useGetEngines()
|
const { engines, mutate } = useGetEngines()
|
||||||
const downloadedModels = useAtomValue(downloadedModelsAtom)
|
const downloadedModels = useAtomValue(downloadedModelsAtom)
|
||||||
const [showApiKey, setShowApiKey] = useState(false)
|
const [showApiKey, setShowApiKey] = useState(false)
|
||||||
const remoteModels = downloadedModels.filter((e) => e.engine === name)
|
const remoteModels = downloadedModels.filter((e) => e.engine === engineName)
|
||||||
const [isActiveAdvanceSetting, setisActiveAdvanceSetting] = useState(false)
|
const [isActiveAdvanceSetting, setisActiveAdvanceSetting] = useState(false)
|
||||||
const setSelectedModel = useSetAtom(selectedModelAtom)
|
const setSelectedModel = useSetAtom(selectedModelAtom)
|
||||||
const customEngineLogo = getLogoEngine(name)
|
const customEngineLogo = getLogoEngine(engineName)
|
||||||
const threads = useAtomValue(threadsAtom)
|
const threads = useAtomValue(threadsAtom)
|
||||||
const { refreshingModels, refreshModels } = useRefreshModelList(name)
|
const { refreshingModels, refreshModels } = useRefreshModelList(engineName)
|
||||||
const showScrollBar = useAtomValue(showScrollBarAtom)
|
const showScrollBar = useAtomValue(showScrollBarAtom)
|
||||||
|
|
||||||
const engine =
|
const engine =
|
||||||
engines &&
|
engines &&
|
||||||
Object.entries(engines)
|
Object.entries(engines)
|
||||||
.filter(([key]) => key === name)
|
.filter(([key]) => key === engineName)
|
||||||
.flatMap(([_, engineArray]) => engineArray as EngineConfig)[0]
|
.flatMap(([_, engineArray]) => engineArray as EngineConfig)[0]
|
||||||
|
|
||||||
const debounceRef = useRef<NodeJS.Timeout | null>(null)
|
const debounceRef = useRef<NodeJS.Timeout | null>(null)
|
||||||
@ -92,12 +92,12 @@ const RemoteEngineSettings = ({
|
|||||||
debounceRef.current = setTimeout(async () => {
|
debounceRef.current = setTimeout(async () => {
|
||||||
const updatedEngine = { ...engine }
|
const updatedEngine = { ...engine }
|
||||||
set(updatedEngine, field, value)
|
set(updatedEngine, field, value)
|
||||||
await updateEngine(name, updatedEngine)
|
await updateEngine(engineName, updatedEngine)
|
||||||
mutate()
|
mutate()
|
||||||
events.emit(EngineEvent.OnEngineUpdate, {})
|
events.emit(EngineEvent.OnEngineUpdate, {})
|
||||||
}, 300)
|
}, 300)
|
||||||
},
|
},
|
||||||
[engine, name, mutate]
|
[engine, engineName, mutate]
|
||||||
)
|
)
|
||||||
|
|
||||||
const [data, setData] = useState({
|
const [data, setData] = useState({
|
||||||
@ -237,7 +237,7 @@ const RemoteEngineSettings = ({
|
|||||||
<Button
|
<Button
|
||||||
theme={'ghost'}
|
theme={'ghost'}
|
||||||
variant={'outline'}
|
variant={'outline'}
|
||||||
onClick={() => refreshModels()}
|
onClick={() => refreshModels(engineName)}
|
||||||
>
|
>
|
||||||
{refreshingModels ? (
|
{refreshingModels ? (
|
||||||
<Spinner size={16} strokeWidth={2} className="mr-2" />
|
<Spinner size={16} strokeWidth={2} className="mr-2" />
|
||||||
@ -246,7 +246,7 @@ const RemoteEngineSettings = ({
|
|||||||
)}
|
)}
|
||||||
Refresh
|
Refresh
|
||||||
</Button>
|
</Button>
|
||||||
<ModalAddModel engine={name} />
|
<ModalAddModel engine={engineName} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user