fix: avoid users to create so many threads at the same time (#1930)
* fix: avoid allow users to create so many threads at the same time * fix missing last message * remove console * update last message metadata thread * update conditional statement
This commit is contained in:
parent
61419e5c02
commit
29a7fb8c93
@ -33,6 +33,7 @@ import {
|
|||||||
updateThreadWaitingForResponseAtom,
|
updateThreadWaitingForResponseAtom,
|
||||||
threadsAtom,
|
threadsAtom,
|
||||||
isGeneratingResponseAtom,
|
isGeneratingResponseAtom,
|
||||||
|
updateThreadAtom,
|
||||||
} from '@/helpers/atoms/Thread.atom'
|
} from '@/helpers/atoms/Thread.atom'
|
||||||
|
|
||||||
export default function EventHandler({ children }: { children: ReactNode }) {
|
export default function EventHandler({ children }: { children: ReactNode }) {
|
||||||
@ -49,6 +50,7 @@ export default function EventHandler({ children }: { children: ReactNode }) {
|
|||||||
const modelsRef = useRef(downloadedModels)
|
const modelsRef = useRef(downloadedModels)
|
||||||
const threadsRef = useRef(threads)
|
const threadsRef = useRef(threads)
|
||||||
const setIsGeneratingResponse = useSetAtom(isGeneratingResponseAtom)
|
const setIsGeneratingResponse = useSetAtom(isGeneratingResponseAtom)
|
||||||
|
const updateThread = useSetAtom(updateThreadAtom)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
threadsRef.current = threads
|
threadsRef.current = threads
|
||||||
@ -131,6 +133,12 @@ export default function EventHandler({ children }: { children: ReactNode }) {
|
|||||||
...thread.metadata,
|
...thread.metadata,
|
||||||
lastMessage: messageContent,
|
lastMessage: messageContent,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateThread({
|
||||||
|
...thread,
|
||||||
|
metadata,
|
||||||
|
})
|
||||||
|
|
||||||
extensionManager
|
extensionManager
|
||||||
.get<ConversationalExtension>(ExtensionTypeEnum.Conversational)
|
.get<ConversationalExtension>(ExtensionTypeEnum.Conversational)
|
||||||
?.saveThread({
|
?.saveThread({
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import {
|
|||||||
ThreadState,
|
ThreadState,
|
||||||
Model,
|
Model,
|
||||||
} from '@janhq/core'
|
} from '@janhq/core'
|
||||||
import { atom, useSetAtom } from 'jotai'
|
import { atom, useAtomValue, useSetAtom } from 'jotai'
|
||||||
|
|
||||||
import { selectedModelAtom } from '@/containers/DropdownListSidebar'
|
import { selectedModelAtom } from '@/containers/DropdownListSidebar'
|
||||||
import { fileUploadAtom } from '@/containers/Providers/Jotai'
|
import { fileUploadAtom } from '@/containers/Providers/Jotai'
|
||||||
@ -19,6 +19,7 @@ import useRecommendedModel from './useRecommendedModel'
|
|||||||
import useSetActiveThread from './useSetActiveThread'
|
import useSetActiveThread from './useSetActiveThread'
|
||||||
|
|
||||||
import { extensionManager } from '@/extension'
|
import { extensionManager } from '@/extension'
|
||||||
|
|
||||||
import {
|
import {
|
||||||
threadsAtom,
|
threadsAtom,
|
||||||
threadStatesAtom,
|
threadStatesAtom,
|
||||||
@ -53,12 +54,21 @@ export const useCreateNewThread = () => {
|
|||||||
|
|
||||||
const { recommendedModel, downloadedModels } = useRecommendedModel()
|
const { recommendedModel, downloadedModels } = useRecommendedModel()
|
||||||
|
|
||||||
|
const threads = useAtomValue(threadsAtom)
|
||||||
|
|
||||||
const requestCreateNewThread = async (
|
const requestCreateNewThread = async (
|
||||||
assistant: Assistant,
|
assistant: Assistant,
|
||||||
model?: Model | undefined
|
model?: Model | undefined
|
||||||
) => {
|
) => {
|
||||||
const defaultModel = model ?? recommendedModel ?? downloadedModels[0]
|
const defaultModel = model ?? recommendedModel ?? downloadedModels[0]
|
||||||
|
|
||||||
|
// check last thread message, if there empty last message use can not create thread
|
||||||
|
const lastMessage = threads[0]?.metadata?.lastMessage
|
||||||
|
|
||||||
|
if (!lastMessage && threads.length) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
const createdAt = Date.now()
|
const createdAt = Date.now()
|
||||||
const assistantInfo: ThreadAssistantInfo = {
|
const assistantInfo: ThreadAssistantInfo = {
|
||||||
assistant_id: assistant.id,
|
assistant_id: assistant.id,
|
||||||
|
|||||||
@ -62,7 +62,9 @@ export default function ThreadList() {
|
|||||||
</p>
|
</p>
|
||||||
<h2 className="line-clamp-1 font-bold">{thread.title}</h2>
|
<h2 className="line-clamp-1 font-bold">{thread.title}</h2>
|
||||||
<p className="mt-1 line-clamp-1 text-xs text-gray-700 group-hover/message:max-w-[160px] dark:text-gray-300">
|
<p className="mt-1 line-clamp-1 text-xs text-gray-700 group-hover/message:max-w-[160px] dark:text-gray-300">
|
||||||
{threadStates[thread.id]?.lastMessage ?? 'No new message'}
|
{threadStates[thread.id]?.lastMessage
|
||||||
|
? threadStates[thread.id]?.lastMessage
|
||||||
|
: 'No new message'}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user