@@ -2,10 +2,10 @@ import { For, Show } from 'solid-js/web'
2
2
import { createSignal } from 'solid-js'
3
3
import { useStore } from '@nanostores/solid'
4
4
import { useClipboardCopy } from '@/hooks'
5
- import { deleteMessageByConversationId , spliceMessageByConversationId , spliceUpdateMessageByConversationId } from '@/stores/messages'
6
- import { conversationMap } from '@/stores/conversation'
5
+ import { deleteMessageByConversationId , getMessagesByConversationId , spliceMessageByConversationId , spliceUpdateMessageByConversationId , updateMessage } from '@/stores/messages'
6
+ import { conversationMap , currentConversationId } from '@/stores/conversation'
7
7
import { handlePrompt } from '@/logics/conversation'
8
- import { scrollController } from '@/stores/ui'
8
+ import { scrollController , showShareModal } from '@/stores/ui'
9
9
import { globalAbortController } from '@/stores/settings'
10
10
import StreamableText from '../StreamableText'
11
11
import { DropDownMenu , Tooltip } from '../ui/base'
@@ -23,6 +23,7 @@ interface Props {
23
23
export default ( props : Props ) => {
24
24
let inputRef : HTMLTextAreaElement
25
25
const $conversationMap = useStore ( conversationMap )
26
+ const $currentConversationId = useStore ( currentConversationId )
26
27
27
28
const [ showRawCode , setShowRawCode ] = createSignal ( false )
28
29
const [ copied , setCopied ] = createSignal ( false )
@@ -58,6 +59,15 @@ export default (props: Props) => {
58
59
inputRef . focus ( )
59
60
}
60
61
62
+ const handleShareMessageItem = ( ) => {
63
+ const messages = getMessagesByConversationId ( $currentConversationId ( ) )
64
+ messages . forEach ( ( message ) => {
65
+ updateMessage ( $currentConversationId ( ) , message . id , { isSelected : props . message . id === message . id } ,
66
+ )
67
+ } )
68
+ showShareModal . set ( true )
69
+ }
70
+
61
71
const handleSend = ( ) => {
62
72
if ( ! inputRef . value )
63
73
return
@@ -80,7 +90,7 @@ export default (props: Props) => {
80
90
{ id : 'edit' , label : 'Edit message' , icon : 'i-carbon:edit' , role : 'user' , action : handleEditMessageItem } ,
81
91
{ id : 'copy' , label : 'Copy message' , icon : 'i-carbon-copy' , role : 'all' , action : handleCopyMessageItem } ,
82
92
{ id : 'delete' , label : 'Delete message' , icon : 'i-carbon-trash-can' , role : 'all' , action : handleDeleteMessageItem } ,
83
- { id : 'share' , label : 'Share message' , icon : 'i-carbon:export' , role : 'all' } ,
93
+ { id : 'share' , label : 'Share message' , icon : 'i-carbon:export' , role : 'all' , action : handleShareMessageItem } ,
84
94
] )
85
95
86
96
if ( props . message . role === 'user' )
0 commit comments