Example #1
0
 private void DispatchResult(Action<LoginResult> callback, LoginResult result)
 {
     Deployment.Current.Dispatcher.BeginInvoke(() =>
     {
         this.LogingIn = false;
         callback.Invoke(result);
     });
 }
Example #2
0
        public void Login(Action<LoginResult> callback)
        {
            var errorMessage = string.Empty;
            if (!this.Validate(out errorMessage))
            {
                callback.Invoke(new LoginResult { IsAuthenticated = false, Description = errorMessage });
                return;
            }

            this.LogingIn = true;
            var context = App.CreateTfsDataServiceContext();
            var requestUri = new Uri(string.Format(CultureInfo.InvariantCulture, "{0}/Projects?$top=1&$select=Name", this.Endpoint), UriKind.Absolute);

            context.BeginExecute<Project>(
                requestUri,
                r =>
                {
                    try
                    {
                        var result = context.EndExecute<Project>(r) as QueryOperationResponse<Project>;
                        if (result != null)
                        {
                            // Save the valid credentials in the Isolated Storage
                            IsolatedStorageHelper.ClearCredentials(App.IsolatedStorageFileName);
                            IsolatedStorageHelper.SaveCredentials(this, App.IsolatedStorageFileName);

                            this.DispatchResult(callback, new LoginResult { IsAuthenticated = true, Description = string.Empty });
                        }
                    }
                    catch (Exception ex)
                    {
                        Exception dataServiceException;
                        var result = new LoginResult { IsAuthenticated = false, Description = ex.Message };

                        if (DataServiceExceptionUtil.TryParse(ex, out dataServiceException))
                        {
                            result.Description = dataServiceException.Message;
                        }
                        else if (ex.InnerException != null)
                        {
                            result.Description = ex.InnerException.Message;
                        }

                        this.DispatchResult(callback, result);
                    }
                },
                null);
        }