@@ -7,6 +7,7 @@ import * as Y from 'yjs';
7
7
8
8
import { extensions as baseExtensions , getLanguage } from '@/lib/editor/extensions' ;
9
9
import { COLLAB_WS } from '@/services/api-clients' ;
10
+ import { getUserId } from '@/services/user-service' ;
10
11
11
12
// credit: https://github.com/yjs/y-websocket
12
13
const usercolors = [
@@ -28,6 +29,7 @@ type IYjsUserState = { user: { name: string; userId: string; color: string; colo
28
29
29
30
// TODO: Test if collab logic works
30
31
export const useCollab = ( roomId : string ) => {
32
+ const [ userId ] = useState ( getUserId ( ) ) ;
31
33
const [ code , setCode ] = useState ( '' ) ;
32
34
const editorRef = useRef < ReactCodeMirrorRef > ( null ) ;
33
35
const [ extensions , setExtensions ] = useState < Array < Extension > > ( baseExtensions ) ;
@@ -44,6 +46,7 @@ export const useCollab = (roomId: string) => {
44
46
if ( editorRef . current ) {
45
47
const doc = new Y . Doc ( ) ;
46
48
let provider = null ;
49
+
47
50
try {
48
51
provider = new WebsocketProvider ( COLLAB_WS , roomId , doc ) ;
49
52
provider . connect ( ) ;
@@ -54,6 +57,7 @@ export const useCollab = (roomId: string) => {
54
57
) ;
55
58
return ;
56
59
}
60
+
57
61
const ytext = doc . getText ( 'codemirror' ) ;
58
62
const undoManager = new Y . UndoManager ( ytext ) ;
59
63
const awareness = provider . awareness ;
@@ -72,7 +76,7 @@ export const useCollab = (roomId: string) => {
72
76
// TODO: Get user name, ID
73
77
const userState : IYjsUserState [ 'user' ] = {
74
78
name : `Anon` ,
75
- userId : ' ',
79
+ userId : userId ?? 'null ',
76
80
color,
77
81
colorLight : light ,
78
82
} ;
@@ -81,12 +85,14 @@ export const useCollab = (roomId: string) => {
81
85
const collabExt = yCollab ( ytext , awareness , { undoManager } ) ;
82
86
setCode ( ytext . toString ( ) ) ;
83
87
setExtensions ( [ ...extensions , collabExt ] ) ;
88
+
84
89
return ( ) => {
85
90
doc . destroy ( ) ;
86
- provider . disconnect ( ) ;
91
+ provider . destroy ( ) ;
87
92
} ;
88
93
}
89
94
} , [ editorRef , roomId ] ) ;
95
+
90
96
return {
91
97
editorRef,
92
98
extensions : [ ...extensions , langExtension ] ,
0 commit comments