@@ -39,22 +39,39 @@ class SessionCoordinator: SessionCoordinatorProtocol {
39
39
callback: @escaping ( Result < Void , FirebaseSessionsError > )
40
40
-> Void ) {
41
41
/// Order of execution
42
- /// 1. Fetch the installations Id. If successful , move to 3. Else, drop sending the event.
42
+ /// 1. Fetch the installations Id. Regardless of success , move to step 2
43
43
/// 2. Log the event. If successful, all is good. Else, log the message with error.
44
- installations . installationID { result in
45
- switch result {
46
- case let . success( fiid) :
47
- event. setInstallationID ( installationId: fiid)
48
- self . fireLogger. logEvent ( event: event) { logResult in
49
- switch logResult {
50
- case . success ( ) :
51
- Logger . logDebug ( " Successfully logged Session Start event to GoogleDataTransport " )
44
+ /// 3. If there was a FireLog error, expose it to the callback. Otherwise expose the FIID
45
+ /// error if it exists. Otherwise, success.
46
+ fillInFIID ( event: event) { fiidResult in
47
+ self . fireLogger. logEvent ( event: event) { logResult in
48
+ switch logResult {
49
+ case . success ( ) :
50
+ Logger . logDebug ( " Successfully logged Session Start event to GoogleDataTransport " )
51
+
52
+ switch fiidResult {
53
+ case . success( ( ) ) :
52
54
callback ( . success( ( ) ) )
53
55
case let . failure( error) :
54
- callback ( . failure ( FirebaseSessionsError . DataTransportError ( error ) ) )
56
+ callback ( . failure( error) )
55
57
}
58
+ case let . failure( error) :
59
+ callback ( . failure ( FirebaseSessionsError . DataTransportError ( error ) ) )
56
60
}
61
+ }
62
+ }
63
+ }
64
+
65
+ private func fillInFIID( event: SessionStartEvent,
66
+ callback: @escaping ( Result < Void , FirebaseSessionsError > )
67
+ -> Void) {
68
+ installations. installationID { result in
69
+ switch result {
70
+ case let . success( fiid) :
71
+ event. setInstallationID ( installationId: fiid)
72
+ callback ( . success( ( ) ) )
57
73
case let . failure( error) :
74
+ event. setInstallationID ( installationId: " " )
58
75
callback ( . failure( FirebaseSessionsError . SessionInstallationsError ( error) ) )
59
76
}
60
77
}
0 commit comments