5
5
import com .bugsnag .android .internal .ForegroundDetector ;
6
6
import com .bugsnag .android .internal .ImmutableConfig ;
7
7
import com .bugsnag .android .internal .TaskType ;
8
+ import com .bugsnag .android .internal .dag .Provider ;
8
9
9
10
import android .app .Activity ;
10
11
@@ -32,7 +33,7 @@ class SessionTracker extends BaseObservable implements ForegroundDetector.OnActi
32
33
private final ImmutableConfig configuration ;
33
34
private final CallbackState callbackState ;
34
35
private final Client client ;
35
- final SessionStore sessionStore ;
36
+ final Provider < SessionStore > sessionStore ;
36
37
private volatile Session currentSession = null ;
37
38
final BackgroundTaskService backgroundTaskService ;
38
39
final Logger logger ;
@@ -41,7 +42,7 @@ class SessionTracker extends BaseObservable implements ForegroundDetector.OnActi
41
42
SessionTracker (ImmutableConfig configuration ,
42
43
CallbackState callbackState ,
43
44
Client client ,
44
- SessionStore sessionStore ,
45
+ Provider < SessionStore > sessionStore ,
45
46
Logger logger ,
46
47
BackgroundTaskService backgroundTaskService ) {
47
48
this (configuration , callbackState , client , DEFAULT_TIMEOUT_MS ,
@@ -52,7 +53,7 @@ class SessionTracker extends BaseObservable implements ForegroundDetector.OnActi
52
53
CallbackState callbackState ,
53
54
Client client ,
54
55
long timeoutMs ,
55
- SessionStore sessionStore ,
56
+ Provider < SessionStore > sessionStore ,
56
57
Logger logger ,
57
58
BackgroundTaskService backgroundTaskService ) {
58
59
this .configuration = configuration ;
@@ -263,7 +264,7 @@ public void run() {
263
264
* Attempts to flush session payloads stored on disk
264
265
*/
265
266
void flushStoredSessions () {
266
- List <File > storedFiles = sessionStore .findStoredFiles ();
267
+ List <File > storedFiles = sessionStore .get (). findStoredFiles ();
267
268
268
269
for (File storedFile : storedFiles ) {
269
270
flushStoredSession (storedFile );
@@ -282,27 +283,28 @@ void flushStoredSession(File storedFile) {
282
283
}
283
284
284
285
DeliveryStatus deliveryStatus = deliverSessionPayload (payload );
286
+ SessionStore store = sessionStore .get ();
285
287
286
288
switch (deliveryStatus ) {
287
289
case DELIVERED :
288
- sessionStore .deleteStoredFiles (Collections .singletonList (storedFile ));
290
+ store .deleteStoredFiles (Collections .singletonList (storedFile ));
289
291
logger .d ("Sent 1 new session to Bugsnag" );
290
292
break ;
291
293
case UNDELIVERED :
292
- if (sessionStore .isTooOld (storedFile )) {
294
+ if (store .isTooOld (storedFile )) {
293
295
logger .w ("Discarding historical session (from {"
294
- + sessionStore .getCreationDate (storedFile )
296
+ + store .getCreationDate (storedFile )
295
297
+ "}) after failed delivery" );
296
- sessionStore .deleteStoredFiles (Collections .singletonList (storedFile ));
298
+ store .deleteStoredFiles (Collections .singletonList (storedFile ));
297
299
} else {
298
- sessionStore .cancelQueuedFiles (Collections .singletonList (storedFile ));
300
+ store .cancelQueuedFiles (Collections .singletonList (storedFile ));
299
301
logger .w ("Leaving session payload for future delivery" );
300
302
}
301
303
break ;
302
304
case FAILURE :
303
305
// drop bad data
304
306
logger .w ("Deleting invalid session tracking payload" );
305
- sessionStore .deleteStoredFiles (Collections .singletonList (storedFile ));
307
+ store .deleteStoredFiles (Collections .singletonList (storedFile ));
306
308
break ;
307
309
default :
308
310
break ;
@@ -319,7 +321,7 @@ public void run() {
319
321
});
320
322
} catch (RejectedExecutionException exception ) {
321
323
// This is on the current thread but there isn't much else we can do
322
- sessionStore .write (session );
324
+ sessionStore .get (). write (session );
323
325
}
324
326
}
325
327
@@ -331,7 +333,7 @@ void deliverInMemorySession(Session session) {
331
333
switch (deliveryStatus ) {
332
334
case UNDELIVERED :
333
335
logger .w ("Storing session payload for future delivery" );
334
- sessionStore .write (session );
336
+ sessionStore .get (). write (session );
335
337
break ;
336
338
case FAILURE :
337
339
logger .w ("Dropping invalid session tracking payload" );
0 commit comments