添加git推送窗口,显示待提交列表和查看文件差异

This commit is contained in:
xintaofei
2026-03-21 20:37:19 +08:00
parent 048b8a8480
commit d9032f1c82
18 changed files with 986 additions and 137 deletions

View File

@@ -2,7 +2,7 @@
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "default",
"description": "Capability for the main window",
"windows": ["welcome", "folder-*", "commit-*", "merge-*", "stash-*", "settings"],
"windows": ["welcome", "folder-*", "commit-*", "merge-*", "stash-*", "push-*", "settings"],
"permissions": [
"core:default",
"core:window:default",

View File

@@ -597,3 +597,42 @@ pub async fn open_stash_window(
Ok(())
}
#[tauri::command]
pub async fn open_push_window(
app: AppHandle,
db: tauri::State<'_, AppDatabase>,
folder_id: i32,
) -> Result<(), AppCommandError> {
let label = format!("push-{folder_id}");
if let Some(existing) = app.get_webview_window(&label) {
ensure_windows_undecorated(&existing);
let _ = existing.unminimize();
existing
.set_focus()
.map_err(|e| AppCommandError::window("Failed to focus push window", e.to_string()))?;
return Ok(());
}
let folder = crate::db::service::folder_service::get_folder_by_id(&db.conn, folder_id)
.await
.map_err(AppCommandError::from)?
.ok_or_else(|| {
AppCommandError::not_found(format!("Folder {folder_id} not found"))
.with_detail(format!("folder_id={folder_id}"))
})?;
let url = WebviewUrl::App(format!("push?folderId={folder_id}").into());
let builder = WebviewWindowBuilder::new(&app, &label, url)
.title(format!("Push - {}", folder.name))
.inner_size(1100.0, 700.0)
.min_inner_size(800.0, 500.0)
.center();
let push_window = apply_platform_window_style(builder)
.build()
.map_err(|e| AppCommandError::window("Failed to open push window", e.to_string()))?;
ensure_windows_undecorated(&push_window);
Ok(())
}

View File

@@ -263,6 +263,7 @@ pub fn run() {
windows::focus_folder_window,
windows::open_merge_window,
windows::open_stash_window,
windows::open_push_window,
system_settings::get_system_proxy_settings,
system_settings::update_system_proxy_settings,
system_settings::get_system_language_settings,