From 8df7b14fa4ec0c438a6cd4e226b8fd00c31bf544 Mon Sep 17 00:00:00 2001 From: Lorenzo Stanco Date: Thu, 10 Oct 2019 18:29:19 +0200 Subject: [PATCH 1/5] Persisted "Show content of concatenated modules" with localStorage, closes #321 --- client/components/ModulesTreemap.jsx | 5 +++++ client/store.js | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/client/components/ModulesTreemap.jsx b/client/components/ModulesTreemap.jsx index 0b4d0f3f..626ab5a3 100644 --- a/client/components/ModulesTreemap.jsx +++ b/client/components/ModulesTreemap.jsx @@ -208,6 +208,11 @@ export default class ModulesTreemap extends Component { handleConcatenatedModulesContentToggle = flag => { store.showConcatenatedModulesContent = flag; + if (flag) { + window.localStorage.setItem('showConcatenatedModulesContent', '1'); + } else { + window.localStorage.removeItem('showConcatenatedModulesContent'); + } } handleChunkContextMenuHide = () => { diff --git a/client/store.js b/client/store.js index 41f27ad0..cb339caa 100644 --- a/client/store.js +++ b/client/store.js @@ -10,7 +10,7 @@ export class Store { @observable searchQuery = ''; @observable defaultSize; @observable selectedSize; - @observable showConcatenatedModulesContent = false; + @observable showConcatenatedModulesContent = window.localStorage.getItem('showConcatenatedModulesContent') === '1'; setModules(modules) { walkModules(modules, module => { From 8065918d2ec9ebc6b38dc4af2f039855c235dcbf Mon Sep 17 00:00:00 2001 From: Lorenzo Stanco Date: Fri, 11 Oct 2019 11:00:49 +0200 Subject: [PATCH 2/5] Wrap localStorage methods against raising errors --- client/components/ModulesTreemap.jsx | 6 +++--- client/store.js | 4 ++-- client/utils.js | 24 ++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/client/components/ModulesTreemap.jsx b/client/components/ModulesTreemap.jsx index 626ab5a3..ddd596e9 100644 --- a/client/components/ModulesTreemap.jsx +++ b/client/components/ModulesTreemap.jsx @@ -4,7 +4,7 @@ import filesize from 'filesize'; import {computed} from 'mobx'; import {observer} from 'mobx-preact'; -import {isChunkParsed} from '../utils'; +import {isChunkParsed, localStorage} from '../utils'; import Treemap from './Treemap'; import Tooltip from './Tooltip'; import Switcher from './Switcher'; @@ -209,9 +209,9 @@ export default class ModulesTreemap extends Component { handleConcatenatedModulesContentToggle = flag => { store.showConcatenatedModulesContent = flag; if (flag) { - window.localStorage.setItem('showConcatenatedModulesContent', '1'); + localStorage.setItem('showConcatenatedModulesContent', '1'); } else { - window.localStorage.removeItem('showConcatenatedModulesContent'); + localStorage.removeItem('showConcatenatedModulesContent'); } } diff --git a/client/store.js b/client/store.js index cb339caa..32c2c2cf 100644 --- a/client/store.js +++ b/client/store.js @@ -1,5 +1,5 @@ import {observable, computed} from 'mobx'; -import {isChunkParsed, walkModules} from './utils'; +import {isChunkParsed, walkModules, localStorage} from './utils'; export class Store { cid = 0; @@ -10,7 +10,7 @@ export class Store { @observable searchQuery = ''; @observable defaultSize; @observable selectedSize; - @observable showConcatenatedModulesContent = window.localStorage.getItem('showConcatenatedModulesContent') === '1'; + @observable showConcatenatedModulesContent = localStorage.getItem('showConcatenatedModulesContent') === '1'; setModules(modules) { walkModules(modules, module => { diff --git a/client/utils.js b/client/utils.js index 9ef1cbed..8690eb96 100644 --- a/client/utils.js +++ b/client/utils.js @@ -17,3 +17,27 @@ export function walkModules(modules, cb) { export function elementIsOutside(elem, container) { return !(elem === container || container.contains(elem)); } + +export const localStorage = { + + getItem(k) { + try { + return window.localStorage.getItem(k); + } catch (x) { + return null; + } + }, + + setItem(k, v) { + try { + window.localStorage.setItem(k, v); + } catch (x) { /* ignored */ } + }, + + removeItem(k) { + try { + window.localStorage.removeItem(k); + } catch (x) { /* ignored */ } + } + +}; \ No newline at end of file From b4a48f394a0c10a929279228c33bad05d2975d34 Mon Sep 17 00:00:00 2001 From: Lorenzo Stanco Date: Fri, 11 Oct 2019 14:43:20 +0200 Subject: [PATCH 3/5] Apply suggestions from code review Co-Authored-By: Yuriy Grunin --- client/components/ModulesTreemap.jsx | 2 +- client/store.js | 2 +- client/utils.js | 14 +++++++------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/client/components/ModulesTreemap.jsx b/client/components/ModulesTreemap.jsx index ddd596e9..dd726889 100644 --- a/client/components/ModulesTreemap.jsx +++ b/client/components/ModulesTreemap.jsx @@ -209,7 +209,7 @@ export default class ModulesTreemap extends Component { handleConcatenatedModulesContentToggle = flag => { store.showConcatenatedModulesContent = flag; if (flag) { - localStorage.setItem('showConcatenatedModulesContent', '1'); + localStorage.setItem('showConcatenatedModulesContent', true); } else { localStorage.removeItem('showConcatenatedModulesContent'); } diff --git a/client/store.js b/client/store.js index 32c2c2cf..fa5ac88d 100644 --- a/client/store.js +++ b/client/store.js @@ -10,7 +10,7 @@ export class Store { @observable searchQuery = ''; @observable defaultSize; @observable selectedSize; - @observable showConcatenatedModulesContent = localStorage.getItem('showConcatenatedModulesContent') === '1'; + @observable showConcatenatedModulesContent = (localStorage.getItem('showConcatenatedModulesContent') === true); setModules(modules) { walkModules(modules, module => { diff --git a/client/utils.js b/client/utils.js index 8690eb96..70530849 100644 --- a/client/utils.js +++ b/client/utils.js @@ -28,16 +28,16 @@ export const localStorage = { } }, - setItem(k, v) { + setItem(key, value) { try { - window.localStorage.setItem(k, v); - } catch (x) { /* ignored */ } + window.localStorage.setItem(`${KEY_PREFIX}.${key}`, JSON.stringify(value)); + } catch (err) { /* ignored */ } }, - removeItem(k) { + removeItem(key) { try { - window.localStorage.removeItem(k); - } catch (x) { /* ignored */ } + window.localStorage.removeItem(key); + } catch (err) { /* ignored */ } } -}; \ No newline at end of file +}; From 9823e7c119e5daf7802a1db4ff7f3b1f416512be Mon Sep 17 00:00:00 2001 From: Lorenzo Stanco Date: Fri, 11 Oct 2019 14:50:44 +0200 Subject: [PATCH 4/5] Apply suggestions from code review (2) --- client/components/ModulesTreemap.jsx | 3 ++- client/localStorage.js | 25 +++++++++++++++++++++++++ client/store.js | 3 ++- client/utils.js | 24 ------------------------ 4 files changed, 29 insertions(+), 26 deletions(-) create mode 100644 client/localStorage.js diff --git a/client/components/ModulesTreemap.jsx b/client/components/ModulesTreemap.jsx index dd726889..051a7d87 100644 --- a/client/components/ModulesTreemap.jsx +++ b/client/components/ModulesTreemap.jsx @@ -4,7 +4,8 @@ import filesize from 'filesize'; import {computed} from 'mobx'; import {observer} from 'mobx-preact'; -import {isChunkParsed, localStorage} from '../utils'; +import {isChunkParsed} from '../utils'; +import localStorage from '../localStorage'; import Treemap from './Treemap'; import Tooltip from './Tooltip'; import Switcher from './Switcher'; diff --git a/client/localStorage.js b/client/localStorage.js new file mode 100644 index 00000000..cdd1b591 --- /dev/null +++ b/client/localStorage.js @@ -0,0 +1,25 @@ +const KEY_PREFIX = 'wba'; + +export default { + + getItem(key) { + try { + return JSON.parse(window.localStorage.getItem(`${KEY_PREFIX}.${key}`)); + } catch (err) { + return null; + } + }, + + setItem(key, value) { + try { + window.localStorage.setItem(`${KEY_PREFIX}.${key}`, JSON.stringify(value)); + } catch (err) { /* ignored */ } + }, + + removeItem(key) { + try { + window.localStorage.removeItem(`${KEY_PREFIX}.${key}`); + } catch (err) { /* ignored */ } + } + +}; diff --git a/client/store.js b/client/store.js index fa5ac88d..5710a8a0 100644 --- a/client/store.js +++ b/client/store.js @@ -1,5 +1,6 @@ import {observable, computed} from 'mobx'; -import {isChunkParsed, walkModules, localStorage} from './utils'; +import {isChunkParsed, walkModules} from './utils'; +import localStorage from './localStorage'; export class Store { cid = 0; diff --git a/client/utils.js b/client/utils.js index 70530849..9ef1cbed 100644 --- a/client/utils.js +++ b/client/utils.js @@ -17,27 +17,3 @@ export function walkModules(modules, cb) { export function elementIsOutside(elem, container) { return !(elem === container || container.contains(elem)); } - -export const localStorage = { - - getItem(k) { - try { - return window.localStorage.getItem(k); - } catch (x) { - return null; - } - }, - - setItem(key, value) { - try { - window.localStorage.setItem(`${KEY_PREFIX}.${key}`, JSON.stringify(value)); - } catch (err) { /* ignored */ } - }, - - removeItem(key) { - try { - window.localStorage.removeItem(key); - } catch (err) { /* ignored */ } - } - -}; From f8f4049d82049ee828dda664eda0a280c7025c4a Mon Sep 17 00:00:00 2001 From: Lorenzo Stanco Date: Mon, 13 Apr 2020 13:08:31 +0200 Subject: [PATCH 5/5] Update CHANGELOG.md --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17293d68..461c54ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,9 @@ _Note: Gaps between patch versions are faulty, broken or test releases._ + * **Improvement** + * Persist "Show content of concatenated modules" option ([#322](https://github.com/webpack-contrib/webpack-bundle-analyzer/pull/322) by [@lorenzos](https://github.com/lorenzos)) + ## 3.6.1 * **Bug Fix**