fix: onboarding screen should show persisted cloud providers (#4738)
This commit is contained in:
parent
053604ec28
commit
916b28044d
@ -35,5 +35,12 @@ module.exports = {
|
|||||||
{ name: 'Link', linkAttribute: 'to' },
|
{ name: 'Link', linkAttribute: 'to' },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
ignorePatterns: ['build', 'renderer', 'node_modules', '@global', 'playwright-report'],
|
ignorePatterns: [
|
||||||
|
'build',
|
||||||
|
'renderer',
|
||||||
|
'node_modules',
|
||||||
|
'@global',
|
||||||
|
'playwright-report',
|
||||||
|
'test-data',
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,5 +19,5 @@
|
|||||||
"esm": true
|
"esm": true
|
||||||
},
|
},
|
||||||
"include": ["./**/*.ts"],
|
"include": ["./**/*.ts"],
|
||||||
"exclude": ["core", "build", "dist", "tests", "node_modules"]
|
"exclude": ["core", "build", "dist", "tests", "node_modules", "test-data"]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -266,7 +266,9 @@ export default class JanEngineManagementExtension extends EngineManagementExtens
|
|||||||
.get(`${API_URL}/healthz`, {
|
.get(`${API_URL}/healthz`, {
|
||||||
retry: { limit: 20, delay: () => 500, methods: ['get'] },
|
retry: { limit: 20, delay: () => 500, methods: ['get'] },
|
||||||
})
|
})
|
||||||
.then(() => {})
|
.then(() => {
|
||||||
|
this.queue.concurrency = Infinity
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
1.0.11-rc2
|
1.0.11-rc3
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import React from 'react'
|
import React from 'react'
|
||||||
import { render, screen, fireEvent } from '@testing-library/react'
|
import { render, screen, fireEvent } from '@testing-library/react'
|
||||||
import { Provider } from 'jotai'
|
import { Provider } from 'jotai'
|
||||||
import OnDeviceStarterScreen from './index'
|
import OnboardingScreen from './index'
|
||||||
import * as jotai from 'jotai'
|
import * as jotai from 'jotai'
|
||||||
import '@testing-library/jest-dom'
|
import '@testing-library/jest-dom'
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ describe('OnDeviceStarterScreen', () => {
|
|||||||
})
|
})
|
||||||
render(
|
render(
|
||||||
<Provider>
|
<Provider>
|
||||||
<OnDeviceStarterScreen isShowStarterScreen={true} />
|
<OnboardingScreen isShowStarterScreen={true} />
|
||||||
</Provider>
|
</Provider>
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -90,7 +90,7 @@ describe('OnDeviceStarterScreen', () => {
|
|||||||
})
|
})
|
||||||
render(
|
render(
|
||||||
<Provider>
|
<Provider>
|
||||||
<OnDeviceStarterScreen isShowStarterScreen={true} />
|
<OnboardingScreen isShowStarterScreen={true} />
|
||||||
</Provider>
|
</Provider>
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -110,7 +110,7 @@ describe('OnDeviceStarterScreen', () => {
|
|||||||
})
|
})
|
||||||
render(
|
render(
|
||||||
<Provider>
|
<Provider>
|
||||||
<OnDeviceStarterScreen isShowStarterScreen={true} />
|
<OnboardingScreen isShowStarterScreen={true} />
|
||||||
</Provider>
|
</Provider>
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -164,7 +164,7 @@ describe('OnDeviceStarterScreen', () => {
|
|||||||
|
|
||||||
render(
|
render(
|
||||||
<Provider>
|
<Provider>
|
||||||
<OnDeviceStarterScreen isShowStarterScreen={true} />
|
<OnboardingScreen isShowStarterScreen={true} />
|
||||||
</Provider>
|
</Provider>
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -191,7 +191,7 @@ describe('OnDeviceStarterScreen', () => {
|
|||||||
|
|
||||||
render(
|
render(
|
||||||
<Provider>
|
<Provider>
|
||||||
<OnDeviceStarterScreen isShowStarterScreen={true} />
|
<OnboardingScreen isShowStarterScreen={true} />
|
||||||
</Provider>
|
</Provider>
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ type Props = {
|
|||||||
isShowStarterScreen?: boolean
|
isShowStarterScreen?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
const OnDeviceStarterScreen = ({ isShowStarterScreen }: Props) => {
|
function OnboardingScreen({ isShowStarterScreen }: Props) {
|
||||||
const [searchValue, setSearchValue] = useState('')
|
const [searchValue, setSearchValue] = useState('')
|
||||||
const [isOpen, setIsOpen] = useState(Boolean(searchValue.length))
|
const [isOpen, setIsOpen] = useState(Boolean(searchValue.length))
|
||||||
const downloadingModels = useAtomValue(getDownloadingModelAtom)
|
const downloadingModels = useAtomValue(getDownloadingModelAtom)
|
||||||
@ -62,7 +62,6 @@ const OnDeviceStarterScreen = ({ isShowStarterScreen }: Props) => {
|
|||||||
const { engines } = useGetEngines()
|
const { engines } = useGetEngines()
|
||||||
const showScrollBar = useAtomValue(showScrollBarAtom)
|
const showScrollBar = useAtomValue(showScrollBarAtom)
|
||||||
|
|
||||||
const configuredModels = useAtomValue(configuredModelsAtom)
|
|
||||||
const { sources } = useGetModelSources()
|
const { sources } = useGetModelSources()
|
||||||
const setMainViewState = useSetAtom(mainViewStateAtom)
|
const setMainViewState = useSetAtom(mainViewStateAtom)
|
||||||
|
|
||||||
@ -78,16 +77,6 @@ const OnDeviceStarterScreen = ({ isShowStarterScreen }: Props) => {
|
|||||||
[sources, searchValue]
|
[sources, searchValue]
|
||||||
)
|
)
|
||||||
|
|
||||||
const remoteModel = configuredModels.filter(
|
|
||||||
(x) => !isLocalEngine(engines, x.engine)
|
|
||||||
)
|
|
||||||
|
|
||||||
const remoteModelEngine = remoteModel.map((x) => x.engine)
|
|
||||||
|
|
||||||
const groupByEngine = remoteModelEngine.filter(function (item, index) {
|
|
||||||
if (remoteModelEngine.indexOf(item) === index) return item
|
|
||||||
})
|
|
||||||
|
|
||||||
const itemsPerRow = 5
|
const itemsPerRow = 5
|
||||||
|
|
||||||
const getRows = (array: string[], itemsPerRow: number) => {
|
const getRows = (array: string[], itemsPerRow: number) => {
|
||||||
@ -98,8 +87,10 @@ const OnDeviceStarterScreen = ({ isShowStarterScreen }: Props) => {
|
|||||||
return rows
|
return rows
|
||||||
}
|
}
|
||||||
|
|
||||||
const rows = getRows(
|
const cloudProviders = getRows(
|
||||||
groupByEngine.sort((a, b) => a.localeCompare(b)),
|
Object.keys(engines ?? {})
|
||||||
|
.filter((e) => engines?.[e as InferenceEngine]?.[0]?.type === 'remote')
|
||||||
|
.sort((a, b) => a.localeCompare(b)),
|
||||||
itemsPerRow
|
itemsPerRow
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -297,19 +288,13 @@ const OnDeviceStarterScreen = ({ isShowStarterScreen }: Props) => {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="flex flex-col justify-center gap-6">
|
<div className="flex flex-col justify-center gap-6">
|
||||||
{rows.slice(0, visibleRows).map((row, rowIndex) => {
|
{cloudProviders.slice(0, visibleRows).map((row, rowIndex) => {
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
key={rowIndex}
|
key={rowIndex}
|
||||||
className="my-2 flex items-center gap-4 md:gap-10"
|
className="my-2 flex items-center gap-4 md:gap-10"
|
||||||
>
|
>
|
||||||
{row
|
{row.map((remoteEngine) => {
|
||||||
.filter(
|
|
||||||
(e) =>
|
|
||||||
engines?.[e as InferenceEngine]?.[0]?.type ===
|
|
||||||
'remote'
|
|
||||||
)
|
|
||||||
.map((remoteEngine) => {
|
|
||||||
const engineLogo = getLogoEngine(
|
const engineLogo = getLogoEngine(
|
||||||
remoteEngine as InferenceEngine
|
remoteEngine as InferenceEngine
|
||||||
)
|
)
|
||||||
@ -347,7 +332,7 @@ const OnDeviceStarterScreen = ({ isShowStarterScreen }: Props) => {
|
|||||||
)
|
)
|
||||||
})}
|
})}
|
||||||
</div>
|
</div>
|
||||||
{visibleRows < rows.length && (
|
{visibleRows < cloudProviders.length && (
|
||||||
<button
|
<button
|
||||||
onClick={() => setVisibleRows(visibleRows + 1)}
|
onClick={() => setVisibleRows(visibleRows + 1)}
|
||||||
className="mt-4 text-[hsla(var(--text-secondary))]"
|
className="mt-4 text-[hsla(var(--text-secondary))]"
|
||||||
@ -364,4 +349,4 @@ const OnDeviceStarterScreen = ({ isShowStarterScreen }: Props) => {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export default OnDeviceStarterScreen
|
export default OnboardingScreen
|
||||||
@ -5,7 +5,7 @@ import { useStarterScreen } from '@/hooks/useStarterScreen'
|
|||||||
import ThreadLeftPanel from '@/screens/Thread/ThreadLeftPanel'
|
import ThreadLeftPanel from '@/screens/Thread/ThreadLeftPanel'
|
||||||
|
|
||||||
import ThreadCenterPanel from './ThreadCenterPanel'
|
import ThreadCenterPanel from './ThreadCenterPanel'
|
||||||
import OnDeviceStarterScreen from './ThreadCenterPanel/ChatBody/OnDeviceStarterScreen'
|
import OnboardingScreen from './ThreadCenterPanel/ChatBody/OnboardingScreen'
|
||||||
import ModalCleanThread from './ThreadLeftPanel/ModalCleanThread'
|
import ModalCleanThread from './ThreadLeftPanel/ModalCleanThread'
|
||||||
import ModalDeleteThread from './ThreadLeftPanel/ModalDeleteThread'
|
import ModalDeleteThread from './ThreadLeftPanel/ModalDeleteThread'
|
||||||
import ModalEditTitleThread from './ThreadLeftPanel/ModalEditTitleThread'
|
import ModalEditTitleThread from './ThreadLeftPanel/ModalEditTitleThread'
|
||||||
@ -17,7 +17,7 @@ type Props = {
|
|||||||
|
|
||||||
const ThreadPanels = memo(({ isShowStarterScreen }: Props) => {
|
const ThreadPanels = memo(({ isShowStarterScreen }: Props) => {
|
||||||
return isShowStarterScreen ? (
|
return isShowStarterScreen ? (
|
||||||
<OnDeviceStarterScreen isShowStarterScreen={isShowStarterScreen} />
|
<OnboardingScreen isShowStarterScreen={isShowStarterScreen} />
|
||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
<ThreadLeftPanel />
|
<ThreadLeftPanel />
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user