Initial commit
This commit is contained in:
242
src/main/ipc.js
Normal file
242
src/main/ipc.js
Normal file
@@ -0,0 +1,242 @@
|
||||
import { BrowserWindow, ipcMain, shell, Notification, app } from "electron";
|
||||
import { setStoreValue, getStoreValue } from './store.js'
|
||||
import { createNewWindow, createWindow, getMainWindow, getDrageWindow, closeApiConfigWindow, closeConfigWindow } from './window.js'
|
||||
import { difyRetryRequestTimer } from './dify.js'
|
||||
import axios from 'axios'
|
||||
import log from 'electron-log/main';
|
||||
log.initialize();
|
||||
import {checkForUpdates} from "./utils/updateUtils"
|
||||
import logger from './utils/logger'
|
||||
|
||||
|
||||
function isValidUrl(_url) {
|
||||
const containsApp = _url.includes('/app/');
|
||||
const containsConfigurationOrWorkflow = _url.includes('/configuration') || _url.includes('/workflow');
|
||||
|
||||
// 只有当 URL 包含 'app' 并且包含 'configuration' 或 'workflow' 时,才返回 true
|
||||
return containsApp && containsConfigurationOrWorkflow;
|
||||
}
|
||||
|
||||
export function setupIPC() {
|
||||
ipcMain.handle('initClientData', (event, data) => {
|
||||
logger.info('=======================================initClientData')
|
||||
logger.info(data)
|
||||
|
||||
setStoreValue("token", data.token);
|
||||
setStoreValue("dify_access_token:", data.dify_access_token);
|
||||
setStoreValue("dify_refresh_token", data.dify_refresh_token);
|
||||
setStoreValue("userInfo", data.userInfo);
|
||||
|
||||
setStoreValue("apiUrl", data.apiUrl);
|
||||
|
||||
setStoreValue("difySite", data.difySite);
|
||||
|
||||
setStoreValue("test_12222222", "test_12222222");
|
||||
|
||||
|
||||
|
||||
difyRetryRequestTimer()
|
||||
|
||||
return 'pong'
|
||||
})
|
||||
|
||||
ipcMain.handle('openNewWindow', (event, _url, dify_access_token, refresh_token) => {
|
||||
logger.info('=======================================openNewWindow')
|
||||
logger.info(_url)
|
||||
const _sandbox=isValidUrl(_url)
|
||||
logger.info('=======================================openNewWindow _sandbox:',_sandbox)
|
||||
createNewWindow(_url, dify_access_token, refresh_token,_sandbox)
|
||||
return 'pong'
|
||||
})
|
||||
|
||||
ipcMain.handle('setMainWindowTitle', (event, title) => {
|
||||
|
||||
const mainWindow = getMainWindow();
|
||||
if (mainWindow && !mainWindow.isDestroyed()) {
|
||||
mainWindow.setTitle(title);
|
||||
}
|
||||
|
||||
return 'pong'
|
||||
})
|
||||
|
||||
ipcMain.handle('setLocalStorage', (event, key, value) => {
|
||||
setStoreValue("token", data.token);
|
||||
return 'pong'
|
||||
})
|
||||
|
||||
ipcMain.handle('setGuiLocalStorage', (event, key, value) => {
|
||||
logger.info("=============================================: setGuiLocalStorage key", key)
|
||||
logger.info("=============================================: setGuiLocalStorage value", value)
|
||||
setStoreValue(key, value);
|
||||
return 'pong'
|
||||
})
|
||||
|
||||
ipcMain.handle('getGuiLocalStorage', (event, key) => {
|
||||
return getStoreValue(key)
|
||||
})
|
||||
|
||||
ipcMain.handle('difyWebUploadFileToApi', async (event, datasetId, data) => {
|
||||
logger.info("=============================================: difyWebUploadFileToApi");
|
||||
logger.info("=============================================: datasetId: " + datasetId);
|
||||
logger.info("=============================================: data: ");
|
||||
logger.info(data)
|
||||
|
||||
try {
|
||||
const java_api = getStoreValue("apiUrl") + "/bqw-ai" + "/app/api/knowledge/addDocumentToKnowledge";
|
||||
const token = getStoreValue("token");
|
||||
|
||||
if (!java_api || !token) {
|
||||
throw new Error("API URL or Token is missing in the store.");
|
||||
}
|
||||
|
||||
const params = {
|
||||
kg_id: datasetId,
|
||||
files: datasetId,
|
||||
knowledgeDocumentParams: JSON.parse(data)
|
||||
};
|
||||
|
||||
logger.info("=======================java_api:"+java_api);
|
||||
logger.info("=======================params:")
|
||||
logger.info(params)
|
||||
|
||||
const response = await axios.post(java_api, params, {
|
||||
headers: {
|
||||
'x-access-token': `${token}`,
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
});
|
||||
|
||||
logger.info("Response from server:", response.data);
|
||||
|
||||
// 获取当前窗口并关闭
|
||||
const currentWindow = event.sender.getOwnerBrowserWindow();
|
||||
if (currentWindow && !currentWindow.isDestroyed()) {
|
||||
currentWindow.close();
|
||||
}
|
||||
|
||||
return response.data;
|
||||
} catch (error) {
|
||||
console.error("Error making POST request:", error.message);
|
||||
throw error;
|
||||
}
|
||||
});
|
||||
|
||||
ipcMain.on('difyWebUpdateDatasetsInfo', (event) => {
|
||||
return 'pong'
|
||||
})
|
||||
|
||||
ipcMain.on('app:window:set-position', (event, x, y) => {
|
||||
const drageWindow = getDrageWindow();
|
||||
if (drageWindow) {
|
||||
drageWindow.setPosition(x, y)
|
||||
}
|
||||
return 'pong'
|
||||
})
|
||||
|
||||
ipcMain.handle('app:window:switch-show-main-window', (event) => {
|
||||
const mainWindow = getMainWindow();
|
||||
if (mainWindow && !mainWindow.isDestroyed()) {
|
||||
if (mainWindow.isVisible()) {
|
||||
mainWindow.hide();
|
||||
} else {
|
||||
mainWindow.show();
|
||||
}
|
||||
} else {
|
||||
createWindow();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
ipcMain.handle('app:window:get-position', (event) => {
|
||||
const drageWindow = getDrageWindow();
|
||||
if (drageWindow) {
|
||||
const [x, y] = drageWindow.getPosition();
|
||||
return { x, y }
|
||||
}
|
||||
return { x: 0, y: 0 }
|
||||
})
|
||||
|
||||
// 获取存储值
|
||||
ipcMain.handle('getStoreValue', (event, key) => {
|
||||
return getStoreValue(key)
|
||||
})
|
||||
|
||||
// 设置存储值
|
||||
ipcMain.handle('setStoreValue', (event, key, value) => {
|
||||
return setStoreValue(key, value)
|
||||
})
|
||||
// 设置存储值
|
||||
ipcMain.handle('setStoreValueByConfig', (event, key, value) => {
|
||||
return setStoreValue(key, value)
|
||||
})
|
||||
|
||||
// 关闭配置窗口
|
||||
ipcMain.on('closeApiConfigWindow', () => {
|
||||
closeApiConfigWindow()
|
||||
})
|
||||
|
||||
ipcMain.on('closeConfigWindow', () => {
|
||||
closeConfigWindow()
|
||||
})
|
||||
|
||||
// 添加新的 IPC 监听处理函数
|
||||
ipcMain.handle('openNewPage', (event, url) => {
|
||||
const newWindow = new BrowserWindow({
|
||||
fullscreen: false,
|
||||
width: 1200,
|
||||
height: 700,
|
||||
minWidth: 1200,
|
||||
minHeight: 700,
|
||||
webPreferences: {
|
||||
webSecurity: false, // 禁用 Web 安全
|
||||
nodeIntegration: true,
|
||||
contextIsolation: false,
|
||||
}
|
||||
});
|
||||
|
||||
newWindow.loadURL(url);
|
||||
|
||||
// 可选:添加错误处理
|
||||
newWindow.webContents.on('did-fail-load', (event, errorCode, errorDescription) => {
|
||||
console.error('页面加载失败:', errorDescription);
|
||||
});
|
||||
|
||||
return 'success';
|
||||
});
|
||||
|
||||
// 添加新的 IPC 监听处理函数
|
||||
ipcMain.handle('openCSDNAiPage', (event, url) => {
|
||||
const newWindow = new BrowserWindow({
|
||||
fullscreen: false,
|
||||
width: 1600,
|
||||
height: 900,
|
||||
webPreferences: {
|
||||
webSecurity: false, // 禁用 Web 安全
|
||||
nodeIntegration: false,
|
||||
contextIsolation: false,
|
||||
}
|
||||
});
|
||||
|
||||
newWindow.loadURL(url);
|
||||
|
||||
// 可选:添加错误处理
|
||||
newWindow.webContents.on('did-fail-load', (event, errorCode, errorDescription) => {
|
||||
console.error('页面加载失败:', errorDescription);
|
||||
});
|
||||
|
||||
return 'success';
|
||||
});
|
||||
|
||||
|
||||
ipcMain.handle('openNewPagebySystemBrowser', (event, url) => {
|
||||
shell.openExternal(url);
|
||||
return 'success';
|
||||
});
|
||||
|
||||
|
||||
// 添加新的 IPC 监听处理函数
|
||||
ipcMain.handle('updateToNewVersion', async (event) => {
|
||||
checkForUpdates({},false)
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user