@@ -20,7 +20,7 @@ export default function pushStatusHandler(config) {
20
20
let pushStatus ;
21
21
let objectId = newObjectId ( ) ;
22
22
let database = config . database ;
23
-
23
+ let lastPromise ;
24
24
let setInitial = function ( body = { } , where , options = { source : 'rest' } ) {
25
25
let now = new Date ( ) ;
26
26
let data = body . data || { } ;
@@ -41,19 +41,23 @@ export default function pushStatusHandler(config) {
41
41
ACL : { }
42
42
}
43
43
44
- return database . create ( PUSH_STATUS_COLLECTION , object ) . then ( ( ) => {
44
+ lastPromise = database . create ( PUSH_STATUS_COLLECTION , object ) . then ( ( ) => {
45
45
pushStatus = {
46
46
objectId
47
47
} ;
48
48
return Promise . resolve ( pushStatus ) ;
49
49
} ) ;
50
+ return lastPromise ;
50
51
}
51
52
52
53
let setRunning = function ( installations ) {
53
54
logger . verbose ( 'sending push to %d installations' , installations . length ) ;
54
- return database . update ( PUSH_STATUS_COLLECTION ,
55
- { status :"pending" , objectId : objectId } ,
56
- { status : "running" , updatedAt : new Date ( ) } ) ;
55
+ lastPromise = lastPromise . then ( ( ) => {
56
+ return database . update ( PUSH_STATUS_COLLECTION ,
57
+ { status :"pending" , objectId : objectId } ,
58
+ { status : "running" , updatedAt : new Date ( ) } ) ;
59
+ } ) ;
60
+ return lastPromise ;
57
61
}
58
62
59
63
let complete = function ( results ) {
@@ -87,7 +91,10 @@ export default function pushStatusHandler(config) {
87
91
} , update ) ;
88
92
}
89
93
logger . verbose ( 'sent push! %d success, %d failures' , update . numSent , update . numFailed ) ;
90
- return database . update ( PUSH_STATUS_COLLECTION , { status :"running" , objectId } , update ) ;
94
+ lastPromise = lastPromise . then ( ( ) => {
95
+ return database . update ( PUSH_STATUS_COLLECTION , { status :"running" , objectId } , update ) ;
96
+ } ) ;
97
+ return lastPromise ;
91
98
}
92
99
93
100
let fail = function ( err ) {
@@ -97,7 +104,10 @@ export default function pushStatusHandler(config) {
97
104
updatedAt : new Date ( )
98
105
}
99
106
logger . info ( 'warning: error while sending push' , err ) ;
100
- return database . update ( PUSH_STATUS_COLLECTION , { objectId } , update ) ;
107
+ lastPromise = lastPromise . then ( ( ) => {
108
+ return database . update ( PUSH_STATUS_COLLECTION , { objectId } , update ) ;
109
+ } ) ;
110
+ return lastPromise ;
101
111
}
102
112
103
113
return Object . freeze ( {
0 commit comments