ONRCENKTUB4JJMPXNAQQYEWDYD54TAGOLWH742GF4EH3KTHV7YLQC SWWE2R6MVBX5CNM6X3WLXZTSRTU53PBJL7WJSFVF77XBPXDX4COAC UB2ITZJSDADVINSQEZ3HA6PVGA7OA6JYFG5GMSO7Y7LOXJC4FI7AC EC3TVL4X6VZZVLOKUN63LC73ADPHBHMZO7QMDXGX2ZPURVI4B4XQC ELG3UDT6OJFEYSJR7HZEC65IUWBMGPPPCXEW3CDW5T74R6KC5LIAC W7IUT3ZVMFH77IGKLAL7WX7IVVTGTY3FKEJ3WHMP3KI37B6NENLQC YBJRDOTCX3ZRDB5EVXJBR55FX3CADCSIGMYWNYVC2PD5W3GXR3DQC A5YBC77VWH2LXCZJOPZORQJI5ZYABSCHJWVX5HVNWPM5RABXESLQC 4WO3ZJM2RNYZCBPS7FGYAEBELYD57OSS7LEUYCWGZBCAY272SNQQC W4LFX7IHQ7SDX67ATSGWDB5IN6472ZJDBKY2XZ54SBJEYD5GAT5QC AMPZ2BXK4IGUZO3OPBRSJ6Z4GI5K4PRFMLUGTR6AP4FKKRWQG7LQC NRCUG4R2NIM2ANIETSUZ7WZDXFOOCMJ73ROP5MDYJA4RUT4PYA4QC ZVI4AWERNOTDJ3765HJXRBZT57XPNKVONQ6TGOGNPOL2VN42KMJQC OQ6HSAWHIRTAIIWMDGCTIOK47JDY7QVVAHLRDA2R5TTJKNSBFCWQC AHWWRC73FXLSUDAJBU5UU76MZETHD3DSGJ7OLZPFEHXBDJ733QNAC JE44NYHM4QORCRKOF33QM42EDT7SBCPTULWGT6IVDL3D5LUHQXLAC 6YZAVBWU6E5FYOI5JGEIPXGZLIKAW6LS2AOFIQWEE5DMOPPCD5PQC RefreshedState {untracked_files: BTreeSet<String>,changed_files: ChangedFiles,log: Log,},LogFileDiff {id: LogFileId,diffs: ChangedFile,},
RefreshedState(State),LogFileDiff { id: LogFileId, diffs: ChangedFile },
let untracked_files = state.untracked_files.clone();let changed_files = state.changed_files.clone();let log = state.log.clone();let _ = msg_out_tx.send(MsgOut::RefreshedState {untracked_files,changed_files,log,});
let _ = msg_out_tx.send(MsgOut::RefreshedState(state));
state = spawn_blocking(move || {record(&state, msg, sk);state
internal_state = spawn_blocking(move || {record(&internal_state, msg, sk);internal_state
let diff = diff(&repo);let untracked_files = untracked_files(&repo);
let internal_state = InternalState { repo };let state = get_state(&internal_state);(internal_state, state)}fn get_state(state: &InternalState) -> State {// TODO: Optimize by using the notify event info about what file has changedlet repo = &state.repo;let dir_name = dir_name(repo).to_string();let channel = current_channel(repo);let diff = diff(repo);let untracked_files = untracked_files(repo);
fn refresh(state: &mut InternalState) {// TODO: Optimize by using the notify event info about what file has changedstate.untracked_files = untracked_files(state);let diff = diff(state);state.changed_files = changed_files(&diff, &state.repo.changes);}
repo::MsgOut::RefreshedState {untracked_files,changed_files,log,} => {let repo = state.repo.as_mut().unwrap();repo.untracked_files = untracked_files;repo.changed_files = changed_files;repo.log = log;
repo::MsgOut::RefreshedState(repo_state) => {let repo::State {dir_name: _,channel: _,untracked_files,changed_files,log,} = &repo_state;