2
2
3
3
#include " Immutable/ImmutablePassport.h"
4
4
5
+ #include " ImmutableAnalytics.h"
5
6
#include " Immutable/Misc/ImtblLogging.h"
6
7
#include " Immutable/ImmutableResponses.h"
7
8
#include " Immutable/ImtblJSConnector.h"
@@ -57,6 +58,7 @@ void UImmutablePassport::Connect(bool IsConnectImx, bool TryToRelogin, const FIm
57
58
}
58
59
else
59
60
{
61
+ Analytics->Track (IsConnectImx ? UImmutableAnalytics::EEventName::START_CONNECT_IMX : UImmutableAnalytics::EEventName::START_LOGIN);
60
62
CallJS (ImmutablePassportAction::INIT_DEVICE_FLOW, TEXT (" " ), ResponseDelegate, FImtblJSResponseDelegate::CreateUObject (this , &UImmutablePassport::OnInitDeviceFlowResponse));
61
63
}
62
64
}
@@ -70,6 +72,7 @@ void UImmutablePassport::ConnectPKCE(bool IsConnectImx, const FImtblPassportResp
70
72
SetStateFlags (IPS_IMX);
71
73
}
72
74
PKCEResponseDelegate = ResponseDelegate;
75
+ Analytics->Track (IsConnectImx ? UImmutableAnalytics::EEventName::START_CONNECT_IMX_PKCE : UImmutableAnalytics::EEventName::START_LOGIN_PKCE);
73
76
CallJS (ImmutablePassportAction::GetPKCEAuthUrl, TEXT (" " ), PKCEResponseDelegate, FImtblJSResponseDelegate::CreateUObject (this , &UImmutablePassport::OnGetPKCEAuthUrlResponse));
74
77
}
75
78
#endif
@@ -210,11 +213,15 @@ void UImmutablePassport::Setup(const TWeakObjectPtr<UImtblJSConnector> Connector
210
213
211
214
if (!Connector.IsValid ())
212
215
{
213
- IMTBL_ERR (" Invalid JSConnector passed to UImmutablePassport::Initialize ." )
216
+ IMTBL_ERR (" Invalid JSConnector passed to UImmutablePassport::Setup ." )
214
217
return ;
215
218
}
216
219
217
220
JSConnector = Connector.Get ();
221
+
222
+ // Analytics
223
+ Analytics = NewObject<UImmutableAnalytics>(this );
224
+ Analytics->Setup (Connector);
218
225
}
219
226
220
227
void UImmutablePassport::ReinstateConnection (FImtblJSResponse Response)
@@ -224,15 +231,19 @@ void UImmutablePassport::ReinstateConnection(FImtblJSResponse Response)
224
231
if (auto ResponseDelegate = GetResponseDelegate (Response))
225
232
{
226
233
// currently, this response has to be called only for RELOGIN AND RECONNECT bridge routines
227
- const FString CallbackName = (Response.responseFor .Compare (ImmutablePassportAction::RELOGIN, ESearchCase::IgnoreCase) == 0 ) ? " Relogin" : " Reconnect" ;
234
+ bool IsRelogin = Response.responseFor .Compare (ImmutablePassportAction::RELOGIN, ESearchCase::IgnoreCase) == 0 ;
235
+ const FString CallbackName = IsRelogin ? " Relogin" : " Reconnect" ;
236
+ UImmutableAnalytics::EEventName EventName = IsRelogin ? UImmutableAnalytics::EEventName::COMPLETE_RELOGIN : UImmutableAnalytics::EEventName::COMPLETE_RECONNECT;
228
237
229
238
if (Response.JsonObject ->GetBoolField (TEXT (" result" )))
230
239
{
231
240
SetStateFlags (IPS_CONNECTED);
232
241
ResponseDelegate->ExecuteIfBound (FImmutablePassportResult{true , " " , Response});
242
+ Analytics->Track (EventName, true );
233
243
}
234
244
else
235
245
{
246
+ Analytics->Track (EventName, false );
236
247
#if PLATFORM_ANDROID | PLATFORM_IOS | PLATFORM_MAC
237
248
if (IsStateFlagsSet (IPS_PKCE))
238
249
{
@@ -296,7 +307,7 @@ void UImmutablePassport::OnInitializeResponse(FImtblJSResponse Response)
296
307
IMTBL_ERR (" Passport initialization failed." )
297
308
Response.Error .IsSet () ? Msg = Response.Error ->ToString () : Msg = Response.JsonObject ->GetStringField (TEXT (" error" ));
298
309
}
299
-
310
+ Analytics-> Track (UImmutableAnalytics::EEventName::INIT_PASSPORT, Response. success );
300
311
ResponseDelegate->ExecuteIfBound (FImmutablePassportResult{Response.success , Msg, Response});
301
312
}
302
313
}
@@ -395,6 +406,7 @@ void UImmutablePassport::OnLogoutResponse(FImtblJSResponse Response)
395
406
396
407
return ;
397
408
}
409
+ Analytics->Track (UImmutableAnalytics::EEventName::COMPLETE_LOGOUT);
398
410
Message = " Logged out" ;
399
411
IMTBL_LOG (" %s" , *Message)
400
412
ResponseDelegate->ExecuteIfBound (FImmutablePassportResult{ Response.success , Message });
@@ -498,6 +510,7 @@ void UImmutablePassport::OnConnectPKCEResponse(FImtblJSResponse Response)
498
510
ResetStateFlags (IPS_PKCE);
499
511
Response.Error .IsSet () ? Msg = Response.Error ->ToString () : Msg = Response.JsonObject ->GetStringField (TEXT (" error" ));
500
512
}
513
+ Analytics->Track (IsStateFlagsSet (IPS_IMX) ? UImmutableAnalytics::EEventName::COMPLETE_CONNECT_IMX_PKCE : UImmutableAnalytics::EEventName::COMPLETE_LOGIN_PKCE, Response.success );
501
514
PKCEResponseDelegate.ExecuteIfBound (FImmutablePassportResult{Response.success , Msg});
502
515
PKCEResponseDelegate = nullptr ;
503
516
@@ -675,6 +688,7 @@ void UImmutablePassport::OnConfirmCodeResponse(FImtblJSResponse Response)
675
688
{
676
689
FString Msg;
677
690
FString TypeOfConnection = IsStateFlagsSet (IPS_IMX) ? TEXT (" connect" ) : TEXT (" login" );
691
+ UImmutableAnalytics::EEventName EventName = IsStateFlagsSet (IPS_IMX) ? UImmutableAnalytics::EEventName::COMPLETE_CONNECT_IMX : UImmutableAnalytics::EEventName::COMPLETE_LOGIN;
678
692
679
693
ResetStateFlags (IPS_CONNECTING);
680
694
if (Response.success )
@@ -687,6 +701,7 @@ void UImmutablePassport::OnConfirmCodeResponse(FImtblJSResponse Response)
687
701
IMTBL_LOG (" %s code not confirmed." , *TypeOfConnection)
688
702
Response.Error .IsSet () ? Msg = Response.Error ->ToString () : Msg = Response.JsonObject ->GetStringField (TEXT (" error" ));
689
703
}
704
+ Analytics->Track (EventName, Response.success );
690
705
ResponseDelegate->ExecuteIfBound (FImmutablePassportResult{Response.success , Msg, Response});
691
706
}
692
707
}
@@ -850,6 +865,7 @@ void UImmutablePassport::OnDeepLinkActivated(FString DeepLink)
850
865
{
851
866
FGraphEventRef GameThreadTask = FFunctionGraphTask::CreateAndDispatchWhenReady ([this ]()
852
867
{
868
+ Analytics->Track (UImmutableAnalytics::EEventName::COMPLETE_LOGOUT_PKCE);
853
869
PKCELogoutResponseDelegate.ExecuteIfBound (FImmutablePassportResult{true , " Logged out" });
854
870
PKCELogoutResponseDelegate = nullptr ;
855
871
ResetStateFlags (IPS_CONNECTED | IPS_PKCE | IPS_IMX);
0 commit comments