fix: pin order (#173)

* fix: pin order

* chore: simplify logic
This commit is contained in:
Gustavo Carvalho
2026-02-13 09:20:40 -03:00
committed by GitHub
parent 04e2ed1e06
commit f1563966ee

View File

@@ -525,9 +525,20 @@ impl ClipboardManager {
}
pub fn toggle_pin(&mut self, id: &str) -> Option<ClipboardItem> {
let item = self.history.iter_mut().find(|i| i.id == id)?;
item.pinned = !item.pinned;
let item_clone = item.clone();
// Find the item and toggle its pin status
let pos = self.history.iter().position(|i| i.id == id)?;
self.history[pos].pinned = !self.history[pos].pinned;
// Reposition the item so the invariant
let item = self.history.remove(pos);
let insert_pos = self
.history
.iter()
.position(|i| !i.pinned)
.unwrap_or(self.history.len());
self.history.insert(insert_pos, item);
let item_clone = self.history[insert_pos].clone();
self.save_history();
Some(item_clone)
}