chore: temporary disabled starter screen (#3663)

* chore: temporary disabeld starter screen

* chore: create useStarter screen

* chore: fix typo

* chore: update config starter screen

* chore: update comment code

* chore: renmove some commented code
This commit is contained in:
Faisal Amir 2024-09-16 11:17:36 +07:00 committed by GitHub
parent 0cce4a0c83
commit 3ffaa1ef7f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 82 additions and 69 deletions

View File

@ -0,0 +1,78 @@
import { useState, useEffect } from 'react'
import { useAtomValue } from 'jotai'
import { localEngines } from '@/utils/modelEngine'
import { extensionManager } from '@/extension'
import { downloadedModelsAtom } from '@/helpers/atoms/Model.atom'
import { threadsAtom } from '@/helpers/atoms/Thread.atom'
export function useStarterScreen() {
const downloadedModels = useAtomValue(downloadedModelsAtom)
const threads = useAtomValue(threadsAtom)
const isDownloadALocalModel = downloadedModels.some((x) =>
localEngines.includes(x.engine)
)
const [extensionHasSettings, setExtensionHasSettings] = useState<
{ name?: string; setting: string; apiKey: string; provider: string }[]
>([])
useEffect(() => {
const getAllSettings = async () => {
const extensionsMenu: {
name?: string
setting: string
apiKey: string
provider: string
}[] = []
const extensions = extensionManager.getAll()
for (const extension of extensions) {
if (typeof extension.getSettings === 'function') {
const settings = await extension.getSettings()
if (
(settings && settings.length > 0) ||
(await extension.installationState()) !== 'NotRequired'
) {
extensionsMenu.push({
name: extension.productName,
setting: extension.name,
apiKey:
'apiKey' in extension && typeof extension.apiKey === 'string'
? extension.apiKey
: '',
provider:
'provider' in extension &&
typeof extension.provider === 'string'
? extension.provider
: '',
})
}
}
}
setExtensionHasSettings(extensionsMenu)
}
getAllSettings()
}, [])
const isAnyRemoteModelConfigured = extensionHasSettings.some(
(x) => x.apiKey.length > 1
)
let isShowStarterScreen
isShowStarterScreen =
!isAnyRemoteModelConfigured && !isDownloadALocalModel && !threads.length
// Remove this part when we rework on starter screen
isShowStarterScreen = false
return {
extensionHasSettings,
isShowStarterScreen,
}
}

View File

@ -1,11 +1,7 @@
import { useEffect, useState } from 'react'
import { useAtomValue } from 'jotai'
import { useStarterScreen } from '@/hooks/useStarterScreen'
import ThreadLeftPanel from '@/screens/Thread/ThreadLeftPanel'
import { localEngines } from '@/utils/modelEngine'
import ThreadCenterPanel from './ThreadCenterPanel'
import OnDeviceStarterScreen from './ThreadCenterPanel/ChatBody/OnDeviceStarterScreen'
import ModalCleanThread from './ThreadLeftPanel/ModalCleanThread'
@ -13,73 +9,12 @@ import ModalDeleteThread from './ThreadLeftPanel/ModalDeleteThread'
import ModalEditTitleThread from './ThreadLeftPanel/ModalEditTitleThread'
import ThreadRightPanel from './ThreadRightPanel'
import { extensionManager } from '@/extension'
import { downloadedModelsAtom } from '@/helpers/atoms/Model.atom'
import { threadsAtom } from '@/helpers/atoms/Thread.atom'
const ThreadScreen = () => {
const downloadedModels = useAtomValue(downloadedModelsAtom)
const threads = useAtomValue(threadsAtom)
const isDownloadALocalModel = downloadedModels.some((x) =>
localEngines.includes(x.engine)
)
const [extensionHasSettings, setExtensionHasSettings] = useState<
{ name?: string; setting: string; apiKey: string; provider: string }[]
>([])
useEffect(() => {
const getAllSettings = async () => {
const extensionsMenu: {
name?: string
setting: string
apiKey: string
provider: string
}[] = []
const extensions = extensionManager.getAll()
for (const extension of extensions) {
if (typeof extension.getSettings === 'function') {
const settings = await extension.getSettings()
if (
(settings && settings.length > 0) ||
(await extension.installationState()) !== 'NotRequired'
) {
extensionsMenu.push({
name: extension.productName,
setting: extension.name,
apiKey:
'apiKey' in extension && typeof extension.apiKey === 'string'
? extension.apiKey
: '',
provider:
'provider' in extension &&
typeof extension.provider === 'string'
? extension.provider
: '',
})
}
}
}
setExtensionHasSettings(extensionsMenu)
}
getAllSettings()
}, [])
const isAnyRemoteModelConfigured = extensionHasSettings.some(
(x) => x.apiKey.length > 1
)
const { extensionHasSettings, isShowStarterScreen } = useStarterScreen()
return (
<div className="relative flex h-full w-full flex-1 overflow-x-hidden">
{!isAnyRemoteModelConfigured &&
!isDownloadALocalModel &&
!threads.length ? (
<>
<OnDeviceStarterScreen extensionHasSettings={extensionHasSettings} />
</>
{isShowStarterScreen ? (
<OnDeviceStarterScreen extensionHasSettings={extensionHasSettings} />
) : (
<>
<ThreadLeftPanel />