mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-29 14:31:35 +08:00
fix: update quick assistant ID handling and improve error management in HomeWindow
This commit is contained in:
parent
4d553beb85
commit
97b7eebf7d
@ -170,7 +170,7 @@ const ModelSettings: FC = () => {
|
||||
<HStack alignItems="center" gap={0}>
|
||||
<StyledButton
|
||||
type={!quickAssistantId ? 'primary' : 'default'}
|
||||
onClick={() => dispatch(setQuickAssistantId(null))}
|
||||
onClick={() => dispatch(setQuickAssistantId(''))}
|
||||
selected={!quickAssistantId}>
|
||||
{t('settings.models.use_model')}
|
||||
</StyledButton>
|
||||
|
||||
@ -29,7 +29,7 @@ export interface LlmState {
|
||||
defaultModel: Model
|
||||
topicNamingModel: Model
|
||||
translateModel: Model
|
||||
quickAssistantId: string | null
|
||||
quickAssistantId: string
|
||||
settings: LlmSettings
|
||||
}
|
||||
|
||||
@ -534,7 +534,7 @@ export const initialState: LlmState = {
|
||||
defaultModel: SYSTEM_MODELS.defaultModel[0],
|
||||
topicNamingModel: SYSTEM_MODELS.defaultModel[1],
|
||||
translateModel: SYSTEM_MODELS.defaultModel[2],
|
||||
quickAssistantId: null,
|
||||
quickAssistantId: '',
|
||||
providers: INITIAL_PROVIDERS,
|
||||
settings: {
|
||||
ollama: {
|
||||
@ -650,7 +650,7 @@ const llmSlice = createSlice({
|
||||
state.translateModel = action.payload.model
|
||||
},
|
||||
|
||||
setQuickAssistantId: (state, action: PayloadAction<string | null>) => {
|
||||
setQuickAssistantId: (state, action: PayloadAction<string>) => {
|
||||
state.quickAssistantId = action.payload
|
||||
},
|
||||
setOllamaKeepAliveTime: (state, action: PayloadAction<number>) => {
|
||||
|
||||
@ -56,6 +56,8 @@ const HomeWindow: FC = () => {
|
||||
//indicator for wether the first message is outputted
|
||||
const [isOutputted, setIsOutputted] = useState(false)
|
||||
|
||||
const [error, setError] = useState<string | null>(null)
|
||||
|
||||
const { quickAssistantId } = useAppSelector((state) => state.llm)
|
||||
const currentAssistant = useRef<Assistant | null>(null)
|
||||
const currentTopic = useRef<Topic | null>(null)
|
||||
@ -206,6 +208,11 @@ const HomeWindow: FC = () => {
|
||||
setUserInputText(e.target.value)
|
||||
}
|
||||
|
||||
const handleError = (error: Error) => {
|
||||
setIsLoading(false)
|
||||
setError(error.message)
|
||||
}
|
||||
|
||||
const handleSendMessage = useCallback(
|
||||
async (prompt?: string) => {
|
||||
if (isEmpty(content) || !currentAssistant.current || !currentTopic.current) {
|
||||
@ -247,6 +254,7 @@ const HomeWindow: FC = () => {
|
||||
|
||||
setIsLoading(true)
|
||||
setIsOutputted(false)
|
||||
setError(null)
|
||||
|
||||
setIsFirstMessage(false)
|
||||
setUserInputText('')
|
||||
@ -332,8 +340,12 @@ const HomeWindow: FC = () => {
|
||||
)
|
||||
}
|
||||
break
|
||||
case ChunkType.BLOCK_COMPLETE:
|
||||
case ChunkType.ERROR:
|
||||
if (!isAbortError(chunk.error)) {
|
||||
throw new Error(chunk.error.message)
|
||||
}
|
||||
//fall through
|
||||
case ChunkType.BLOCK_COMPLETE:
|
||||
setIsLoading(false)
|
||||
setIsOutputted(true)
|
||||
currentAskId.current = ''
|
||||
@ -343,7 +355,7 @@ const HomeWindow: FC = () => {
|
||||
})
|
||||
} catch (err) {
|
||||
if (isAbortError(err)) return
|
||||
// onError(err instanceof Error ? err : new Error('An error occurred'))
|
||||
handleError(err instanceof Error ? err : new Error('An error occurred'))
|
||||
console.error('Error fetching result:', err)
|
||||
} finally {
|
||||
setIsLoading(false)
|
||||
@ -371,6 +383,7 @@ const HomeWindow: FC = () => {
|
||||
currentTopic.current = getDefaultTopic(currentAssistant.current.id)
|
||||
}
|
||||
|
||||
setError(null)
|
||||
setRoute('home')
|
||||
setUserInputText('')
|
||||
}
|
||||
@ -443,6 +456,8 @@ const HomeWindow: FC = () => {
|
||||
topic={currentTopic.current!}
|
||||
isOutputted={isOutputted}
|
||||
/>
|
||||
{error && <ErrorMsg>{error}</ErrorMsg>}
|
||||
|
||||
<Divider style={{ margin: '10px 0' }} />
|
||||
<Footer key="footer" route={route} loading={isLoading} onEsc={handleEsc} />
|
||||
</Container>
|
||||
@ -514,4 +529,15 @@ const Main = styled.main`
|
||||
overflow: hidden;
|
||||
`
|
||||
|
||||
const ErrorMsg = styled.div`
|
||||
color: var(--color-error);
|
||||
background: rgba(255, 0, 0, 0.15);
|
||||
border: 1px solid var(--color-error);
|
||||
padding: 8px 12px;
|
||||
border-radius: 4px;
|
||||
margin-bottom: 12px;
|
||||
font-size: 13px;
|
||||
word-break: break-all;
|
||||
`
|
||||
|
||||
export default HomeWindow
|
||||
|
||||
Loading…
Reference in New Issue
Block a user