feat(message): 将fold display mode的状态持久化
This commit is contained in:
parent
cc32c36222
commit
d64d6969ae
@ -1,9 +1,12 @@
|
|||||||
import { ArrowsAltOutlined, ShrinkOutlined } from '@ant-design/icons'
|
import { ArrowsAltOutlined, ShrinkOutlined } from '@ant-design/icons'
|
||||||
import ModelAvatar from '@renderer/components/Avatar/ModelAvatar'
|
import ModelAvatar from '@renderer/components/Avatar/ModelAvatar'
|
||||||
import Scrollbar from '@renderer/components/Scrollbar'
|
import Scrollbar from '@renderer/components/Scrollbar'
|
||||||
|
import { useSettings } from '@renderer/hooks/useSettings'
|
||||||
|
import { useAppDispatch } from '@renderer/store'
|
||||||
|
import { setFoldDisplayMode } from '@renderer/store/settings'
|
||||||
import { Message, Model } from '@renderer/types'
|
import { Message, Model } from '@renderer/types'
|
||||||
import { Avatar, Segmented as AntdSegmented, Tooltip } from 'antd'
|
import { Avatar, Segmented as AntdSegmented, Tooltip } from 'antd'
|
||||||
import { FC, useState } from 'react'
|
import { FC } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import styled from 'styled-components'
|
import styled from 'styled-components'
|
||||||
|
|
||||||
@ -15,26 +18,27 @@ interface MessageGroupModelListProps {
|
|||||||
type DisplayMode = 'compact' | 'expanded'
|
type DisplayMode = 'compact' | 'expanded'
|
||||||
|
|
||||||
const MessageGroupModelList: FC<MessageGroupModelListProps> = ({ messages, setSelectedMessage }) => {
|
const MessageGroupModelList: FC<MessageGroupModelListProps> = ({ messages, setSelectedMessage }) => {
|
||||||
|
const dispatch = useAppDispatch()
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const [displayMode, setDisplayMode] = useState<DisplayMode>('expanded')
|
const { foldDisplayMode } = useSettings()
|
||||||
const isCompact = displayMode === 'compact'
|
const isCompact = foldDisplayMode === 'compact'
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ModelsWrapper>
|
<ModelsWrapper>
|
||||||
<DisplayModeToggle displayMode={displayMode} onClick={() => setDisplayMode(isCompact ? 'expanded' : 'compact')}>
|
<DisplayModeToggle displayMode={foldDisplayMode} onClick={() => dispatch(setFoldDisplayMode(isCompact ? 'expanded' : 'compact'))}>
|
||||||
<Tooltip
|
<Tooltip
|
||||||
title={
|
title={
|
||||||
displayMode === 'compact'
|
foldDisplayMode === 'compact'
|
||||||
? t(`message.message.multi_model_style.fold.expand`)
|
? t(`message.message.multi_model_style.fold.expand`)
|
||||||
: t('message.message.multi_model_style.fold.compress')
|
: t('message.message.multi_model_style.fold.compress')
|
||||||
}
|
}
|
||||||
placement="top">
|
placement="top">
|
||||||
{displayMode === 'compact' ? <ArrowsAltOutlined /> : <ShrinkOutlined />}
|
{foldDisplayMode === 'compact' ? <ArrowsAltOutlined /> : <ShrinkOutlined />}
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</DisplayModeToggle>
|
</DisplayModeToggle>
|
||||||
|
|
||||||
<ModelsContainer $displayMode={displayMode}>
|
<ModelsContainer $displayMode={foldDisplayMode}>
|
||||||
{displayMode === 'compact' ? (
|
{foldDisplayMode === 'compact' ? (
|
||||||
/* Compact style display */
|
/* Compact style display */
|
||||||
<Avatar.Group className="avatar-group">
|
<Avatar.Group className="avatar-group">
|
||||||
{messages.map((message, index) => (
|
{messages.map((message, index) => (
|
||||||
|
|||||||
@ -53,6 +53,7 @@ export interface SettingsState {
|
|||||||
mathEngine: 'MathJax' | 'KaTeX'
|
mathEngine: 'MathJax' | 'KaTeX'
|
||||||
messageStyle: 'plain' | 'bubble'
|
messageStyle: 'plain' | 'bubble'
|
||||||
codeStyle: CodeStyleVarious
|
codeStyle: CodeStyleVarious
|
||||||
|
foldDisplayMode: 'expanded' | 'compact'
|
||||||
gridColumns: number
|
gridColumns: number
|
||||||
gridPopoverTrigger: 'hover' | 'click'
|
gridPopoverTrigger: 'hover' | 'click'
|
||||||
messageNavigation: 'none' | 'buttons' | 'anchor'
|
messageNavigation: 'none' | 'buttons' | 'anchor'
|
||||||
@ -135,6 +136,7 @@ const initialState: SettingsState = {
|
|||||||
mathEngine: 'KaTeX',
|
mathEngine: 'KaTeX',
|
||||||
messageStyle: 'plain',
|
messageStyle: 'plain',
|
||||||
codeStyle: 'auto',
|
codeStyle: 'auto',
|
||||||
|
foldDisplayMode: 'expanded',
|
||||||
gridColumns: 2,
|
gridColumns: 2,
|
||||||
gridPopoverTrigger: 'hover',
|
gridPopoverTrigger: 'hover',
|
||||||
messageNavigation: 'none',
|
messageNavigation: 'none',
|
||||||
@ -295,6 +297,9 @@ const settingsSlice = createSlice({
|
|||||||
setMathEngine: (state, action: PayloadAction<'MathJax' | 'KaTeX'>) => {
|
setMathEngine: (state, action: PayloadAction<'MathJax' | 'KaTeX'>) => {
|
||||||
state.mathEngine = action.payload
|
state.mathEngine = action.payload
|
||||||
},
|
},
|
||||||
|
setFoldDisplayMode: (state, action: PayloadAction<'expanded' | 'compact'>) => {
|
||||||
|
state.foldDisplayMode = action.payload
|
||||||
|
},
|
||||||
setGridColumns: (state, action: PayloadAction<number>) => {
|
setGridColumns: (state, action: PayloadAction<number>) => {
|
||||||
state.gridColumns = action.payload
|
state.gridColumns = action.payload
|
||||||
},
|
},
|
||||||
@ -446,6 +451,7 @@ export const {
|
|||||||
setCodeCollapsible,
|
setCodeCollapsible,
|
||||||
setCodeWrappable,
|
setCodeWrappable,
|
||||||
setMathEngine,
|
setMathEngine,
|
||||||
|
setFoldDisplayMode,
|
||||||
setGridColumns,
|
setGridColumns,
|
||||||
setGridPopoverTrigger,
|
setGridPopoverTrigger,
|
||||||
setMessageStyle,
|
setMessageStyle,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user