upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/git_events.rs38
1 files changed, 32 insertions, 6 deletions
diff --git a/src/lib/git_events.rs b/src/lib/git_events.rs
index 2e1f215..79f5772 100644
--- a/src/lib/git_events.rs
+++ b/src/lib/git_events.rs
@@ -184,7 +184,7 @@ pub async fn generate_patch_event(
184 event_tag_from_nip19_or_hex( 184 event_tag_from_nip19_or_hex(
185 &event_ref, 185 &event_ref,
186 "proposal", 186 "proposal",
187 Marker::Reply, 187 EventRefType::Reply,
188 false, 188 false,
189 false, 189 false,
190 )?, 190 )?,
@@ -277,10 +277,17 @@ pub async fn generate_patch_event(
277 .context("failed to sign event") 277 .context("failed to sign event")
278} 278}
279 279
280#[derive(Debug, PartialEq)]
281pub enum EventRefType {
282 Root,
283 Reply,
284 Quote,
285}
286
280pub fn event_tag_from_nip19_or_hex( 287pub fn event_tag_from_nip19_or_hex(
281 reference: &str, 288 reference: &str,
282 reference_name: &str, 289 reference_name: &str,
283 marker: Marker, 290 ref_type: EventRefType,
284 allow_npub_reference: bool, 291 allow_npub_reference: bool,
285 prompt_for_correction: bool, 292 prompt_for_correction: bool,
286) -> Result<nostr::Tag> { 293) -> Result<nostr::Tag> {
@@ -291,22 +298,41 @@ pub fn event_tag_from_nip19_or_hex(
291 PromptInputParms::default().with_prompt(format!("{reference_name} reference")), 298 PromptInputParms::default().with_prompt(format!("{reference_name} reference")),
292 )?; 299 )?;
293 } 300 }
301 let marker = match ref_type {
302 EventRefType::Root => Some(Marker::Root),
303 EventRefType::Reply => Some(Marker::Reply),
304 EventRefType::Quote => None,
305 };
294 if let Ok(nip19) = Nip19::from_bech32(&bech32) { 306 if let Ok(nip19) = Nip19::from_bech32(&bech32) {
295 match nip19 { 307 match nip19 {
296 Nip19::Event(n) => { 308 Nip19::Event(n) => {
309 if ref_type == EventRefType::Quote {
310 break Ok(Tag::from_standardized(nostr_sdk::TagStandard::Quote {
311 event_id: n.event_id,
312 relay_url: n.relays.first().cloned(),
313 public_key: None,
314 }));
315 }
297 break Ok(Tag::from_standardized(nostr_sdk::TagStandard::Event { 316 break Ok(Tag::from_standardized(nostr_sdk::TagStandard::Event {
298 event_id: n.event_id, 317 event_id: n.event_id,
299 relay_url: n.relays.first().cloned(), 318 relay_url: n.relays.first().cloned(),
300 marker: Some(marker), 319 marker,
301 public_key: None, 320 public_key: None,
302 uppercase: false, 321 uppercase: false,
303 })); 322 }));
304 } 323 }
305 Nip19::EventId(id) => { 324 Nip19::EventId(id) => {
325 if ref_type == EventRefType::Quote {
326 break Ok(Tag::from_standardized(nostr_sdk::TagStandard::Quote {
327 event_id: id,
328 relay_url: None,
329 public_key: None,
330 }));
331 }
306 break Ok(Tag::from_standardized(nostr_sdk::TagStandard::Event { 332 break Ok(Tag::from_standardized(nostr_sdk::TagStandard::Event {
307 event_id: id, 333 event_id: id,
308 relay_url: None, 334 relay_url: None,
309 marker: Some(marker), 335 marker,
310 public_key: None, 336 public_key: None,
311 uppercase: false, 337 uppercase: false,
312 })); 338 }));
@@ -335,7 +361,7 @@ pub fn event_tag_from_nip19_or_hex(
335 break Ok(Tag::from_standardized(nostr_sdk::TagStandard::Event { 361 break Ok(Tag::from_standardized(nostr_sdk::TagStandard::Event {
336 event_id: id, 362 event_id: id,
337 relay_url: None, 363 relay_url: None,
338 marker: Some(marker), 364 marker,
339 public_key: None, 365 public_key: None,
340 uppercase: false, 366 uppercase: false,
341 })); 367 }));
@@ -574,7 +600,7 @@ pub async fn generate_cover_letter_and_patch_events(
574 Tag::hashtag("root"), 600 Tag::hashtag("root"),
575 Tag::hashtag("revision-root"), 601 Tag::hashtag("revision-root"),
576 // TODO check if id is for a root proposal (perhaps its for an issue?) 602 // TODO check if id is for a root proposal (perhaps its for an issue?)
577 event_tag_from_nip19_or_hex(&event_ref,"proposal",Marker::Reply, false, false)?, 603 event_tag_from_nip19_or_hex(&event_ref,"proposal",EventRefType::Reply, false, false)?,
578 ] 604 ]
579 } else { 605 } else {
580 vec![ 606 vec![