public void Initialized(THSdkAuthResponseAllInOne response, string appId)
 {
     ServerTimeDiff = response.SdkAuthResponse.ServerTime - DateTime.Now.ToUnixTimestamp();
     IsInitialized  = true;
     AppId          = appId;
     SaveSession(response.SdkAuthResponse.SessionId, response.SdkAuthResponse.User);
     InviteChannels = response.InviteProviders.Providers;
     OnInit.SafeCall();
     OnInit = null;
 }
        private void Init(THSdkAuthRequest request)
        {
            LogRequest("authenticateSdk", request);
            WithHadesClient(client =>
            {
                THSdkAuthResponseAllInOne response = null;
                while (response == null)
                {
                    try
                    {
                        try {
                            response = client.authenticateSdkAllInOne(new THSdkAuthRequestAllInOne
                            {
                                SdkAuthRequest        = request,
                                ProcessAppOpenRequest = new THProcessAppOpenRequest
                                {
                                }
                            });
                        }
                        catch (THErrors errors)
                        {
                            GetSocialLogs.W(errors.Errors.First().ErrorMsg);
                            throw errors; // if GetSocial exception - rethrow
                        }
                    }
                    catch (Exception exception)
                    {
                        // if system exception - try again
                        Ui(() => GetSocialLogs.W("Failed to init GetSocial, retry in 1 second, exception: " + exception));

                        // wait for 1 sec
                        Thread.Sleep(1000);

                        // unity doesn't stop background threads, so we have to check a state of app
                        if (!EngineUtils.IsApplicationRunning())
                        {
                            return;
                        }
                    }
                }
                Ui(() =>
                {
                    LogResponse("authenticateSdk", response);
                    _stateController.Initialized(response, request.AppId);
#if !UNITY_EDITOR
                    TrackAnalyticsEvent(new AnalyticsEvent
                    {
                        Name      = AnalyticsEventDetails.AppSessionStart,
                        CreatedAt = ApplicationStateListener.Instance.AppStartTime
                    });
#endif
                });
            }, requireInitialization: false);
        }
 public void Initialized(THSdkAuthResponseAllInOne response, string appId)
 {
     Info           = response.SdkAuthResponse.ApplicationInfo;
     ServerTimeDiff = response.SdkAuthResponse.ServerTime - DateTime.Now.ToUnixTimestamp();
     IsInitialized  = true;
     AppId          = appId;
     SaveSession(response.SdkAuthResponse.SessionId, response.SdkAuthResponse.User, response.SdkAuthResponse.UploadEndpoint);
     InviteChannels = response.InviteProviders.Providers;
     while (OnInitializeListeners.Any())
     {
         OnInitializeListeners.Pop().SafeCall();
     }
 }