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`
position: absolute;
bottom: 0;
left: 0;
width: 100%;
padding: 36px 20px;
background-color: var(--color-background);
border-top: 1px solid var(--color-border);
z-index: 10;
`
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 { translateText } from '@renderer/services/TranslateService'
import WebSearchService from '@renderer/services/WebSearchService'
import { useAppDispatch } from '@renderer/store'
import { useAppDispatch, useAppSelector } from '@renderer/store'
import { setSearching } from '@renderer/store/runtime'
import { sendMessage as _sendMessage } from '@renderer/store/thunk/messageThunk'
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 { activedMcpServers } = useMCPServers()
const { bases: knowledgeBases } = useKnowledgeBases()
const isMultiSelectMode = useAppSelector((state) => state.runtime.chat.isMultiSelectMode)
const quickPanel = useQuickPanel()
@ -869,6 +870,10 @@ const Inputbar: FC<Props> = ({ assistant: _assistant, setActiveTopic, topic }) =
const isExpended = expended || !!textareaHeight
const showThinkingButton = isSupportedThinkingTokenModel(model) || isSupportedReasoningEffortModel(model)
if (isMultiSelectMode) {
return null
}
return (
<Container
onDragOver={handleDragOver}

View File

@ -255,11 +255,13 @@ const MessageBlockEditor: FC<Props> = ({ message, onSave, onResend, onCancel })
<Save size={16} />
</ToolbarButton>
</Tooltip>
<Tooltip title={t('chat.resend')}>
<ToolbarButton type="text" onClick={() => handleClick(true)}>
<Send size={16} />
</ToolbarButton>
</Tooltip>
{message.role === 'assistant' && (
<Tooltip title={t('chat.resend')}>
<ToolbarButton type="text" onClick={() => handleClick(true)}>
<Send size={16} />
</ToolbarButton>
</Tooltip>
)}
</ActionBarRight>
</ActionBar>
</EditorContainer>