@@ -28,7 +28,6 @@ export type EditorContext = {
28
28
monacoRef : MutableRefObject < Monaco | null >
29
29
insertTextAtCursor : ( text : string ) => void
30
30
appendQuery : ( query : string , options ?: AppendQueryOptions ) => void
31
- buffers : Buffer [ ]
32
31
activeBuffer : Buffer
33
32
setActiveBuffer : ( buffer : Buffer ) => Promise < void >
34
33
addBuffer : (
@@ -46,7 +45,6 @@ const defaultValues = {
46
45
monacoRef : { current : null } ,
47
46
insertTextAtCursor : ( ) => undefined ,
48
47
appendQuery : ( query : string , options ?: AppendQueryOptions ) => undefined ,
49
- buffers : [ ] ,
50
48
activeBuffer : fallbackBuffer ,
51
49
setActiveBuffer : ( ) => Promise . resolve ( ) ,
52
50
addBuffer : ( ) => Promise . resolve ( fallbackBuffer ) ,
@@ -61,27 +59,27 @@ const EditorContext = createContext<EditorContext>(defaultValues)
61
59
export const EditorProvider = ( { children } : PropsWithChildren < { } > ) => {
62
60
const editorRef = useRef < IStandaloneCodeEditor > ( null )
63
61
const monacoRef = useRef < Monaco > ( null )
64
- const buffers = useLiveQuery ( bufferStore . getAll , [ ] )
65
- const activeBufferId = useLiveQuery (
66
- ( ) => bufferStore . getActiveId ( ) ,
67
- [ ] ,
68
- ) ?. value
69
62
70
63
const [ activeBuffer , setActiveBufferState ] = useState < Buffer > ( fallbackBuffer )
71
64
const [ inFocus , setInFocus ] = useState ( false )
65
+ const [ buffersInitialised , setBuffersInitialised ] = useState ( false )
72
66
73
- const ranOnce = useRef ( false )
74
67
// this effect should run only once, after mount and after `buffers` and `activeBufferId` are ready from the db
75
68
useEffect ( ( ) => {
76
- if ( ! ranOnce . current && buffers && activeBufferId ) {
77
- const buffer =
78
- buffers ?. find ( ( buffer ) => buffer . id === activeBufferId ) ?? buffers [ 0 ]
79
- setActiveBufferState ( buffer )
80
- ranOnce . current = true
69
+ async function initBuffers ( ) {
70
+ const buffers = await bufferStore . getAll ( )
71
+ const activeBufferId = ( await bufferStore . getActiveId ( ) ) ?. value
72
+ if ( buffers && activeBufferId ) {
73
+ const buffer =
74
+ buffers ?. find ( ( buffer ) => buffer . id === activeBufferId ) ?? buffers [ 0 ]
75
+ setActiveBufferState ( buffer )
76
+ setBuffersInitialised ( true )
77
+ }
81
78
}
82
- } , [ buffers , activeBufferId ] )
79
+ initBuffers ( )
80
+ } , [ ] )
83
81
84
- if ( ! buffers || ! activeBufferId || activeBuffer === fallbackBuffer ) {
82
+ if ( ! buffersInitialised ) {
85
83
return null
86
84
}
87
85
@@ -201,7 +199,6 @@ export const EditorProvider = ({ children }: PropsWithChildren<{}>) => {
201
199
appendQuery ( editorRef . current , text , options )
202
200
}
203
201
} ,
204
- buffers,
205
202
activeBuffer,
206
203
setActiveBuffer,
207
204
addBuffer,
0 commit comments