From 7a161211351a2c6c5a0a2b66763de5a9c8ebc980 Mon Sep 17 00:00:00 2001 From: RainbowBird Date: Thu, 26 Mar 2026 23:50:39 +0800 Subject: [PATCH] chore(stage-ui): remove sync schedule --- .../stage-ui/src/stores/chat/session-store.ts | 108 +----------------- 1 file changed, 1 insertion(+), 107 deletions(-) diff --git a/packages/stage-ui/src/stores/chat/session-store.ts b/packages/stage-ui/src/stores/chat/session-store.ts index 0c0930712..faab7645a 100644 --- a/packages/stage-ui/src/stores/chat/session-store.ts +++ b/packages/stage-ui/src/stores/chat/session-store.ts @@ -5,15 +5,13 @@ import { nanoid } from 'nanoid' import { defineStore, storeToRefs } from 'pinia' import { computed, ref, watch } from 'vue' -import { client } from '../../composables/api' -import { useLocalFirstRequest } from '../../composables/use-local-first' import { chatSessionsRepo } from '../../database/repos/chat-sessions.repo' import { useAuthStore } from '../auth' import { useAiriCardStore } from '../modules/airi-card' import { mergeLoadedSessionMessages } from './session-message-merge' export const useChatSessionStore = defineStore('chat-session', () => { - const { userId, isAuthenticated } = storeToRefs(useAuthStore()) + const { userId } = storeToRefs(useAuthStore()) const { activeCardId, systemPrompt } = storeToRefs(useAiriCardStore()) const activeSessionId = ref('') @@ -28,7 +26,6 @@ export const useChatSessionStore = defineStore('chat-session', () => { let initializePromise: Promise | null = null let persistQueue = Promise.resolve() - let syncQueue = Promise.resolve() const loadedSessions = new Set() const loadingSessions = new Map>() @@ -49,30 +46,10 @@ export const useChatSessionStore = defineStore('chat-session', () => { return persistQueue } - function enqueueSync(task: () => Promise) { - syncQueue = syncQueue.then(task, task) - return syncQueue - } - function snapshotMessages(messages: ChatHistoryItem[]) { return JSON.parse(JSON.stringify(messages)) as ChatHistoryItem[] } - function extractMessageContent(message: ChatHistoryItem) { - if (typeof message.content === 'string') - return message.content - if (Array.isArray(message.content)) { - return message.content.map((part) => { - if (typeof part === 'string') - return part - if (part && typeof part === 'object' && 'text' in part) - return String(part.text ?? '') - return '' - }).join('') - } - return '' - } - function ensureSessionMessageIds(sessionId: string) { const current = sessionMessages.value[sessionId] ?? [] let changed = false @@ -92,87 +69,6 @@ export const useChatSessionStore = defineStore('chat-session', () => { return next } - function buildSyncMessages(messages: ChatHistoryItem[]) { - return messages.map(message => ({ - id: message.id ?? nanoid(), - role: message.role, - content: extractMessageContent(message), - createdAt: message.createdAt, - })) - } - - async function syncSessionToRemote(sessionId: string) { - let cachedRecord: ChatSessionRecord | null | undefined - const request = useLocalFirstRequest({ - local: async () => { - cachedRecord = await chatSessionsRepo.getSession(sessionId) - return cachedRecord - }, - remote: async () => { - if (!cachedRecord) - cachedRecord = await chatSessionsRepo.getSession(sessionId) - if (!cachedRecord) - return cachedRecord - - const members: Array< - | { type: 'user', userId: string } - | { type: 'character', characterId: string } - > = [ - { type: 'user', userId: userId.value }, - ] - - if (cachedRecord.meta.characterId && cachedRecord.meta.characterId !== 'default') { - members.push({ - type: 'character', - characterId: cachedRecord.meta.characterId, - }) - } - - const normalizedMessages = cachedRecord.messages.map(message => message.id ? message : { ...message, id: nanoid() }) - if (normalizedMessages.some((message, index) => cachedRecord?.messages[index]?.id !== message.id)) { - cachedRecord = { - ...cachedRecord, - messages: normalizedMessages, - } - await chatSessionsRepo.saveSession(sessionId, cachedRecord) - } - - const res = await client.api.chats.sync.$post({ - json: { - chat: { - id: cachedRecord.meta.sessionId, - type: 'group', - title: cachedRecord.meta.title, - createdAt: cachedRecord.meta.createdAt, - updatedAt: cachedRecord.meta.updatedAt, - }, - members, - messages: buildSyncMessages(cachedRecord.messages), - }, - }) - - if (!res.ok) - throw new Error('Failed to sync chat session') - return cachedRecord - }, - allowRemote: () => isAuthenticated.value, - lazy: true, - }) - - await request.execute() - } - - function scheduleSync(sessionId: string) { - void enqueueSync(async () => { - try { - await syncSessionToRemote(sessionId) - } - catch (error) { - console.warn('Failed to sync chat session', error) - } - }) - } - function generateInitialMessageFromPrompt(prompt: string) { const content = codeBlockSystemPrompt + mathSyntaxSystemPrompt + prompt @@ -244,7 +140,6 @@ export const useChatSessionStore = defineStore('chat-session', () => { await chatSessionsRepo.saveIndex(snapshot) } }) - scheduleSync(sessionId) } function persistSessionMessages(sessionId: string) { @@ -335,7 +230,6 @@ export const useChatSessionStore = defineStore('chat-session', () => { const record: ChatSessionRecord = { meta, messages: initialMessages } await enqueuePersist(() => chatSessionsRepo.saveSession(sessionId, record)) await persistIndex() - scheduleSync(sessionId) if (options?.setActive !== false) activeSessionId.value = sessionId