142 lines
4.3 KiB
TypeScript
142 lines
4.3 KiB
TypeScript
import BaseController from "./BaseController";
|
|
import VersionService from "../service/VersionService";
|
|
import ResponseUtils from "../utils/ResponseUtils";
|
|
import VersionRepository from "../repository/VersionRepository";
|
|
import Logger from "../core/Logger";
|
|
import { BrowserWindow, dialog } from "electron";
|
|
import BeanFactory from "../core/BeanFactory";
|
|
|
|
class VersionController extends BaseController {
|
|
private readonly _versionService: VersionService;
|
|
private readonly _versionDao: VersionRepository;
|
|
|
|
constructor(versionService: VersionService, versionDao: VersionRepository) {
|
|
super();
|
|
this._versionService = versionService;
|
|
this._versionDao = versionDao;
|
|
}
|
|
|
|
getVersions(req: ControllerParam) {
|
|
this._versionService
|
|
.getFrpVersionsByGitHub()
|
|
.then(data => {
|
|
req.event.reply(req.channel, ResponseUtils.success(data));
|
|
})
|
|
.catch(err => {
|
|
Logger.error("VersionController.getVersions", err);
|
|
this._versionService.getFrpVersionByLocalJson().then(localData => {
|
|
req.event.reply(req.channel, ResponseUtils.success(localData));
|
|
});
|
|
});
|
|
}
|
|
|
|
getDownloadedVersions(req: ControllerParam) {
|
|
this._versionDao
|
|
.findAll()
|
|
.then(data => {
|
|
req.event.reply(req.channel, ResponseUtils.success(data));
|
|
})
|
|
.catch((err: Error) => {
|
|
Logger.error("VersionController.getDownloadedVersions", err);
|
|
req.event.reply(req.channel, ResponseUtils.fail(err));
|
|
});
|
|
}
|
|
|
|
downloadFrpVersion(req: ControllerParam) {
|
|
this._versionService
|
|
.downloadFrpVersion(req.args.githubReleaseId, progress => {
|
|
req.event.reply(
|
|
req.channel,
|
|
ResponseUtils.success({
|
|
percent: progress.percent,
|
|
githubReleaseId: req.args.githubReleaseId,
|
|
completed: progress.percent >= 1
|
|
})
|
|
);
|
|
})
|
|
.then(r => {
|
|
req.event.reply(
|
|
req.channel,
|
|
ResponseUtils.success({
|
|
percent: 1,
|
|
githubReleaseId: req.args.githubReleaseId,
|
|
completed: true
|
|
})
|
|
);
|
|
})
|
|
.catch((err: Error) => {
|
|
Logger.error("VersionController.downloadFrpVersion", err);
|
|
req.event.reply(req.channel, ResponseUtils.fail(err));
|
|
});
|
|
}
|
|
|
|
deleteDownloadedVersion(req: ControllerParam) {
|
|
this._versionService
|
|
.deleteFrpVersion(req.args.githubReleaseId)
|
|
.then(() => {
|
|
req.event.reply(req.channel, ResponseUtils.success());
|
|
})
|
|
.catch((err: Error) => {
|
|
Logger.error("VersionController.deleteDownloadedVersion", err);
|
|
req.event.reply(req.channel, ResponseUtils.fail(err));
|
|
});
|
|
}
|
|
|
|
importLocalFrpcVersion(req: ControllerParam) {
|
|
const win: BrowserWindow = BeanFactory.getBean("win");
|
|
dialog
|
|
.showOpenDialog(win, {
|
|
properties: ["openFile"],
|
|
filters: [
|
|
{ name: "Frpc", extensions: ["tar.gz", "zip"] } // 允许选择的文件类型,分开后缀以确保可以选择
|
|
]
|
|
})
|
|
.then(result => {
|
|
if (result.canceled) {
|
|
req.event.reply(
|
|
req.channel,
|
|
ResponseUtils.success({
|
|
canceled: true
|
|
})
|
|
);
|
|
return;
|
|
} else {
|
|
const filePath = result.filePaths[0];
|
|
this._versionService
|
|
.importLocalFrpcVersion(filePath)
|
|
.then(data => {
|
|
req.event.reply(
|
|
req.channel,
|
|
ResponseUtils.success({
|
|
canceled: false
|
|
})
|
|
);
|
|
})
|
|
.catch((err: Error) => {
|
|
Logger.error("VersionController.importLocalFrpcVersion", err);
|
|
req.event.reply(req.channel, ResponseUtils.fail(err));
|
|
});
|
|
}
|
|
})
|
|
.catch(err => {
|
|
Logger.error("VersionController.importLocalFrpcVersion", err);
|
|
req.event.reply(req.channel, ResponseUtils.fail(err));
|
|
});
|
|
|
|
// const win: BrowserWindow = BeanFactory.getBean("win");
|
|
// const result = await dialog.showOpenDialog(win, {
|
|
// properties: ["openFile"],
|
|
// filters: [
|
|
// { name: "Frpc", extensions: ["tar.gz", "zip"] } // 允许选择的文件类型,分开后缀以确保可以选择
|
|
// ]
|
|
// });
|
|
// if (result.canceled) {
|
|
//
|
|
// }else {
|
|
//
|
|
// }
|
|
}
|
|
}
|
|
|
|
export default VersionController;
|