Commit Graph
100 Commits
Author SHA1 Message Date
kernelkind 3d8018bb9a make compose button animate horiz rather than vert
it animating over the toolbar made the bar dissapear for
some reason

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-08-13 19:06:18 -04:00
kernelkind 361d0e3708 make search icon more customizable
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-08-13 19:04:16 -04:00
kernelkind d12f66e5cd appease clippy
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-08-04 16:13:53 -04:00
kernelkind e8be471608 set scroll offset when routing to thread
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-08-04 16:12:45 -04:00
kernelkind 97d15e41e7 add ThreadNote::set_scroll_offset
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-08-04 16:12:42 -04:00
kernelkind ea5c876da6 add scroll_offset to NoteAction::Note
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-08-04 16:12:38 -04:00
kernelkind 75eefcbf72 TMP: use new egui-nav to fix scroll offset issues
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-08-04 16:12:27 -04:00
kernelkind 41aa2db3c7 use unseen notification indicator
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-31 19:08:08 -04:00
kernelkind 10225158e5 paint unseen indicator
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-31 19:07:36 -04:00
kernelkind 557608db9b chrome: method to find whether there are unseen notifications
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-31 19:07:35 -04:00
kernelkind 8697a5cb0a set fresh from TimelineCache
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-31 19:07:28 -04:00
kernelkind 7aca39aae8 add NotesFreshness to TimelineTab
necessary for notifications indicator

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-31 19:07:24 -04:00
kernelkind aa467b9be0 extract notifications filter to own method
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-31 19:07:13 -04:00
kernelkind b04f50a9f6 insert space after mention selection
closes: https://github.com/damus-io/notedeck/issues/985

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-30 18:11:27 -04:00
kernelkind 233be47659 TMP: update egui for better TextInputState handling
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-30 17:45:12 -04:00
kernelkind 173972f920 mentions: don't lose focus after select mention
Closes: https://github.com/damus-io/notedeck/issues/728

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-30 17:45:09 -04:00
kernelkind 31ec21ea02 mention-picker: re-add spacing from inner_margin
shouldn't do this in Frame, for some reason that captures the drag

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-30 17:45:05 -04:00
kernelkind d3d8d7be4b fix scroll regression
Closes: https://github.com/damus-io/notedeck/issues/986

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-30 17:45:02 -04:00
kernelkind 09dc101c1b rename SearchResultsView => MentionPickerView
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-30 17:44:51 -04:00
kernelkind 2bd139ef9e use DragSwitch to allow dragging anywhere in navigation
instead of just the top header when there is a vertical scroll

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-24 17:54:36 -04:00
kernelkind cda0a68854 add route_uses_frame
need to know this to get the correct drag id

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-24 17:54:32 -04:00
kernelkind a555707f67 get scroll id for Route
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-24 17:54:11 -04:00
kernelkind 1601914b8b use DragSwitch in Column
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-24 17:53:43 -04:00
kernelkind aac0f54991 add DragSwitch
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-24 17:53:40 -04:00
kernelkind 8960b3f052 add scroll_id for all views with vertical scroll
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-24 17:53:35 -04:00
kernelkind 6db6cf7b7a enforce scroll_id for ThreadView
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-24 17:53:28 -04:00
kernelkind 0bc32272d2 refactor scrolling for post, reply & quote views
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-24 17:53:25 -04:00
kernelkind b05d39cc81 TMP: update egui-nav
need this to make drag switching work

Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-24 17:53:12 -04:00
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