diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2024-04-22 09:29:18 +0100 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2024-04-22 09:29:18 +0100 |
| commit | 6bfd8b0ddec7f8f4c24a97d357de9acd615b0b17 (patch) | |
| tree | 5ae22330839b999f9d6e69faf11ad5ac91782448 | |
| parent | 4b49ab05e3b8fa3146d7dfd0c8e5250c14df46ae (diff) | |
feat(send): print link to proposal root
after a new root proposal has been sent
link directly to gitworkshop.dev as well as njump.me until
gitworkshop is added to njump
| -rw-r--r-- | src/sub_commands/send.rs | 28 | ||||
| -rw-r--r-- | tests/send.rs | 12 |
2 files changed, 38 insertions, 2 deletions
diff --git a/src/sub_commands/send.rs b/src/sub_commands/send.rs index d9caf9b..78d00b2 100644 --- a/src/sub_commands/send.rs +++ b/src/sub_commands/send.rs | |||
| @@ -6,7 +6,7 @@ use futures::future::join_all; | |||
| 6 | use indicatif::{MultiProgress, ProgressBar, ProgressStyle}; | 6 | use indicatif::{MultiProgress, ProgressBar, ProgressStyle}; |
| 7 | use nostr::{ | 7 | use nostr::{ |
| 8 | nips::{nip01::Coordinate, nip19::Nip19}, | 8 | nips::{nip01::Coordinate, nip19::Nip19}, |
| 9 | EventBuilder, FromBech32, Marker, Tag, TagKind, UncheckedUrl, | 9 | EventBuilder, FromBech32, Marker, Tag, TagKind, ToBech32, UncheckedUrl, |
| 10 | }; | 10 | }; |
| 11 | use nostr_sdk::hashes::sha1::Hash as Sha1Hash; | 11 | use nostr_sdk::hashes::sha1::Hash as Sha1Hash; |
| 12 | 12 | ||
| @@ -220,12 +220,36 @@ pub async fn launch(cli_args: &Cli, args: &SubCommandArgs) -> Result<()> { | |||
| 220 | 220 | ||
| 221 | send_events( | 221 | send_events( |
| 222 | &client, | 222 | &client, |
| 223 | events, | 223 | events.clone(), |
| 224 | user_ref.relays.write(), | 224 | user_ref.relays.write(), |
| 225 | repo_ref.relays.clone(), | 225 | repo_ref.relays.clone(), |
| 226 | !cli_args.disable_cli_spinners, | 226 | !cli_args.disable_cli_spinners, |
| 227 | ) | 227 | ) |
| 228 | .await?; | 228 | .await?; |
| 229 | |||
| 230 | if args.in_reply_to.is_none() { | ||
| 231 | if let Some(event) = events.first() { | ||
| 232 | // TODO: add gitworkshop.dev to njump and remove direct gitworkshop link | ||
| 233 | println!( | ||
| 234 | "{}", | ||
| 235 | dim.apply_to(format!( | ||
| 236 | "view in gitworkshop.dev: https://gitworkshop.dev/repo/{}/proposal/{}", | ||
| 237 | repo_ref.identifier, | ||
| 238 | event.id(), | ||
| 239 | )) | ||
| 240 | ); | ||
| 241 | println!( | ||
| 242 | "{}", | ||
| 243 | dim.apply_to(format!( | ||
| 244 | "view in another client: https://njump.me/{}", | ||
| 245 | event | ||
| 246 | .id() | ||
| 247 | .to_bech32() | ||
| 248 | .context("cannot produce nevent from event id")? | ||
| 249 | )) | ||
| 250 | ); | ||
| 251 | } | ||
| 252 | } | ||
| 229 | // TODO check if there is already a similarly named | 253 | // TODO check if there is already a similarly named |
| 230 | Ok(()) | 254 | Ok(()) |
| 231 | } | 255 | } |
diff --git a/tests/send.rs b/tests/send.rs index 4af2347..a38546a 100644 --- a/tests/send.rs +++ b/tests/send.rs | |||
| @@ -147,6 +147,14 @@ fn expect_msgs_first(p: &mut CliTester, include_cover_letter: bool) -> Result<() | |||
| 147 | Ok(()) | 147 | Ok(()) |
| 148 | } | 148 | } |
| 149 | 149 | ||
| 150 | fn expect_msgs_after(p: &mut CliTester) -> Result<()> { | ||
| 151 | p.expect_after_whitespace("view in gitworkshop.dev: https://gitworkshop.dev/repo")?; | ||
| 152 | p.expect_eventually("\r\n")?; | ||
| 153 | p.expect("view in another client: https://njump.me/")?; | ||
| 154 | p.expect_eventually("\r\n")?; | ||
| 155 | Ok(()) | ||
| 156 | } | ||
| 157 | |||
| 150 | async fn prep_run_create_proposal( | 158 | async fn prep_run_create_proposal( |
| 151 | include_cover_letter: bool, | 159 | include_cover_letter: bool, |
| 152 | ) -> Result<( | 160 | ) -> Result<( |
| @@ -715,6 +723,7 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ | |||
| 715 | ], | 723 | ], |
| 716 | 3, | 724 | 3, |
| 717 | )?; | 725 | )?; |
| 726 | expect_msgs_after(&mut p)?; | ||
| 718 | p.expect_end_with_whitespace()?; | 727 | p.expect_end_with_whitespace()?; |
| 719 | for p in [51, 52, 53, 55, 56] { | 728 | for p in [51, 52, 53, 55, 56] { |
| 720 | relay::shutdown_relay(8000 + p)?; | 729 | relay::shutdown_relay(8000 + p)?; |
| @@ -880,6 +889,7 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ | |||
| 880 | ], | 889 | ], |
| 881 | 3, | 890 | 3, |
| 882 | )?; | 891 | )?; |
| 892 | expect_msgs_after(&mut p)?; | ||
| 883 | p.expect_end_with_whitespace()?; | 893 | p.expect_end_with_whitespace()?; |
| 884 | for p in [51, 52, 53, 55, 56] { | 894 | for p in [51, 52, 53, 55, 56] { |
| 885 | relay::shutdown_relay(8000 + p)?; | 895 | relay::shutdown_relay(8000 + p)?; |
| @@ -963,6 +973,7 @@ mod when_no_cover_letter_flag_set_with_range_of_head_2_sends_2_patches_without_c | |||
| 963 | ], | 973 | ], |
| 964 | 2, | 974 | 2, |
| 965 | )?; | 975 | )?; |
| 976 | expect_msgs_after(&mut p)?; | ||
| 966 | p.expect_end_with_whitespace()?; | 977 | p.expect_end_with_whitespace()?; |
| 967 | for p in [51, 52, 53, 55, 56] { | 978 | for p in [51, 52, 53, 55, 56] { |
| 968 | relay::shutdown_relay(8000 + p)?; | 979 | relay::shutdown_relay(8000 + p)?; |
| @@ -1241,6 +1252,7 @@ mod when_range_ommited_prompts_for_selection_defaulting_ahead_of_main { | |||
| 1241 | ], | 1252 | ], |
| 1242 | 2, | 1253 | 2, |
| 1243 | )?; | 1254 | )?; |
| 1255 | expect_msgs_after(&mut p)?; | ||
| 1244 | p.expect_end_with_whitespace()?; | 1256 | p.expect_end_with_whitespace()?; |
| 1245 | for p in [51, 52, 53, 55, 56] { | 1257 | for p in [51, 52, 53, 55, 56] { |
| 1246 | relay::shutdown_relay(8000 + p)?; | 1258 | relay::shutdown_relay(8000 + p)?; |