61 lines
2.6 KiB
TypeScript
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));
|
|
}
|