mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-15 05:37:32 +00:00
fix: remove awareness state before window unload (#4752)
This commit is contained in:
@@ -5,6 +5,7 @@ import {
|
|||||||
applyAwarenessUpdate,
|
applyAwarenessUpdate,
|
||||||
type Awareness,
|
type Awareness,
|
||||||
encodeAwarenessUpdate,
|
encodeAwarenessUpdate,
|
||||||
|
removeAwarenessStates,
|
||||||
} from 'y-protocols/awareness';
|
} from 'y-protocols/awareness';
|
||||||
import type { DocDataSource } from 'y-provider';
|
import type { DocDataSource } from 'y-provider';
|
||||||
import type { Doc } from 'yjs';
|
import type { Doc } from 'yjs';
|
||||||
@@ -190,6 +191,10 @@ function setupAffineAwareness(
|
|||||||
.catch(err => console.error(err));
|
.catch(err => console.error(err));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const windowBeforeUnloadHandler = () => {
|
||||||
|
removeAwarenessStates(awareness, [awareness.clientID], 'window unload');
|
||||||
|
};
|
||||||
|
|
||||||
conn.on('server-awareness-broadcast', awarenessBroadcast);
|
conn.on('server-awareness-broadcast', awarenessBroadcast);
|
||||||
conn.on('new-client-awareness-init', newClientAwarenessInitHandler);
|
conn.on('new-client-awareness-init', newClientAwarenessInitHandler);
|
||||||
awareness.on('update', awarenessUpdate);
|
awareness.on('update', awarenessUpdate);
|
||||||
@@ -198,9 +203,12 @@ function setupAffineAwareness(
|
|||||||
conn.emit('awareness-init', rootDoc.guid);
|
conn.emit('awareness-init', rootDoc.guid);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
window.addEventListener('beforeunload', windowBeforeUnloadHandler);
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
awareness.off('update', awarenessUpdate);
|
awareness.off('update', awarenessUpdate);
|
||||||
conn.off('server-awareness-broadcast', awarenessBroadcast);
|
conn.off('server-awareness-broadcast', awarenessBroadcast);
|
||||||
conn.off('new-client-awareness-init', newClientAwarenessInitHandler);
|
conn.off('new-client-awareness-init', newClientAwarenessInitHandler);
|
||||||
|
window.removeEventListener('unload', windowBeforeUnloadHandler);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user