@@ -47,7 +47,11 @@ export function stateModelFactory(_pluginManager: PluginManager) {
47
47
* #action
48
48
*/
49
49
addJob ( job : NewJob ) {
50
- const { cancelCallback } = job
50
+ const { cancelCallback, name } = job
51
+ const existing = self . jobs . find ( job => job . name === name )
52
+ if ( existing ) {
53
+ return existing
54
+ }
51
55
const length = self . jobs . push ( job )
52
56
const addedJob = self . jobs [ length - 1 ] !
53
57
addedJob . setCancelCallback ( cancelCallback )
@@ -66,22 +70,40 @@ export function stateModelFactory(_pluginManager: PluginManager) {
66
70
* #action
67
71
*/
68
72
addFinishedJob ( job : NewJob ) {
69
- self . finished . push ( job )
70
- return self . finished
73
+ const existing = self . finished . find (
74
+ finishedJob => finishedJob . name === job . name ,
75
+ )
76
+ if ( existing ) {
77
+ return existing
78
+ }
79
+ const length = self . finished . push ( job )
80
+ return self . finished [ length - 1 ]
71
81
} ,
72
82
/**
73
83
* #action
74
84
*/
75
85
addQueuedJob ( job : NewJob ) {
76
- self . queued . push ( job )
77
- return self . finished
86
+ const existing = self . queued . find (
87
+ queuedJob => queuedJob . name === job . name ,
88
+ )
89
+ if ( existing ) {
90
+ return existing
91
+ }
92
+ const length = self . queued . push ( job )
93
+ return self . queued [ length - 1 ]
78
94
} ,
79
95
/**
80
96
* #action
81
97
*/
82
98
addAbortedJob ( job : NewJob ) {
83
- self . aborted . push ( job )
84
- return self . aborted
99
+ const existing = self . aborted . find (
100
+ abortedJob => abortedJob . name === job . name ,
101
+ )
102
+ if ( existing ) {
103
+ return existing
104
+ }
105
+ const length = self . aborted . push ( job )
106
+ return self . aborted [ length - 1 ]
85
107
} ,
86
108
/**
87
109
* #action
0 commit comments