Files
NianToB/electron/main/ipc/yinian.ts

61 lines
2.6 KiB
TypeScript

import { ipcMain } from 'electron';
import { getYinianControlPlane } from '../../yinian/control-plane';
import { getYinianStorage } from '../../yinian/storage';
import type { YinianLoginWithPasswordInput, YinianLoginWithSmsInput, YinianSavedCredentials } from '../../../shared/yinian';
export function registerYinianHandlers(): void {
ipcMain.handle('yinian:server:status', async () => getYinianControlPlane().getServerStatus());
ipcMain.handle('yinian:auth:createImageCaptcha', async (_, randomStr?: string) => {
return getYinianControlPlane().createImageCaptcha(randomStr);
});
ipcMain.handle('yinian:auth:restoreSession', async () => getYinianControlPlane().restoreSession());
ipcMain.handle('yinian:auth:getSessionState', async () => getYinianControlPlane().getSessionState());
ipcMain.handle('yinian:auth:loginWithSms', async (_, input: YinianLoginWithSmsInput) => {
return getYinianControlPlane().loginWithSms(input);
});
ipcMain.handle('yinian:auth:loginWithPassword', async (_, input: YinianLoginWithPasswordInput) => {
return getYinianControlPlane().loginWithPassword(input);
});
ipcMain.handle('yinian:auth:logout', async () => getYinianControlPlane().logout());
ipcMain.handle('yinian:auth:getSavedCredentials', async () => {
return getYinianStorage().getSavedCredentials();
});
ipcMain.handle('yinian:auth:saveCredentials', async (_, input: Pick<YinianSavedCredentials, 'account' | 'password' | 'rememberPassword'>) => {
const account = typeof input.account === 'string' ? input.account.trim() : '';
if (!account) {
await getYinianStorage().clearSavedCredentials();
return undefined;
}
const credentials: YinianSavedCredentials = {
account,
password: input.rememberPassword ? input.password ?? '' : undefined,
rememberPassword: Boolean(input.rememberPassword),
updatedAt: Date.now(),
};
await getYinianStorage().setSavedCredentials(credentials);
return credentials;
});
ipcMain.handle('yinian:auth:clearSavedCredentials', async () => {
await getYinianStorage().clearSavedCredentials();
});
ipcMain.handle('yinian:config:get', async () => getYinianControlPlane().getConfigSnapshot());
ipcMain.handle('yinian:hotel:switch', async (_, hotelId: string) => getYinianControlPlane().switchHotel(hotelId));
ipcMain.handle('yinian:skills:sync', async () => getYinianControlPlane().syncSkills());
ipcMain.handle('yinian:skills:listLocal', async () => getYinianControlPlane().listLocalSkills());
ipcMain.handle('yinian:skills:getRegistry', async (_, hotelId?: string) => getYinianControlPlane().getSkillRegistry(hotelId));
}