diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2024-11-21 16:53:17 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2024-11-21 16:53:17 +0000 |
| commit | f79014235e85554e3661b3f2a02b8fa88bc192ff (patch) | |
| tree | fceec3ff2df212148a3420af7cef81a3f818463e /src/bin/git_remote_nostr/push.rs | |
| parent | 91b0eac4daf92b7b740267ef203a1a8ba591974b (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.rs | 25 |
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 | ||
| 9 | use anyhow::{anyhow, bail, Context, Result}; | 9 | use anyhow::{anyhow, bail, Context, Result}; |
| 10 | use auth_git2::GitAuthenticator; | 10 | use auth_git2::GitAuthenticator; |
| 11 | use client::{get_events_from_cache, get_state_from_cache, send_events, sign_event, STATE_KIND}; | 11 | use client::{ |
| 12 | get_events_from_local_cache, get_state_from_cache, send_events, sign_event, STATE_KIND, | ||
| 13 | }; | ||
| 12 | use console::Term; | 14 | use console::Term; |
| 13 | use git::{sha1_to_oid, RepoActions}; | 15 | use git::{sha1_to_oid, RepoActions}; |
| 14 | use git2::{Oid, Repository}; | 16 | use 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 | ) |