Commit Graph

233 Commits

Author SHA1 Message Date
kernelkind
1bf9d5d934 title bar
add title bar to columns with title specific to the column type.
also add column deletion button

Signed-off-by: kernelkind <kernelkind@gmail.com>
2024-10-07 14:02:33 -04:00
kernelkind
57069ff7c0 push column picker immediately to new column
instead of pushing to temporary column first

Signed-off-by: kernelkind <kernelkind@gmail.com>
2024-10-01 12:51:14 -04:00
kernelkind
e2dd1b3298 remote sub new timeline
Signed-off-by: kernelkind <kernelkind@gmail.com>
2024-09-30 10:27:48 -04:00
Ken Sedgwick
a17b2dcb17 Untangle zoom when in TextEdit
Addresses ([#140])

I don't think the zoom code in handle_key_events was necessary because
gui zooming already appears to be handled by egui::gui_zoom.

Description of keybindings:
59d71831fd/crates/egui/src/gui_zoom.rs (L5-L26)

Zooming using the described keybindings works fine with a textedit
focused.

This PR removes the ContextAction::SetPixelsPerPoint aggressively;
maybe it should remain for other future uses?
2024-09-27 12:44:42 -07:00
kernelkind
2832def161 remove app from sidebar
Signed-off-by: kernelkind <kernelkind@gmail.com>
2024-09-24 16:52:58 -04:00
kernelkind
c66cf6a98c change side panel width to 64.0
matches figma design

Signed-off-by: kernelkind <kernelkind@gmail.com>
2024-09-24 16:52:58 -04:00
kernelkind
fd75e93605 initial compose note view
Signed-off-by: kernelkind <kernelkind@gmail.com>
2024-09-24 16:52:58 -04:00
William Casarin
945ccde818 ui: hook up relay management view
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-16 17:15:07 -07:00
William Casarin
79a447239a cleanup: remove account switcher widget
we don't need this anymore

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-16 16:37:04 -07:00
William Casarin
52a7ed53ec accounts: use column nav for account management
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-16 16:36:38 -07:00
William Casarin
36c0971fd9 Flexible routing
Another massive refactor to change the way routing works. Now any
column can route anywhere.

Also things are generally just much better and more modular via the
new struct split borrowing technique.

I didn't even try to split this into smaller commits for my sanity.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-16 14:50:20 -07:00
kernelkind
dda7256f51 add LoginState to app
Signed-off-by: kernelkind <kernelkind@gmail.com>
2024-09-11 16:13:16 -07:00
kernelkind
ee0029268f add RoutableWidgetState conception
holds the routes for an arbitrary widget

Signed-off-by: kernelkind <kernelkind@gmail.com>
2024-09-11 16:12:57 -07:00
kernelkind
52604e65c6 remove global popup conception
can be added later if we need it again

Signed-off-by: kernelkind <kernelkind@gmail.com>
2024-09-11 16:11:10 -07:00
William Casarin
00091c5088 Switch to Columns
Also refactor damus app usage to only pass in things that we need in views.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-11 15:49:34 -07:00
William Casarin
4a4fb06425 split is_mobile to is_narrow and is_oled
is_mobile doesn't really make sense for android tablets. We were
overloading this variable to mean "is_narrow". What we really want is
is_oled for mobile devices and is_narrow for if its phone-like.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-06 21:54:48 -07:00
William Casarin
8602650278 args: add datapath argument
This will allow us to test cache resets

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-06 21:06:12 -07:00
William Casarin
c879982260 args: add --textmode
An option to enable textmode on startup

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-06 08:59:49 -07:00
William Casarin
7fa18fa5f7 Merge 'Supply default timeline for mobile app if empty' (#285)
Ken Sedgwick (1):
      Supply default timeline for mobile app if empty
2024-09-03 11:49:21 -07:00
Ken Sedgwick
55f6a94c18 Supply default timeline for mobile app if empty
Fixes ([#284])
2024-09-03 11:37:27 -07:00
William Casarin
4fdbad0df8 fix bug where it was subscribing too many times
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-03 11:11:38 -07:00
William Casarin
043ccf2146 debug: add subid debugging
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-03 11:10:59 -07:00
William Casarin
4c61c337bd fix transaction crash regression when opening thread
small oversight

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-02 18:12:12 -07:00
William Casarin
bc8a8d4a74 perf: coordinate unknown id lookups
This is a huge improvement over what it was before. Now all unknown id
lookups are debounced and happen through a central coordinator. This
ensures there is no duplication between timelines.

Fixes: https://github.com/damus-io/notedeck/issues/279
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-02 17:38:18 -07:00
William Casarin
ad244d48c0 fetch contact lists
If we don't have a contact list, make sure to fetch one

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-02 16:22:29 -07:00
William Casarin
db49cf3c4b tidy: move ColumnKind to its own file
timeline file is starting to get messy

Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-31 08:08:17 -07:00
William Casarin
9a9342ad35 tidy: remove some crate:: namespaces
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-31 07:17:45 -07:00
William Casarin
5de78cef21 docs: fix comment in the wrong spot
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-31 05:43:43 -07:00
William Casarin
2ea6473ae2 refactor: move args to its own file
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-31 05:43:43 -07:00
William Casarin
71259a8dd5 timeline: initial contact queries
This implements initial local contact queries. For testing you can
create contact list columns via:

Examples
--------

Make a contacts column from a specific npub:

	$ notedeck --column contacts:npub...

Use the current user's contacts:

	$ notedeck --column contacts --pub npub...

We also introduce a new ColumnKind enum which is used to describe the
column type.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-30 08:59:48 -07:00
William Casarin
11ede2086f cli: add --pub support for watchonly accounts
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-30 08:59:37 -07:00
William Casarin
ea547a3497 tidy: move parse_args to Args::parse
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-30 08:49:29 -07:00
William Casarin
ae6c05ab42 tidy: organize bools
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-30 07:17:56 -07:00
William Casarin
cf14c6dfd2 flag to disable since optimization
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-21 07:48:45 +03:00
William Casarin
973a7c780f thread: remote subscriptions working
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-19 21:22:58 -07:00
William Casarin
9328ef2dff remove duplicate filter types
only use nostrdb::Filter

Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-19 21:12:32 -07:00
William Casarin
8c458f8f78 Merge initial threads 2024-08-16 11:51:42 -07:00
William Casarin
51b4dfd3f3 temp fix crash due to race condition
we should fix the race condition though

Link: https://github.com/damus-io/nostrdb/issues/35
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-03 11:41:41 -07:00
William Casarin
be0efd57e5 bump ingester threads from 2 to 4
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-03 11:38:46 -07:00
William Casarin
3cbcd98dd4 arg: add dbpath argument
This is great for testing without using an existing DB

Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-03 11:38:38 -07:00
William Casarin
ce5142656e bump ingester threads from 2 to 4
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-03 11:33:40 -07:00
William Casarin
abd529e91b arg: add dbpath argument
This is great for testing without using an existing DB

Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-03 11:32:56 -07:00
William Casarin
6e27c34267 update nostrdb to fix note corruption bug
Changelog-Fixed: fix note content corruption bug with damus.io links
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-01 13:44:28 -07:00
William Casarin
20f0aed2ed doc: add docs for get_unknown_note_ids
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-31 14:21:47 -07:00
William Casarin
4b644bee32 restore unknown id fetching of root notes
still technically depends on the notebuf branch

Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-31 13:55:22 -07:00
William Casarin
d44c4c2f9c make local sub log more explicit
was hard to tell if this meant remote or local sub

Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-31 13:51:24 -07:00
William Casarin
dd9f41b04a threads: ensure we always handle bar results
We were not handling it in ThreadView, now we do.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-31 13:51:24 -07:00
William Casarin
593df9145b threads: check for new notes locally when thread is re-opened
We have a NoteRef cache for threads in memory, which is just a list of
NoteKeys and timestamps.

When reopening a thread, query the local DB to see if there are any new
notes that we might have missed because we weren't actively subscribed
to them.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-31 13:51:24 -07:00
William Casarin
5be6b1ca68 ui: move timeline view to its own file
Also add some thread methods for fetching new notes

Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-31 13:51:24 -07:00
William Casarin
a28db5d330 local thread subscriptions
This adds local nostrdb thread subscriptions. When navigating to a
thread, we first check to see if we have any active nostrdb
subscriptions for that thread. If not, we create a new subscription. If
we do, we re-use that subscription.

This works by storing thread state in the Threads struct in the Damus
application state.

When we pop a route, we check to see if its a thread route. If it is,
then we try to unsubscribe, but only if that is the last remaining
subscriber for that thread, as there could be more than one.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-31 13:51:24 -07:00