Fix Bitwave CSV export issues - #6131
Open
j0ntz wants to merge 2 commits into
Open
Conversation
Add explicit return types, replace truthy checks on nullable denominations with explicit null checks, and type catch callback variables as unknown.
Bitwave changed its import requirements, so the export no longer matched what the importer accepts: - Timestamps use ISO 8601 UTC (YYYY-MM-DDTHH:MM:SSZ) instead of MM/DD/YY HH:MM. - The fee and fee ticker columns stay blank, since Bitwave now calculates fees itself and populated columns duplicate them after import. - The custom metadata 2 column mirrors the description column. - The account id keeps the case and spacing it was entered with. The input modal inherited the platform default of capitalizing the first character, which silently corrupted ids beginning with a lowercase letter and forced a manual fix on every import. Dropping the fee columns leaves the wallet and parent multiplier arguments unused, so they are removed along with the scene prop that supplied them.
Contributor
Author
j0ntz
marked this pull request as ready for review
August 3, 2026 20:49
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
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.




Description
Asana task
Fixes the four Bitwave CSV export issues tracked on CSV - Bitwave Export issues. Bitwave changed its import requirements, so the export no longer matched what its importer accepts, and one input defect corrupted the account id.
Timestamps use ISO 8601 UTC (subtask).
makeBitwaveDateTimeemittedMM/DD/YY HH:MM; it now emitsYYYY-MM-DDTHH:MM:SSZ(4-digit year,Tseparator, seconds, trailingZ).Fee columns stay blank (subtask). Column G (
fee) and column H (feeTicker) now export as empty strings for every transaction. Bitwave calculates fees itself, so populated columns duplicated them after import. Dropping them leaves thewalletandparentMultiplierarguments unused, so those are removed along with the scene prop that suppliedparentMultiplier.Custom metadata 2 mirrors the description (subtask). Column W (
metadata:myCustomMetadata2) was the transaction notes; it now carries the same value as column R (description). The notes are still exported in column K (memo), so nothing is lost.Account id keeps the case and spacing it was entered with (subtask). Root cause: the account-id
TextInputModalnever passedautoCapitalize,TextInputModalforwards thatundefinedtoModalFilledTextInput, andFilledTextInputonly defaults it to'none'for secure inputs. So React Native's iOS default ofsentencesapplied and capitalized the first character, turningpgM8cDt7bySnWTzs2MyIintoPgM8cDt7bySnWTzs2MyI. The value was then persisted to disklet and reused as the modal's initial value, which is why the correction had to be reapplied at every import rather than sticking. The modal now passesautoCapitalize="none", and the entered value is trimmed since a pasted id often carries surrounding whitespace.Column letters map to the row object's key order, which
csv-stringifyuses for the header: Aid… Gfee, HfeeTicker, Itime, MaccountId, Rdescription, Wmetadata:myCustomMetadata2.Four unit tests cover the new behavior. Each asserts the header name at the column index it checks first, so a reordered row object fails loudly instead of silently invalidating the assertions.
CHANGELOG
Does this branch warrant an entry to the CHANGELOG?
Dependencies
none
Requirements
If you have made any visual changes to the GUI. Make sure you have:
Driven end to end on the iOS simulator against the
edge-fundsMy Zano wallet: Export Transactions → Bitwave CSV → account id → share sheet. The exported file was pulled off the device and parsed; across all 7 real transactions columns G and H are empty, every timestamp matches^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$, column W equals column R, and column M is exactlypgM8cDt7bySnWTzs2MyI.tsc, eslint (0 errors) and the full jest suite (95 suites, 575 tests) pass.Note
Low Risk
Export-format and UI input fixes for Bitwave CSV only; no auth, payments, or core wallet logic changes.
Overview
Aligns Bitwave transaction CSV export with Bitwave’s current import rules and fixes account-id entry so imports work without manual edits.
Bitwave CSV output now uses ISO 8601 UTC timestamps (
YYYY-MM-DDTHH:MM:SSZ), leavesfeeandfeeTickerempty so Bitwave does not double-count fees, and sets custom metadata column 2 to the same value asdescription(notes remain inmemo).exportTransactionsToBitwaveno longer needs the wallet or parent-chain multiplier.Account id input on the export scene uses
autoCapitalize="none"and trims pasted values so case-sensitive ids are not altered or padded with whitespace.Adds unit tests for the Bitwave column behavior and minor typing/eslint cleanup in export actions and the export scene.
Reviewed by Cursor Bugbot for commit c2cce5b. Bugbot is set up for automated code reviews on this repo. Configure here.