Activity search filter#559
Open
johnny9 wants to merge 11 commits into
Open
Conversation
fbbff05 to
94153d4
Compare
MarnixCroes
reviewed
May 5, 2026
Contributor
MarnixCroes
left a comment
There was a problem hiding this comment.
- There is an issue when
Create payment requestdoes not work at first try. You have to change dialog, then it works
Screencast.from.2026-05-05.09-05-57.webm
View previous requestsshould be grayed out when there are none.- I think the default save location of the CSV should not be
build/bin - I guess the message should be displayed here as well, when there is one?
- For created payment requests, I think it does not make sense to display 0 confirmation count? It's a request, not a pending incoming tx
Move QmlReceiveRequestRecipient and QmlRecentRequestEntry from an anonymous namespace in walletqmlmodel.cpp into a dedicated header so they can be shared with the upcoming ReceiveRequestHistoryModel. Bump the recipient serialization version to 2, adding an optional noteSelf field, and widen the date serialization type to int64_t to avoid Y2038 truncation.
Introduce a QAbstractListModel that manages the in-memory list of receive request entries. It exposes roles for address, label, amount, BIP21 URI, and timestamps, and provides static helpers for serialization, deserialization, and bitcoin: URI construction. Unit tests cover URI building (plain address, with params, URL encoding, bech32 case preservation), serialization round-trips including the v2 noteSelf field, model role queries, prepend/remove operations, and malformed-blob resilience.
Add several properties to PaymentRequest that the upcoming detail page needs: addressType (derived from the destination variant), noteSelf (private note), qrPayload (reactive BIP21 URI that updates when amount, address, label, or message change), createdIso (ISO 8601 creation timestamp), and hasPaymentInfo (true when any of label, message, or amount is set).
Add an isPendingRequest bool to Transaction so the activity list can distinguish unfulfilled receive requests from real on-chain transactions. When set, dateTimeString() returns "Pending receive" instead of computing a relative timestamp.
Wire ReceiveRequestHistoryModel into WalletQmlModel as a persistent child model. Refactor commitPaymentRequest() to return bool, always generate a fresh address, and update both the history model and the activity list on success. Add loadPaymentRequest(), removeReceiveRequest(), and reloadReceiveRequests() for the detail page and options menu. In ActivityListModel, add pending-request support: addPendingReceiveRequests() merges unfulfilled requests into the activity feed during refresh, removePendingRequestForAddress() clears them when a real transaction arrives, and updateTransaction() now uses proper beginInsertRows/endInsertRows instead of a blanket dataChanged signal.
Redesign the RequestPayment page from a flat form into a PageStack with two views: a creation form and a detail page that shows after a request is committed. The detail page (PaymentRequestDetail) displays a QR code encoding the BIP21 URI, copy and share buttons, and an expandable details section with address, amount, label, message, address type, URI, and creation time. A CopiedToast component provides transient clipboard feedback. Supporting changes: - Add EllipsisMenuButtonItem control (non-toggle menu action) - Add ReceiveOptionsPopup and PaymentDetailOptionsPopup components - Extend OutlineButton with optional icon and disabled state - Simplify IconButton and EllipsisMenuToggleItem hover handling - Adjust Separator default color for better contrast - Register ReceiveRequestHistoryModel QML type in bitcoin.cpp - Handle textEdited() signal without arguments in testbridge
Add an end-to-end functional test (qml_test_receive.py) that imports a wallet, creates two receive requests, verifies the BIP21 QR payload includes correct amount/label/message params, confirms history persists across a GUI restart, and checks the history count grows correctly. Add a QML unit test (tst_requestpayment.qml) covering the formatRelativeTime helper and the BTC/SAT amount input validators. Wire the functional test into the CI workflow.
94153d4 to
5a77614
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Based on #553 to include RequestHistoryModel.
Adds a toggle to open up text search and drop downs for time and type filters.
The toggle state is saved as a QSetting.
Added an export activity to csv as well.