Commit Graph
100 Commits
Author SHA1 Message Date
kernelkind 0b27282985 bugfix: unsubscribe all decks when log out account
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-17 21:39:58 -04:00
kernelkind 1c547bbcaa bugfix: unsubscribe from timelines on deck deletion
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-17 21:25:09 -04:00
kernelkind d4082eb818 bugfix: properly sub to new selected acc after removal of selected
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-17 20:31:36 -04:00
kernelkind 0b8a4fdf55 move select account logic to own method
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-17 20:22:48 -04:00
kernelkind 8263e56f41 expose AccountCache::falback
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-17 19:33:56 -04:00
kernelkind 8daa1d2adf allow removal of Damoose account
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-17 19:24:33 -04:00
kernelkind b9cae65b72 make UserAccount cloneable
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-17 19:24:01 -04:00
kernelkind 049bb3e8bb use NwcError instead of nwc::Error
need to clone

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-17 19:01:51 -04:00
kernelkind d22dd9ed31 appease clippy
```
error: large size difference between variants
   --> crates/notedeck_columns/src/column.rs:249:1
    |
249 | / pub enum IntermediaryRoute {
250 | |     Timeline(Timeline),
    | |     ------------------ the largest variant contains at least 280 bytes
251 | |     Route(Route),
    | |     ------------ the second-largest variant contains at least 72 bytes
252 | | }
    | |_^ the entire enum is at least 280 bytes
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant
    = note: `-D clippy::large-enum-variant` implied by `-D warnings`
    = help: to override `-D warnings` add `#[allow(clippy::large_enum_variant)]`
help: consider boxing the large fields to reduce the total size of the enum
    |
250 -     Timeline(Timeline),
250 +     Timeline(Box<Timeline>),
    |

error: could not compile `notedeck_columns` (lib) due to 1 previous error
```

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-17 19:01:46 -04:00
kernelkind fdef74c353 fix: sometimes most recent contacts list wasn't used
`ndb::poll_for_notes` appears to give notes as they arrive. We
need to make sure we only use the most recent for contacts

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-17 18:17:56 -04:00
kernelkind 030e4226f8 appease clippy
```
error: large size difference between variants
   --> crates/notedeck_columns/src/column.rs:249:1
    |
249 | / pub enum IntermediaryRoute {
250 | |     Timeline(Timeline),
    | |     ------------------ the largest variant contains at least 280 bytes
251 | |     Route(Route),
    | |     ------------ the second-largest variant contains at least 72 bytes
252 | | }
    | |_^ the entire enum is at least 280 bytes
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant
    = note: `-D clippy::large-enum-variant` implied by `-D warnings`
    = help: to override `-D warnings` add `#[allow(clippy::large_enum_variant)]`
help: consider boxing the large fields to reduce the total size of the enum
    |
250 -     Timeline(Timeline),
250 +     Timeline(Box<Timeline>),
    |

