diff --git a/dnas/generic_dna/zomes/coordinator/generic_zome/src/lib.rs b/dnas/generic_dna/zomes/coordinator/generic_zome/src/lib.rs index a3bfa29..648bc8d 100644 --- a/dnas/generic_dna/zomes/coordinator/generic_zome/src/lib.rs +++ b/dnas/generic_dna/zomes/coordinator/generic_zome/src/lib.rs @@ -27,122 +27,108 @@ pub struct Thing { #[derive(Serialize, Deserialize, Debug)] #[serde(tag = "type")] pub enum Signal { - ThingCreated { - thing: Thing, - }, - ThingUpdated { - thing: Thing, - }, - ThingDeleted { - id: ActionHash, - }, - LinksCreated { - links: Vec, - }, - LinksDeleted { - links: Vec, - }, - LinkCreated { - action: SignedActionHashed, - link_type: LinkTypes, - }, + ThingCreated { thing: Thing }, + ThingUpdated { thing: Thing }, + ThingDeleted { id: ActionHash }, + LinksCreated { links: Vec }, + LinksDeleted { links: Vec }, } -/// Whenever an action is committed, we emit a signal to the UI elements to reactively update them -#[hdk_extern(infallible)] -pub fn post_commit(committed_actions: Vec) { - /// Don't modify this loop if you want the scaffolding tool to generate appropriate signals for your entries and links - for action in committed_actions { - if let Err(err) = signal_action(action) { - error!("Error signaling new action: {:?}", err); - } - } -} +// /// Whenever an action is committed, we emit a signal to the UI elements to reactively update them +// #[hdk_extern(infallible)] +// pub fn post_commit(committed_actions: Vec) { +// /// Don't modify this loop if you want the scaffolding tool to generate appropriate signals for your entries and links +// for action in committed_actions { +// if let Err(err) = signal_action(action) { +// error!("Error signaling new action: {:?}", err); +// } +// } +// } -/// Don't modify this function if you want the scaffolding tool to generate appropriate signals for your entries and links -fn signal_action(action: SignedActionHashed) -> ExternResult<()> { - match action.hashed.content.clone() { - Action::CreateLink(create_link) => { - if let Ok(Some(link_type)) = - LinkTypes::from_type(create_link.zome_index, create_link.link_type) - { - emit_signal(Signal::LinkCreated { action, link_type })?; - } - Ok(()) - } - Action::DeleteLink(delete_link) => { - let record = get(delete_link.link_add_address.clone(), GetOptions::default())?.ok_or( - wasm_error!(WasmErrorInner::Guest( - "Failed to fetch CreateLink action".to_string() - )), - )?; - match record.action() { - Action::CreateLink(create_link) => { - if let Ok(Some(link_type)) = - LinkTypes::from_type(create_link.zome_index, create_link.link_type) - { - emit_signal(Signal::LinkDeleted { - action, - link_type, - create_link_action: record.signed_action.clone(), - })?; - } - Ok(()) - } - _ => Err(wasm_error!(WasmErrorInner::Guest( - "Create Link should exist".to_string() - ))), - } - } - Action::Create(_create) => { - if let Ok(Some(app_entry)) = get_entry_for_action(&action.hashed.hash) { - emit_signal(Signal::EntryCreated { action, app_entry })?; - } - Ok(()) - } - Action::Update(update) => { - if let Ok(Some(app_entry)) = get_entry_for_action(&action.hashed.hash) { - if let Ok(Some(original_app_entry)) = - get_entry_for_action(&update.original_action_address) - { - emit_signal(Signal::EntryUpdated { - action, - app_entry, - original_app_entry, - })?; - } - } - Ok(()) - } - Action::Delete(delete) => { - if let Ok(Some(original_app_entry)) = get_entry_for_action(&delete.deletes_address) { - emit_signal(Signal::EntryDeleted { - action, - original_app_entry, - })?; - } - Ok(()) - } - _ => Ok(()), - } -} +// /// Don't modify this function if you want the scaffolding tool to generate appropriate signals for your entries and links +// fn signal_action(action: SignedActionHashed) -> ExternResult<()> { +// match action.hashed.content.clone() { +// Action::CreateLink(create_link) => { +// if let Ok(Some(link_type)) = +// LinkTypes::from_type(create_link.zome_index, create_link.link_type) +// { +// emit_signal(Signal::LinkCreated { action, link_type })?; +// } +// Ok(()) +// } +// Action::DeleteLink(delete_link) => { +// let record = get(delete_link.link_add_address.clone(), GetOptions::default())?.ok_or( +// wasm_error!(WasmErrorInner::Guest( +// "Failed to fetch CreateLink action".to_string() +// )), +// )?; +// match record.action() { +// Action::CreateLink(create_link) => { +// if let Ok(Some(link_type)) = +// LinkTypes::from_type(create_link.zome_index, create_link.link_type) +// { +// emit_signal(Signal::LinkDeleted { +// action, +// link_type, +// create_link_action: record.signed_action.clone(), +// })?; +// } +// Ok(()) +// } +// _ => Err(wasm_error!(WasmErrorInner::Guest( +// "Create Link should exist".to_string() +// ))), +// } +// } +// Action::Create(_create) => { +// if let Ok(Some(app_entry)) = get_entry_for_action(&action.hashed.hash) { +// emit_signal(Signal::EntryCreated { action, app_entry })?; +// } +// Ok(()) +// } +// Action::Update(update) => { +// if let Ok(Some(app_entry)) = get_entry_for_action(&action.hashed.hash) { +// if let Ok(Some(original_app_entry)) = +// get_entry_for_action(&update.original_action_address) +// { +// emit_signal(Signal::EntryUpdated { +// action, +// app_entry, +// original_app_entry, +// })?; +// } +// } +// Ok(()) +// } +// Action::Delete(delete) => { +// if let Ok(Some(original_app_entry)) = get_entry_for_action(&delete.deletes_address) { +// emit_signal(Signal::EntryDeleted { +// action, +// original_app_entry, +// })?; +// } +// Ok(()) +// } +// _ => Ok(()), +// } +// } -fn get_entry_for_action(action_hash: &ActionHash) -> ExternResult> { - let record = match get_details(action_hash.clone(), GetOptions::default())? { - Some(Details::Record(record_details)) => record_details.record, - _ => return Ok(None), - }; - let entry = match record.entry().as_option() { - Some(entry) => entry, - None => return Ok(None), - }; - let (zome_index, entry_index) = match record.action().entry_type() { - Some(EntryType::App(AppEntryDef { - zome_index, - entry_index, - .. - })) => (zome_index, entry_index), - _ => return Ok(None), - }; - EntryTypes::deserialize_from_type(*zome_index, *entry_index, entry) -} +// fn get_entry_for_action(action_hash: &ActionHash) -> ExternResult> { +// let record = match get_details(action_hash.clone(), GetOptions::default())? { +// Some(Details::Record(record_details)) => record_details.record, +// _ => return Ok(None), +// }; +// let entry = match record.entry().as_option() { +// Some(entry) => entry, +// None => return Ok(None), +// }; +// let (zome_index, entry_index) = match record.action().entry_type() { +// Some(EntryType::App(AppEntryDef { +// zome_index, +// entry_index, +// .. +// })) => (zome_index, entry_index), +// _ => return Ok(None), +// }; +// EntryTypes::deserialize_from_type(*zome_index, *entry_index, entry) +// }