move modify_advertised_relays into accounts/relay.rs
Signed-off-by: kernelkind <kernelkind@gmail.com>
This commit is contained in:
@@ -1,11 +1,14 @@
|
||||
use tracing::{debug, info};
|
||||
use tracing::debug;
|
||||
|
||||
use crate::account::cache::AccountCache;
|
||||
use crate::account::mute::AccountMutedData;
|
||||
use crate::account::relay::{update_relay_configuration, AccountRelayData, RelayDefaults};
|
||||
use crate::account::relay::{
|
||||
modify_advertised_relays, update_relay_configuration, AccountRelayData, RelayAction,
|
||||
RelayDefaults,
|
||||
};
|
||||
use crate::storage::AccountStorageWriter;
|
||||
use crate::user_account::UserAccountSerializable;
|
||||
use crate::{AccountStorage, MuteFun, RelaySpec, SingleUnkIdAction, UnknownIds, UserAccount};
|
||||
use crate::{AccountStorage, MuteFun, SingleUnkIdAction, UnknownIds, UserAccount};
|
||||
use enostr::{ClientMessage, FilledKeypair, Keypair, Pubkey, RelayPool};
|
||||
use nostrdb::{Ndb, Note, Transaction};
|
||||
|
||||
@@ -338,51 +341,26 @@ impl Accounts {
|
||||
self.cache.get(pubkey).and_then(|r| r.key.to_full())
|
||||
}
|
||||
|
||||
fn modify_advertised_relays(
|
||||
&mut self,
|
||||
relay_url: &str,
|
||||
pool: &mut RelayPool,
|
||||
action: RelayAction,
|
||||
) {
|
||||
let relay_url = AccountRelayData::canonicalize_url(relay_url);
|
||||
match action {
|
||||
RelayAction::Add => info!("add advertised relay \"{}\"", relay_url),
|
||||
RelayAction::Remove => info!("remove advertised relay \"{}\"", relay_url),
|
||||
}
|
||||
|
||||
let selected = self.cache.selected_mut();
|
||||
let account_data = &mut selected.data;
|
||||
|
||||
let advertised = &mut account_data.relay.advertised;
|
||||
if advertised.is_empty() {
|
||||
// If the selected account has no advertised relays,
|
||||
// initialize with the bootstrapping set.
|
||||
advertised.extend(self.relay_defaults.bootstrap_relays.iter().cloned());
|
||||
}
|
||||
match action {
|
||||
RelayAction::Add => {
|
||||
advertised.insert(RelaySpec::new(relay_url, false, false));
|
||||
}
|
||||
RelayAction::Remove => {
|
||||
advertised.remove(&RelaySpec::new(relay_url, false, false));
|
||||
}
|
||||
}
|
||||
self.needs_relay_config = true;
|
||||
|
||||
// If we have the secret key publish the NIP-65 relay list
|
||||
if let Some(secretkey) = &selected.key.secret_key {
|
||||
account_data
|
||||
.relay
|
||||
.publish_nip65_relays(&secretkey.to_secret_bytes(), pool);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn add_advertised_relay(&mut self, relay_to_add: &str, pool: &mut RelayPool) {
|
||||
self.modify_advertised_relays(relay_to_add, pool, RelayAction::Add);
|
||||
let acc = self.cache.selected_mut();
|
||||
modify_advertised_relays(
|
||||
&acc.key,
|
||||
RelayAction::Add(relay_to_add.to_owned()),
|
||||
pool,
|
||||
&self.relay_defaults,
|
||||
&mut acc.data,
|
||||
);
|
||||
}
|
||||
|
||||
pub fn remove_advertised_relay(&mut self, relay_to_remove: &str, pool: &mut RelayPool) {
|
||||
self.modify_advertised_relays(relay_to_remove, pool, RelayAction::Remove);
|
||||
let acc = self.cache.selected_mut();
|
||||
modify_advertised_relays(
|
||||
&acc.key,
|
||||
RelayAction::Remove(relay_to_remove.to_owned()),
|
||||
pool,
|
||||
&self.relay_defaults,
|
||||
&mut acc.data,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -452,11 +430,6 @@ fn get_acc_from_storage(
|
||||
})
|
||||
}
|
||||
|
||||
enum RelayAction {
|
||||
Add,
|
||||
Remove,
|
||||
}
|
||||
|
||||
pub struct AccountData {
|
||||
pub(crate) relay: AccountRelayData,
|
||||
pub(crate) muted: AccountMutedData,
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
use std::collections::BTreeSet;
|
||||
|
||||
use enostr::{Pubkey, RelayPool};
|
||||
use enostr::{Keypair, Pubkey, RelayPool};
|
||||
use nostrdb::{Filter, Ndb, NoteBuilder, NoteKey, Subscription, Transaction};
|
||||
use tracing::{debug, error};
|
||||
use tracing::{debug, error, info};
|
||||
use url::Url;
|
||||
use uuid::Uuid;
|
||||
|
||||
@@ -231,3 +231,55 @@ pub(super) fn update_relay_configuration(
|
||||
|
||||
debug!("current relays: {:?}", pool.urls());
|
||||
}
|
||||
|
||||
pub enum RelayAction {
|
||||
Add(String),
|
||||
Remove(String),
|
||||
}
|
||||
|
||||
impl RelayAction {
|
||||
pub(super) fn get_url(&self) -> &str {
|
||||
match self {
|
||||
RelayAction::Add(url) => url,
|
||||
RelayAction::Remove(url) => url,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub(super) fn modify_advertised_relays(
|
||||
kp: &Keypair,
|
||||
action: RelayAction,
|
||||
pool: &mut RelayPool,
|
||||
relay_defaults: &RelayDefaults,
|
||||
account_data: &mut AccountData,
|
||||
) {
|
||||
let relay_url = AccountRelayData::canonicalize_url(action.get_url());
|
||||
match action {
|
||||
RelayAction::Add(_) => info!("add advertised relay \"{}\"", relay_url),
|
||||
RelayAction::Remove(_) => info!("remove advertised relay \"{}\"", relay_url),
|
||||
}
|
||||
|
||||
// let selected = self.cache.selected_mut();
|
||||
|
||||
let advertised = &mut account_data.relay.advertised;
|
||||
if advertised.is_empty() {
|
||||
// If the selected account has no advertised relays,
|
||||
// initialize with the bootstrapping set.
|
||||
advertised.extend(relay_defaults.bootstrap_relays.iter().cloned());
|
||||
}
|
||||
match action {
|
||||
RelayAction::Add(_) => {
|
||||
advertised.insert(RelaySpec::new(relay_url, false, false));
|
||||
}
|
||||
RelayAction::Remove(_) => {
|
||||
advertised.remove(&RelaySpec::new(relay_url, false, false));
|
||||
}
|
||||
}
|
||||
|
||||
// If we have the secret key publish the NIP-65 relay list
|
||||
if let Some(secretkey) = &kp.secret_key {
|
||||
account_data
|
||||
.relay
|
||||
.publish_nip65_relays(&secretkey.to_secret_bytes(), pool);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user