summaryrefslogtreecommitdiffstats
path: root/src/commands/reload.rs
blob: 1c149ce966907b63d6714a95e027001ba6188c6f (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::AppContext;
use crate::error::JoshutoResult;
use crate::util::load_child::LoadChild;

pub fn soft_reload(index: usize, context: &mut AppContext) -> std::io::Result<()> {
    let options = context.config_ref().display_options_ref().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(&options)?;
            }
        }
        if let Some(curr_list) = curr_tab.parent_list_mut() {
            if curr_list.need_update() {
                curr_list.reload_contents(&options)?;
            }
        }
        if let Some(curr_list) = curr_tab.child_list_mut() {
            if curr_list.need_update() {
                curr_list.reload_contents(&options)?;
            }
        }
    }
    Ok(())
}

pub fn reload(context: &mut AppContext, index: usize) -> std::io::Result<()> {
    let options = context.config_ref().display_options_ref().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(&options)?;
        }
        if let Some(curr_list) = curr_tab.parent_list_mut() {
            curr_list.reload_contents(&options)?;
        }
        if let Some(curr_list) = curr_tab.child_list_mut() {
            curr_list.reload_contents(&options)?;
        }
    }
    Ok(())
}

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