upleb.uk

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

summaryrefslogtreecommitdiff
path: root/src/bin/git_remote_nostr/push.rs
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2024-11-21 16:53:17 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2024-11-21 16:53:17 +0000
commitf79014235e85554e3661b3f2a02b8fa88bc192ff (patch)
treefceec3ff2df212148a3420af7cef81a3f818463e /src/bin/git_remote_nostr/push.rs
parent91b0eac4daf92b7b740267ef203a1a8ba591974b (diff)
feat(login): overhaul login experience
* simplify login menu, making it more accessable to newcomers and easier to select remote signer options * enable `ngit login` to work from anywhere (not just a git repo) * assume fresh login details saved to global git config but fallback to local repository * maintain local repository login via `ngit login --local` * maintain login via CLI arguments eg `ngit send --nsec nsec123` * nudge users to remember nsec when pasting in ncryptsec for a better UX, whilst maintaining the option to be prompted for password everytime * create placeholder menu items for help menu and create account
Diffstat (limited to 'src/bin/git_remote_nostr/push.rs')
-rw-r--r--src/bin/git_remote_nostr/push.rs25
1 files changed, 9 insertions, 16 deletions
diff --git a/src/bin/git_remote_nostr/push.rs b/src/bin/git_remote_nostr/push.rs
index 91c901a..7161c5d 100644
--- a/src/bin/git_remote_nostr/push.rs
+++ b/src/bin/git_remote_nostr/push.rs
@@ -8,7 +8,9 @@ use std::{
8 8
9use anyhow::{anyhow, bail, Context, Result}; 9use anyhow::{anyhow, bail, Context, Result};
10use auth_git2::GitAuthenticator; 10use auth_git2::GitAuthenticator;
11use client::{get_events_from_cache, get_state_from_cache, send_events, sign_event, STATE_KIND}; 11use client::{
12 get_events_from_local_cache, get_state_from_cache, send_events, sign_event, STATE_KIND,
13};
12use console::Term; 14use console::Term;
13use git::{sha1_to_oid, RepoActions}; 15use git::{sha1_to_oid, RepoActions};
14use git2::{Oid, Repository}; 16use git2::{Oid, Repository};
@@ -76,7 +78,7 @@ pub async fn run_push(
76 _ => list_from_remotes(&term, git_repo, &repo_ref.git_server, decoded_nostr_url), 78 _ => list_from_remotes(&term, git_repo, &repo_ref.git_server, decoded_nostr_url),
77 }; 79 };
78 80
79 let nostr_state = get_state_from_cache(git_repo.get_path()?, repo_ref).await; 81 let nostr_state = get_state_from_cache(Some(git_repo.get_path()?), repo_ref).await;
80 82
81 let existing_state = { 83 let existing_state = {
82 // if no state events - create from first git server listed 84 // if no state events - create from first git server listed
@@ -122,17 +124,8 @@ pub async fn run_push(
122 return Ok(()); 124 return Ok(());
123 } 125 }
124 126
125 let (signer, user_ref) = login::launch( 127 let (signer, user_ref, _) =
126 git_repo, 128 login::login_or_signup(&Some(git_repo), &None, &None, Some(client)).await?;
127 &None,
128 &None,
129 &None,
130 &None,
131 Some(client),
132 false,
133 false,
134 )
135 .await?;
136 129
137 if !repo_ref.maintainers.contains(&user_ref.public_key) { 130 if !repo_ref.maintainers.contains(&user_ref.public_key) {
138 for refspec in &git_server_refspecs { 131 for refspec in &git_server_refspecs {
@@ -306,7 +299,7 @@ pub async fn run_push(
306 term.write_line("broadcast to nostr relays:")?; 299 term.write_line("broadcast to nostr relays:")?;
307 send_events( 300 send_events(
308 client, 301 client,
309 git_repo.get_path()?, 302 Some(git_repo.get_path()?),
310 events, 303 events,
311 user_ref.relays.write(), 304 user_ref.relays.write(),
312 repo_ref.relays.clone(), 305 repo_ref.relays.clone(),
@@ -897,7 +890,7 @@ async fn get_merged_status_events(
897 // merge commit 890 // merge commit
898 for parent in commit.parents() { 891 for parent in commit.parents() {
899 // lookup parent id 892 // lookup parent id
900 let commit_events = get_events_from_cache( 893 let commit_events = get_events_from_local_cache(
901 git_repo.get_path()?, 894 git_repo.get_path()?,
902 vec![ 895 vec![
903 nostr::Filter::default() 896 nostr::Filter::default()
@@ -1045,7 +1038,7 @@ async fn get_proposal_and_revision_root_from_patch(
1045 .clone(), 1038 .clone(),
1046 )?; 1039 )?;
1047 1040
1048 get_events_from_cache( 1041 get_events_from_local_cache(
1049 git_repo.get_path()?, 1042 git_repo.get_path()?,
1050 vec![nostr::Filter::default().id(proposal_or_revision_id)], 1043 vec![nostr::Filter::default().id(proposal_or_revision_id)],
1051 ) 1044 )