Skip to content

Instantly share code, notes, and snippets.

@eldh
Created August 20, 2017 09:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eldh/aed23636f24e0eda491e1e48bf652a6c to your computer and use it in GitHub Desktop.
Save eldh/aed23636f24e0eda491e1e48bf652a6c to your computer and use it in GitHub Desktop.
Electron ipc with reason
type date = {day: int};
type eventName =
| SetDate
| SetText;
let setDate send (u: date) => send SetDate u;
let handleSetDate on (handler: _ => date => unit) => on SetDate handler;
let setText send (u: string) => send SetText u;
let handleSetText on (handler: _ => string => unit) => on SetText handler;
external on : Event.eventName => ('a => 'm => unit) => unit =
"" [@@bs.scope "ipcMain"] [@@bs.module "electron"];
Event.handleSetText on (fun _ (res: string) => Js.log2 "message" res);
Event.handleSetDate on (fun _ (res: Event.date) => Js.log2 "date" res.day);
external send : Event.eventName => 'm => unit =
"" [@@bs.scope "ipcRenderer"] [@@bs.module "electron"];
Event.setText send "testfooTypes";
Event.setDate send {day: 15};
@eldh
Copy link
Author

eldh commented Aug 20, 2017

Just to clarify: I have NO IDEA what I'm doing. There are surely better ways to achieve this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment