TQEZQJV4G4OXAYDLTMJW3NCRQV6W7I3MUBOKNCSOSXCSVLABW4QQC XSZZB47UXR6KGYFZZQFQR63X2LDKOH6TPNNBRRGHUCI5JJ4JIWVAC KWTBNTO3QUUE2YADF6SYW6G6ZOKYEWRJQKIWDGZXR33S3YNDVIZQC 3TLPJ57B2OD5OWJN5WMS7A4W7IGFUWJJHVIXRM34VT6KUN6R4YSAC NZD56PVBVHARAQD7JNXE2F3DRT4S2NNRDHVVJTKTQK474LDMVIXQC OJPGHVC3RFBQ7TTSCZH6URSSATII3TESD74EISDNOTNXXSX7PQMAC WAOGSCOJ5A372BZKHEYD2BCDBCENNVLFYW3INKUOOAZMDADDIFIQC YK3MOJJLRYEKZ4FUCNJ3YKMTKOINWIYOJKR3ER7IRSGTC7O6FJZQC 23SFYK4Q5NKBPJG53PQNPWQH6UOUU2YKJEL7RLXYBRLJOJYV7AWQC WT3GA27PQ2AOAIGK65O3Q4DMX4AZDVNULBLRL6GF4QW6QCASUEAAC };channel_selection(ix, VDir::Up, ctx)}None => {let ix = ctx.repo.other_channels.len().saturating_sub(1);channel_selection(ix, VDir::Up, ctx)}Some(Channel {ix: channel_ix,name,log:Some(LogChange {ix: change_ix,hash,message,file,}),}) => {if let Some(Log::Loaded { log }) =ctx.logs.other_channels_logs.get(&name){if let Some(LogChangeFileSelection {ix: file_ix,path,diff_selected,}) = file{if diff_selected {let selection = Channel {ix: channel_ix,name,log: Some(LogChange {ix: change_ix,hash,message,file: Some(LogChangeFileSelection {ix: file_ix,path,diff_selected,}),}),};nav_scrollable::scroll_up(&mut ctx.navigation.other_channel_logs_navs.diffs_nav,delta,);(selection, Task::none())} else {let log_entry = log.get(change_ix).unwrap();let file_ix = if 0 == file_ix {log_entry.file_paths.len().saturating_sub(1)} else {file_ix - 1};let (file, selection_task) = channel_log_file_selection(file_ix,hash,VDir::Up,ctx.navigation,log_entry,);let selection = Channel {ix: channel_ix,name,log: Some(LogChange {ix: change_ix,hash,message,file: Some(file),}),};(selection, selection_task)}} else {let (selection, task) = if 0 == change_ix {let ix = log.len().saturating_sub(1);channel_log_selection(ix, VDir::Down, ctx, log)} else {let ix = change_ix - 1;channel_log_selection(ix, VDir::Up, ctx, log)};let selection = Channel {ix: channel_ix,name,log: Some(selection),};(selection, task)}} else {let selection = Channel {ix: channel_ix,name,log: Some(LogChange {ix: change_ix,hash,message,file,}),};(selection, Task::none())
// TODO
let (selection, task) = match select {Select::Channel { ix, name: _ } => {let (selection, task) =channel_selection(ix, VDir::Down, ctx);(Some(selection), task)}Select::LogChange {ix,hash: _,message: _,} => match ctx.state.channel.take() {Some(Channel {ix: channel_ix,name,log,}) => {if let Some(Log::Loaded { log }) =ctx.logs.other_channels_logs.get(&name){let (selection, task) =channel_log_selection(ix, VDir::Down, ctx, log);(Some(Channel {ix: channel_ix,name,log: Some(selection),}),task,)} else {(Some(Channel {ix: channel_ix,name,log,}),Task::none(),)}}selection => (selection, Task::none()),},Select::LogChangeFile { ix, path: _ } => {match ctx.state.channel.take() {Some(Channel {ix: channel_ix,name,log:Some(LogChange {ix: change_ix,hash,message,file,}),}) => {if let Some(Log::Loaded { log }) =ctx.logs.other_channels_logs.get(&name)&& let Some(log_entry) = log.get(change_ix){let (selection, task) =channel_log_file_selection(ix,hash,VDir::Down,ctx.navigation,log_entry,);(Some(Channel {ix: channel_ix,name,log: Some(LogChange {ix: change_ix,hash,message,file: Some(selection),}),}),task,)} else {(Some(Channel {ix: channel_ix,name,log: Some(LogChange {ix: change_ix,hash,message,file,}),}),Task::none(),)}}selection => (selection, Task::none()),}}Select::UntrackedFile { .. } | Select::ChangedFile { .. } => {unreachable!()}};ctx.state.channel = selection;return task;