{{ message }}
Repository navigation
Conversation
Update existing transaction rows and insert or remove rows as history changes instead of resetting the model. Batch status and amount updates without touching an unchanged description editor. Keep model resets when switching accounts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

Editing a transaction's description in History is aborted, and the typed text lost, whenever the history refreshes (#144). Once synchronized,
Wallet::onNewBlockandWallet::onUpdatedcallTransactionHistory::refresh()on every block and on every received or sent payment, andrefresh()resets the model (refreshStarted/refreshFinishedare connected tobeginResetModel/endResetModel), which closes the open editor without committing it. This is the same kind of problem c5aef15 solved for the Receive tab.refresh()now builds the new rows first and, for the same account, reconciles them with the current list instead of resetting:dataChangedfor the Date–TxID and Amount columns. Description gets adataChangedonly on rows whose description changed, so an open editor keeps its text;beginRemoveRows/endRemoveRows, and new transactions are appended withbeginInsertRows/endInsertRows; the proxy keeps sorting and filtering them as before;setDatano longer emits its owndataChanged: committing a description callsrefresh(), which now reports the changed description cell.Fixes #144
Testing: built in a Linux container with the CI's Ubuntu 24.04 steps (
cmake -DWITH_SCANNER=OFF .. && cmake --build . -j $(nproc)). Reproduced on a local regtest node (monerod --regtest --offline, v0.18.5.4) with Feather under Xvfb: with an incoming transaction at one confirmation, start editing its description, type text, then mine a block (and, separately, receive a new transaction) before pressing Return, and read the stored note from the wallet after quitting. Without the change the text is lost in both cases (the stored note is empty); with it the text is kept and stored, and the confirmations shown go from 1 to 2 to 3. Pending-to-confirmed, failed transaction removal, reorgs, several rows per txid and large histories follow from the code but were not run.Prepared with AI assistance.
🤖 Generated with Claude Code