* reuse boost for jobs
* wip
* allow job stopping
* restore upvote.js
* expire boost
* boost beyond edit window
* fix boost bolt styling
* rank comments with boost
* no random sort for jobs
* top boost for month at top of territory
* boost hints
* more boost help
* squash migrations
* for same boost, prioritize older
* show ad only if active
* fix itemCreate/Update boost expiration jobs
* fix fee button precedence
* Rename vars around edit permission
* Allow anon edits with hash+hmac
* Fix missing time zone for invoice.confirmedAt of comments
* Fix missing invoice update on item update
---------
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
* WIP: Account switching
* Fix empty USER query
ANON_USER_ID was undefined and thus the query for @anon had no variables.
* Apply multiAuthMiddleware in /api/graphql
* Fix 'you must be logged in' query error on switch to anon
* Add smart 'switch account' button
"smart" means that it only shows if there are accounts to which one can switch
* Fix multiAuth not set in backend
* Comment fixes, minor changes
* Use fw-bold instead of 'selected'
* Close dropdown and offcanvas
Inside a dropdown, we can rely on autoClose but need to wrap the buttons with <Dropdown.Item> for that to work.
For the offcanvas, we need to pass down handleClose.
* Use button to add account
* Some pages require hard reload on account switch
* Reinit settings form on account switch
* Also don't refetch WalletHistory
* Formatting
* Use width: fit-content for standalone SignUpButton
* Remove unused className
* Use fw-bold and text-underline on selected
* Fix inconsistent padding of login buttons
* Fix duplicate redirect from /settings on anon switch
* Never throw during refetch
* Throw errors which extend GraphQLError
* Only use meAnonSats if logged out
* Use reactive variable for meAnonSats
The previous commit broke the UI update after anon zaps because we actually updated item.meSats in the cache and not item.meAnonSats.
Updating item.meAnonSats was not possible because it's a local field. For that, one needs to use reactive variables.
We do this now and thus also don't need the useEffect hack in item-info.js anymore.
* Switch to new user
* Fix missing cleanup during logout
If we logged in but never switched to any other account, the 'multi_auth.user-id' cookie was not set.
This meant that during logout, the other 'multi_auth.*' cookies were not deleted.
This broke the account switch modal.
This is fixed by setting the 'multi_auth.user-id' cookie on login.
Additionally, we now cleanup if cookie pointer OR session is set (instead of only if both are set).
* Fix comments in middleware
* Remove unnecessary effect dependencies
setState is stable and thus only noise in effect dependencies
* Show but disable unavailable auth methods
* make signup button consistent with others
* Always reload page on switch
* refine account switch styling
* logout barrier
---------
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
Co-authored-by: k00b <k00b@stacker.news>
* Skip wallet connection tests if only priority is changed
* Fix server priority overrides client priority
* Also add priorityOnly as last argument in generateMutation
* Show item details via context
* Use zappers instead of upvotes
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
---------
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
* Add NWC receives
* Refactor sendPayment+createInvoice with nwcCall function
* Update badge
* Add method support checks
* Add timeout to NWC test invoice
* Fix NWC isConfigured state
All NWC fields are marked as optional but NWC should only be considered configured if one of them is set.
* Fix relay.fetch() throws 'crypto is not defined' in node
nip04.encrypt() was failing in worker because 'crypto is not defined'. Updating to nostr-tools v2.7.2 fixed that.
However, now crypto.randomUUID() in relay.fetch() was throwing 'crypto is not defined'. Importing crypto from 'crypto' fixed that.
However, with the import, randomUUID() does not work so I switched to randomBytes().
Running relay.fetch() now works in browser and node.
* recv must not support pay_invoice
* Fix Relay connection check
* this.url was undefined
* error was an object
* Fix additional isConfigured check runs always
It was meant to only catch false positives, not turn negatives into false positives.
* Rename testConnectServer to testCreateInvoice
* Rename testConnectClient to testSendPayment
* Only run testSendPayment if send is configured
The return value of testSendPayment was used before but it only returned something for LNC.
And for LNC, we only wanted to save the transformation during validation, so it was not needed.
* Always use withTimeout in NWC test functions
* Fix fragment name
* Use get_info command exclusively
* Check permissions more efficiently
* Log NWC request-response flow
* Fix variable name
* Call ws.send after listener is added
* Fix websocket not closed after timeout
* Also check that pay_keysend etc. are not supported
* fix lnc session key save
---------
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
Co-authored-by: k00b <k00b@stacker.news>
* Add Random link and basic query
* Use random
* refine random sort query
* make vote threshold higher
---------
Co-authored-by: k00b <k00b@stacker.news>
* Generate more code from wallet defs
* generate "type WalletLND { ... }"
* generate "union WalletDetails = WalletLND | ..."
* hardcode function for __resolveType
* add comments where updates are needed if another server wallet is added
* Fix type for LN addresses
* Generate __resolveType from wallet.type column
* not-custodial zap scaffolding
* invoice forward state machine
* small refinements to state machine
* make wrap invoice work
* get state machine working end to end
* untested logic layout for paidAction invoice wraps
* perform pessimisitic actions before outgoing payment
* working end to end
* remove unneeded params from wallets/server/createInvoice
* fix cltv relative/absolute confusion + cancelling forwards
* small refinements
* add p2p wrap info to paidAction docs
* fallback to SN invoice when wrap fails
* fix paidAction retry description
* consistent naming scheme for state machine
* refinements
* have sn pay bounded outbound fee
* remove debug logging
* reenable lnc permissions checks
* don't p2p zap on item forward splits
* make createInvoice params json encodeable
* direct -> p2p badge on notifications
* allow no tls in dev for core lightning
* fix autowithdraw to create invoice with msats
* fix autowithdraw msats/sats inconsitency
* label p2p zaps properly in satistics
* add fees to autowithdrawal notifications
* add RETRYING as terminal paid action state
* Update api/paidAction/README.md
Co-authored-by: ekzyis <ek@stacker.news>
* Update api/paidAction/README.md
Co-authored-by: ekzyis <ek@stacker.news>
* Update api/lnd/index.js
Co-authored-by: ekzyis <ek@stacker.news>
* ek suggestions
* add bugetable to nwc card
* get paranoid with numbers
* better finalize retries and better max timeout height
* refine forward failure transitions
* more accurate satistics p2p status
* make sure paidaction cancel in state machine only
* dont drop bolt11s unless status is not null
* only allow PENDING_HELD to transition to FORWARDING
* add mermaid state machine diagrams to paid action doc
* fix cancel transition name
* cleanup readme
* move forwarding outside of transition
* refine testServerConnect and make sure ensureB64 transforms
* remove unused params from testServerConnect
---------
Co-authored-by: ekzyis <ek@stacker.news>
Co-authored-by: k00b <k00b@stacker.news>
* Support receiving with LNbits
* Remove hardcoded LNbits url on server
* Fix saveConfig ignoring save errors
* saveConfig was meant to only ignore validation errors, not save errors
* on server save errors, we redirected as if save was successful
* this is now fixed with a promise chain
* logging payments vs receivals was also moved to correct place
* Fix enabled falsely disabled on SSR
If a wallet was configured for payments but not for receivals and you refreshed the configuration form, enabled was disabled even though payments were enabled.
This was the case since we don't know during SSR if it's enabled since this information is stored on the client.
* Fix missing 'receivals disabled' log message
* Move 'wallet detached for payments' log message
* Fix stale walletId during detach
If page was reloaded, walletId in clearConfig was stale since callback dependency was missing.
* Add missing callback dependencies for saveConfig
* Verify that invoiceKey != adminKey
* Verify LNbits keys are hex-encoded
* Fix local config polluted with server data
* Fix creation of duplicate wallets
* Remove unused dependency
* Fix missing error message in logs
* Fix setPriority
* Rename: localConfig -> clientConfig
* Add description to LNbits autowithdrawals
* Rename: receivals -> receives
* Use try/catch instead of promise chain in saveConfig
* add connect label to lnbits for no url found for lnbits
* Fix adminKey not saved
* Remove hardcoded LNbits url on server again
* Add LNbits ATTACH.md
* Delete old docs to attach LNbits with polar
* Add missing callback dependencies
* Set editable: false
* Only set readOnly if field is configured
---------
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>