@@ -186,18 +186,18 @@ private extension StatsWidgetsStore {
186
186
var initializedWeekdays : [ ThisWeekWidgetDay ] {
187
187
var days = [ ThisWeekWidgetDay] ( )
188
188
for index in 0 ... 7 {
189
- days . insert ( ThisWeekWidgetDay ( date : NSCalendar . current . date ( byAdding : . day,
190
- value: - index,
191
- to : Date ( ) ) ?? Date ( ) ,
192
- viewsCount : 0 ,
193
- dailyChangePercent : 0 ) ,
194
- at: index)
189
+ let day = ThisWeekWidgetDay (
190
+ date : NSCalendar . current . date ( byAdding : . day , value: - index, to : Date ( ) ) ?? Date ( ) ,
191
+ viewsCount : 0 ,
192
+ dailyChangePercent : 0
193
+ )
194
+ days . insert ( day , at: index)
195
195
}
196
196
return days
197
197
}
198
198
199
199
func refreshStats< T: HomeWidgetData > ( type: T . Type ) -> [ Int : T ] ? {
200
- guard let currentData = T . read ( ) else {
200
+ guard let currentData = getCachedItems ( for : T . self ) else {
201
201
return nil
202
202
}
203
203
let updatedSiteList = ( try ? BlogQuery ( ) . hostedByWPCom ( true ) . blogs ( in: coreDataStack. mainContext) ) ?? [ ]
@@ -223,68 +223,90 @@ private extension StatsWidgetsStore {
223
223
224
224
let stats = ( existingSite as? HomeWidgetTodayData ) ? . stats ?? TodayWidgetStats ( )
225
225
226
- sitesList [ blogID. intValue] = HomeWidgetTodayData ( siteID: blogID. intValue,
227
- siteName: siteName,
228
- url: siteURL,
229
- timeZone: timeZone,
230
- date: date,
231
- stats: stats) as? T
226
+ sitesList [ blogID. intValue] = HomeWidgetTodayData (
227
+ siteID: blogID. intValue,
228
+ siteName: siteName,
229
+ url: siteURL,
230
+ timeZone: timeZone,
231
+ date: date,
232
+ stats: stats
233
+ ) as? T
232
234
} else if type == HomeWidgetAllTimeData . self {
233
235
234
236
let stats = ( existingSite as? HomeWidgetAllTimeData ) ? . stats ?? AllTimeWidgetStats ( )
235
237
236
- sitesList [ blogID. intValue] = HomeWidgetAllTimeData ( siteID: blogID. intValue,
237
- siteName: siteName,
238
- url: siteURL,
239
- timeZone: timeZone,
240
- date: date,
241
- stats: stats) as? T
238
+ sitesList [ blogID. intValue] = HomeWidgetAllTimeData (
239
+ siteID: blogID. intValue,
240
+ siteName: siteName,
241
+ url: siteURL,
242
+ timeZone: timeZone,
243
+ date: date,
244
+ stats: stats
245
+ ) as? T
242
246
243
247
} else if type == HomeWidgetThisWeekData . self {
244
248
245
249
let stats = ( existingSite as? HomeWidgetThisWeekData ) ? . stats ?? ThisWeekWidgetStats ( days: initializedWeekdays)
246
250
247
- sitesList [ blogID. intValue] = HomeWidgetThisWeekData ( siteID: blogID. intValue,
248
- siteName: siteName,
249
- url: siteURL,
250
- timeZone: timeZone,
251
- date: date,
252
- stats: stats) as? T
251
+ sitesList [ blogID. intValue] = HomeWidgetThisWeekData (
252
+ siteID: blogID. intValue,
253
+ siteName: siteName,
254
+ url: siteURL,
255
+ timeZone: timeZone,
256
+ date: date,
257
+ stats: stats
258
+ ) as? T
253
259
}
254
260
}
255
261
return newData
256
262
}
257
263
258
264
func initializeHomeWidgetData< T: HomeWidgetData > ( type: T . Type ) -> [ Int : T ] {
259
265
let blogs = ( try ? BlogQuery ( ) . hostedByWPCom ( true ) . blogs ( in: coreDataStack. mainContext) ) ?? [ ]
260
- return blogs. reduce ( into: [ Int: T] ( ) ) { result, element in
266
+ return blogs. reduce ( into: [ Int: T] ( ) ) {
267
+ result,
268
+ element in
261
269
if let blogID = element. dotComID,
262
270
let url = element. url,
263
271
let blog = Blog . lookup ( withID: blogID, in: ContextManager . shared. mainContext) {
264
272
// set the title to the site title, if it's not nil and not empty; otherwise use the site url
265
273
let title = ( element. title ?? url) . isEmpty ? url : element. title ?? url
266
274
let timeZone = blog. timeZone
267
275
if type == HomeWidgetTodayData . self {
268
- result [ blogID. intValue] = HomeWidgetTodayData ( siteID: blogID. intValue,
269
- siteName: title,
270
- url: url,
271
- timeZone: timeZone ?? TimeZone . current,
272
- date: Date ( timeIntervalSinceReferenceDate: 0 ) ,
273
- stats: TodayWidgetStats ( ) ) as? T
276
+ result [ blogID. intValue] = HomeWidgetTodayData (
277
+ siteID: blogID. intValue,
278
+ siteName: title,
279
+ url: url,
280
+ timeZone: timeZone ?? TimeZone . current,
281
+ date: Date (
282
+ timeIntervalSinceReferenceDate: 0
283
+ ) ,
284
+ stats: TodayWidgetStats ( )
285
+ ) as? T
274
286
} else if type == HomeWidgetAllTimeData . self {
275
- result [ blogID. intValue] = HomeWidgetAllTimeData ( siteID: blogID. intValue,
276
- siteName: title,
277
- url: url,
278
- timeZone: timeZone ?? TimeZone . current,
279
- date: Date ( timeIntervalSinceReferenceDate: 0 ) ,
280
- stats: AllTimeWidgetStats ( ) ) as? T
287
+ result [ blogID. intValue] = HomeWidgetAllTimeData (
288
+ siteID: blogID. intValue,
289
+ siteName: title,
290
+ url: url,
291
+ timeZone: timeZone ?? TimeZone . current,
292
+ date: Date (
293
+ timeIntervalSinceReferenceDate: 0
294
+ ) ,
295
+ stats: AllTimeWidgetStats ( )
296
+ ) as? T
281
297
} else if type == HomeWidgetThisWeekData . self {
282
- result [ blogID. intValue] = HomeWidgetThisWeekData ( siteID: blogID. intValue,
283
- siteName: title,
284
- url: url,
285
- timeZone: timeZone ?? TimeZone . current,
286
- date: Date ( timeIntervalSinceReferenceDate: 0 ) ,
287
- stats: ThisWeekWidgetStats ( days: initializedWeekdays) ) as? T
298
+ result [ blogID. intValue] = HomeWidgetThisWeekData (
299
+ siteID: blogID. intValue,
300
+ siteName: title,
301
+ url: url,
302
+ timeZone: timeZone ?? TimeZone . current,
303
+ date: Date (
304
+ timeIntervalSinceReferenceDate: 0
305
+ ) ,
306
+ stats: ThisWeekWidgetStats (
307
+ days: initializedWeekdays
308
+ )
309
+ ) as? T
288
310
}
289
311
}
290
312
}
0 commit comments