Skip to content

Commit 6fd1563

Browse files
committed
#RI-4567 - resolve comments
1 parent 4acf1b6 commit 6fd1563

38 files changed

+274
-198
lines changed

configs/webpack.config.main.prod.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import path from 'path';
22
import webpack from 'webpack';
33
import { merge } from 'webpack-merge';
4+
import { toString } from 'lodash';
45
import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer';
56
import baseConfig from './webpack.config.base';
67
import DeleteSourceMaps from '../scripts/DeleteSourceMaps';
@@ -65,6 +66,9 @@ export default merge(baseConfig, {
6566
APP_VERSION: version,
6667
AWS_BUCKET_NAME: 'AWS_BUCKET_NAME' in process.env ? process.env.AWS_BUCKET_NAME : '',
6768
SEGMENT_WRITE_KEY: 'SEGMENT_WRITE_KEY' in process.env ? process.env.SEGMENT_WRITE_KEY : 'SOURCE_WRITE_KEY',
69+
CONNECTIONS_TIMEOUT_DEFAULT: 'CONNECTIONS_TIMEOUT_DEFAULT' in process.env
70+
? process.env.CONNECTIONS_TIMEOUT_DEFAULT
71+
: toString(30 * 1000), // 30 sec
6872
}),
6973

7074
new webpack.DefinePlugin({

configs/webpack.config.main.stage.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import webpack from 'webpack';
22
import { merge } from 'webpack-merge';
3+
import { toString } from 'lodash';
34
import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer';
45
import mainProdConfig from './webpack.config.main.prod';
56
import DeleteSourceMaps from '../scripts/DeleteSourceMaps';
@@ -30,6 +31,9 @@ export default merge(mainProdConfig, {
3031
APP_VERSION: version,
3132
AWS_BUCKET_NAME: 'AWS_BUCKET_NAME' in process.env ? process.env.AWS_BUCKET_NAME : '',
3233
SEGMENT_WRITE_KEY: 'SEGMENT_WRITE_KEY' in process.env ? process.env.SEGMENT_WRITE_KEY : 'SOURCE_WRITE_KEY',
34+
CONNECTIONS_TIMEOUT_DEFAULT: 'CONNECTIONS_TIMEOUT_DEFAULT' in process.env
35+
? process.env.CONNECTIONS_TIMEOUT_DEFAULT
36+
: toString(30 * 1000), // 30 sec
3337
}),
3438
],
3539
});

