frpc-desktop/electron/controller/SystemController.ts

91 lines
2.6 KiB
TypeScript

import SystemService from "../service/SystemService";
import ResponseUtils from "../utils/ResponseUtils";
import PathUtils from "../utils/PathUtils";
import { BrowserWindow, dialog } from "electron";
import BeanFactory from "../core/BeanFactory";
import Logger from "../core/Logger";
class SystemController {
private readonly _systemService: SystemService;
constructor(systemService: SystemService) {
this._systemService = systemService;
}
openUrl(req: ControllerParam) {
this._systemService
.openUrl(req.args.url)
.then(() => {
req.event.reply(req.channel, ResponseUtils.success());
})
.catch((err: Error) => {
Logger.error("SystemController.openUrl", err);
req.event.reply(req.channel, ResponseUtils.fail(err));
});
}
relaunchApp(req: ControllerParam) {
this._systemService
.relaunch()
.then(() => {
req.event.reply(req.channel, ResponseUtils.success());
})
.catch((err: Error) => {
Logger.error("SystemController.relaunchApp", err);
req.event.reply(req.channel, ResponseUtils.fail(err));
});
}
openAppData(req: ControllerParam) {
this._systemService
.openLocalPath(PathUtils.getAppData())
.then(() => {
req.event.reply(req.channel, ResponseUtils.success());
})
.catch((err: Error) => {
Logger.error("SystemController.openAppData", err);
req.event.reply(req.channel, ResponseUtils.fail(err));
});
}
selectLocalFile(req: ControllerParam) {
const { name, extensions } = req.args;
if (!extensions || extensions.length === 0) {
return;
// req.event.reply(req.channel, ResponseUtils.fail("可选择扩展名不能为空"));
}
const win: BrowserWindow = BeanFactory.getBean("win");
dialog
.showOpenDialog(win, {
properties: ["openFile"],
filters: [{ name: name, extensions: extensions }]
})
.then(result => {
if (result.canceled) {
// todo canceled
req.event.reply(
req.channel,
ResponseUtils.success({
canceled: true,
path: ""
})
);
} else {
req.event.reply(
req.channel,
ResponseUtils.success({
canceled: false,
path: result.filePaths[0]
})
);
}
})
.catch((err: Error) => {
Logger.error("SystemController.selectLocalFile", err);
req.event.reply(req.channel, ResponseUtils.fail(err));
});
}
}
export default SystemController;