RenaiApp/src/renderer/services/api.ts

32 lines
936 B
TypeScript

import { ipcRenderer } from 'electron';
import IpcMessageEvent = Electron.IpcMessageEvent;
const ipcClient: IIpcClient = {
ask: (channel: IpcChannels, data?: any): Promise<any> => {
const payload: IIpcPayload = {
data,
};
return new Promise((resolve: (value?: any) => void, reject: (reason?: any) => void): void => {
const listener = (event: IpcMessageEvent, response: IIpcResponse): void => {
if (response.success) {
resolve(response.data);
} else {
reject(response.error);
}
ipcRenderer.removeListener(channel, listener);
};
ipcRenderer.send(channel, payload);
ipcRenderer.on(channel, listener);
});
},
};
export function login(credentials: ICredentials): Promise<void> {
return ipcClient.ask(IpcChannels.LOGIN, credentials);
}
export function isLoggedIn(): Promise<boolean> {
return ipcClient.ask(IpcChannels.LOGGED_IN);
}