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:
kangfenmao 2025-05-21 22:22:01 +08:00
parent fd1b0762f9
commit 0ede6e1dca
3 changed files with 13 additions and 10 deletions

View File

@ -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`

View File

@ -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}

View File

@ -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>