summaryrefslogtreecommitdiffstats
path: root/src/commands/reload.rs
blob: fbd17ec26da062ef02d5e422053bbcfc3e29a635 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
use crate::context::JoshutoContext;
use crate::error::JoshutoResult;
use crate::util::load_child::LoadChild;

pub fn soft_reload(index: usize, context: &mut JoshutoContext) -> std::io::Result<()> {
    let sort_option = context.config_ref().sort_option.clone();
    if let Some(curr_tab) = context.tab_context_mut().tab_mut(index) {
        if let Some(curr_list) = curr_tab.curr_list_mut() {
            if curr_list.need_update() {
                curr_list.reload_contents(&sort_option)?;
            }
        }
        if let Some(curr_list) = curr_tab.parent_list_mut() {
            if curr_list.need_update() {
                curr_list.reload_contents(&sort_option)?;
            }
        }
        if let Some(curr_list) = curr_tab.child_list_mut() {
            if curr_list.need_update() {
                curr_list.reload_contents(&sort_option)?;
            }
        }
    }
    Ok(())
}

pub fn reload(context: &mut JoshutoContext, index: usize) -> std::io::Result<()> {
    let sort_option = context.config_ref().sort_option.clone();
    if let Some(curr_tab) = context.tab_context_mut().tab_mut(index) {
        if let Some(curr_list) = curr_tab.curr_list_mut() {
            curr_list.reload_contents(&sort_option)?;
        }
        if let Some(curr_list) = curr_tab.parent_list_mut() {
            curr_list.reload_contents(&sort_option)?;
        }
        if let Some(curr_list) = curr_tab.child_list_mut() {
            curr_list.reload_contents(&sort_option)?;
        }
    }
    Ok(())
}

pub fn reload_dirlist(context: &mut JoshutoContext) -> JoshutoResult<()> {
    reload(context, context.tab_context_ref().get_index())?;
    LoadChild::load_child(context)?;
    Ok(())
}