forked from extern/bruno
76 lines
1.8 KiB
JavaScript
76 lines
1.8 KiB
JavaScript
// Native
|
|
const { join } = require('path');
|
|
const { format } = require('url');
|
|
const axios = require('axios');
|
|
|
|
// Packages
|
|
const { BrowserWindow, app, ipcMain } = require('electron');
|
|
const isDev = require('electron-is-dev');
|
|
const prepareNext = require('electron-next');
|
|
|
|
// Prepare the renderer once the app is ready
|
|
app.on('ready', async () => {
|
|
await prepareNext('./renderer');
|
|
|
|
const mainWindow = new BrowserWindow({
|
|
width: 1280,
|
|
height: 768,
|
|
webPreferences: {
|
|
nodeIntegration: true,
|
|
contextIsolation: false,
|
|
preload: join(__dirname, 'preload.js'),
|
|
},
|
|
});
|
|
|
|
const url = isDev
|
|
? 'http://localhost:8000'
|
|
: format({
|
|
pathname: join(__dirname, '../renderer/out/index.html'),
|
|
protocol: 'file:',
|
|
slashes: true,
|
|
})
|
|
|
|
mainWindow.loadURL(url);
|
|
});
|
|
|
|
// Quit the app once all windows are closed
|
|
app.on('window-all-closed', app.quit);
|
|
|
|
// listen the channel `message` and resend the received message to the renderer process
|
|
ipcMain.on('message', (event, message) => {
|
|
event.sender.send('message', message);
|
|
});
|
|
|
|
// handler for all request related to a user's grafnode account
|
|
ipcMain.handle('grafnode-account-request', async (_, request) => {
|
|
const result = await axios(request)
|
|
return { data: result.data, status: result.status }
|
|
})
|
|
|
|
// handler for sending http request
|
|
ipcMain.handle('send-http-request', async (_, request) => {
|
|
try {
|
|
const result = await axios(request);
|
|
|
|
return {
|
|
status: result.status,
|
|
headers: result.headers,
|
|
data: result.data
|
|
};
|
|
} catch (error) {
|
|
if(error.response) {
|
|
return {
|
|
status: error.response.status,
|
|
headers: error.response.headers,
|
|
data: error.response.data
|
|
};
|
|
}
|
|
|
|
return {
|
|
status: -1,
|
|
headers: [],
|
|
data: null
|
|
};
|
|
}
|
|
})
|