Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit 8953293

Browse files
authored
Merge pull request #943 from github/grokys/pr-list-busy
Display busy indicator in PR list.
2 parents 3af7c39 + 7bf9559 commit 8953293

File tree

4 files changed

+13
-13
lines changed

4 files changed

+13
-13
lines changed

src/GitHub.App/SampleData/PullRequestListViewModelDesigner.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ public PullRequestListViewModelDesigner()
6767
public ObservableCollection<IAccount> Assignees { get; set; }
6868
public IAccount SelectedAssignee { get; set; }
6969
public IObservable<ViewWithData> Navigate { get; }
70+
public bool IsBusy { get; }
7071

7172
public ReactiveCommand<object> OpenPullRequest { get; }
7273
public ReactiveCommand<object> CreatePullRequest { get; }

src/GitHub.App/ViewModels/PullRequestListViewModel.cs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using System.Linq;
66
using System.Reactive.Linq;
77
using System.Reactive.Subjects;
8-
using System.Windows.Input;
98
using System.Windows.Media.Imaging;
109
using GitHub.App;
1110
using GitHub.Collections;
@@ -82,11 +81,11 @@ public PullRequestListViewModel(
8281
.Subscribe(s => UpdateFilter(s, SelectedAssignee, SelectedAuthor));
8382

8483
this.WhenAny(x => x.SelectedAssignee, x => x.Value)
85-
.Where(x => PullRequests != null && x != EmptyUser && IsLoaded)
84+
.Where(x => PullRequests != null && x != EmptyUser && !IsBusy)
8685
.Subscribe(a => UpdateFilter(SelectedState, a, SelectedAuthor));
8786

8887
this.WhenAny(x => x.SelectedAuthor, x => x.Value)
89-
.Where(x => PullRequests != null && x != EmptyUser && IsLoaded)
88+
.Where(x => PullRequests != null && x != EmptyUser && !IsBusy)
9089
.Subscribe(a => UpdateFilter(SelectedState, SelectedAssignee, a));
9190

9291
SelectedState = States.FirstOrDefault(x => x.Name == listSettings.SelectedState) ?? States[0];
@@ -100,7 +99,7 @@ public override void Initialize([AllowNull] ViewWithData data)
10099
{
101100
base.Initialize(data);
102101

103-
IsLoaded = false;
102+
IsBusy = true;
104103

105104
PullRequests = repositoryHost.ModelService.GetPullRequests(repository, pullRequests);
106105
pullRequests.Subscribe(pr =>
@@ -134,7 +133,7 @@ public override void Initialize([AllowNull] ViewWithData data)
134133
SelectedAssignee = Assignees.FirstOrDefault(x => x.Login == listSettings.SelectedAssignee);
135134
}
136135

137-
IsLoaded = true;
136+
IsBusy = false;
138137
UpdateFilter(SelectedState, SelectedAssignee, SelectedAuthor);
139138
});
140139
}
@@ -149,11 +148,11 @@ void UpdateFilter(PullRequestState state, [AllowNull]IAccount ass, [AllowNull]IA
149148
(aut == null || aut.Equals(pr.Author));
150149
}
151150

152-
bool isLoaded;
153-
public bool IsLoaded
151+
bool isBusy;
152+
public bool IsBusy
154153
{
155-
get { return isLoaded; }
156-
private set { this.RaiseAndSetIfChanged(ref isLoaded, value); }
154+
get { return isBusy; }
155+
private set { this.RaiseAndSetIfChanged(ref isBusy, value); }
157156
}
158157

159158
ITrackingCollection<IPullRequestModel> pullRequests;

src/GitHub.Exports.Reactive/ViewModels/IPullRequestListViewModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public override string ToString()
2727
}
2828
}
2929

30-
public interface IPullRequestListViewModel : IViewModel, ICanNavigate
30+
public interface IPullRequestListViewModel : IViewModel, ICanNavigate, IHasBusy
3131
{
3232
ITrackingCollection<IPullRequestModel> PullRequests { get; }
3333
IPullRequestModel SelectedPullRequest { get; }

src/GitHub.VisualStudio/UI/Views/PullRequestListView.xaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,23 +115,23 @@
115115

116116
<WrapPanel Grid.Column="0" HorizontalAlignment="Stretch">
117117

118-
<ui:LinkDropDown IsEnabled="{Binding IsLoaded}"
118+
<ui:LinkDropDown IsEnabled="{Binding IsBusy, Converter={ui:InverseBooleanConverter}}"
119119
ItemsSource="{Binding States}"
120120
SelectedItem="{Binding SelectedState}"
121121
AutomationProperties.AutomationId="{x:Static automation:AutomationIDs.PullRequestListStatusFilterComboBox}" />
122122

123123
<Separator Style="{StaticResource VerticalSeparator}" />
124124

125125
<ui:LinkDropDown Header="Assignee"
126-
IsEnabled="{Binding IsLoaded}"
126+
IsEnabled="{Binding IsBusy, Converter={ui:InverseBooleanConverter}}"
127127
ItemsSource="{Binding Source={StaticResource AssigneeCollectionViewSource}}"
128128
SelectedItem="{Binding SelectedAssignee}"
129129
AutomationProperties.AutomationId="{x:Static automation:AutomationIDs.PullRequestListAssigneeFilterComboBox}"/>
130130

131131
<Separator Style="{StaticResource VerticalSeparator}" />
132132

133133
<ui:LinkDropDown Header="Author"
134-
IsEnabled="{Binding IsLoaded}"
134+
IsEnabled="{Binding IsBusy, Converter={ui:InverseBooleanConverter}}"
135135
ItemsSource="{Binding Source={StaticResource AuthorCollectionViewSource}}"
136136
SelectedItem="{Binding SelectedAuthor}"
137137
AutomationProperties.AutomationId="{x:Static automation:AutomationIDs.PullRequestListAuthorFilterComboBox}" />

0 commit comments

Comments
 (0)