LaiTool/src/main/Service/system/electronInterface.ts

60 lines
1.8 KiB
TypeScript
Raw Normal View History

import { shell } from "electron";
import { CheckFileOrDirExist } from "../../../define/Tools/file";
import { errorMessage, successMessage } from "../../Public/generalTools";
import path from 'path';
/** 打开指定的文件夹的方法 */
export type OpenFolderParams = {
/** 是不是基于项目文件,是的话,会在项目文件夹的基础上进行拼接 */
baseProject: boolean;
/** 判断是不是打开父文件夹 */
dirFloder: boolean;
/** 文件路径baseProject 为false需要设置完整的文件路径 */
folderPath: string;
}
/** 一些对electron接口的封装配合业务逻辑 */
export default class ElectronInterface {
constructor() { }
/**
*
* @param value
* @returns
*/
public async OpenFile(value: string) {
if (await CheckFileOrDirExist(value)) {
return errorMessage('文件不存在', 'SystemIpc_OPEN_FILE')
}
await shell.openPath(value)
}
/**
*
* @param params
* @returns
*/
public async OpenFolder(params: OpenFolderParams) {
try {
let openFolder = null
if (params.baseProject) {
openFolder = path.join(global.config.project_path, params.folderPath)
}
if (params.dirFloder) {
openFolder = path.dirname(params.folderPath)
}
if (!openFolder) {
openFolder = params.folderPath
}
// 判断文件夹是不是存在
let isExist = await CheckFileOrDirExist(openFolder)
if (!isExist) {
throw new Error('文件夹不存在,请检查')
}
shell.openPath(openFolder)
return successMessage(null, '打开成功')
} catch (error) {
return errorMessage('打开文件夹错误,错误信息如下:' + error.message, 'SystemIpc_OPEN_FOLDER')
}
}
}