@@ -2,19 +2,48 @@ const path = require('path')
2
2
const fs = require ( 'fs-extra' )
3
3
4
4
module . exports = api => {
5
- const { setSharedData, removeSharedData } = api . namespace ( 'webpack-dashboard-' )
5
+ const { getSharedData , setSharedData, removeSharedData, watchSharedData } = api . namespace ( 'webpack-dashboard-' )
6
6
7
7
let firstRun = true
8
8
let hadFailed = false
9
9
let modernMode = false
10
10
11
- function resetSharedData ( key ) {
12
- setSharedData ( `${ key } -status` , null )
13
- setSharedData ( `${ key } -progress` , 0 )
14
- setSharedData ( `${ key } -operations` , null )
15
- setSharedData ( `${ key } -stats` , null )
16
- setSharedData ( `${ key } -sizes` , null )
17
- setSharedData ( `${ key } -problems` , null )
11
+ const fields = {
12
+ status : null ,
13
+ progress : 0 ,
14
+ operations : null ,
15
+ stats : null ,
16
+ sizes : null ,
17
+ problems : null ,
18
+ url : null
19
+ }
20
+ function setupSharedData ( mode ) {
21
+ resetSharedData ( mode )
22
+ for ( const field in fields ) {
23
+ const id = `${ mode } -${ field } `
24
+ watchSharedData ( id , ( value ) => {
25
+ const project = api . getProject ( )
26
+ if ( project ) {
27
+ setSharedData ( `${ project . id } -${ id } ` , value )
28
+ }
29
+ } )
30
+ }
31
+ }
32
+
33
+ function resetSharedData ( mode ) {
34
+ for ( const field in fields ) {
35
+ const id = `${ mode } -${ field } `
36
+ setSharedData ( id , getSharedDataInitialValue ( id , field ) )
37
+ }
38
+ }
39
+
40
+ function getSharedDataInitialValue ( id , field ) {
41
+ const project = api . getProject ( )
42
+ if ( project ) {
43
+ const data = getSharedData ( `${ project . id } -${ id } ` )
44
+ if ( data != null ) return data . value
45
+ }
46
+ return fields [ field ]
18
47
}
19
48
20
49
async function onWebpackMessage ( { data : message } ) {
@@ -73,7 +102,7 @@ module.exports = api => {
73
102
// Init data
74
103
api . onProjectOpen ( ( ) => {
75
104
for ( const key of [ 'serve' , 'build' , 'build-modern' ] ) {
76
- resetSharedData ( key )
105
+ setupSharedData ( key )
77
106
}
78
107
} )
79
108
0 commit comments