Add bookmark metadata updates

This commit is contained in:
2026-05-08 06:03:43 -04:00
parent a236e6a53b
commit 26d0e4346c
4 changed files with 160 additions and 3 deletions
+6 -1
View File
@@ -1,4 +1,6 @@
use ely_domain::{DomainError, DownloadId, PluginId, ProfileId, SpaceId, SplitId, TabId};
use ely_domain::{
BookmarkId, DomainError, DownloadId, PluginId, ProfileId, SpaceId, SplitId, TabId,
};
use thiserror::Error;
#[derive(Clone, Debug, Error, Eq, PartialEq)]
@@ -9,6 +11,9 @@ pub enum CoreError {
#[error("tab not found: {id}")]
TabNotFound { id: TabId },
#[error("bookmark not found: {id}")]
BookmarkNotFound { id: BookmarkId },
#[error("space not found: {id}")]
SpaceNotFound { id: SpaceId },
@@ -31,6 +31,38 @@ impl BrowserCore {
Ok(bookmark_id)
}
pub fn set_bookmark_collection_name(
&mut self,
bookmark_id: &BookmarkId,
collection_name: impl Into<String>,
) -> Result<(), CoreError> {
self.bookmark_mut(bookmark_id)?.set_collection_name(collection_name)?;
Ok(())
}
pub fn set_bookmark_tags(
&mut self,
bookmark_id: &BookmarkId,
tags: Vec<String>,
) -> Result<(), CoreError> {
self.bookmark_mut(bookmark_id)?.set_tags(tags)?;
Ok(())
}
pub fn set_bookmark_note(
&mut self,
bookmark_id: &BookmarkId,
note: impl Into<String>,
) -> Result<(), CoreError> {
self.bookmark_mut(bookmark_id)?.set_note(note)?;
Ok(())
}
pub fn clear_bookmark_note(&mut self, bookmark_id: &BookmarkId) -> Result<(), CoreError> {
self.bookmark_mut(bookmark_id)?.clear_note();
Ok(())
}
pub(super) fn find_bookmark_match(&self, query: &str) -> Option<UrlText> {
let normalized_query = query.trim().to_lowercase();
if normalized_query.is_empty() {
@@ -52,6 +84,13 @@ impl BrowserCore {
.cloned()
.collect()
}
fn bookmark_mut(&mut self, bookmark_id: &BookmarkId) -> Result<&mut BookmarkEntry, CoreError> {
self.bookmarks
.iter_mut()
.find(|bookmark| bookmark.id() == bookmark_id)
.ok_or_else(|| CoreError::BookmarkNotFound { id: bookmark_id.clone() })
}
}
fn bookmark_matches_query(bookmark: &BookmarkEntry, normalized_query: &str) -> bool {