TEDT26JQBWGATVTY6HZTIOGFR6BXW2BHSUKUTXTA7HOXARRQ5D6AC D7A7MSIHJS3IAOLEPK52M4CZLDPLO7JB3Y62XACT2AM6UUCPQ6BAC OPXFZKEBDHZZLXEJ2JRDYBOJH6YIN7UZNZYHVHMWMQVDTE2ZD53QC 3QVNMRNMI63L2VOFVTMPCVPXH3J4JXLXVTIIPNOMACQCPCAPWILQC MYGIBRRHHXPKVRAMQQRJTZH74L2XOK3SF7J57JPCRKSVRLZ2D6NQC 3TLPJ57B2OD5OWJN5WMS7A4W7IGFUWJJHVIXRM34VT6KUN6R4YSAC JZXYSIYDPBWQZCAMGDZ5BFMN6SU73EVVDIYEGTDJN6DVOSBNHN4QC 5ZRDYL6KIQPUI3ZZETH5KJ64N6RUF7KYM3P6Q6HER5XVJZ7GZ4WQC WAOGSCOJ5A372BZKHEYD2BCDBCENNVLFYW3INKUOOAZMDADDIFIQC EJPSD5XO43DWUBBZGNQMY4TMCAXL5EWCGX3OEHUERQ5GRASGWQLQC YK3MOJJLRYEKZ4FUCNJ3YKMTKOINWIYOJKR3ER7IRSGTC7O6FJZQC 7WCB5YQJJZIPUAFHTCQBWNI6ZM5XMIQJAKTLYTR7NOR5NKESRMDQC PKLUHYE4BGIMJKU6VKGBGSHEB2ZT53OYMTFBYCZYCO4J3RVTRXSAC CULHFNIVQ3ATML2W3Z45RARZ2LHGXONYTGGN2ETWAAMV7R3Y67AQC LFEMJYYDO45ASMQSOJ3TNID7B5UZXDHB3NWFZJXWOAWNBS6GMDEAC 5O4FWCFP4ZPAS7WKSYPHN76ML3O2S4JUOYWOV2ETD4TF2H6KZ6AQC YGZ3VCW4OAJYPI2CYK3MTABNFY7Y2ENSSTFE5ZZ4K6HK57FCU3XQC ODCT4QJNJLQTDNFPIF7HX4XCFTEXZBESG3PTD276O7TWB7MSGWMQC UTDTZCTXAAP6AHENYQP7MOQ5QNIKKXN34NV2ONWEGM4HA4FU637AC G5WLRXODOQR3PLO7G4RS2T3COBA3TXGOJJQ6DG5T2HA7C5K4APHAC OLT666N4VXRYJAVF4ZBYL3FDCQB5N42BFUCMVFWN4LP5AANKWGPQC 23SFYK4Q5NKBPJG53PQNPWQH6UOUU2YKJEL7RLXYBRLJOJYV7AWQC 6YZAVBWU6E5FYOI5JGEIPXGZLIKAW6LS2AOFIQWEE5DMOPPCD5PQC let allowed_actions = action::get_allowed(&sub, &report);
let allowed_actions = action::get_allowed(&sub, &None, &report);let state = State {window_size: WINDOW_SIZE,window_scale: WINDOW_SCALE,repo_path: repo_path.clone(),sub,allowed_actions,sub_menu: None,report,};test_view(mresults, uniq_name, view(&state), size);// _________________________________________________________________________//let uniq_name = "sub_menu_push";let repo = repo::State {dir_name: "path".to_string(),channel: "some_channel".to_string(),other_channels: vec![],untracked_files: BTreeSet::new(),changed_files: BTreeMap::new(),short_log: vec![],};let ready_state = ReadyState {user_id: Id::default().unwrap(),repo,selection: default(),navigation: default(),record_changes: default(),logs: default(),forking_channel_name: default(),to_record: default(),jobs: default(),};let repo_path = PathBuf::from("test/repo/path");let sub = SubState::Ready(ready_state);let report = report::Container::default();let sub_menu = Some(SubMenu::Push);let allowed_actions = action::get_allowed(&sub, &sub_menu, &report);
let mut bindings = match state {model::SubState::Loading { .. } => vec![],model::SubState::SelectingId { .. } => todo!(),model::SubState::Ready(ready_state) => get_ready_allowed(ready_state),
let mut bindings = if let Some(sub_menu) = sub_menu {match sub_menu {model::SubMenu::Push => {// TODO add optionsvec![confirm("confirm push"), cancel()]}model::SubMenu::Pull => {// TODO add optionsvec![confirm("confirm pull"), cancel()]}}} else {match state {model::SubState::Loading { .. } => vec![],model::SubState::SelectingId { .. } => todo!(),model::SubState::Ready(ready_state) => {get_ready_allowed(ready_state)}}
// ____________________________________________________________________________// Bindingsfn confirm(label: &'static str) -> Binding {Binding {key: "Enter",label,msg: Some(FilteredMsg::Confirm),}}fn cancel() -> Binding {Binding {key: "Esc",label: "cancel",msg: Some(FilteredMsg::Cancel),}}
if let Some(ReadyState {
if let Some(sub_menu) = &state.model.sub_menu {match sub_menu {model::SubMenu::Push => push(state),model::SubMenu::Pull => pull(state),}} else if let Some(ReadyState {
action::FilteredMsg::Push => {if let Some(ReadyState { repo, jobs, .. }) =model::is_ready_mut(&mut state.model){jobs.insert(model::Job::Push {channel: repo.channel.clone(),});state.repo_tx_in.send(repo::MsgIn::Push {channel: repo.channel.clone(),}).unwrap();}
action::FilteredMsg::EnterSubMenu(sub_menu) => {state.model.sub_menu = Some(sub_menu);
action::FilteredMsg::Pull => {if let Some(ReadyState { repo, jobs, .. }) =model::is_ready_mut(&mut state.model){jobs.insert(model::Job::Pull {channel: repo.channel.clone(),});state.repo_tx_in.send(repo::MsgIn::Pull {channel: repo.channel.clone(),}).unwrap();}Task::none()}
}fn push(state: &mut State) -> Task<Msg> {if let Some(ReadyState { repo, jobs, .. }) =model::is_ready_mut(&mut state.model){jobs.insert(model::Job::Push {channel: repo.channel.clone(),});state.repo_tx_in.send(repo::MsgIn::Push {channel: repo.channel.clone(),}).unwrap();}state.model.sub_menu = None;Task::none()
fn pull(state: &mut State) -> Task<Msg> {if let Some(ReadyState { repo, jobs, .. }) =model::is_ready_mut(&mut state.model){jobs.insert(model::Job::Pull {channel: repo.channel.clone(),});state.repo_tx_in.send(repo::MsgIn::Pull {channel: repo.channel.clone(),}).unwrap();}state.model.sub_menu = None;Task::none()}