Add bookmark metadata updates
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user