Skip to content

Commit 24394e6

Browse files
committed
Maintain navigation collapsed / expanded status in user settings
1 parent 633f130 commit 24394e6

File tree

4 files changed

+49
-15
lines changed

4 files changed

+49
-15
lines changed

electron/app/js/ipcRendererPreload.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ contextBridge.exposeInMainWorld(
3333
'window-is-ready',
3434
'set-has-open-dialog',
3535
'set-divider-location',
36+
'set-navigation-collapsed',
3637
'set-target-type',
3738
'skip-quickstart-at-startup',
3839
'log-remote-message'
@@ -87,6 +88,7 @@ contextBridge.exposeInMainWorld(
8788
'get-https-proxy-url',
8889
'get-bypass-proxy-hosts',
8990
'get-divider-locations',
91+
'get-navigation-collapsed',
9092
'get-additional-image-build-commands-file',
9193
'get-additional-image-build-files',
9294
'get-java-home',

electron/app/js/userSettings.js

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -169,31 +169,30 @@ function setSkipQuickstartAtStartup(value) {
169169
}
170170

171171
function setDividerLocation(name, percent) {
172-
const settings = _getUserSettings();
173-
174-
let window = settings['window'];
175-
if (!window) {
176-
window = settings['window'] = {};
177-
}
178-
172+
const window = getOrCreateWindowSettings();
179173
let dividers = window['dividers'];
180174
if (!dividers) {
181-
dividers = {};
175+
dividers = window['dividers'] = {};
182176
}
183177
dividers[name] = parseFloat(percent.toFixed(2));
184178
}
185179

186180
function getDividerLocations() {
187-
const settings = _getUserSettings();
188-
189-
let dividers;
190-
let window = settings['window'];
191-
if (window) {
192-
dividers = window['dividers'];
193-
}
181+
const window = getWindowSettings();
182+
let dividers = window['dividers'];
194183
return dividers ? dividers : {};
195184
}
196185

186+
function setNavigationCollapsed(collapsed) {
187+
const window = getOrCreateWindowSettings();
188+
window['navCollapsed'] = collapsed;
189+
}
190+
191+
function getNavigationCollapsed() {
192+
const window = getWindowSettings();
193+
return Boolean(window['navCollapsed']);
194+
}
195+
197196
function getWindowSize() {
198197
const settings = _getUserSettings();
199198

@@ -217,6 +216,21 @@ function setWindowSize(windowSize) {
217216
_userSettingsObject = settings;
218217
}
219218

219+
function getWindowSettings() {
220+
const settings = _getUserSettings();
221+
const window = settings['window'];
222+
return window ? window : {};
223+
}
224+
225+
function getOrCreateWindowSettings() {
226+
const settings = _getUserSettings();
227+
let window = settings['window'];
228+
if (!window) {
229+
window = settings['window'] = {};
230+
}
231+
return window;
232+
}
233+
220234
function getUserSettingsDirectory() {
221235
const i18n = require('./i18next.config');
222236

@@ -353,8 +367,10 @@ module.exports = {
353367
applyUserSettingsFromRemote,
354368
getDividerLocations,
355369
getHttpsProxyUrl,
370+
getNavigationCollapsed,
356371
setDividerLocation,
357372
setHttpsProxyUrl,
373+
setNavigationCollapsed,
358374
getSkipQuickstartAtStartup,
359375
setSkipQuickstartAtStartup,
360376
getBypassProxyHosts,

electron/app/main.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,10 @@ class Main {
263263
return userSettings.setDividerLocation(name, percent);
264264
});
265265

266+
ipcMain.on('set-navigation-collapsed', (event, collapsed) => {
267+
return userSettings.setNavigationCollapsed(collapsed);
268+
});
269+
266270
ipcMain.on('set-target-type', (event, targetType) => {
267271
const window = event.sender.getOwnerBrowserWindow();
268272
return setTargetType(window, targetType);
@@ -289,6 +293,10 @@ class Main {
289293
return userSettings.getDividerLocations();
290294
});
291295

296+
ipcMain.handle('get-navigation-collapsed', () => {
297+
return userSettings.getNavigationCollapsed();
298+
});
299+
292300
ipcMain.handle('open-external-link', async (event, link) => {
293301
this.openExternalLink(link);
294302
});

webui/src/js/viewModels/app-main.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,16 @@ function(accUtils, ko, i18n, project, wktConsole, dialogHelper, viewHelper, Arra
202202

203203
this.collapseNav = () => {
204204
this.navCollapsed(!this.navCollapsed());
205+
206+
// update user setting only when nav collapsed is explicitly set.
207+
window.api.ipc.send('set-navigation-collapsed', this.navCollapsed());
205208
};
206209

210+
// load this once, when app is initialized
211+
window.api.ipc.invoke('get-navigation-collapsed').then(collapsed => {
212+
this.navCollapsed(collapsed);
213+
});
214+
207215
// console section
208216

209217
// view uses 'wktConsole.show' directly

0 commit comments

Comments
 (0)