This commit is contained in:
2026-08-26 20:43:01 -04:00
parent 948b415d5a
commit a8938176be
4 changed files with 50 additions and 17 deletions
+17 -7
View File
@@ -37,7 +37,7 @@ pub(crate) enum Message {
CacheDatatypes(HashMap<NamedNode, ResourceDescription>),
CacheReadOnlyEntities(HashSet<ReadOnlyEntity>),
PopulateCaches,
LookupResourceDescriptions(Vec<NamedNode>),
LookupResourceDescriptions(HashSet<NamedNode>),
CacheResourceDescriptions(HashMap<NamedNode, ResourceDescription>),
WindowClosed(window::Id),
URLInputChanged(String),
@@ -409,7 +409,7 @@ impl Publisher {
}
Message::SearchResultClicked(node) => {
if let Some(search_state) = &self.search_state {
task = task.chain(Task::done(Message::LookupResourceDescriptions(vec![node.clone()])));
task = task.chain(Task::done(Message::LookupResourceDescriptions(HashSet::from_iter([node.clone()]))));
match search_state.action {
SearchResultClickAction::URLInput => {
@@ -545,12 +545,22 @@ impl Publisher {
}
Message::NewDocument(class, Some(url)) => {
let mut document: RdfSource<KeyedDataset<RowState>> = RdfSource::new(url.clone());
let mut quad = document.new_quad();
quad.predicate = vocab::rdf::TYPE.into_owned();
quad.object = Term::NamedNode(class.to_named_node().into_owned());
document.dataset_mut().quads.insert(quad);
let mut nodes_to_look_up = HashSet::new();
let document_node = NamedNode::new_unchecked(url.as_str());
for triple in &class.template(document_node) {
let quad = document.quad_from_triple(triple.into_owned());
document.dataset_mut().quads.insert(quad);
task = Task::done(Message::HideNewDocumentButtons)
if triple.predicate == vocab::rdf::TYPE &&
let TermRef::NamedNode(node) = triple.object {
nodes_to_look_up.insert(node.into_owned());
} else {
nodes_to_look_up.insert(triple.predicate.into_owned());
}
}
task = Task::done(Message::LookupResourceDescriptions(nodes_to_look_up))
.chain(Task::done(Message::HideNewDocumentButtons))
.chain(Task::done(Message::URLInputChanged(url.to_string())))
.chain(Task::done(Message::LoadDocument(document)));
}