Skip to content

Commit 6cddb17

Browse files
committed
fix: Properly unregister listeners on dispose
1 parent 9d70d36 commit 6cddb17

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/LanguageClient.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,21 @@ function LanguageClient ({
2323
useEffect(() => {
2424
console.info(`Starting language server for language ${languageServerConfig.language}`)
2525
const languageClient = createLanguageClientManager(languageServerUrl, getSecurityToken, languageServerConfig, libraryUrls ?? [])
26-
languageClient.onError((error) => {
26+
const errorDisposable = languageClient.onError((error) => {
2727
if (onErrorRef.current != null) {
2828
onErrorRef.current(error)
2929
}
3030
})
31-
languageClient.onDidChangeStatus(status => {
31+
const statusChangeDisposable = languageClient.onDidChangeStatus(status => {
3232
if (onDidChangeStatusRef.current != null) {
3333
onDidChangeStatusRef.current(status)
3434
}
3535
})
3636
const startTimeout = setTimeout(() => languageClient.start())
3737

3838
return () => {
39+
errorDisposable.dispose()
40+
statusChangeDisposable.dispose()
3941
console.info('Shutting down language server')
4042
clearTimeout(startTimeout)
4143
languageClient.dispose().then(() => {

0 commit comments

Comments
 (0)