public UserAccountViewModel(IUserAccount userAccount)
        {
            UserAccount = userAccount;

            AccountName = userAccount.AccountName;

            Task <Person> personTask;

            try
            {
                var dataSourceFactory       = GoogleCloudExtensionPackage.Instance.GetMefService <IDataSourceFactory>();
                IGPlusDataSource dataSource = dataSourceFactory.CreatePlusDataSource(userAccount.GetGoogleCredential());
                personTask = dataSource.GetProfileAsync();
            }
            catch (Exception)
            {
                personTask = Task.FromResult <Person>(null);
            }


            // TODO: Show the default image while it is being loaded.
            ProfilePictureAsync = AsyncPropertyUtils.CreateAsyncProperty(personTask, x => x?.Image.Url);
            NameAsync           = AsyncPropertyUtils.CreateAsyncProperty(
                personTask, x => x?.DisplayName, Resources.CloudExplorerLoadingMessage);
        }
        private GceStepViewModel(GceStepContent content)
        {
            _content = content;

            Instances = AsyncPropertyUtils.CreateAsyncProperty(GetAllWindowsInstances());

            ManageCredentialsCommand = new ProtectedCommand(OnManageCredentialsCommand, canExecuteCommand: false);
        }
 private void StartLoadProjects()
 {
     if (CredentialsStore.Default.CurrentAccount != null)
     {
         LoadTask = AsyncPropertyUtils.CreateAsyncProperty(LoadProjectsAsync());
     }
     else
     {
         LoadTask = null;
     }
 }
        public UserAccountViewModel(UserAccount userAccount)
        {
            UserAccount = userAccount;

            AccountName = userAccount.AccountName;

            var dataSource = new GPlusDataSource(userAccount.GetGoogleCredential(), GoogleCloudExtensionPackage.VersionedApplicationName);
            var personTask = dataSource.GetProfileAsync();

            // TODO: Show the default image while it is being loaded.
            ProfilePictureAsync = AsyncPropertyUtils.CreateAsyncProperty(personTask, x => x?.Image.Url);
            NameAsync           = AsyncPropertyUtils.CreateAsyncProperty(personTask, x => x?.DisplayName, Resources.CloudExplorerLoadingMessage);
        }
 private void UpdateUserProfile()
 {
     if (_plusDataSource.Value != null)
     {
         var profileTask = _plusDataSource.Value.GetProfileAsync();
         ProfilePictureAsync = AsyncPropertyUtils.CreateAsyncProperty(profileTask, x => x?.Image.Url);
         ProfileNameAsync    = AsyncPropertyUtils.CreateAsyncProperty(
             profileTask,
             x => x?.Emails.FirstOrDefault()?.Value,
             Resources.CloudExplorerLoadingMessage);
     }
     else
     {
         ProfilePictureAsync = null;
         ProfileNameAsync    = new AsyncProperty <string>(Resources.CloudExplorerSelectAccountMessage);
     }
 }