mirror of
https://github.com/open-webui/open-webui.git
synced 2025-12-13 12:55:19 +00:00
refac: collaborative editor
This commit is contained in:
parent
6343f4293a
commit
14ef2e5dea
2 changed files with 21 additions and 6 deletions
|
|
@ -450,7 +450,7 @@ async def yjs_document_state(sid, data):
|
|||
room = f"doc_{document_id}"
|
||||
|
||||
active_session_ids = get_session_ids_from_room(room)
|
||||
print(active_session_ids)
|
||||
|
||||
if sid not in active_session_ids:
|
||||
log.warning(f"Session {sid} not in room {room}. Cannot send state.")
|
||||
return
|
||||
|
|
@ -520,7 +520,8 @@ async def yjs_document_update(sid, data):
|
|||
document_id, data.get("data", {}), SESSION_POOL.get(sid)
|
||||
)
|
||||
|
||||
await create_task(REDIS, debounced_save(), document_id)
|
||||
if data.get("data"):
|
||||
await create_task(REDIS, debounced_save(), document_id)
|
||||
|
||||
except Exception as e:
|
||||
log.error(f"Error in yjs_document_update: {e}")
|
||||
|
|
|
|||
|
|
@ -218,10 +218,24 @@
|
|||
// Empty state, check if we have content to initialize
|
||||
// check if editor empty as well
|
||||
const isEmptyEditor = !editor || editor.getText().trim() === '';
|
||||
if (content && isEmptyEditor && (data?.sessions ?? ['']).length === 1) {
|
||||
const editorYdoc = prosemirrorJSONToYDoc(editor.schema, content);
|
||||
if (editorYdoc) {
|
||||
Y.applyUpdate(this.doc, Y.encodeStateAsUpdate(editorYdoc));
|
||||
if (content && (data?.sessions ?? ['']).length === 1) {
|
||||
if (isEmptyEditor) {
|
||||
const editorYdoc = prosemirrorJSONToYDoc(editor.schema, content);
|
||||
if (editorYdoc) {
|
||||
Y.applyUpdate(this.doc, Y.encodeStateAsUpdate(editorYdoc));
|
||||
}
|
||||
} else {
|
||||
// If the editor already has content, we don't need to send an empty state
|
||||
if (this.doc.getXmlFragment('prosemirror').length > 0) {
|
||||
this.socket.emit('ydoc:document:update', {
|
||||
document_id: this.documentId,
|
||||
user_id: this.user?.id,
|
||||
socket_id: this.socket.id,
|
||||
update: Y.encodeStateAsUpdate(this.doc)
|
||||
});
|
||||
} else {
|
||||
console.warn('Yjs document is empty, not sending state.');
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Reference in a new issue