fix: flow edit message (#2113)
* fix flow edit message * flx flow eidt message * remove unused import
This commit is contained in:
parent
055cf03539
commit
94bee0b1b6
@ -6,7 +6,7 @@ import {
|
|||||||
} from '@janhq/uikit'
|
} from '@janhq/uikit'
|
||||||
import { motion as m } from 'framer-motion'
|
import { motion as m } from 'framer-motion'
|
||||||
|
|
||||||
import { useAtom } from 'jotai'
|
import { useAtom, useSetAtom } from 'jotai'
|
||||||
import {
|
import {
|
||||||
MessageCircleIcon,
|
MessageCircleIcon,
|
||||||
SettingsIcon,
|
SettingsIcon,
|
||||||
@ -23,16 +23,19 @@ import { MainViewState } from '@/constants/screens'
|
|||||||
|
|
||||||
import { useMainViewState } from '@/hooks/useMainViewState'
|
import { useMainViewState } from '@/hooks/useMainViewState'
|
||||||
|
|
||||||
|
import { editMessageAtom } from '@/helpers/atoms/ChatMessage.atom'
|
||||||
import { serverEnabledAtom } from '@/helpers/atoms/LocalServer.atom'
|
import { serverEnabledAtom } from '@/helpers/atoms/LocalServer.atom'
|
||||||
|
|
||||||
export default function RibbonNav() {
|
export default function RibbonNav() {
|
||||||
const { mainViewState, setMainViewState } = useMainViewState()
|
const { mainViewState, setMainViewState } = useMainViewState()
|
||||||
const [serverEnabled] = useAtom(serverEnabledAtom)
|
const [serverEnabled] = useAtom(serverEnabledAtom)
|
||||||
|
const setEditMessage = useSetAtom(editMessageAtom)
|
||||||
|
|
||||||
const onMenuClick = (state: MainViewState) => {
|
const onMenuClick = (state: MainViewState) => {
|
||||||
if (mainViewState === state) return
|
if (mainViewState === state) return
|
||||||
if (serverEnabled && state === MainViewState.Thread) return
|
if (serverEnabled && state === MainViewState.Thread) return
|
||||||
setMainViewState(state)
|
setMainViewState(state)
|
||||||
|
setEditMessage('')
|
||||||
}
|
}
|
||||||
|
|
||||||
const primaryMenus = [
|
const primaryMenus = [
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||||
import { useEffect, useRef } from 'react'
|
import { useEffect, useRef, useState } from 'react'
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ConversationalExtension,
|
ConversationalExtension,
|
||||||
@ -10,7 +10,17 @@ import {
|
|||||||
events,
|
events,
|
||||||
} from '@janhq/core'
|
} from '@janhq/core'
|
||||||
|
|
||||||
import { Textarea, Button } from '@janhq/uikit'
|
import {
|
||||||
|
Textarea,
|
||||||
|
Button,
|
||||||
|
Modal,
|
||||||
|
ModalClose,
|
||||||
|
ModalContent,
|
||||||
|
ModalFooter,
|
||||||
|
ModalHeader,
|
||||||
|
ModalPortal,
|
||||||
|
ModalTitle,
|
||||||
|
} from '@janhq/uikit'
|
||||||
import { useAtom, useAtomValue, useSetAtom } from 'jotai'
|
import { useAtom, useAtomValue, useSetAtom } from 'jotai'
|
||||||
|
|
||||||
import { twMerge } from 'tailwind-merge'
|
import { twMerge } from 'tailwind-merge'
|
||||||
@ -51,6 +61,7 @@ const EditChatInput: React.FC<Props> = ({ message }) => {
|
|||||||
const [isWaitingToSend, setIsWaitingToSend] = useAtom(waitingToSendMessage)
|
const [isWaitingToSend, setIsWaitingToSend] = useAtom(waitingToSendMessage)
|
||||||
const textareaRef = useRef<HTMLTextAreaElement>(null)
|
const textareaRef = useRef<HTMLTextAreaElement>(null)
|
||||||
const setEditMessage = useSetAtom(editMessageAtom)
|
const setEditMessage = useSetAtom(editMessageAtom)
|
||||||
|
const [showDialog, setshowDialog] = useState(false)
|
||||||
|
|
||||||
const onPromptChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {
|
const onPromptChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {
|
||||||
setEditPrompt(e.target.value)
|
setEditPrompt(e.target.value)
|
||||||
@ -152,6 +163,28 @@ const EditChatInput: React.FC<Props> = ({ message }) => {
|
|||||||
Cancel
|
Cancel
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<Modal open={showDialog} onOpenChange={() => setshowDialog(false)}>
|
||||||
|
<ModalPortal />
|
||||||
|
<ModalContent>
|
||||||
|
<ModalHeader>
|
||||||
|
<ModalTitle>Edit Message</ModalTitle>
|
||||||
|
</ModalHeader>
|
||||||
|
<p className="text-muted-foreground">
|
||||||
|
Do you want to discard the change
|
||||||
|
</p>
|
||||||
|
<ModalFooter>
|
||||||
|
<div className="flex gap-x-2">
|
||||||
|
<ModalClose asChild onClick={() => setshowDialog(false)}>
|
||||||
|
<Button themes="outline">Cancel</Button>
|
||||||
|
</ModalClose>
|
||||||
|
<ModalClose asChild onClick={() => setEditMessage('')}>
|
||||||
|
<Button autoFocus>Yes</Button>
|
||||||
|
</ModalClose>
|
||||||
|
</div>
|
||||||
|
</ModalFooter>
|
||||||
|
</ModalContent>
|
||||||
|
</Modal>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import {
|
|||||||
ConversationalExtension,
|
ConversationalExtension,
|
||||||
ContentType,
|
ContentType,
|
||||||
} from '@janhq/core'
|
} from '@janhq/core'
|
||||||
import { useAtom, useAtomValue, useSetAtom } from 'jotai'
|
import { useAtomValue, useSetAtom } from 'jotai'
|
||||||
import {
|
import {
|
||||||
RefreshCcw,
|
RefreshCcw,
|
||||||
CopyIcon,
|
CopyIcon,
|
||||||
@ -30,7 +30,7 @@ import { activeThreadAtom } from '@/helpers/atoms/Thread.atom'
|
|||||||
|
|
||||||
const MessageToolbar = ({ message }: { message: ThreadMessage }) => {
|
const MessageToolbar = ({ message }: { message: ThreadMessage }) => {
|
||||||
const deleteMessage = useSetAtom(deleteMessageAtom)
|
const deleteMessage = useSetAtom(deleteMessageAtom)
|
||||||
const [editMessage, setEditMessage] = useAtom(editMessageAtom)
|
const setEditMessage = useSetAtom(editMessageAtom)
|
||||||
const thread = useAtomValue(activeThreadAtom)
|
const thread = useAtomValue(activeThreadAtom)
|
||||||
const messages = useAtomValue(getCurrentChatMessagesAtom)
|
const messages = useAtomValue(getCurrentChatMessagesAtom)
|
||||||
const { resendChatMessage } = useSendChatMessage()
|
const { resendChatMessage } = useSendChatMessage()
|
||||||
@ -49,11 +49,7 @@ const MessageToolbar = ({ message }: { message: ThreadMessage }) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const onEditClick = async () => {
|
const onEditClick = async () => {
|
||||||
if (!editMessage.length) {
|
setEditMessage(message.id ?? '')
|
||||||
setEditMessage(message.id ?? '')
|
|
||||||
} else {
|
|
||||||
setEditMessage('')
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const onRegenerateClick = async () => {
|
const onRegenerateClick = async () => {
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { useCallback, useEffect } from 'react'
|
|||||||
import { Thread } from '@janhq/core/'
|
import { Thread } from '@janhq/core/'
|
||||||
|
|
||||||
import { motion as m } from 'framer-motion'
|
import { motion as m } from 'framer-motion'
|
||||||
import { useAtomValue } from 'jotai'
|
import { useAtomValue, useSetAtom } from 'jotai'
|
||||||
import { GalleryHorizontalEndIcon, MoreVerticalIcon } from 'lucide-react'
|
import { GalleryHorizontalEndIcon, MoreVerticalIcon } from 'lucide-react'
|
||||||
|
|
||||||
import { twMerge } from 'tailwind-merge'
|
import { twMerge } from 'tailwind-merge'
|
||||||
@ -18,6 +18,7 @@ import CleanThreadModal from '../CleanThreadModal'
|
|||||||
import DeleteThreadModal from '../DeleteThreadModal'
|
import DeleteThreadModal from '../DeleteThreadModal'
|
||||||
|
|
||||||
import { assistantsAtom } from '@/helpers/atoms/Assistant.atom'
|
import { assistantsAtom } from '@/helpers/atoms/Assistant.atom'
|
||||||
|
import { editMessageAtom } from '@/helpers/atoms/ChatMessage.atom'
|
||||||
import {
|
import {
|
||||||
getActiveThreadIdAtom,
|
getActiveThreadIdAtom,
|
||||||
threadDataReadyAtom,
|
threadDataReadyAtom,
|
||||||
@ -33,12 +34,14 @@ export default function ThreadList() {
|
|||||||
const assistants = useAtomValue(assistantsAtom)
|
const assistants = useAtomValue(assistantsAtom)
|
||||||
const threadDataReady = useAtomValue(threadDataReadyAtom)
|
const threadDataReady = useAtomValue(threadDataReadyAtom)
|
||||||
const { requestCreateNewThread } = useCreateNewThread()
|
const { requestCreateNewThread } = useCreateNewThread()
|
||||||
|
const setEditMessage = useSetAtom(editMessageAtom)
|
||||||
|
|
||||||
const onThreadClick = useCallback(
|
const onThreadClick = useCallback(
|
||||||
(thread: Thread) => {
|
(thread: Thread) => {
|
||||||
setActiveThread(thread)
|
setActiveThread(thread)
|
||||||
|
setEditMessage('')
|
||||||
},
|
},
|
||||||
[setActiveThread]
|
[setActiveThread, setEditMessage]
|
||||||
)
|
)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user