error: could not compile `notedeck_columns` (lib) due to 1 previous error
```

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-17 18:17:53 -04:00
kernelkind 34afa755b8 add ChromePanelAction::Profile & use for pfp
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-17 15:23:41 -04:00
kernelkind 45490c918d add new Accounts button to chrome sidebar
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-17 15:23:32 -04:00
kernelkind a31fdd3ed2 use saturating sub
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-17 15:23:15 -04:00
kernelkind 5168d50257 add info statements
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-16 18:13:09 -04:00
kernelkind cc92fc2082 make TimelineCache::timelines private
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-16 18:13:07 -04:00
kernelkind dc4e3d7510 increment sub count when necessary
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-16 18:13:04 -04:00
kernelkind 95e9e4326a add TimelineCache helper methods
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-16 18:13:00 -04:00
kernelkind 4db6f37017 track all timeline related subscriptions in TimelineSub
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-16 18:12:58 -04:00
kernelkind 6544d43d02 replace MultiSubscriber with TimelineSub
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-16 18:12:46 -04:00
kernelkind efae62024e migrate to check following through Contacts::is_following
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-14 21:34:33 -04:00
kernelkind 142aa879c3 make Contacts::is_following use bytes instead of Pubkey
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-14 21:34:08 -04:00
kernelkind a7f5319fde remove MuteFun prop
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-14 21:34:05 -04:00
kernelkind 397bfce817 add Accounts to NoteContext
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-14 21:34:02 -04:00
kernelkind 8c71e154f4 allow body on unknown profile
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-14 15:26:07 -04:00
kernelkind b5d56f7831 remove unnecessary FilterState::NeedsRemote filter
all NeedsRemote states are contact lists currently, which is
managed by `Accounts`

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-12 16:52:01 -04:00
kernelkind 46633d0513 use AccountSubs for timeline contact sub
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-12 16:48:20 -04:00
kernelkind dca9d3eeab send contact list event on account creation
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-10 13:47:32 -04:00
7b9db55a05 add UI for (un)follow
Signed-off-by: kernelkind <kernelkind@gmail.com>
Co-authored-by: Jakub Gladysz <jakub.gladysz@protonmail.com>
Co-authored-by: William Casarin <jb55@jb55.com>
2025-07-10 13:47:30 -04:00
a883ac8c34 add actions for follow/unfollow
Signed-off-by: kernelkind <kernelkind@gmail.com>
Co-authored-by: Jakub Gladysz <jakub.gladysz@protonmail.com>
Co-authored-by: William Casarin <jb55@jb55.com>
2025-07-10 13:47:28 -04:00
00d6651533 send kind 3 event
Signed-off-by: kernelkind <kernelkind@gmail.com>
Co-authored-by: Jakub Gladysz <jakub.gladysz@protonmail.com>
Co-authored-by: William Casarin <jb55@jb55.com>
2025-07-10 13:47:25 -04:00
kernelkind 6741ea8a01 construct NoteBuilder from existing note
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-10 13:47:23 -04:00
kernelkind 8a77ba5f8f move styled_button_toggleable to notedeck_ui
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-10 13:47:19 -04:00
kernelkind 9940537897 Unify sub for contacts in accounts & timeline
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-10 13:47:07 -04:00
kernelkind 497c102af1 expose AccountSubs
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-10 13:45:42 -04:00
kernelkind 1100e28233 use Contacts in AccountData
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-10 13:45:39 -04:00
kernelkind 9b7033e208 add Contacts
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-10 13:45:27 -04:00
kernelkind 4014d122c9 add constructor for AccountData
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-10 13:45:23 -04:00
kernelkind c99b99ed52 AccountData: decouple query from constructor
the ndb query must be as close to the subscription as possible to
avoid events falling through the cracks

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-10 13:45:20 -04:00
kernelkind 6c951d1a29 move polling responsibility to AccountData
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-10 13:45:13 -04:00
kernelkind e4beb954db bump nostrdb
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-10 13:45:03 -04:00
kernelkind b41f4c3359 decouple RelayView UI from state mutation
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 15:46:09 -04:00
kernelkind 10c4ac80a1 Revert "tmp: temporary AccountCache"
This reverts commit 726da7dabf5bf089a463309c41be3f6e11d0c43d.
2025-07-02 15:46:05 -04:00
kernelkind a73596df48 Clarify & enforce selected-only behavior in Accounts subscription
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 15:46:01 -04:00
kernelkind f0158f71b2 don't expose mutable access to UserAccount
it's not preferable that the full mutable access is available to
`ZapWallet`, but this PR is becoming too big already

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 15:45:57 -04:00
kernelkind 61e47323ab move modify_advertised_relays into accounts/relay.rs
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 15:45:54 -04:00
kernelkind 03c7d11351 move update_relay_configuration to account/relay.rs
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 15:45:51 -04:00
kernelkind 11edde45f4 split AccountStorage into reader & writer
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 15:45:47 -04:00
kernelkind 329385bd90 move AcountData into UserAccount
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 15:45:44 -04:00
kernelkind a962d67536 tmp: temporary AccountCache
will be removed before PR ends

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 15:45:37 -04:00
kernelkind f357935cca move (de)serialization of wallets & accounts to own structs
for easy cloning

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 15:45:31 -04:00
kernelkind 10d6d740b8 migrate accounts to be referenced through pks instead of indices
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 11:41:33 -04:00
kernelkind d092f5c23e move switching related actions from notedeck -> columns
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 11:41:29 -04:00
kernelkind b9cfe87974 wallet: remove unnecessary mut
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 11:41:26 -04:00
kernelkind 84026824b2 enostr: add equivalence between Pubkey & bytes
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 11:41:20 -04:00
kernelkind 8e92a97a57 make selected accounts non optional
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 11:41:17 -04:00
kernelkind 9cacb6bb69 add AccountCache
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 11:41:13 -04:00
kernelkind f318bbb19a remove unnecessary method
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 11:41:10 -04:00
kernelkind 2fb2940d56 accounts: make fallback pk non optional
Note: this commit alone is *incorrect* and will cause crashes.
It is part of a greater plan to upgrade accounts. It was done this
way to break commits to smaller, more digestable chunks

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 11:41:06 -04:00
kernelkind 4914c637ce move FALLBACK_PUBKEY
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 11:41:03 -04:00
kernelkind 320dedc8bd add RelayDefaults
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 11:41:00 -04:00
kernelkind 41e141d9a9 move aux code to bottom
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 11:40:56 -04:00
kernelkind e8d833bf89 accounts: move mute stuff to own module
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 11:40:52 -04:00
kernelkind 10ed593b6d accounts: move relay stuff to own file
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 11:40:44 -04:00
kernelkind e91684a7d5 accounts: move accounts to own module
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 11:40:39 -04:00
kernelkind e29ea35ee5 remove duplicate UnknownIds initialization
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 11:40:33 -04:00
kernelkind 86d68e786a threads: fix other replies not rendering in presence of one muted
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-06-23 16:32:34 -04:00
kernelkind 589a8a904c fix log messages
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-06-23 16:32:28 -04:00
kernelkind b7d6e3b2f1 only deserialize first route in each column
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-06-22 16:03:13 -04:00
kernelkind d560e84eab integrate new threads conception
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-06-22 16:03:13 -04:00
kernelkind f6753bae97 add NotesOpenResult
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-06-22 16:03:13 -04:00
kernelkind 87b4b5fc70 add preview flag to NoteAction
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-06-22 16:03:09 -04:00
kernelkind b3569e90d6 thread UI
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-06-22 16:01:20 -04:00
kernelkind 51476772c4 add unread note indicator option to NoteView
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-06-22 16:00:42 -04:00
kernelkind ea91f582ed add pfp bounding box to NoteResponse
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-06-22 16:00:40 -04:00
kernelkind b7bab1d29f note: refactor to use action composition & reduce nesting
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-06-22 16:00:37 -04:00
kernelkind c3b8823f72 ui: add hline_with_width
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-06-22 16:00:35 -04:00
kernelkind 41c2c048a8 add overlay to RouterAction
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-06-22 16:00:33 -04:00
kernelkind e0dd09dd5f add overlay conception to Router
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-06-22 16:00:29 -04:00
kernelkind cdcca0ba35 add threads impl
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-06-22 16:00:26 -04:00
kernelkind 3c31e1a651 add ThreadSubs for managing local & remote subscriptions
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-06-22 16:00:23 -04:00
kernelkind faa40bb616 tmp: upgrade egui-nav to use ReturnType
remove when damus-io/egui-nav merges

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-06-22 16:00:18 -04:00
kernelkind a77fe6ca00 unknowns: use unowned noteid instead of owned
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-06-18 14:39:05 -04:00
kernelkind 6da10c4faf add NoteId hashbrown Equivalent impl
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-06-18 14:38:26 -04:00
kernelkind 91c9cfc34f bugfix: txn failed
`ERROR notedeck_columns::timeline: setup_new_timeline:
database error: Transaction failed`

Reproduce by creating column, deleting it, then trying to create
it again. Before this fix, it was blank. Now it displays correctly

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-06-01 17:56:22 -04:00
kernelkind 2d55c8fb06 add search improvements
- '@' symbol brings up mention picker
- search for npub1, note1, and hashtags work

closes: https://github.com/damus-io/notedeck/issues/83
closes: https://github.com/damus-io/notedeck/issues/85

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-05-26 16:52:19 -04:00
kernelkind 9387fe4973 stop error log spam
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-05-26 16:32:21 -04:00
kernelkind 58b15d99d7 add SearchType
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-05-26 16:32:18 -04:00
kernelkind 64d3a0842e add NoteId::from_bech method
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-05-25 18:26:44 -04:00
kernelkind a1ac0cd2c8 appease clippy
not sure why this warning is only now showing up

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-05-25 18:25:34 -04:00
kernelkind db5e10656d set variable for scroll offset
necessary to maintain scroll positions across popup & Nav

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-05-22 20:33:20 -04:00
kernelkind 3cb2dd88b6 use popup sheet for CustomZapView
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-05-22 20:33:18 -04:00
kernelkind c36a22828d use router action
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-05-22 20:33:15 -04:00
kernelkind a44667ef1a nav: move process nav response to own method
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-05-22 20:33:12 -04:00
kernelkind f452a9010b nav: move action processing to own method
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-05-22 20:33:10 -04:00
kernelkind 08a720b860 add SingletonRouter
used for popup

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-05-22 20:33:06 -04:00
kernelkind 99aa50c120 TMP: use new egui-nav with popup
replace with damus-io/egui-nav when merged

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-05-22 20:32:33 -04:00
kernelkind 5598cc8ba0 use CustomZapView
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-05-17 14:41:48 -04:00
kernelkind a9a819f742 add CustomZapView
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-05-17 14:41:26 -04:00
kernelkind 68b5c32e7f method to get current default zap amount
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-05-17 14:30:21 -04:00