Disposed the services on unmounting

This commit is contained in:
inaseem 2021-11-02 16:46:15 +05:30
parent dbf6763a99
commit 454bd49df9
1 changed files with 24 additions and 13 deletions

View File

@ -35,7 +35,17 @@ const RijuEditor = (props) => {
servicesDisposable = null; servicesDisposable = null;
} }
}); });
() => EventEmitter.unsubcribe(token1, token2); () => {
EventEmitter.unsubcribe(token1, token2);
if (clientDisposable) {
clientDisposable.dispose();
clientDisposable = null;
}
if (servicesDisposable) {
servicesDisposable.dispose();
servicesDisposable = null;
}
};
}, []); }, []);
const initLSP = (message, monaco, editor) => { const initLSP = (message, monaco, editor) => {
@ -43,21 +53,22 @@ const RijuEditor = (props) => {
const services = MonacoServices.create(editor, { const services = MonacoServices.create(editor, {
rootUri: `file://${message.root}`, rootUri: `file://${message.root}`,
}); });
servicesDisposable = Services.install(services); servicesDisposable = Services.install(services);
const newURI = `file://${message.root}/${config.main}`; const newURI = `file://${message.root}/${config.main}`;
const oldModel = editor.getModel(); const oldModel = editor.getModel();
if (oldModel.uri.toString() !== newURI) { // if (oldModel.uri.toString() !== newURI) {
// This code is likely to be buggy as it will probably // This code is likely to be buggy as it will probably
// never run and has thus never been tested. // never run and has thus never been tested.
editor.setModel( // editor.setModel(
monaco.editor.createModel( // monaco.editor.createModel(
oldModel.getValue(), // oldModel?.getValue(),
undefined, // undefined,
monaco.Uri.parse(newURI) // monaco.Uri.parse(newURI)
) // )
); // );
oldModel.dispose(); // oldModel.dispose();
} // }
const connection = createMessageConnection( const connection = createMessageConnection(
new RijuMessageReader(socket), new RijuMessageReader(socket),