notedeck

One damus client to rule them all
git clone git://jb55.com/notedeck
Log | Files | Refs | README | LICENSE

commit 8542b40e9eb7567c4da1ed2b103dae78349fbc7c
parent 929c5c8b3355b33b8621f10d202f13b3445a80a6
Author: kernelkind <kernelkind@gmail.com>
Date:   Wed, 25 Feb 2026 19:50:16 -0500

refactor(outbox-int): remove legacy `Subscriptions`

Signed-off-by: kernelkind <kernelkind@gmail.com>

Diffstat:
Mcrates/notedeck/src/app.rs | 7++++---
Mcrates/notedeck_columns/src/accounts/mod.rs | 3---
Mcrates/notedeck_columns/src/app.rs | 22----------------------
Mcrates/notedeck_columns/src/lib.rs | 1-
Dcrates/notedeck_columns/src/subscriptions.rs | 32--------------------------------
5 files changed, 4 insertions(+), 61 deletions(-)

diff --git a/crates/notedeck/src/app.rs b/crates/notedeck/src/app.rs @@ -2,16 +2,17 @@ use crate::account::FALLBACK_PUBKEY; use crate::i18n::Localization; use crate::nip05::Nip05Cache; use crate::persist::{AppSizeHandler, SettingsHandler}; +use crate::scoped_sub_state::ScopedSubsState; use crate::unknowns::unknown_id_send; use crate::wallet::GlobalWallet; use crate::zaps::Zaps; use crate::{ frame_history::FrameHistory, AccountStorage, Accounts, AppContext, Args, DataPath, - DataPathType, Directory, Images, NoteAction, NoteCache, UnknownIds, + DataPathType, Directory, Images, NoteAction, NoteCache, RemoteApi, UnknownIds, }; -use crate::{EguiWakeup, Error, JobCache, RemoteApi}; +use crate::{EguiWakeup, NotedeckOptions}; +use crate::{Error, JobCache}; use crate::{JobPool, MediaJobs}; -use crate::{NotedeckOptions, ScopedSubsState}; use egui::Margin; use egui::ThemePreference; use egui_winit::clipboard::Clipboard; diff --git a/crates/notedeck_columns/src/accounts/mod.rs b/crates/notedeck_columns/src/accounts/mod.rs @@ -10,7 +10,6 @@ use crate::decks::DecksCache; use crate::onboarding::{Onboarding, OnboardingEffect}; use crate::profile::{send_default_dms_relay_list, send_new_contact_list}; use crate::scoped_sub_owner_keys::onboarding_owner_key; -use crate::subscriptions::Subscriptions; use crate::ui::onboarding::{FollowPackOnboardingView, FollowPacksResponse, OnboardingResponse}; use crate::{ login_manager::AcquireKeyState, @@ -153,7 +152,6 @@ pub fn process_accounts_view_response( pub fn process_login_view_response( app_ctx: &mut AppContext, decks: &mut DecksCache, - subs: &mut Subscriptions, onboarding: &mut Onboarding, col: usize, response: AccountLoginResponse, @@ -258,7 +256,6 @@ impl AccountsRouteResponse { let action = process_login_view_response( app_ctx, &mut app.decks_cache, - &mut app.subscriptions, &mut app.onboarding, col, response, diff --git a/crates/notedeck_columns/src/app.rs b/crates/notedeck_columns/src/app.rs @@ -8,7 +8,6 @@ use crate::{ options::AppOptions, route::Route, storage, - subscriptions::{SubKind, Subscriptions}, support::Support, timeline::{self, kind::ListKind, thread::Threads, TimelineCache, TimelineKind}, timeline_loader::{TimelineLoader, TimelineLoaderMsg}, @@ -32,7 +31,6 @@ use notedeck_ui::{ use std::collections::{BTreeSet, HashMap, HashSet}; use std::path::Path; use tracing::{error, info, warn}; -use uuid::Uuid; /// Max timeline loader messages to process per frame to avoid UI stalls. const MAX_TIMELINE_LOADER_MSGS_PER_FRAME: usize = 8; @@ -51,7 +49,6 @@ pub struct Damus { pub view_state: ViewState, pub drafts: Drafts, pub timeline_cache: TimelineCache, - pub subscriptions: Subscriptions, pub support: Support, pub threads: Threads, /// Background loader for initial timeline scans. @@ -341,11 +338,6 @@ fn update_damus(damus: &mut Damus, app_ctx: &mut AppContext<'_>, ctx: &egui::Con match damus.state { DamusState::Initializing => { damus.state = DamusState::Initialized; - // this lets our eose handler know to close unknownids right away - damus - .subscriptions() - .insert("unknownids".to_string(), SubKind::OneShot); - setup_selected_account_timeline_subs(&mut damus.timeline_cache, app_ctx); if !app_ctx.settings.welcome_completed() { @@ -540,7 +532,6 @@ impl Damus { let threads = Threads::default(); Self { - subscriptions: Subscriptions::default(), timeline_cache, drafts: Drafts::default(), state: DamusState::Initializing, @@ -574,14 +565,6 @@ impl Damus { get_active_columns(accounts, &self.decks_cache) } - pub fn gen_subid(&self, kind: &SubKind) -> String { - if self.options.contains(AppOptions::Debug) { - format!("{kind:?}") - } else { - Uuid::new_v4().to_string() - } - } - pub fn mock<P: AsRef<Path>>(data_path: P) -> Self { let mut i18n = Localization::default(); let decks_cache = DecksCache::default_decks_cache(&mut i18n); @@ -594,7 +577,6 @@ impl Damus { let support = Support::new(&path); Self { - subscriptions: Subscriptions::default(), timeline_cache: TimelineCache::default(), drafts: Drafts::default(), state: DamusState::Initializing, @@ -614,10 +596,6 @@ impl Damus { } } - pub fn subscriptions(&mut self) -> &mut HashMap<String, SubKind> { - &mut self.subscriptions.subs - } - pub fn unrecognized_args(&self) -> &BTreeSet<String> { &self.unrecognized_args } diff --git a/crates/notedeck_columns/src/lib.rs b/crates/notedeck_columns/src/lib.rs @@ -24,7 +24,6 @@ mod repost; mod route; mod scoped_sub_owner_keys; mod search; -mod subscriptions; mod support; mod test_data; pub mod timeline; diff --git a/crates/notedeck_columns/src/subscriptions.rs b/crates/notedeck_columns/src/subscriptions.rs @@ -1,32 +0,0 @@ -use crate::timeline::TimelineKind; -use std::collections::HashMap; -use uuid::Uuid; - -#[derive(Debug, Clone)] -pub enum SubKind { - /// Initial subscription. This is the first time we do a remote subscription - /// for a timeline - Initial, - - /// One shot requests, we can just close after we receive EOSE - OneShot, - - Timeline(TimelineKind), - - /// We are fetching a contact list so that we can use it for our follows - /// Filter. - // TODO: generalize this to any list? - FetchingContactList(TimelineKind), -} - -/// Subscriptions that need to be tracked at various stages. Sometimes we -/// need to do A, then B, then C. Tracking requests at various stages by -/// mapping uuid subids to explicit states happens here. -#[derive(Default)] -pub struct Subscriptions { - pub subs: HashMap<String, SubKind>, -} - -pub fn new_sub_id() -> String { - Uuid::new_v4().to_string() -}