configs/webpack.config.web.common.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export default {
6565

6666
plugins: [
6767
new webpack.DefinePlugin({
68-
'window.ENV_VARS.API_PORT': JSON.stringify('5000'),
68+
'window.app.config.apiPort': JSON.stringify('5000'),
6969
}),
7070

7171
new HtmlWebpackPlugin({ template: 'index.html.ejs' }),

redisinsight/desktop/app.ts

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,53 @@
11
/* eslint global-require: off, no-console: off */
22
import { app, nativeTheme } from 'electron'
33

4-
import { initHandlers } from 'desktopSrc/handlers'
5-
import { initLogging } from 'desktopSrc/lib/logging'
4+
import { initElectronHandlers } from 'desktopSrc/handlers'
65
import { launchApiServer } from 'desktopSrc/services'
76
import { wrapErrorMessageSensitiveData } from 'desktopSrc/utils'
8-
import { createSplashScreen, createWindow } from 'desktopSrc/window'
9-
import { AboutPanelOptions, checkForUpdate, installExtensions, initTray } from 'desktopSrc/lib'
10-
import config from 'desktopSrc/config'
11-
12-
if (process.env.NODE_ENV !== 'production') {
7+
import { configMain as config } from 'desktopSrc/config'
8+
import {
9+
initLogging,
10+
WindowType,
11+
windowFactory,
12+
AboutPanelOptions,
13+
checkForUpdate,
14+
installExtensions,
15+
initTray,
16+
initAutoUpdaterHandlers
17+
} from 'desktopSrc/lib'
18+
19+
if (!config.isProduction) {
1320
const sourceMapSupport = require('source-map-support')
1421
sourceMapSupport.install()
1522
}
1623

1724
const init = async () => {
1825
await launchApiServer()
1926
initLogging()
20-
initHandlers()
27+
initElectronHandlers()
28+
initAutoUpdaterHandlers()
2129
initTray()
2230

2331
nativeTheme.themeSource = config.themeSource
2432

25-
const upgradeUrl = process.env.MANUAL_UPGRADES_LINK || process.env.UPGRADES_LINK
26-
27-
if (upgradeUrl && !process.mas) {
28-
checkForUpdate(upgradeUrl)
29-
}
33+
checkForUpdate(process.env.MANUAL_UPGRADES_LINK || process.env.UPGRADES_LINK)
3034

3135
app.setName(config.name)
3236
app.setAppUserModelId(config.name)
3337
if (process.platform !== 'darwin') {
3438
app.setAboutPanelOptions(AboutPanelOptions)
3539
}
3640

37-
if (process.env.NODE_ENV !== 'production') {
38-
await installExtensions()
39-
}
41+
await installExtensions()
4042

41-
app
42-
.whenReady()
43-
.then(createSplashScreen)
44-
.then(createWindow)
45-
.catch((e) => console.log(wrapErrorMessageSensitiveData(e)))
43+
try {
44+
await app.whenReady()
45+
const splashWindow = await windowFactory(WindowType.Splash)
46+
await windowFactory(WindowType.Main, splashWindow)
47+
} catch (_err) {
48+
const error = _err as Error
49+
console.log(wrapErrorMessageSensitiveData(error))
50+
}
4651
}
4752

4853
export default init

redisinsight/desktop/config.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"build": "release",
3-
"server_port": 5001,
4-
"server_host": "localhost",
3+
"defaultPort": 5001,
4+
"host": "localhost",
55
"debug": false,
66
"themeSource": "dark",
77
"appName": "RedisInsight",
@@ -34,7 +34,7 @@
3434
"contextIsolation": true
3535
}
3636
},
37-
"crash_reporter": false,
37+
"crashReporter": false,
3838
"updater": {
3939
"downloadUrl": ""
4040
}

redisinsight/desktop/preload.ts

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
import { contextBridge, ipcRenderer } from 'electron'
2+
import { configRenderer as config } from 'desktopSrc/config/configRenderer'
23
import { IpcEvent } from 'uiSrc/electron/constants'
4+
import { WindowApp } from 'uiSrc/types'
35

4-
const electronHandler = {
5-
ipcRenderer: {
6-
invoke: (channel: IpcEvent, data?: any) => {
7-
// whitelist channels
8-
if (Object.values(IpcEvent).includes(channel)) {
9-
return ipcRenderer.invoke(channel, data)
10-
}
11-
12-
return new Error('channel is not allowed')
6+
const ipcHandler = {
7+
invoke: (channel: IpcEvent, data?: any) => {
8+
// whitelist channels
9+
if (Object.values(IpcEvent).includes(channel)) {
10+
return ipcRenderer.invoke(channel, data)
1311
}
12+
13+
return new Error('channel is not allowed')
1414
}
1515
}
1616

17-
contextBridge.exposeInMainWorld('electron', electronHandler)
18-
19-
contextBridge.exposeInMainWorld('ENV_VARS', {
20-
NODE_ENV: process.env.NODE_ENV,
21-
API_PORT: process.env.API_PORT
22-
})
17+
contextBridge.exposeInMainWorld('app', {
18+
ipc: ipcHandler,
19+
config: {
20+
apiPort: config.apiPort
21+
}
22+
} as WindowApp)
2323

24-
export type ElectronHandler = typeof electronHandler
24+
export type IPCHandler = typeof ipcHandler

redisinsight/desktop/splash.ejs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@
8282
<script>
8383
const bootstrap = async () => {
8484
85-
const appVersion = await window.electron.ipcRenderer.invoke('getAppVersion') || ''
85+
const appVersion = await window.app.ipc.invoke('getAppVersion') || ''
8686
const copyrightEl = document.getElementById('copyright') || null
8787
8888
if (copyrightEl) {
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { app } from 'electron'
2+
import path from 'path'
3+
import { getAssetPath } from 'desktopSrc/utils'
4+
import configInit from '../../config.json'
5+
import pkg from '../../../package.json'
6+
7+
const config: any = configInit
8+
9+
// Merge in some details from package.json
10+
config.name = pkg.productName
11+
config.description = pkg.description
12+
config.version = pkg.version
13+
config.author = pkg.author
14+
config.isDevelopment = process.env.NODE_ENV === 'development'
15+
config.isProduction = process.env.NODE_ENV === 'production'
16+
config.apiPort = process.env.API_PORT || configInit.defaultPort
17+
config.getApiPort = () => process.env.API_PORT || configInit.defaultPort
18+
19+
config.icon = getAssetPath('icon.png')
20+
21+
config.preloadPath = app.isPackaged ? path.join(__dirname, 'preload.js') : path.join(__dirname, '../../dll/preload.js')
22+
23+
export const configMain = config
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import configInit from '../../config.json'
2+
import pkg from '../../../package.json'
3+
4+
const config: any = configInit
5+
6+
// Merge in some details from package.json
7+
config.name = pkg.productName
8+
config.description = pkg.description
9+
config.version = pkg.version
10+
config.author = pkg.author
11+
config.isDevelopment = process.env.NODE_ENV === 'development'
12+
config.isProduction = process.env.NODE_ENV === 'production'
13+
config.apiPort = process.env.API_PORT || configInit.defaultPort
14+
15+
export const configRenderer = config
Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,2 @@
1-
import { app } from 'electron'
2-
import path from 'path'
3-
import { getAssetPath } from 'desktopSrc/utils'
4-
import pkg from '../../../package.json'
5-
import configInit from '../../config.json'
6-
7-
const config: any = configInit
8-
9-
// Merge in some details from package.json
10-
config.name = pkg.productName
11-
config.description = pkg.description
12-
config.version = pkg.version
13-
config.author = pkg.author
14-
15-
config.icon = getAssetPath('icon.png')
16-
17-
config.preloadPath = app.isPackaged
18-
? path.join(__dirname, 'preload.js')
19-
: path.join(__dirname, '../../dll/preload.js')
20-
21-
export default config
1+
export * from './configMain'
2+
export * from './configRenderer'

0 commit comments

Comments
 (0)