I7EWMAHYKQWG7RJS3WERQHF5Z7IKGYW76TGVZFOBMSX23AA4MAKQC PKJCFSBMXXA2H3US47IJEB7QMIYLEKTLGWQUYEZSKCDODDQTD6HQC YRGDFHABL6BRX55ZWIBGXX3ZX2R4WUV4BELP7JMW5AZX54P5BBIQC LPSUBGUBMG2QHJJSAWQ35SZIMUR62R6ODPWBS7TSNNXJ5UJCNABQC MORKDJUERANZOBUWRC2F5766BEYYWXANAF3YAQ6YQ55WFQA7X64QC 5BAPU7K6DRZD2DYLIW3GKD2SIM6ANP7RYWGDJ6JCGHB37MHJUMTAC TMDH7GPVR3J7OEIELEE7RM7KXBA5IMFBCCVJTEGGMLYJZZCOLJ6QC J3AD2D2JARNRC6FTSWZUXEH54ZBBQFVUL45DXH2QLHOSJGY2NMFQC IOXNOVX2FJWPCEFVUHA5FEKIZJQT45R7VBAA43EPAKKVF5IWF4GAC 23SFYK4Q5NKBPJG53PQNPWQH6UOUU2YKJEL7RLXYBRLJOJYV7AWQC MYGIBRRHHXPKVRAMQQRJTZH74L2XOK3SF7J57JPCRKSVRLZ2D6NQC EJPSD5XO43DWUBBZGNQMY4TMCAXL5EWCGX3OEHUERQ5GRASGWQLQC 6YZAVBWU6E5FYOI5JGEIPXGZLIKAW6LS2AOFIQWEE5DMOPPCD5PQC push_if(matches!(selection, dir_picker::Selection::Input),|| confirm("confirm input"),ma,);push_if(matches!(selection, dir_picker::Selection::SubDir(_)),|| confirm("confirm dir selection"),ma,);push_if(matches!(selection,dir_picker::Selection::ProjectPijul(_)| dir_picker::Selection::ProjectGit(_)),|| confirm("confirm project selection"),
push(|| {confirm(match current_kind {Some(dir_picker::RepoKind::Pijul) => "open Pijul repository",Some(dir_picker::RepoKind::Git) => "import from Git",None => "initialize new repository",})},
let mut state = State {left_nav: nav_scrollable::State::default(),right_nav: nav_scrollable::State::default(),input: String::default(),current_dir,current_kind: None,child_dirs: vec![],matched_child_dirs: vec![],found_repos_dirs_pijul: vec![],found_repos_dirs_git: vec![],find_child_dirs_handle,find_repos_handle,matcher: Matcher::default(),selection: Selection::default(),};update_current_kind(&mut state);
State {left_nav: nav_scrollable::State::default(),right_nav: nav_scrollable::State::default(),input: String::default(),current_dir,child_dirs: vec![],matched_child_dirs: vec![],found_repos_dirs_pijul: vec![],found_repos_dirs_git: vec![],find_child_dirs_handle,find_repos_handle,matcher: Matcher::default(),selection: Selection::default(),},
state,
fn update_current_kind(state: &mut State) {let path_to_check = match &state.selection {Selection::Input => {Some(state.current_dir.join(&state.input).into_path_buf())}Selection::SubDir(ix) => {Some(if !state.matched_child_dirs.is_empty() {let subdir = state.matched_child_dirs.get(*ix).unwrap();state.current_dir.join(subdir).into_path_buf()} else {state.child_dirs.get(*ix).unwrap().clone()})}Selection::ProjectPijul(_) => {state.current_kind = Some(RepoKind::Pijul);None}Selection::ProjectGit(_) => {state.current_kind = Some(RepoKind::Git);None}};if let Some(path) = path_to_check {if is_pijul(path.as_path()) {state.current_kind = Some(RepoKind::Pijul);} else if is_git(path.as_path()) {state.current_kind = Some(RepoKind::Git);} else {state.current_kind = None;}}}
// If it contains Pijul repo, init ManagingRepo state// TODO: If it contains Git, offer to migrate it// TODO: Otherwise, offer to init Pijul from scratchlet project = store::Project {last_closed_time: cmp::Reverse(None),path: dir.clone(),};let store_project_task =if repo::is_pijul(&project.path) {Task::perform(async move {store::upsert_project(project).await},Msg::UpsertProjectResult,)} else {Task::none()
if repo::is_pijul(&dir) {// If it contains Pijul repo, init ManagingRepo// statelet project = store::Project {last_closed_time: cmp::Reverse(None),path: dir.clone(),
let (sub, managing_repo, managing_repo_task) =init_managing_repo(dir, report);new_state = Some((sub, managing_repo));Task::batch([managing_repo_task, store_project_task])
let store_project_task = Task::perform(async move { store::upsert_project(project).await },Msg::UpsertProjectResult,);let (sub, managing_repo, managing_repo_task) =init_managing_repo(dir, report);new_state = Some((sub, managing_repo));Task::batch([managing_repo_task,store_project_task,])} else {if repo::is_git(&dir) {// Allow to import from Git or init new Pijul// history TODO// *sub_menu = Some(model::SubMenu::InitRepo {// path: dir.clone(),// });} else {// If it's not Git repo either, allow to// initialize Pijul*sub_menu = Some(model::SubMenu::InitRepo {path: dir.clone(),});}Task::none()}