Exemple #1
0
        private void Login()
        {
            SimvaConf.Local = new SimvaConf();
            var carga = new AsyncCompletionSource();

            Observable.FromCoroutine(() => LoadSimvaConf(SimvaConf.Local.LoadAsync(), carga)).Subscribe();

            isLogin = true;
            carga.Then(() =>
            {
                IAsyncOperation <SimvaApi <ITeachersApi> > loginCall = null;
                if (ProjectConfigData.existsKey("Simva.RefreshToken"))
                {
                    loginCall = SimvaApi <ITeachersApi> .Login(new AuthorizationInfo
                    {
                        ClientId     = "uadventure",
                        RefreshToken = ProjectConfigData.getProperty("Simva.RefreshToken")
                    });
                }
                else
                {
                    loginCall = SimvaApi <ITeachersApi> .Login(true);
                }

                loginCall.Then(simvaController =>
                {
                    this.simvaController = simvaController;
                    this.simvaConf       = simvaController.SimvaConf;
                    var apiClient        = ((TeachersApi)this.simvaController.Api).ApiClient;
                    apiClient.onAuthorizationInfoUpdate += auth =>
                    {
                        ProjectConfigData.setProperty("Simva.RefreshToken", auth.RefreshToken);
                    };
                    ProjectConfigData.setProperty("Simva.RefreshToken", apiClient.AuthorizationInfo.RefreshToken);
                    ProjectConfigData.storeToXML();
                })
                .Catch(error =>
                {
                    ProjectConfigData.setProperty("Simva.RefreshToken", null);
                    ProjectConfigData.storeToXML();
                    Controller.Instance.ShowErrorDialog("Simva.Login.Error.Title", "Simva.Login.Error.Message");
                })
                .Finally(() => isLogin = false);
            });
        }