export const backgroundMitt = new BackgroundMitt();
-export const ipcEmit = (channel: string, payload: any) => {
+export const ipcEmit = <T>(channel: string, payload: T) => {
backgroundMitt.emit('ipc-renderer', {
- channel: channel,
- message: payload
+ channel,
+ payload
});
};
window.ipcRenderer.removeAllListeners(this.channel);
}
- private _onPost = (_e: IpcRendererEvent, payload: IpcEmitPayload<InputParam>): void => {
+ private _onPost = (_e: IpcRendererEvent, payload: InputParam): void => {
console.log(`[IPC] Post: ${this.channel}`);
- this._listenerCallback(payload.message);
+ this._listenerCallback(payload);
}
}
import { ref, Ref } from "vue";
import useScroll from "@/render/composables/useScroll";
-export let messages: Ref<Array<Message>> = ref([]);
+export const messages: Ref<Array<Message>> = ref([]);
export const setMessages: IpcListenerCallback<Array<Message>> = (payload) => {
messages.value = payload as Array<Message>;
// shared
import { ref } from "vue";
-export let profile = ref();
+export const profile = ref();
-export let authComplete = ref(false);
+export const authComplete = ref(false);
export const setProfile: IpcListenerCallback<Profile | null> = (payload) => {
payload ? profile.value = payload : clearProfile();
[listener: string]: IIpcListener<any> | null;
}
-interface IpcEmitPayload<T> {
- message: T | null;
+interface IpcRendererEvent<T> {
+ channel: string;
+ payload: T | null;
}
import { config } from "@/config";
const { autoUpdater } = require('electron-updater');
-interface IpcRendererPayload {
- channel: string;
- message: Message | null;
-}
-
let win: BrowserWindow | null;
let winState: WindowState;
}
// Util function to render message on ipc-renderer event.
-const renderMessage = (payload: IpcRendererPayload): void => {
- console.log('sending to browser window', payload);
+const postToWindow = <T>(event: IpcRendererEvent<T>): void => {
if (win) {
- win.webContents.send(payload.channel, {
- message: payload.message
- });
+ win.webContents.send(event.channel, event.payload);
}
}
// Gateway for messages to the frontend.
backgroundMitt.removeAllListeners("ipc-renderer")
- backgroundMitt.on("ipc-renderer", renderMessage);
+ backgroundMitt.on("ipc-renderer", postToWindow);
}