@@ -99,10 +99,7 @@ impl RevisionFilesComponent {
9999 if !same_id {
100100 self . files = None ;
101101
102- self . async_treefiles . spawn ( AsyncTreeFilesJob :: new (
103- self . repo . borrow ( ) . clone ( ) ,
104- commit,
105- ) ) ;
102+ self . request_files ( commit) ;
106103
107104 self . revision =
108105 Some ( get_commit_info ( & self . repo . borrow ( ) , & commit) ?) ;
@@ -129,17 +126,36 @@ impl RevisionFilesComponent {
129126 ev,
130127 AsyncNotification :: Git ( AsyncGitNotification :: TreeFiles )
131128 ) {
132- if let Some ( last) = self . async_treefiles . take_last ( ) {
133- if let Some ( Ok ( last) ) = last. result ( ) {
134- let filenames: Vec < & Path > = last
135- . iter ( )
136- . map ( |f| f. path . as_path ( ) )
137- . collect ( ) ;
138- self . tree =
139- FileTree :: new ( & filenames, & BTreeSet :: new ( ) ) ?;
140- self . tree . collapse_but_root ( ) ;
141-
142- self . files = Some ( last) ;
129+ self . refresh_files ( ) ?;
130+ }
131+
132+ Ok ( ( ) )
133+ }
134+
135+ fn refresh_files ( & mut self ) -> Result < ( ) , anyhow:: Error > {
136+ if let Some ( last) = self . async_treefiles . take_last ( ) {
137+ if let Some ( result) = last. result ( ) {
138+ if self
139+ . revision
140+ . as_ref ( )
141+ . map ( |commit| commit. id == result. commit )
142+ . unwrap_or_default ( )
143+ {
144+ if let Ok ( last) = result. result {
145+ let filenames: Vec < & Path > = last
146+ . iter ( )
147+ . map ( |f| f. path . as_path ( ) )
148+ . collect ( ) ;
149+ self . tree = FileTree :: new (
150+ & filenames,
151+ & BTreeSet :: new ( ) ,
152+ ) ?;
153+ self . tree . collapse_but_root ( ) ;
154+
155+ self . files = Some ( last) ;
156+ }
157+ } else if let Some ( rev) = & self . revision {
158+ self . request_files ( rev. id ) ;
143159 }
144160 }
145161 }
@@ -364,6 +380,13 @@ impl RevisionFilesComponent {
364380
365381 title
366382 }
383+
384+ fn request_files ( & mut self , commit : CommitId ) {
385+ self . async_treefiles . spawn ( AsyncTreeFilesJob :: new (
386+ self . repo . borrow ( ) . clone ( ) ,
387+ commit,
388+ ) ) ;
389+ }
367390}
368391
369392impl DrawableComponent for RevisionFilesComponent {
@@ -514,6 +537,7 @@ impl Component for RevisionFilesComponent {
514537
515538 fn show ( & mut self ) -> Result < ( ) > {
516539 self . visible = true ;
540+ self . refresh_files ( ) ?;
517541 Ok ( ( ) )
518542 }
519543}
0 commit comments