diff --git a/src/renderer/src/hooks/useSettings.ts b/src/renderer/src/hooks/useSettings.ts
new file mode 100644
index 0000000000..8720e81644
--- /dev/null
+++ b/src/renderer/src/hooks/useSettings.ts
@@ -0,0 +1,14 @@
+import { useAppDispatch, useAppSelector } from '@renderer/store'
+import { setSendMessageShortcut as _setSendMessageShortcut, SendMessageShortcut } from '@renderer/store/settings'
+
+export function useSettings() {
+ const settings = useAppSelector((state) => state.settings)
+ const dispatch = useAppDispatch()
+
+ return {
+ ...settings,
+ setSendMessageShortcut(shortcut: SendMessageShortcut) {
+ dispatch(_setSendMessageShortcut(shortcut))
+ }
+ }
+}
diff --git a/src/renderer/src/pages/home/components/ChatSettings.tsx b/src/renderer/src/pages/home/components/ChatSettings.tsx
new file mode 100644
index 0000000000..0d9f5a0263
--- /dev/null
+++ b/src/renderer/src/pages/home/components/ChatSettings.tsx
@@ -0,0 +1,16 @@
+import { FC } from 'react'
+import styled from 'styled-components'
+
+const ChatSettings: FC = () => {
+ return (
+
+ Chat Settings
+
+ )
+}
+
+const Container = styled.div`
+ width: 300px;
+`
+
+export default ChatSettings
diff --git a/src/renderer/src/pages/home/components/Inputbar.tsx b/src/renderer/src/pages/home/components/Inputbar.tsx
index 16999382d6..73bec7485a 100644
--- a/src/renderer/src/pages/home/components/Inputbar.tsx
+++ b/src/renderer/src/pages/home/components/Inputbar.tsx
@@ -9,6 +9,9 @@ import { useShowRightSidebar } from '@renderer/hooks/useStore'
import { useAssistant } from '@renderer/hooks/useAssistant'
import { ClearOutlined, HistoryOutlined, PlusCircleOutlined } from '@ant-design/icons'
import { TextAreaRef } from 'antd/es/input/TextArea'
+import { isEmpty } from 'lodash'
+import SendMessageSetting from './SendMessageSetting'
+import { useSettings } from '@renderer/hooks/useSettings'
interface Props {
assistant: Assistant
@@ -19,25 +22,40 @@ const Inputbar: FC = ({ assistant, setActiveTopic }) => {
const [text, setText] = useState('')
const { setShowRightSidebar } = useShowRightSidebar()
const { addTopic } = useAssistant(assistant.id)
+ const { sendMessageShortcut } = useSettings()
const inputRef = useRef(null)
+ const sendMessage = () => {
+ if (isEmpty(text.trim())) {
+ return
+ }
+
+ const message: Message = {
+ id: uuid(),
+ role: 'user',
+ content: text,
+ assistantId: assistant.id,
+ topicId: assistant.topics[0].id || uuid(),
+ createdAt: 'now'
+ }
+
+ EventEmitter.emit(EVENT_NAMES.SEND_MESSAGE, message)
+
+ setText('')
+ }
+
const handleKeyDown = (event: React.KeyboardEvent) => {
- if (event.key === 'Enter') {
- const topicId = assistant.topics[0] ? assistant.topics[0] : uuid()
-
- const message: Message = {
- id: uuid(),
- role: 'user',
- content: text,
- assistantId: assistant.id,
- topicId,
- createdAt: 'now'
+ if (sendMessageShortcut === 'Enter' && event.key === 'Enter') {
+ if (event.shiftKey) {
+ return
}
+ sendMessage()
+ return event.preventDefault()
+ }
- EventEmitter.emit(EVENT_NAMES.SEND_MESSAGE, message)
-
- setText('')
- event.preventDefault()
+ if (sendMessageShortcut === 'Shift+Enter' && event.key === 'Enter' && event.shiftKey) {
+ sendMessage()
+ return event.preventDefault()
}
}
@@ -101,11 +119,11 @@ const Inputbar: FC = ({ assistant, setActiveTopic }) => {
-
+
-
+