Commit Graph
100 Commits
Author SHA1 Message Date
William Casarin 0869cdde65 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:37:44 -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 38626520c1 thread: warn when we return 0 notes
This is a bug

Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-31 14:01:41 -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 c3fc4e09e8 thread: fix ordering and duplication bugs
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-31 13:55:06 -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
William Casarin 33e5b6886b threads: add initial thread support
This is a really dumb and broken version of threads, but it will be our
foundation for future changes.

All it currently does is load whatever notes we have locally for a
thread in chronological order. It currently does not open any
subscriptions. It is not clear what is replying to what, but hey, its a
start.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-31 13:51:24 -07:00
William Casarin 1024affdbd actionbar: add thread button for testing
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-31 13:51:24 -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 d43c46aaf4 nostr: fix parsing of OK events
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-31 13:51:24 -07:00
William Casarin c007cbd4f2 preview: add scroll to profile pic demo
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-28 13:40:42 -05:00
William Casarin b917d48015 log: reduce ping/pong verbosity
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-28 13:40:29 -05:00
William Casarin 1c8b68c334 switch to GPLv3, not sure why it was MIT
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-22 11:20:31 -07:00
William Casarin 06028ba66e deps: update deps for thread-needed changes
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-16 12:54:45 -07:00
William Casarin 196535ce84 anim: add hover_expand_small
I though I would need this, but I didn't end up using it. Keep it here
anyways for now

Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-16 12:54:45 -07:00
William Casarin f1835d0119 timelineview: add customizable initial note capacity
We will be using this for threads, so we'll want a smaller
capacity there.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-16 12:54:45 -07:00
William Casarin 66c8973edf actionbar: move BarAction and add execute method
We will be executing baractions in multiple places, so factor this
out.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-16 12:54:32 -07:00
William Casarin 758de6b024 timeline: simplify tabs_ui
we don't really need to pass a timeline into it

Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-16 12:52:22 -07:00
William Casarin bf57e3b780 viewfilter: add default implementation
This will be used in future commits

Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-16 12:52:22 -07:00
William Casarin 86f87fa0a5 noteref: move to note.rs
This doesn't need to be in timeline

Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-16 12:51:30 -07:00
William Casarin 6b634646d5 fix nostrdb crash
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-15 12:39:42 -07:00
William Casarin f2c5978ba5 allow relay pool customization via -r/--relay argument
This allows you to use specific relays instead of some random
bootstrap ones we are currently using

Fixes: https://github.com/damus-io/notedeck/issues/154
Changelog-Added: Add -r/--relay cli option for customized relay pool
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-11 11:25:21 -07:00
William Casarin cc734e2a66 logs: add relay string to relay connection errors
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-10 16:00:38 -07:00
William Casarin a36ce31fc7 pool: increase default reconnect time to 5 seconds
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-10 16:00:38 -07:00
William Casarin af8d7d222c Add note wide mode for reposts
This adds a 'wide' note design for note previews. This is a mode
where the note contents does not have padding at the start. This makes
notes previews a bit nicer.

Screenshot: https://cdn.jb55.com/s/84271f386d564c34.png
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-10 10:56:15 -07:00
William Casarin 61bc9d9919 refactor: rename ui::Note to ui::NoteView
Easier to jump to when using tags.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-10 09:56:16 -07:00
William Casarin f795fe6088 docs: make note about not needing nix on ubunutu
Reported-by: Derek Ross
Fixes: https://github.com/damus-io/notedeck/issues/144
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-10 09:54:07 -07:00
William Casarin 5805df266a don't use an actual keystorage in Damus test apps
Reported-by: kernelkind <kernelkind@gmail.com>
Fixes: https://github.com/damus-io/notedeck/issues/150
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-05 07:38:58 -07:00
William Casarin d265d48c0b fix scroll area shrinking
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-04 10:17:09 -07:00
William Casarin 239a2cb701 Switch to egui master to fix wgpu issues
There are some wgpu issues that are fixed in egui-master, so
let's switch to that.

This fixes notedeck so that it runs on both my intel graphics laptop
and amdgpu desktop.

Fixes: https://github.com/damus-io/notedeck/issues/28
Fixes: https://github.com/damus-io/notedeck/issues/42
Fixes: https://github.com/damus-io/notedeck/issues/141
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-02 17:48:18 -07:00
William Casarin 9eea457bda switch to glow for now
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-02 16:12:04 -07:00
William Casarin 724042b700 allow missing profiles in account switcher
Fixes: https://github.com/damus-io/notedeck/issues/119
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-02 10:34:42 -07:00
William Casarin e9da25266a enable nip10 replies
you can now reply to notes

Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-01 19:22:43 -07:00
William Casarin b31bd2470b keys: actually use the keystore
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-01 11:13:22 -07:00
William Casarin 4c490e1436 Merge 'impl linux credential storage' #115
From PR description:

