feat: prepare Zhinian desktop client for pilot release
This commit is contained in:
60
electron/main/ipc/yinian.ts
Normal file
60
electron/main/ipc/yinian.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
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));
|
||||
}
|
||||
Reference in New Issue
Block a user