mirror of
https://github.com/ankitects/anki.git
synced 2025-11-06 20:57:13 -05:00
refactor app
This commit is contained in:
parent
6d6df1c91d
commit
eaa514fb7a
3 changed files with 26 additions and 9 deletions
|
|
@ -13,13 +13,32 @@ use tauri::UriSchemeResponder;
|
||||||
use tauri_plugin_os::locale;
|
use tauri_plugin_os::locale;
|
||||||
|
|
||||||
use crate::generated;
|
use crate::generated;
|
||||||
use crate::lang::setup_i18n;
|
use crate::lang::I18n;
|
||||||
|
use crate::state::State;
|
||||||
use crate::uv;
|
use crate::uv;
|
||||||
|
|
||||||
pub const PROTOCOL: &str = "anki";
|
pub const PROTOCOL: &str = "anki";
|
||||||
|
|
||||||
pub fn setup(app: &mut App, state: uv::State) -> anyhow::Result<()> {
|
pub fn init() -> Option<State> {
|
||||||
setup_i18n(app.app_handle(), &[&locale().unwrap_or_default()]);
|
let mut state = State::init().unwrap_or_else(State::Error);
|
||||||
|
|
||||||
|
match state {
|
||||||
|
State::Normal(ref mut state) => state.check_versions(),
|
||||||
|
State::LaunchAnki(ref paths) => {
|
||||||
|
let args: Vec<String> = std::env::args().skip(1).collect();
|
||||||
|
let cmd = paths.build_python_command(&args).unwrap();
|
||||||
|
uv::launch_anki_normally(cmd).unwrap();
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
|
||||||
|
Some(state)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn setup(app: &mut App, state: State) -> anyhow::Result<()> {
|
||||||
|
let tr = I18n::new(&[&locale().unwrap_or_default()]);
|
||||||
|
app.manage(crate::lang::Tr::new(Some(tr)));
|
||||||
|
|
||||||
app.manage(state);
|
app.manage(state);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ pub type I18n = anki_i18n::I18n<anki_i18n::Launcher>;
|
||||||
pub type Tr = RwLock<Option<I18n>>;
|
pub type Tr = RwLock<Option<I18n>>;
|
||||||
|
|
||||||
pub fn setup_i18n<R: Runtime>(app: &AppHandle<R>, locales: &[&str]) {
|
pub fn setup_i18n<R: Runtime>(app: &AppHandle<R>, locales: &[&str]) {
|
||||||
app.manage(Tr::default()); // no-op if it already exists
|
|
||||||
*app.state::<Tr>().write().expect("tr lock was poisoned!") = Some(I18n::new(locales));
|
*app.state::<Tr>().write().expect("tr lock was poisoned!") = Some(I18n::new(locales));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,16 +10,13 @@ mod error;
|
||||||
mod generated;
|
mod generated;
|
||||||
mod lang;
|
mod lang;
|
||||||
mod platform;
|
mod platform;
|
||||||
|
mod state;
|
||||||
mod uv;
|
mod uv;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let Some(state) = uv::init_state().unwrap() else {
|
let Some(state) = app::init() else { return };
|
||||||
// either anki was spawned or os not supported (TODO)
|
|
||||||
return;
|
|
||||||
};
|
|
||||||
|
|
||||||
tauri::Builder::default()
|
tauri::Builder::default()
|
||||||
.plugin(tauri_plugin_os::init())
|
|
||||||
.plugin(
|
.plugin(
|
||||||
tauri_plugin_log::Builder::new()
|
tauri_plugin_log::Builder::new()
|
||||||
.clear_targets()
|
.clear_targets()
|
||||||
|
|
@ -29,6 +26,8 @@ fn main() {
|
||||||
.level(tauri_plugin_log::log::LevelFilter::Trace)
|
.level(tauri_plugin_log::log::LevelFilter::Trace)
|
||||||
.build(),
|
.build(),
|
||||||
)
|
)
|
||||||
|
.plugin(tauri_plugin_os::init())
|
||||||
|
.plugin(tauri_plugin_dialog::init())
|
||||||
.plugin(tauri_plugin_single_instance::init(app::on_second_instance))
|
.plugin(tauri_plugin_single_instance::init(app::on_second_instance))
|
||||||
.setup(|app| Ok(app::setup(app, state)?))
|
.setup(|app| Ok(app::setup(app, state)?))
|
||||||
.register_asynchronous_uri_scheme_protocol(app::PROTOCOL, app::serve)
|
.register_asynchronous_uri_scheme_protocol(app::PROTOCOL, app::serve)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue