refactor: make LoginAction a bit safer

We make LoginAction a simple wrapper around processing the unknown
action to expose too much internal logic. This allows us to have a
must_use on our LoginAction type, otherwise the SingleUnkIdAction's
must_use will be lost when returned in the login action.

Fixes: a5cdddbb2b ("user can upgrade their npub -> nsec")
Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
William Casarin
2024-11-27 09:17:45 -08:00
parent a5cdddbb2b
commit e69a7f83ae
3 changed files with 17 additions and 8 deletions

View File

@@ -1,7 +1,7 @@
use std::cmp::Ordering;
use enostr::{FilledKeypair, FullKeypair, Keypair};
use nostrdb::Ndb;
use nostrdb::{Ndb, Transaction};
use crate::{
column::Columns,
@@ -14,6 +14,7 @@ use crate::{
accounts::{AccountsView, AccountsViewResponse},
},
unknowns::SingleUnkIdAction,
unknowns::UnknownIds,
user_account::UserAccount,
};
use tracing::{error, info};
@@ -245,11 +246,22 @@ pub fn process_login_view_response(
login_action.unk
}
#[must_use = "You must call process_login_action on this to handle unknown ids"]
pub struct LoginAction {
pub unk: SingleUnkIdAction,
unk: SingleUnkIdAction,
pub switch_to_index: usize,
}
impl LoginAction {
// Simple wrapper around processing the unknown action to expose too
// much internal logic. This allows us to have a must_use on our
// LoginAction type, otherwise the SingleUnkIdAction's must_use will
// be lost when returned in the login action
pub fn process_action(&mut self, ids: &mut UnknownIds, ndb: &Ndb, txn: &Transaction) {
self.unk.process_action(ids, ndb, txn);
}
}
#[derive(Default)]
struct ContainsAccount {
pub has_nsec: bool,

View File

@@ -429,7 +429,6 @@ impl Damus {
info!("adding account: {}", key.pubkey);
accounts
.add_account(key)
.unk
.process_action(&mut unknown_ids, &ndb, &txn);
}
}

View File

@@ -102,11 +102,9 @@ pub fn test_app() -> Damus {
let accounts = get_test_accounts();
let txn = Transaction::new(&app.ndb).expect("txn");
for account in accounts {
app.accounts_mut().add_account(account).unk.process_action(
&mut app.unknown_ids,
&app.ndb,
&txn,
)
app.accounts_mut()
.add_account(account)
.process_action(&mut app.unknown_ids, &app.ndb, &txn)
}
app