* wip submit will open options
* fix: options show on error discussions
* lint
* feat: all types check for dirty or errors
* lint
* fix ordering
* dirty and error useEffects
* use formik context
* update dirty checks on forms
* revert dirty logic
* simplify handle error functions
* lint
* add myself to contributors and update awards
* use Formik context in adv-post-form
* move all logic into accordian item
* move logic up to adv-post-form
* lint
* errors open options every time
* refine dirty form accordians
---------
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
* honor mutes when sending push notifications for:
* territory subscriptions
* mentions
* user subscriptions
Also, don't allow you to mute a subscribed user, or vice versa
* refactor mute detection for more code reuse
update mute/subscribe error messages for consistency
* variable rename
* move `isMuted` to shared user lib, reuse in user resolver and webpush
* update awards.csv
---------
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
* fix: show related items on pinned items
* fix condition
* use subName since sub could be undefined
* Update components/item-full.js
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Revert "Update components/item-full.js"
This reverts commit d1b785b8490c9356548ef1bfe246ae526f0237c6.
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Suffix localStorage key for attached wallets with me.id
* Suffix IndexedDB database name with me.id
* Fix TypeError: Cannot destructure property of 'config' as it is null
* Detach wallet on logout
* Migrate to new storage keys
* Use Promise.catch for togglePushSubscription on logout
It's more concise
---------
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
* WIP UserPopover
* Add show delay on UserPopover
* UserDetails -> StackingSince on UserPopover
* Make UserPopover hoverable
* Add felipe to contributors.txt
* Remove export from SocialLink
* Remove @ outside of UserPopover
* userQuery -> useLazyQuery + Handling user not found
* Move styles to user-popover.module.css
* Update components/user-popover.module.css
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Remove poll + SSR check from useLazyQuery
* USER_FULL -> USER (we are only using stacking since, for now)
* refine user popover
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
* Allow deletion of wallet logs
* Refactor wallet logs client<>server glue code
* Use variant='link' and className='text-muted fw-bold nav-link' for clear & cancel
There is a bug though: 'clear' stays highlighted after modal is closed
* Include wallet in toast
* Delete logs on logout
* Fix ugly wallet name in confirm dialog
* Fix clear still highlighted after modal closed
* Only delete client wallet logs
* Fix ugly wallet name in toast
* Fix bad search and replace
* Use Wallet object as constant
* Also delete LNC logs on logout
---------
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
* Support `is:bookmarked` search option to search my bookmarked items
* Update the worker search module to include `bookmarkedBy: Array<Number>` which
contains the list of user ids which have bookmarked a given item
* Add a trigger on the `Bookmark` DB table to re-index the corresponding item when
a bookmark is added/removed
* Update the Search resolver to check for a `is:bookmarked` query option. If provided,
include it as an option in the search request. This updates search to look for items
which are bookmarked by the current user. By default, this preserves stacker privacy
so you can only search your own bookmarks
* Update the search page UI to show how to invoke searching your own bookmarks
* undo `is:bookmarked` support, add `bookmarks` item in search select
* short circuit return empty payload for anon requesting bookmarks
* remove console.log for debugging
* fix indexing a new item that has yet to be bookmarked
* update db migration to re-index all existing bookmarked items one time
* fix the case where deleting a bookmark doesn't trigger a new index of items
explictly specify a `updatedAt` value when deleting a bookmark, to ensure that
deleting a bookmark results in a new indexed version of the bookmarked item
* update search indexer to use the latest of all three choices for the latest version
* give bookmark index jobs longer expiration
---------
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
* Also log autowithdrawal routing errors
* Only log autowithdrawal success in worker
* Use WalletType for WalletLog.wallet
* Fix autowithdrawal success message
* Infer walletName from walletType in upsertWallet
* Fix first zap when modal closed (#771)
- Extract handlers
- Remove unnecessary async keyword from callback
- Assign a new key to force remounting of LongPressable component when modal is closed from long press
- Remove hover state when closing modal, otherwise it stays colored
* Replace LongPressable with custom component
* Remove yarn.lock
* first pass of a mute mgmt page, ported from subscription mgmt page pr
* adjust error message for mutes
* muted users -> muted stackers
* fix typo in component name
* env vars for polling intervals
add env vars for 4 different common polling intervals,
fast (1000), normal (30000), long (60000), extra long (300000)
use env vars in all `pollInterval` params to `useQuery`
* replace `setInterval`'s interval with `FAST_POLL_INTERVAL`
* use fixed position + div placeholder
* hide footer padding when not shown
* account for mobile inset
---------
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
* Add .vscode/settings.json to .gitignore to allow local vscode settings without making the work tree dirty
* Swap (fix) Login & SignUp button ids + Make them both 112px wide
This is the onclose listener from getInfo.
This might also be a potential fix for undefined errors that I am getting.
With "undefined errors" I mean that the error itself is literally undefined.
* less confusing expression of when the autowithdraw will be initiated
* only change display value
* tentatively resolved linting errors: spacing around * and removed unused var import
* Remove useRef for NWC relay
* connect to relay for every payment for more reliable payments
* remove getInfoWithRelay method (no longer needed since we no longer use useRef)
* fix 'WebSocket is already in CLOSING or CLOSED state.' errors
* improve logging
* Log connection failures
* Fix no error thrown on validation error
* first pass of a subscription management page under settings
* add tabs to settings ui
* NymActionDropdown
* update Apollo InMemoryCache to merge paginated list of my subscribed users
* various updates
* switch from UsersNullable to Users
* bake the nym action dropdwon into the user component
* add back fields to the user query
* `meSubscriptionPosts`, `meSubscriptionComments`, `meMute`
* Refetch my subscribed users when a user subscription is changed
* update user list to hide stats in the subscribed list users
* update my sub'd users fragment to remove unnecessary user fields
* memoize subscribe user context provider value to avoid re-renders
* use inner join instead of left join
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* throw error when unauthenticated
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
---------
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* nwc wallet logs
* persist logs in IndexedDB
* Potential fix for empty error message
* load logs limited to 5m ago from IDB
* load logs from past via query param
* Add 5m, 1h, 6h links for earlier logs
* Show end of log
* Clamp to logStart
* Add log.module.css
* Remove TODO about persistence
* Use table for logs
* <table> fixes bad format with fixed width and message overflow into start of next row
* also using ---start of log--- instead of ---end of log--- now
* removed time string in header nav
* Rename .header to .logNav
* Simply load all logs and remove navigation
I realized the code for navigation was most likely premature optimization which even resulted in worse UX:
Using the buttons to load logs from 5m, 1h, 6h ago sometimes meant that nothing happened at all since there were no logs from 5m, 1h, 6h ago.
That's why I added a time string as "start of logs" so it's at least visible that it changed but that looked bad so I removed it.
But all of this was not necessary: I can simply load all logs at once and then the user can scroll around however they like.
I was worried that it would be bad for performance to load all logs at once since we might store a lot of logs but as mentioned, that's probably premature optimization.
WHEN a lot of logs are stored AND this becomes a problem (What problem even? Slow page load?), THEN we can think about this.
If page load ever becomes slow because of loading logs, we could probably simply not load the logs at page load but only when /wallet/logs is visited.
But for now, this works fine.
* Add follow checkbox
* Create WalletLogs component
* Embed wallet logs
* Remove test error
* Fix level padding
* Add LNbits logs
* Add logs for attaching LND and lnAddr
* Use err.message || err.toString?.() consistently
* Autowithdrawal logs
* Use details from LND error
* Don't log test invoice individually
* Also refetch logs on error
* Remove obsolete and annoying toasts
* Replace scrollIntoView with scroll
* Use constant embedded max-height
* Fix missing width: 100% for embedded logs
* Show full payment hash and preimage in logs
* Also parse details from LND errors on autowithdrawal failures
* Remove TODO
* Fix accidental removal of wss:// check
* Fix alignment of start marker and show empty if empty
* Fix sendPayment loop
* Split context in two
* Fix title from draft being dismissed
Add a way to bypass the title generation query when the url change is from local storage (draft) and not user interaction.
* Check draft title from storage
* Remove unused