This update introduces the tauri-plugin-single-instance to ensure that only one instance of the application can run at a time. Additionally, the code has been reformatted for better readability, with consistent line breaks and spacing. - Added single instance plugin to prevent multiple app instances - Improved code formatting for better readability and maintenance - Updated dependencies in Cargo.toml for new plugin integration
134 lines
4.6 KiB
Rust
134 lines
4.6 KiB
Rust
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
|
|
|
mod badge;
|
|
mod git;
|
|
|
|
use badge::set_sync_badge;
|
|
use git::{
|
|
SearchCancellationState, amend_commit, apply_file_patch, cancel_code_search,
|
|
cancel_file_history, checkout_branch, cherry_pick_abort, cherry_pick_commit,
|
|
cherry_pick_continue, clone_repository, commit, commit_ai_generate, commit_ai_load,
|
|
commit_ai_local_models, commit_ai_status, compare_commits, compare_file_to_head,
|
|
compare_file_to_parent, create_branch, create_tag, cred_delete, cred_load, cred_save,
|
|
delete_branch, delete_tag, diff_file_against_working_tree, fetch, get_file_blame,
|
|
get_file_patch, get_remote_url, get_status, last_commit_message, list_branches, list_commits,
|
|
list_file_history, list_repository_files, list_stashes, list_tags, merge_branch,
|
|
open_repo_in_explorer, open_repository, open_repository_bundle, open_repository_file, pull,
|
|
push, push_tag, read_conflict, rebase_abort, rebase_branch, rebase_continue, rename_branch,
|
|
resolve_conflict, resolve_conflict_side, restore_file_from_commit, restore_files,
|
|
restore_to_commit, search_code_introductions, stage_files, stash_apply, stash_drop, stash_pop,
|
|
stash_push, undo_last_commit, unstage_files,
|
|
};
|
|
use tauri::{Manager, AppHandle};
|
|
|
|
#[tauri::command]
|
|
fn close_splashscreen(app: tauri::AppHandle) -> Result<(), String> {
|
|
if let Some(window) = app.get_webview_window("splashscreen") {
|
|
let _ = window.hide();
|
|
window
|
|
.destroy()
|
|
.map_err(|error| format!("failed to destroy splashscreen: {error}"))?;
|
|
}
|
|
|
|
if let Some(window) = app.get_webview_window("main") {
|
|
window
|
|
.show()
|
|
.map_err(|error| format!("failed to show main window: {error}"))?;
|
|
let _ = window.set_focus();
|
|
}
|
|
|
|
Ok(())
|
|
}
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
tauri::Builder::default()
|
|
.plugin(tauri_plugin_single_instance::init(|app, _, _| {
|
|
#[cfg(desktop)]
|
|
let _ = app.get_webview_window("main")
|
|
.expect("no main window")
|
|
.set_focus();
|
|
}))
|
|
.plugin(tauri_plugin_updater::Builder::new().build())
|
|
.plugin(
|
|
tauri_plugin_aptabase::Builder::new("A-SH-1344793789")
|
|
.with_options(tauri_plugin_aptabase::InitOptions {
|
|
host: Some("https://aptabase.cbsk-tech.de".to_string()),
|
|
flush_interval: None,
|
|
})
|
|
.build(),
|
|
)
|
|
.manage(SearchCancellationState::default())
|
|
.manage(commit_ai::CommitAiEngine::new())
|
|
.plugin(tauri_plugin_dialog::init())
|
|
.invoke_handler(tauri::generate_handler![
|
|
open_repository,
|
|
clone_repository,
|
|
open_repo_in_explorer,
|
|
open_repository_file,
|
|
get_status,
|
|
list_branches,
|
|
list_stashes,
|
|
checkout_branch,
|
|
create_branch,
|
|
rename_branch,
|
|
delete_branch,
|
|
list_tags,
|
|
create_tag,
|
|
delete_tag,
|
|
push_tag,
|
|
cherry_pick_commit,
|
|
cherry_pick_continue,
|
|
cherry_pick_abort,
|
|
stage_files,
|
|
unstage_files,
|
|
stash_push,
|
|
stash_apply,
|
|
stash_pop,
|
|
stash_drop,
|
|
restore_files,
|
|
get_file_patch,
|
|
apply_file_patch,
|
|
commit,
|
|
amend_commit,
|
|
undo_last_commit,
|
|
last_commit_message,
|
|
commit_ai_status,
|
|
commit_ai_load,
|
|
commit_ai_local_models,
|
|
commit_ai_generate,
|
|
pull,
|
|
push,
|
|
fetch,
|
|
list_commits,
|
|
restore_to_commit,
|
|
restore_file_from_commit,
|
|
merge_branch,
|
|
rebase_branch,
|
|
rebase_continue,
|
|
rebase_abort,
|
|
list_repository_files,
|
|
open_repository_bundle,
|
|
list_file_history,
|
|
cancel_file_history,
|
|
get_file_blame,
|
|
compare_commits,
|
|
compare_file_to_head,
|
|
compare_file_to_parent,
|
|
diff_file_against_working_tree,
|
|
search_code_introductions,
|
|
cancel_code_search,
|
|
read_conflict,
|
|
resolve_conflict,
|
|
resolve_conflict_side,
|
|
get_remote_url,
|
|
cred_load,
|
|
cred_save,
|
|
cred_delete,
|
|
set_sync_badge,
|
|
close_splashscreen
|
|
])
|
|
.run(tauri::generate_context!())
|
|
.expect("error while running tauri application");
|
|
}
|