See the test_basic() test in linux_key_storage.rs. I ran it successfully
on my MacOS machine and a linux VM. The BasicFileStorage impl just
stores each Keypair as a SerializableKeypair json object with the file
name as the public key hex in ~/.notedeck_credentials. The
SerializableKeypair uses the nip49 EncryptedSecretKey, but we just use
an empty string as the password for now.

The BasicFileStorage impl works in MacOS, but it only conditionally
compiles to linux for simplicity.

pub enum KeyStorageResponse<R> {
    Waiting,
    ReceivedResult(Result<R, KeyStorageError>),
}

This is used as a response so that it's possible for the storage impl to
be async, since secret_service is async. It seems that secret_service
would allow for a more robust linux key storage impl so I went ahead and
made the API compatible with an async impl.

* kernelkind (1):
      impl linux credential storage
2024-07-01 10:49:15 -07:00
William Casarin 6f6d5f05af always have some default timeline
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-01 10:35:47 -07:00
William Casarin 69a8438f33 cleanup some dead code
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-01 07:31:43 -07:00
William Casarin 3fc73bb601 post: full available width
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-01 07:31:29 -07:00
William Casarin b0881d4282 add my pubkey to the timeline query for testing
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-01 07:31:12 -07:00
William Casarin 2d10b20ae2 allow multiple invocations of --sec
for multi-account

Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-01 07:02:22 -07:00
William Casarin b7366351b6 drafts: clear post after posting
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-01 06:49:12 -07:00
William Casarin a04df88ff6 initial note posting
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-01 06:49:12 -07:00
William Casarin 8dc829791e cli: add --sec argument to quickly add an account
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-01 06:41:32 -07:00
William Casarin 3ed09dadf0 damus: make relay pool public
we will be using this for our post view

Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-01 06:39:39 -07:00
William Casarin 1810515ad2 account_manager: don't add the same pubkey more than once
If we are passing keys on the command line, let's make sure
we aren't adding duplicates when we integrate the keystore.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-01 06:39:16 -07:00
William Casarin 307b8af8f1 enostr: rename Event to Note
we will likely replace Note with nostrdb::Note in the future,
this just helps with that transition

Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-01 06:38:08 -07:00
William Casarin a16d5b3a05 env: allow private things like secret keys
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-01 06:33:22 -07:00
William Casarin 26c4d90be3 initial postbox for testing
not sure if we want to put this here yet, but it matches the design
and will be useful for testing

Fixes: https://github.com/damus-io/notedeck/issues/110
Suggested-by: Rob
2024-06-25 14:08:56 -05:00
William Casarin a6856867a9 Merge remote-tracking branch 'pr/107' 2024-06-25 13:20:56 -05:00
William Casarin 8ef6534981 fixed_window: fix clippy warning
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-24 17:12:24 -07:00
William Casarin 1228f83e50 refactor: move fixed_window to ui
This is a ui module

Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-24 17:11:01 -07:00
William Casarin b14a2bf254 popup: simplify borrow
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-24 17:09:07 -07:00
William Casarin a66b467cb4 hide navigation title on global nav
Fixes: https://github.com/damus-io/notedeck/issues/109
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-24 16:47:35 -07:00
William Casarin f8c8e48c26 postview: add vertical scroll
Suggested-by: kernelkind <kernelkind@gmail.com>
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-24 16:19:06 -07:00
William Casarin a9a07b3805 refactor: use map instead of explicit if let
We also use last instead of first, because the last route should be the
active one.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-24 14:55:43 -07:00
William Casarin 677c217ecd popup: increase fixed window margin
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-24 14:55:22 -07:00
William Casarin b7188bac25 fix some clippy warnings
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-21 14:12:07 -07:00
William Casarin 0b3d6f7e37 initial post reply view
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-21 14:01:40 -07:00
William Casarin ac0821db79 postbox: add focus shadow from figma
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-21 10:14:34 -07:00
William Casarin 86b0583221 use unique id for post/reply view
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-21 09:58:47 -07:00
William Casarin b0c5d2a2c5 postbox: add focused state
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-21 09:01:14 -07:00
William Casarin 4c1936ff70 change selection color to purple
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-21 08:56:44 -07:00
William Casarin 18d5d95ef9 fix postbox design
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-20 13:44:35 -07:00
William Casarin bb6c68e05c clippy postbox cleanups
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-20 13:05:57 -07:00
William Casarin 395ff57edf add vertical separators between timelines
Fixes: https://github.com/damus-io/notedeck/issues/52
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-20 13:02:18 -07:00
William Casarin 1458498131 initial post box view
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-17 16:21:46 -07:00
William Casarin 577aa76ac7 add --light lightmode flag to previews and notedeck
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-14 11:12:16 -07:00
William Casarin d064987e45 fix lock
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-14 10:18:18 -07:00
William Casarin fa50b68cb3 darker quote reposts for mobile
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-14 10:18:06 -07:00
William Casarin 7f37f1e9d3 perf: don't clone bytes via a more specialized function
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-13 12:49:22 -07:00
William Casarin d17b5e0703 Add forward navigation animation
Also fix a few nav clipping bugs

