@@ -349,25 +349,27 @@ impl App<'_> {
349349 }
350350
351351 fn open_detail ( & mut self ) {
352- if let View :: List ( ref mut view) = self . view {
353- let commit_list_state = view. take_list_state ( ) ;
354- let selected = commit_list_state. selected_commit_hash ( ) . clone ( ) ;
355- let ( commit, changes) = self . repository . commit_detail ( & selected) ;
356- let refs = self
357- . repository
358- . refs ( & selected)
359- . into_iter ( )
360- . cloned ( )
361- . collect ( ) ;
362- self . view = View :: of_detail (
363- commit_list_state,
364- commit,
365- changes,
366- refs,
367- self . ctx . clone ( ) ,
368- self . tx . clone ( ) ,
369- ) ;
370- }
352+ let commit_list_state = match self . view {
353+ View :: List ( ref mut view) => view. take_list_state ( ) ,
354+ View :: UserCommand ( ref mut view) => view. take_list_state ( ) ,
355+ _ => return ,
356+ } ;
357+ let selected = commit_list_state. selected_commit_hash ( ) . clone ( ) ;
358+ let ( commit, changes) = self . repository . commit_detail ( & selected) ;
359+ let refs = self
360+ . repository
361+ . refs ( & selected)
362+ . into_iter ( )
363+ . cloned ( )
364+ . collect ( ) ;
365+ self . view = View :: of_detail (
366+ commit_list_state,
367+ commit,
368+ changes,
369+ refs,
370+ self . ctx . clone ( ) ,
371+ self . tx . clone ( ) ,
372+ ) ;
371373 }
372374
373375 fn close_detail ( & mut self ) {
@@ -384,79 +386,28 @@ impl App<'_> {
384386 }
385387
386388 fn open_user_command ( & mut self , user_command_number : usize ) {
387- if let View :: List ( ref mut view) = self . view {
388- let commit_list_state = view. take_list_state ( ) ;
389- let selected = commit_list_state. selected_commit_hash ( ) . clone ( ) ;
390- let ( commit, _) = self . repository . commit_detail ( & selected) ;
391- self . view = View :: of_user_command_from_list (
392- commit_list_state,
393- commit,
394- user_command_number,
395- self . app_status . view_area ,
396- self . ctx . clone ( ) ,
397- self . tx . clone ( ) ,
398- ) ;
399- } else if let View :: Detail ( ref mut view) = self . view {
400- let commit_list_state = view. take_list_state ( ) ;
401- let selected = commit_list_state. selected_commit_hash ( ) . clone ( ) ;
402- let ( commit, _) = self . repository . commit_detail ( & selected) ;
403- self . view = View :: of_user_command_from_detail (
404- commit_list_state,
405- commit,
406- user_command_number,
407- self . app_status . view_area ,
408- self . ctx . clone ( ) ,
409- self . tx . clone ( ) ,
410- ) ;
411- } else if let View :: UserCommand ( ref mut view) = self . view {
412- let commit_list_state = view. take_list_state ( ) ;
413- let selected = commit_list_state. selected_commit_hash ( ) . clone ( ) ;
414- let ( commit, _) = self . repository . commit_detail ( & selected) ;
415- if view. before_view_is_list ( ) {
416- self . view = View :: of_user_command_from_list (
417- commit_list_state,
418- commit,
419- user_command_number,
420- self . app_status . view_area ,
421- self . ctx . clone ( ) ,
422- self . tx . clone ( ) ,
423- ) ;
424- } else {
425- self . view = View :: of_user_command_from_detail (
426- commit_list_state,
427- commit,
428- user_command_number,
429- self . app_status . view_area ,
430- self . ctx . clone ( ) ,
431- self . tx . clone ( ) ,
432- ) ;
433- }
434- }
389+ let commit_list_state = match self . view {
390+ View :: List ( ref mut view) => view. take_list_state ( ) ,
391+ View :: Detail ( ref mut view) => view. take_list_state ( ) ,
392+ View :: UserCommand ( ref mut view) => view. take_list_state ( ) ,
393+ _ => return ,
394+ } ;
395+ let selected = commit_list_state. selected_commit_hash ( ) . clone ( ) ;
396+ let ( commit, _) = self . repository . commit_detail ( & selected) ;
397+ self . view = View :: of_user_command (
398+ commit_list_state,
399+ commit,
400+ user_command_number,
401+ self . app_status . view_area ,
402+ self . ctx . clone ( ) ,
403+ self . tx . clone ( ) ,
404+ ) ;
435405 }
436406
437407 fn close_user_command ( & mut self ) {
438408 if let View :: UserCommand ( ref mut view) = self . view {
439409 let commit_list_state = view. take_list_state ( ) ;
440- let selected = commit_list_state. selected_commit_hash ( ) . clone ( ) ;
441- let ( commit, changes) = self . repository . commit_detail ( & selected) ;
442- let refs = self
443- . repository
444- . refs ( & selected)
445- . into_iter ( )
446- . cloned ( )
447- . collect ( ) ;
448- if view. before_view_is_list ( ) {
449- self . view = View :: of_list ( commit_list_state, self . ctx . clone ( ) , self . tx . clone ( ) ) ;
450- } else {
451- self . view = View :: of_detail (
452- commit_list_state,
453- commit,
454- changes,
455- refs,
456- self . ctx . clone ( ) ,
457- self . tx . clone ( ) ,
458- ) ;
459- }
410+ self . view = View :: of_list ( commit_list_state, self . ctx . clone ( ) , self . tx . clone ( ) ) ;
460411 }
461412 }
462413
0 commit comments