@@ -11,12 +11,12 @@ export type IncrementalProcess = {
11
11
current : number ;
12
12
} ;
13
13
14
- type ProcessWrapper = { id : string , increment : ( ) => void , complete : ( ) => void , add ( additiona : number ) : void } ;
14
+ type ProcessWrapper = { id : string , increment : ( ) => void , add ( additiona : number ) : void } ;
15
+
15
16
export type ProcessStore = {
16
17
processes : IncrementalProcess [ ] ;
17
18
create : ( label : string , max : number ) => ProcessWrapper ;
18
19
increment : ( id : string , current ?: number ) => void ;
19
- forceComplete : ( id : string ) => void ;
20
20
isComplete : ( id : string ) => boolean ;
21
21
isInProgress : ( id : string ) => boolean ;
22
22
getTotalProgress : ( ) => number ;
@@ -32,15 +32,12 @@ export const useProcessStore = create<ProcessStore>((set, get) => ({
32
32
_createProcessWrapper : ( id : string , process : IncrementalProcess ) => ( {
33
33
id,
34
34
increment : ( ) => get ( ) . increment ( id ) ,
35
- complete : ( ) => get ( ) . forceComplete ( id ) ,
36
35
add : ( additional : number ) => {
37
36
process . max += additional ;
38
37
}
39
38
} ) ,
40
39
create : ( label : string , max = PROCESS_MAX ) => {
41
40
const id = MathUtils . generateUUID ( ) ;
42
- performance . clearMarks ( `process-${ id } ` ) ;
43
- performance . clearMeasures ( `process-${ id } ` ) ;
44
41
log . verbose ( "@process/init: " + label ) ;
45
42
46
43
performance . mark ( `process-${ id } ` ) ;
@@ -61,6 +58,7 @@ export const useProcessStore = create<ProcessStore>((set, get) => ({
61
58
addOrCreate : ( label : string , max : number ) => {
62
59
const existing = get ( ) . processes [ 0 ] ;
63
60
if ( existing ) {
61
+ performance . mark ( `process-${ existing . id } ` ) ;
64
62
existing . max += max ;
65
63
return get ( ) . _createProcessWrapper ( existing . id , existing ) ;
66
64
} else {
@@ -79,34 +77,13 @@ export const useProcessStore = create<ProcessStore>((set, get) => ({
79
77
( p ) => ( p . id === id ? { ...p , current : next } : p )
80
78
) ,
81
79
} ) ) ;
82
- }
83
- } ,
84
- forceComplete : ( id : string , clear = true ) => {
85
- if ( get ( ) . isComplete ( id ) ) {
86
- return ;
87
- }
88
- if ( ! get ( ) . isInProgress ( id ) ) {
89
- log . error ( `@process/complete: process ${ id } is not in progress` ) ;
90
- return ;
91
- }
92
-
93
- const perf = performance . measure ( `process-${ id } ` ) ;
94
- performance . clearMarks ( `process-${ id } ` ) ;
95
- performance . clearMeasures ( `process-${ id } ` ) ;
96
80
97
- const { label } = get ( ) . processes . find ( ( p ) => p . id === id ) ! ;
98
-
99
- log . info ( `@process/complete: ${ label } ${ perf . duration } ms` ) ;
100
-
101
- const process = get ( ) . processes . find ( ( p ) => p . id === id ) ;
102
- if ( ! process ) return ;
103
-
104
- process . current = process . max ;
105
-
106
- if ( clear ) {
107
- set ( ( { processes } ) => ( {
108
- processes : processes . filter ( ( p ) => p . id !== id )
109
- } ) ) ;
81
+ if ( next === process . max ) {
82
+ const perf = performance . measure ( `process-${ id } ` ) ;
83
+ performance . clearMarks ( `process-${ id } ` ) ;
84
+ performance . clearMeasures ( `process-${ id } ` ) ;
85
+ log . info ( `@process/complete: ${ process . label } ${ perf . duration } ms` ) ;
86
+ }
110
87
}
111
88
} ,
112
89
clearAll : ( ) => {
@@ -120,7 +97,7 @@ export const useProcessStore = create<ProcessStore>((set, get) => ({
120
97
} ) ) ;
121
98
} ,
122
99
isInProgress : ( id : string ) =>
123
- get ( ) . processes . some ( ( p ) => p . id === id ) ,
100
+ get ( ) . processes . some ( ( p ) => p . id === id && p . current < p . max ) ,
124
101
isComplete : ( id : string ) =>
125
102
get ( ) . processes . some ( ( p ) => p . id === id && p . current >= p . max ) ,
126
103
getTotalProgress : ( ) => {
0 commit comments