[WIKI-703] fix: draw.io awareness sync (#4350)

* fix : awarness api

* refactor: update collaboration-cursor to collaboration-caret
This commit is contained in:
Vipin Chaudhary
2025-10-01 18:53:43 +05:30
committed by GitHub
parent 283482d7c0
commit 96f7e2a2ac
10 changed files with 21 additions and 16 deletions
@@ -27,15 +27,15 @@ export type TEditorFlaggingHookProps = {
*/
export const useEditorFlagging = (props: TEditorFlaggingHookProps): TEditorFlaggingHookReturnType => ({
document: {
disabled: ["ai", "collaboration-cursor"],
disabled: ["ai", "collaboration-caret"],
flagged: [],
},
liteText: {
disabled: ["ai", "collaboration-cursor"],
disabled: ["ai", "collaboration-caret"],
flagged: [],
},
richText: {
disabled: ["ai", "collaboration-cursor"],
disabled: ["ai", "collaboration-caret"],
flagged: [],
},
});
@@ -41,7 +41,7 @@ export const useEditorFlagging = (props: TEditorFlaggingHookProps): TEditorFlagg
documentDisabled.push("ai");
}
if (!isCollaborationCursorEnabled) {
// documentDisabled.push("collaboration-cursor");
// documentDisabled.push("collaboration-caret");
}
if (storeType && !isNestedPagesEnabled(workspaceSlug)) {
documentFlagged.push("nested-pages");
+3
View File
@@ -1,5 +1,6 @@
import { BroadcastController } from "./broadcast.controller";
import { CollaborationController } from "./collaboration.controller";
import { ContentController } from "./content.controller";
import { ConvertDocumentController } from "./convert-document.controller";
import { DocumentController } from "./document.controller";
import { HealthController } from "./health.controller";
@@ -12,6 +13,8 @@ export const CONTROLLERS = [
DocumentController,
LiveDocumentController,
ConvertDocumentController,
// Content service
ContentController,
// websocket
CollaborationController,
BroadcastController,
+3 -3
View File
@@ -28,15 +28,15 @@ export type TEditorFlaggingHookProps = {
*/
export const useEditorFlagging = (_props: TEditorFlaggingHookProps): TEditorFlaggingHookReturnType => ({
document: {
disabled: ["ai", "collaboration-cursor"],
disabled: ["ai", "collaboration-caret"],
flagged: [],
},
liteText: {
disabled: ["ai", "collaboration-cursor"],
disabled: ["ai", "collaboration-caret"],
flagged: [],
},
richText: {
disabled: ["ai", "collaboration-cursor"],
disabled: ["ai", "collaboration-caret"],
flagged: [],
},
isLoadingIntegrations: false,
+1 -1
View File
@@ -66,7 +66,7 @@ export const useEditorFlagging = (props: TEditorFlaggingHookProps): TEditorFlagg
document.disabled.add("ai");
}
if (!isCollaborationCursorEnabled) {
document.disabled.add("collaboration-cursor");
document.disabled.add("collaboration-caret");
}
if (storeType && !isNestedPagesEnabled(workspaceSlug)) {
document.flagged.add("nested-pages");
+1 -1
View File
@@ -1,6 +1,6 @@
export type TExtensions =
| "ai"
| "collaboration-cursor"
| "collaboration-caret"
| "issue-embed"
| "page-embed"
| "slash-commands"
@@ -18,7 +18,7 @@ const renderUserCursor = (user: TUserDetails): HTMLSpanElement => {
label.dataset.collaboratorId = user?.id;
label.classList.value =
"custom-collaboration-cursor absolute rounded-[3px_3px_3px_0] text-[#0d0d0d] text-xs font-semibold leading-normal -top-[1.3rem] -left-[1px] py-0.5 px-1.5 select-none whitespace-nowrap";
"custom-collaboration-caret absolute rounded-[3px_3px_3px_0] text-[#0d0d0d] text-xs font-semibold leading-normal -top-[1.3rem] -left-[1px] py-0.5 px-1.5 select-none whitespace-nowrap";
label.setAttribute("style", `background-color: ${user.color}`);
label.insertBefore(document.createTextNode(user.name), null);
@@ -195,7 +195,7 @@ const extensionRegistry: TDocumentEditorAdditionalExtensionsRegistry[] = [
},
{
// Collaboration cursor extension
isEnabled: (disabledExtensions) => !disabledExtensions.includes("collaboration-cursor"),
isEnabled: (disabledExtensions) => !disabledExtensions.includes("collaboration-caret"),
getExtension: ({ provider, userDetails }) =>
provider &&
CustomCollaborationCaret({
@@ -80,12 +80,14 @@ export const useDrawioAwareness = (editor: Editor, diagramId: string | null) =>
useEffect(() => {
if (!awarenessProvider) return;
const awarenessStates = Array.from(awarenessProvider.states?.entries?.() ?? []) as [
number,
Record<string, unknown>,
][];
const updateAwarenessUsers = () => {
// Capture fresh awareness states on each update
const awarenessStates = Array.from(awarenessProvider.states?.entries?.() ?? []) as [
number,
Record<string, unknown>,
][];
const states = awarenessStates.map(([clientId, state]) => ({
clientId,
user: (state.user as TUserDetails) || { color: "", id: "", name: "" },
@@ -28,7 +28,7 @@ export const useEditorFlagging = (): {
// extensions disabled in the document editor
if (!isIssueEmbedEnabled) disabledExtensions?.push("issue-embed");
if (!isCollaborationCursorEnabled) disabledExtensions?.push("collaboration-cursor");
if (!isCollaborationCursorEnabled) disabledExtensions?.push("collaboration-caret");
return {
disabledExtensions,
isIssueEmbedEnabled,