diff --git a/.npmrc b/.npmrc index 7f082f2..99c293a 100644 --- a/.npmrc +++ b/.npmrc @@ -1 +1 @@ -registry=https://registry.npmmirror.com \ No newline at end of file +# registry=https://registry.npmmirror.com \ No newline at end of file diff --git a/package.json b/package.json index e754dd8..bce6aca 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "dependencies": { "@heroui/react": "2.8.3", "@heroui/theme": "2.4.21", - "@mujian/js-sdk": "0.0.6-beta.65", + "@mujian/js-sdk": "0.0.6-beta.mjv.68", "@tailwindcss/vite": "4.1.12", "ahooks": "3.9.5", "axios": "1.11.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d5fd9c1..e3e2c99 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,8 +15,8 @@ importers: specifier: 2.4.21 version: 2.4.21(tailwindcss@4.1.12) '@mujian/js-sdk': - specifier: 0.0.6-beta.65 - version: 0.0.6-beta.65(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: 0.0.6-beta.mjv.68 + version: 0.0.6-beta.mjv.68(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@tailwindcss/vite': specifier: 4.1.12 version: 4.1.12(vite@7.1.2(@types/node@22.13.9)(jiti@2.5.1)(lightningcss@1.30.1)) @@ -996,8 +996,8 @@ packages: '@jridgewell/trace-mapping@0.3.30': resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==} - '@mujian/js-sdk@0.0.6-beta.65': - resolution: {integrity: sha512-QMAYn6wx4uLlGSBjkAH8O9gR4x0vgHUpIKupIJSlgIKfjIqgYOZEvvx3/4anH2l6ESXGTR521x2ri9uQj5cuyw==} + '@mujian/js-sdk@0.0.6-beta.mjv.68': + resolution: {integrity: sha512-bsuev++lvRmS+fD36XljHIw6DnUTFzVrqV69IXKMTb7Vr8W70qQ1rMrn9gN8Lva996JZrXKQ39f3jFrRo1o53g==} peerDependencies: react: ~19.1.1 react-dom: ~19.1.1 @@ -3942,7 +3942,7 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@mujian/js-sdk@0.0.6-beta.65(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@mujian/js-sdk@0.0.6-beta.mjv.68(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@adobe/css-tools': 4.4.4 ahooks: 3.9.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) diff --git a/src/pages/chat/MessageItem/components/MessageActions.tsx b/src/pages/chat/MessageItem/components/MessageActions.tsx index acfcac7..d412d8d 100644 --- a/src/pages/chat/MessageItem/components/MessageActions.tsx +++ b/src/pages/chat/MessageItem/components/MessageActions.tsx @@ -22,6 +22,7 @@ export type LastMessageActionsProps = { isEditing: boolean; swipes: string[]; activeSwipeId: number; + panicked?: boolean; onRegenerate: (() => Promise) | undefined; onContinue: (() => Promise) | undefined; onEditButtonClick: () => void; @@ -116,6 +117,7 @@ export const MessageActions = ({ item.className || '', )} onPress={item.onPress} + isDisabled={item.disabled} classNames={{ wrapper: mjChatCls( [ diff --git a/src/pages/chat/MessageItem/components/MessageBubble.tsx b/src/pages/chat/MessageItem/components/MessageBubble.tsx index 5d78c83..945a645 100644 --- a/src/pages/chat/MessageItem/components/MessageBubble.tsx +++ b/src/pages/chat/MessageItem/components/MessageBubble.tsx @@ -26,7 +26,7 @@ export type MessageBubbleProps = { }; export const MessageBubble = ({ - // message, + message, isUser, isEditing, editedMessage, @@ -79,7 +79,13 @@ export const MessageBubble = ({ )} role="presentation" > - + {item.label} @@ -111,7 +118,13 @@ export const MessageBubble = ({ ) : (
- +
) ) : ( diff --git a/src/pages/chat/MessageItem/components/useMessageActions.ts b/src/pages/chat/MessageItem/components/useMessageActions.ts index 8845ab2..42374b4 100644 --- a/src/pages/chat/MessageItem/components/useMessageActions.ts +++ b/src/pages/chat/MessageItem/components/useMessageActions.ts @@ -1,3 +1,6 @@ +import { useContext } from 'react'; +import { PanicContext } from '../../PanicContext'; + export type DropdownItem = { key: string; label: string; @@ -10,6 +13,7 @@ export type DropdownItem = { | 'warning' | 'danger'; className?: string; + disabled?: boolean; }; export type UseDropdownItemsProps = { @@ -29,11 +33,14 @@ export const useMessageActions = ({ onContinue, onDelete, }: UseDropdownItemsProps): DropdownItem[] => { + const { panicked } = useContext(PanicContext); + const dropdownItems: DropdownItem[] = [ { key: 'edit', label: '编辑', onPress: onEditButtonClick, + disabled: panicked, }, { key: 'copy', @@ -46,11 +53,13 @@ export const useMessageActions = ({ key: 'regenerate', label: '重说', onPress: async () => await onRegenerate?.(), + disabled: panicked, }, { key: 'continue', label: '继续', onPress: async () => await onContinue?.(), + disabled: panicked, }, ] : []), @@ -60,6 +69,7 @@ export const useMessageActions = ({ onPress: onDelete, color: 'danger', className: 'text-danger', + disabled: panicked, }, ]; diff --git a/src/pages/chat/MessageItem/index.tsx b/src/pages/chat/MessageItem/index.tsx index 7e4a823..659d0f1 100644 --- a/src/pages/chat/MessageItem/index.tsx +++ b/src/pages/chat/MessageItem/index.tsx @@ -83,6 +83,8 @@ export const MessageItem = React.memo((props: MessageItemProps) => { swipes = [], activeSwipeId, + mjv, + // sendAt, } = message; const isUser = role === 'user'; @@ -183,7 +185,7 @@ export const MessageItem = React.memo((props: MessageItemProps) => { // 按ctrl点击时打印ID if (event.ctrlKey) { event.preventDefault(); - console.log('Official Chat Message ID:', id); + console.log('Official Chat Message ID:', id, mjv); } }} > diff --git a/src/pages/chat/MsgSend.tsx b/src/pages/chat/MsgSend.tsx index 5285e56..f1a4f47 100644 --- a/src/pages/chat/MsgSend.tsx +++ b/src/pages/chat/MsgSend.tsx @@ -1,6 +1,8 @@ import { Button, Textarea } from '@heroui/react'; import { CircleStopIcon, SendIcon } from 'lucide-react'; import { mjChatCls } from '@/utils/cls'; +import { useContext } from 'react'; +import { PanicContext } from './PanicContext'; interface Props { onSend: (query: string) => void; @@ -28,6 +30,8 @@ export const MsgSend = ({ value, onChange, }: Props) => { + const { panicked } = useContext(PanicContext); + const isEmptyInput = value.trim().length === 0; const handleSend = () => { @@ -64,7 +68,7 @@ export const MsgSend = ({ ), mainWrapper: mjChatCls(['input-textarea-mainWrapper'], 'px-2'), }} - disabled={running} + disabled={running || panicked} endContent={ running ? (