prehnite/app/window/main_window/
book_opener.rs

1use crate::app::window::main_window::{BookOpenerMessage, MainWindow, MainWindowMessage};
2use iced::Task;
3use prehnite_core::util::file_dialog::select_and_open_prehnite_book_file;
4
5pub fn book_opener(main_window: &MainWindow, msg: BookOpenerMessage) -> Task<BookOpenerMessage> {
6    select_and_open_prehnite_book_file(main_window.window_id.unwrap(), msg.into()).map(|v| {
7        if v.is_success() {
8            BookOpenerMessage::Opened
9        } else {
10            BookOpenerMessage::NotOpened
11        }
12    })
13}
14
15pub fn book_opener_handler(
16    main_window: &MainWindow,
17    msg: BookOpenerMessage,
18) -> Task<MainWindowMessage> {
19    match msg {
20        BookOpenerMessage::Open | BookOpenerMessage::New => {
21            return book_opener(main_window, msg).map(MainWindowMessage::BookOpener);
22        }
23        BookOpenerMessage::Opened => return Task::done(MainWindowMessage::BookOpened),
24        BookOpenerMessage::NotOpened => {}
25    }
26    Task::none()
27}