116 lines
2.9 KiB
TypeScript
116 lines
2.9 KiB
TypeScript
//Set up all the IPC handlers.
|
|
import {
|
|
setWatcherPolling,
|
|
updateAvailable,
|
|
updateChecking,
|
|
updateDownloaded,
|
|
updateProgress,
|
|
watcherError,
|
|
watcherStarted,
|
|
watcherStopped,
|
|
} from "@renderer/redux/app.slice";
|
|
import store from "@renderer/redux/redux-store";
|
|
import ipcTypes from "../../../util/ipcTypes.json";
|
|
import { auth } from "./firebase";
|
|
import { notification } from "antd";
|
|
import i18n from "./i18n";
|
|
|
|
const ipcRenderer = window.electron.ipcRenderer;
|
|
const dispatch = store.dispatch;
|
|
|
|
ipcRenderer.on(
|
|
ipcTypes.toRenderer.test,
|
|
(_event: Electron.IpcRendererEvent, arg) => {
|
|
console.log("Received test message from main process");
|
|
console.log(arg);
|
|
},
|
|
);
|
|
|
|
ipcRenderer.on(ipcTypes.toRenderer.user.getToken, async () => {
|
|
const token = await auth.currentUser?.getIdToken();
|
|
ipcRenderer.send(ipcTypes.toMain.user.getTokenResponse, token);
|
|
});
|
|
|
|
ipcRenderer.on(ipcTypes.toRenderer.watcher.started, () => {
|
|
console.log("Watcher has started");
|
|
dispatch(watcherStarted());
|
|
});
|
|
|
|
ipcRenderer
|
|
.invoke(ipcTypes.toMain.watcher.status)
|
|
.then((started: boolean) => {
|
|
dispatch(started ? watcherStarted() : watcherStopped());
|
|
})
|
|
.catch((error) => {
|
|
console.error("Failed to get watcher status", error);
|
|
});
|
|
|
|
ipcRenderer.on(ipcTypes.toRenderer.watcher.stopped, () => {
|
|
console.log("Watcher has stopped");
|
|
dispatch(watcherStopped());
|
|
});
|
|
|
|
ipcRenderer.on(
|
|
ipcTypes.toRenderer.watcher.error,
|
|
(_event: Electron.IpcRendererEvent, error: string) => {
|
|
console.error(`Watcher has encountered an error:}`);
|
|
console.dir(error);
|
|
dispatch(watcherError(error));
|
|
},
|
|
);
|
|
|
|
//Update Handlers
|
|
ipcRenderer.on(ipcTypes.toRenderer.updates.checking, () => {
|
|
console.log("Checking for updates...");
|
|
dispatch(updateChecking());
|
|
});
|
|
|
|
ipcRenderer.on(ipcTypes.toRenderer.updates.available, () => {
|
|
dispatch(updateAvailable());
|
|
});
|
|
|
|
ipcRenderer.on(
|
|
ipcTypes.toRenderer.updates.downloading,
|
|
(_event: Electron.IpcRendererEvent, arg) => {
|
|
console.log("*** ARg", arg);
|
|
dispatch(
|
|
updateProgress({
|
|
progress: Math.round(arg.percent),
|
|
speed: arg.bytesPerSecond,
|
|
}),
|
|
);
|
|
},
|
|
);
|
|
|
|
ipcRenderer.on(ipcTypes.toRenderer.updates.downloaded, () => {
|
|
dispatch(updateDownloaded());
|
|
});
|
|
|
|
ipcRenderer.on(
|
|
ipcTypes.toRenderer.watcher.polling,
|
|
(_event: Electron.IpcRendererEvent, arg) => {
|
|
dispatch(
|
|
setWatcherPolling({ enabled: arg.enabled, interval: arg.interval }),
|
|
);
|
|
},
|
|
);
|
|
|
|
ipcRenderer.on(
|
|
ipcTypes.toRenderer.general.showErrorMessage,
|
|
(_event: Electron.IpcRendererEvent, error) => {
|
|
notification.error({
|
|
title: i18n.t("errors.notificationtitle"),
|
|
description: error,
|
|
});
|
|
},
|
|
);
|
|
ipcRenderer.on(
|
|
ipcTypes.toRenderer.scrub.scrubError,
|
|
(_event: Electron.IpcRendererEvent, { message }) => {
|
|
notification.error({
|
|
title: i18n.t("errors.notificationtitle"),
|
|
description: message,
|
|
});
|
|
},
|
|
);
|