Skip to content
Snippets Groups Projects
Commit ca7ed9f6 authored by Loïc Correnson's avatar Loïc Correnson
Browse files

Merge branch 'feature/dome/emitter-hook' into 'master'

[dome] useEmitter hook

See merge request frama-c/frama-c!3749
parents 763e1262 39c2232d
No related branches found
No related tags found
No related merge requests found
......@@ -42,6 +42,7 @@
*/
import _ from 'lodash';
import Emitter from 'events';
import React from 'react';
import ReactDOM from 'react-dom';
import { AppContainer } from 'react-hot-loader';
......@@ -176,6 +177,21 @@ export function useEvent<A>(
}, [evt, callback]);
}
/** Custom React Hook on Node Emitters. */
export function useEmitter(
emitter: undefined | null | Emitter,
event: undefined | null | string,
callback: () => void,
) {
return React.useEffect((): (undefined | (() => void)) => {
if (emitter && event) {
emitter.on(event, callback);
return () => emitter.off(event, callback);
}
return undefined;
}, [emitter, event, callback]);
}
// --------------------------------------------------------------------------
// --- Application Events
// --------------------------------------------------------------------------
......@@ -186,13 +202,13 @@ export function useEvent<A>(
the window frame is resized.
You can use it for your own components as an easy-to-use global
re-render event.
*/
*/
export const update = new Event('dome.update');
/**
Dome reload event.
It is emitted when the entire window is reloaded.
*/
*/
export const reload = new Event('dome.reload');
ipcRenderer.on('dome.ipc.reload', () => reload.emit());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment