summaryrefslogtreecommitdiffhomepage
path: root/installer-downloader/src/cacao_impl/mod.rs
blob: 56950496094bae9f02470d1168a68dd6901c1e62 (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
use std::sync::Mutex;

use cacao::appkit::App;
use installer_downloader::environment::{Environment, Error as EnvError};
use ui::{Action, AppImpl};

mod delegate;
mod ui;

pub fn main() {
    let app = App::new("net.mullvad.MullvadVPNLoader", AppImpl::default());

    // Load "global" values and resources
    let environment = match Environment::load() {
        Ok(env) => env,
        Err(EnvError::Arch) => {
            unreachable!("The CPU architecture will always be retrievable on macOS")
        }
    };

    let cb: Mutex<Option<ui::MainThreadCallback>> = Mutex::new(Some(Box::new(|self_| {
        crate::controller::initialize_controller(self_, environment);
    })));
    cacao::appkit::App::<ui::AppImpl, _>::dispatch_main(Action::QueueMain(cb));

    app.run();
}