From egui-nav:

William Casarin (5):
      add forward nav support
      fix body overlapping header
      fix transition clipping when in a smaller container
      fix forward nav clipping in small containers
      fix background layer having the wrong UI id

Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-13 11:59:08 -07:00
William Casarin c4e0c710c9 actionbar: remove border on reply button, add expand animation
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-13 09:36:53 -07:00
William Casarin db1642bc31 remove useless struct
we can just use tuples for compound ids

Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-13 09:10:31 -07:00
William Casarin eb294bb4d3 fix light borders for quote reposts
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-12 10:46:09 -07:00
William Casarin b1a7547580 lighter gray for inline previews in white mode
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-11 18:48:05 -07:00
William Casarin 5100070b24 fix colors again
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-11 18:44:40 -07:00
William Casarin 24d400d5aa small inline preview pfps
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-11 17:50:15 -07:00
William Casarin 0dd33c90e7 initial navigation 2024-06-11 17:50:09 -07:00
William Casarin bff0f3f628 fix inline note preview colors
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-11 16:10:18 -07:00
William Casarin afb375356b add test queries for elsat
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-10 07:58:39 -07:00
William Casarin a47f0ba1b2 args: allow filter files and raw filters on cli
Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-10 07:52:51 -07:00
William Casarin c5634dac91 set tooltip delay to 100ms
so that we don't accidently pop it up all the time

Signed-off-by: William Casarin <jb55@jb55.com>
2024-06-10 06:11:00 -07:00
William Casarin d576082297 reset virtual list if notes are spliced into timeline
Calling egui_virtual_list's `items_inserted_at_start` is incorrect if we
insert notes inbetween other notes in the timeline. To prevent our list
getting confused, let's handle this case explicitly by calling 'reset'
when we splice notes in.

Ideally we would update egui_virtual_list to handle spliced-in items,
but we will leave that to a future update.
2024-06-09 08:53:10 -07:00
William Casarin 0eec8c8c2b dont since-optimize when we don't have enough notes
If our limit says we're ok with many more notes than we have, then don't
since-optimize, otherwise we may be missing notes. This results in a

Changelog-Changed: Don't since-optimize if we don't have enough notes
Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-31 09:25:54 +02:00
William Casarin 2d9f45603c remote: use default_remote_limit instead of hardcoding
Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-31 09:24:52 +02:00
William Casarin ab08e678a9 filter: add default limit
This is just an opinionated default limit if we ever need it (we will)

Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-31 09:24:52 +02:00
William Casarin e6efad025f timeline: don't hide on resize
It doesn't seem to flicker so why not

Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-31 09:24:52 +02:00
William Casarin 6e69407224 cleanups 2024-05-31 01:08:45 -05:00
William Casarin 2305f1e50a mobile: make mobile flag runtime-configurable
we need to pass a few more things around but it's not that bad. This
will allow you to launch damus with --mobile for mobile testing without
recompilation.
2024-05-31 01:05:53 -05:00
William Casarin 83eab71148 Merge remote-tracking branch 'pr/80' 2024-05-31 01:01:05 -05:00
William Casarin 92ce718e8b side_panel: return more detailed side panel responses
We should be treating all ui widgets as pure functions that do not
mutate anything. This will make testing easier, as well as avoiding
shared mutable references.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-28 15:09:19 -07:00
William Casarin 31b2b5c950 initial refactor in preparation for routing
Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-28 15:09:01 -07:00
William Casarin 2af44641db cap size of remote filter limits
I noticed the responses are a bit slow without this. Local query limits
are not capped.

Fixes: https://github.com/damus-io/notedeck/issues/98
Changelog-Changed: Restrict remote filter sizes to 250 (for now)
Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-27 11:50:45 -07:00
William Casarin c1cf7ea324 bump timeline filter limit
Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-27 11:50:09 -07:00
William Casarin 194f41d39c integrate sidebar into main view
buttons don't do anything yet

Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-27 10:48:28 -07:00
William Casarin 66ce42a302 remove context from DesktopSidePanel
we can just get this from the egui::Ui when rendering

Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-27 10:48:28 -07:00