Enhance commit listing to track queued hashes, calculate pending rewrite count, and check against current history.
This commit is contained in:
@@ -2084,6 +2084,7 @@ fn remove_git_folder(folder_obj: FolderObj) -> CommandResult<()> {
|
|||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
fn get_commits(
|
fn get_commits(
|
||||||
|
state: tauri::State<'_, AppState>,
|
||||||
folder_obj: FolderObj,
|
folder_obj: FolderObj,
|
||||||
page: Option<usize>,
|
page: Option<usize>,
|
||||||
page_size: Option<usize>,
|
page_size: Option<usize>,
|
||||||
@@ -2098,8 +2099,28 @@ fn get_commits(
|
|||||||
page: 1,
|
page: 1,
|
||||||
page_size,
|
page_size,
|
||||||
pages: 1,
|
pages: 1,
|
||||||
|
pending_rewrite_count: 0,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
let queued_hashes = state
|
||||||
|
.store
|
||||||
|
.lock()
|
||||||
|
.map_err(|e| e.to_string())?
|
||||||
|
.folders
|
||||||
|
.iter()
|
||||||
|
.find(|folder| folder.path == folder_obj.path)
|
||||||
|
.map(|folder| folder.llm_candidates.clone())
|
||||||
|
.unwrap_or_default();
|
||||||
|
let queued_full: HashSet<String> = queued_hashes
|
||||||
|
.iter()
|
||||||
|
.filter_map(|hash| resolve_commit_hash(&folder_obj.path, hash))
|
||||||
|
.collect();
|
||||||
|
let current_history: HashSet<String> = run_git(&folder_obj.path, &["rev-list", "HEAD"])
|
||||||
|
.unwrap_or_default()
|
||||||
|
.lines()
|
||||||
|
.map(str::to_string)
|
||||||
|
.collect();
|
||||||
|
let pending_rewrite_count = pending_rewrite_hashes(&folder_obj.path, &queued_hashes).len();
|
||||||
let total = run_git(&folder_obj.path, &["rev-list", "--all", "--count"])
|
let total = run_git(&folder_obj.path, &["rev-list", "--all", "--count"])
|
||||||
.ok()
|
.ok()
|
||||||
.and_then(|raw| raw.trim().parse::<usize>().ok())
|
.and_then(|raw| raw.trim().parse::<usize>().ok())
|
||||||
@@ -2112,6 +2133,7 @@ fn get_commits(
|
|||||||
page: 1,
|
page: 1,
|
||||||
page_size,
|
page_size,
|
||||||
pages: 1,
|
pages: 1,
|
||||||
|
pending_rewrite_count: 0,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
let skip = (page - 1) * page_size;
|
let skip = (page - 1) * page_size;
|
||||||
@@ -2138,6 +2160,8 @@ fn get_commits(
|
|||||||
hash: short_hash(hash),
|
hash: short_hash(hash),
|
||||||
date: date.to_string(),
|
date: date.to_string(),
|
||||||
message: message.to_string(),
|
message: message.to_string(),
|
||||||
|
needs_rewrite: is_auto_git_message(message) || queued_full.contains(hash),
|
||||||
|
can_reword: current_history.contains(hash),
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
@@ -2152,6 +2176,7 @@ fn get_commits(
|
|||||||
page,
|
page,
|
||||||
page_size,
|
page_size,
|
||||||
pages: pages.max(1),
|
pages: pages.max(1),
|
||||||
|
pending_rewrite_count,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user