@@ -17,6 +17,8 @@ selfoss.dbOnline = {
17
17
statsDirty : false ,
18
18
firstSync : true ,
19
19
20
+ itemsDownloadBatchSize : 15 ,
21
+ statusUploadBatchSize : 200 ,
20
22
21
23
_syncBegin : function ( ) {
22
24
if ( ! selfoss . dbOnline . syncing ) {
@@ -108,7 +110,7 @@ selfoss.dbOnline = {
108
110
if ( selfoss . db . storage ) {
109
111
syncParams . itemsSinceId = selfoss . dbOffline . lastItemId ;
110
112
syncParams . itemsNotBefore = selfoss . dbOffline . newestGCedEntry . toISOString ( ) ;
111
- syncParams . itemsHowMany = selfoss . filter . itemsPerPage ;
113
+ syncParams . itemsHowMany = selfoss . dbOnline . itemsDownloadBatchSize ;
112
114
}
113
115
114
116
selfoss . dbOnline . statsDirty = false ;
@@ -144,21 +146,24 @@ selfoss.dbOnline = {
144
146
selfoss . dbOffline
145
147
. shouldLoadEntriesOnline = 'lastId' in data
146
148
&& data . lastId - selfoss . dbOffline . lastItemId >
147
- 2 * selfoss . filter . itemsPerPage ;
149
+ 2 * selfoss . dbOnline . itemsDownloadBatchSize ;
148
150
149
151
selfoss . dbOffline . storeEntries ( data . newItems )
150
152
. then ( function ( ) {
151
153
selfoss . dbOffline . storeLastUpdate ( dataDate ) ;
152
-
153
154
selfoss . dbOnline . _syncDone ( ) ;
154
-
155
- // fetch more if server has more
156
- if ( selfoss . dbOffline . newerEntriesMissing ) {
157
- selfoss . dbOnline . sync ( ) ;
158
- }
159
155
} ) ;
160
156
}
161
157
158
+ if ( selfoss . dbOffline . newerEntriesMissing
159
+ || selfoss . dbOffline . needsSync ) {
160
+ // There are still new items to fetch
161
+ // or statuses to send
162
+ syncing . then ( function ( ) {
163
+ selfoss . dbOffline . sendNewStatuses ( ) ;
164
+ } ) ;
165
+ }
166
+
162
167
if ( 'itemUpdates' in data ) {
163
168
// refresh entry statuses in db and dequeue queued
164
169
// statuses but do not calculate stats as they are taken
@@ -705,8 +710,12 @@ selfoss.dbOffline = {
705
710
706
711
sendNewStatuses : function ( ) {
707
712
var statuses = [ ] ;
713
+ var offlineStatusesCount = 0 ;
708
714
selfoss . dbOffline . _tr ( 'r' , selfoss . db . storage . statusq , function ( ) {
709
- selfoss . db . storage . statusq . each ( function ( s ) {
715
+ selfoss . db . storage . statusq . count ( ) . then ( function ( c ) {
716
+ offlineStatusesCount = c ;
717
+ } ) ;
718
+ selfoss . db . storage . statusq . limit ( selfoss . dbOnline . statusUploadBatchSize ) . each ( function ( s ) {
710
719
var statusUpdate = {
711
720
id : s . entryId ,
712
721
datetime : s . datetime
@@ -720,7 +729,9 @@ selfoss.dbOffline = {
720
729
s = statuses ;
721
730
}
722
731
selfoss . dbOnline . sync ( s , true ) . then ( function ( ) {
723
- selfoss . dbOffline . needsSync = false ;
732
+ if ( offlineStatusesCount <= selfoss . dbOnline . statusUploadBatchSize ) {
733
+ selfoss . dbOffline . needsSync = false ;
734
+ }
724
735
} ) ;
725
736
} ) ;
726
737
0 commit comments