mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-06 21:35:52 +08:00
refactor: enhance multi-selection handling in Inputbar and MessageEditor
- Integrated `useAppSelector` in Inputbar to manage multi-selection state. - Updated Inputbar to conditionally render based on multi-selection mode. - Modified MessageEditor to display the resend button only for assistant messages, improving UI clarity.
This commit is contained in:
parent
fd1b0762f9
commit
0ede6e1dca
@ -53,14 +53,10 @@ const MultiSelectActionPopup: FC<Props> = ({ topic }) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const Container = styled.div`
|
const Container = styled.div`
|
||||||
position: absolute;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding: 36px 20px;
|
padding: 36px 20px;
|
||||||
background-color: var(--color-background);
|
background-color: var(--color-background);
|
||||||
border-top: 1px solid var(--color-border);
|
border-top: 1px solid var(--color-border);
|
||||||
z-index: 10;
|
|
||||||
`
|
`
|
||||||
|
|
||||||
const ActionBar = styled.div`
|
const ActionBar = styled.div`
|
||||||
|
|||||||
@ -27,7 +27,7 @@ import PasteService from '@renderer/services/PasteService'
|
|||||||
import { estimateTextTokens as estimateTxtTokens, estimateUserPromptUsage } from '@renderer/services/TokenService'
|
import { estimateTextTokens as estimateTxtTokens, estimateUserPromptUsage } from '@renderer/services/TokenService'
|
||||||
import { translateText } from '@renderer/services/TranslateService'
|
import { translateText } from '@renderer/services/TranslateService'
|
||||||
import WebSearchService from '@renderer/services/WebSearchService'
|
import WebSearchService from '@renderer/services/WebSearchService'
|
||||||
import { useAppDispatch } from '@renderer/store'
|
import { useAppDispatch, useAppSelector } from '@renderer/store'
|
||||||
import { setSearching } from '@renderer/store/runtime'
|
import { setSearching } from '@renderer/store/runtime'
|
||||||
import { sendMessage as _sendMessage } from '@renderer/store/thunk/messageThunk'
|
import { sendMessage as _sendMessage } from '@renderer/store/thunk/messageThunk'
|
||||||
import { Assistant, FileType, KnowledgeBase, KnowledgeItem, Model, Topic } from '@renderer/types'
|
import { Assistant, FileType, KnowledgeBase, KnowledgeItem, Model, Topic } from '@renderer/types'
|
||||||
@ -127,6 +127,7 @@ const Inputbar: FC<Props> = ({ assistant: _assistant, setActiveTopic, topic }) =
|
|||||||
const supportExts = useMemo(() => [...textExts, ...documentExts, ...(isVision ? imageExts : [])], [isVision])
|
const supportExts = useMemo(() => [...textExts, ...documentExts, ...(isVision ? imageExts : [])], [isVision])
|
||||||
const { activedMcpServers } = useMCPServers()
|
const { activedMcpServers } = useMCPServers()
|
||||||
const { bases: knowledgeBases } = useKnowledgeBases()
|
const { bases: knowledgeBases } = useKnowledgeBases()
|
||||||
|
const isMultiSelectMode = useAppSelector((state) => state.runtime.chat.isMultiSelectMode)
|
||||||
|
|
||||||
const quickPanel = useQuickPanel()
|
const quickPanel = useQuickPanel()
|
||||||
|
|
||||||
@ -869,6 +870,10 @@ const Inputbar: FC<Props> = ({ assistant: _assistant, setActiveTopic, topic }) =
|
|||||||
const isExpended = expended || !!textareaHeight
|
const isExpended = expended || !!textareaHeight
|
||||||
const showThinkingButton = isSupportedThinkingTokenModel(model) || isSupportedReasoningEffortModel(model)
|
const showThinkingButton = isSupportedThinkingTokenModel(model) || isSupportedReasoningEffortModel(model)
|
||||||
|
|
||||||
|
if (isMultiSelectMode) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Container
|
<Container
|
||||||
onDragOver={handleDragOver}
|
onDragOver={handleDragOver}
|
||||||
|
|||||||
@ -255,11 +255,13 @@ const MessageBlockEditor: FC<Props> = ({ message, onSave, onResend, onCancel })
|
|||||||
<Save size={16} />
|
<Save size={16} />
|
||||||
</ToolbarButton>
|
</ToolbarButton>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
<Tooltip title={t('chat.resend')}>
|
{message.role === 'assistant' && (
|
||||||
<ToolbarButton type="text" onClick={() => handleClick(true)}>
|
<Tooltip title={t('chat.resend')}>
|
||||||
<Send size={16} />
|
<ToolbarButton type="text" onClick={() => handleClick(true)}>
|
||||||
</ToolbarButton>
|
<Send size={16} />
|
||||||
</Tooltip>
|
</ToolbarButton>
|
||||||
|
</Tooltip>
|
||||||
|
)}
|
||||||
</ActionBarRight>
|
</ActionBarRight>
|
||||||
</ActionBar>
|
</ActionBar>
|
||||||
</EditorContainer>
|
</EditorContainer>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user