@@ -41,10 +41,12 @@ public class PullRequestListViewModel : PanePageViewModelBase, IPullRequestListV
4141 public PullRequestListViewModel (
4242 IModelServiceFactory modelServiceFactory ,
4343 IPackageSettings settings ,
44+ IPullRequestSessionManager sessionManager ,
4445 IVisualStudioBrowser visualStudioBrowser )
4546 {
4647 Guard . ArgumentNotNull ( modelServiceFactory , nameof ( modelServiceFactory ) ) ;
4748 Guard . ArgumentNotNull ( settings , nameof ( settings ) ) ;
49+ Guard . ArgumentNotNull ( sessionManager , nameof ( sessionManager ) ) ;
4850 Guard . ArgumentNotNull ( visualStudioBrowser , nameof ( visualStudioBrowser ) ) ;
4951
5052 constructing = true ;
@@ -100,6 +102,19 @@ public PullRequestListViewModel(
100102 OpenPullRequestOnGitHub = ReactiveCommand . Create ( ) ;
101103 OpenPullRequestOnGitHub . Subscribe ( x => DoOpenPullRequestOnGitHub ( ( int ) x ) ) ;
102104
105+ // Get the current pull request session and the selected repository. When the session's
106+ // repository is the same as our selected repository set CheckedOutPullRequest to the
107+ // current session's model, so that the checked out PR can be highlighted.
108+ Observable . CombineLatest (
109+ sessionManager . WhenAnyValue ( x => x . CurrentSession ) ,
110+ this . WhenAnyValue ( x => x . SelectedRepository ) ,
111+ ( s , r ) => new { Session = s , Repository = r } )
112+ . Subscribe ( x =>
113+ {
114+ CheckedOutPullRequest = x . Session ? . RepositoryOwner == x . Repository ? . Owner ?
115+ x . Session ? . PullRequest : null ;
116+ } ) ;
117+
103118 constructing = false ;
104119 }
105120
@@ -245,6 +260,13 @@ public IPullRequestModel SelectedPullRequest
245260 set { this . RaiseAndSetIfChanged ( ref selectedPullRequest , value ) ; }
246261 }
247262
263+ IPullRequestModel checkedOutPullRequest ;
264+ public IPullRequestModel CheckedOutPullRequest
265+ {
266+ get { return checkedOutPullRequest ; }
267+ set { this . RaiseAndSetIfChanged ( ref checkedOutPullRequest , value ) ; }
268+ }
269+
248270 IReadOnlyList < PullRequestState > states ;
249271 public IReadOnlyList < PullRequestState > States
250272 {
0 commit comments