@@ -99,10 +99,7 @@ impl RevisionFilesComponent {
99
99
if !same_id {
100
100
self . files = None ;
101
101
102
- self . async_treefiles . spawn ( AsyncTreeFilesJob :: new (
103
- self . repo . borrow ( ) . clone ( ) ,
104
- commit,
105
- ) ) ;
102
+ self . request_files ( commit) ;
106
103
107
104
self . revision =
108
105
Some ( get_commit_info ( & self . repo . borrow ( ) , & commit) ?) ;
@@ -129,17 +126,36 @@ impl RevisionFilesComponent {
129
126
ev,
130
127
AsyncNotification :: Git ( AsyncGitNotification :: TreeFiles )
131
128
) {
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 ) ;
143
159
}
144
160
}
145
161
}
@@ -364,6 +380,13 @@ impl RevisionFilesComponent {
364
380
365
381
title
366
382
}
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
+ }
367
390
}
368
391
369
392
impl DrawableComponent for RevisionFilesComponent {
@@ -514,6 +537,7 @@ impl Component for RevisionFilesComponent {
514
537
515
538
fn show ( & mut self ) -> Result < ( ) > {
516
539
self . visible = true ;
540
+ self . refresh_files ( ) ?;
517
541
Ok ( ( ) )
518
542
}
519
543
}
0 commit comments