- BalanceBreakdown migrated
- unit and snapshot tests fixed
- some terminology cleanup beyond scope of this task, the dependencies are keys essentially so I refactored all of them to follow the same syntax
- SDKSynchronizer refactored to sdkSynchronizer
- RecoveryPhraseDisplay migrated to new TCA's ReducerProtocol
- fixed unit tests
- TODO Ensure that sensitive information can't be logged intentionally or by accident #444
Closes#82
- Add new `TransactionSendingView` which implements in progress state.
- Copied lottie animation from ECC reference wallet.
- Update routing in send flow to support new screen.
Closes#427
- This is scaffold work for #427. Logic is done and some basic UI.
- Logic that works with free disk space is in `DiskSpaceChecker`. Use
`WrappedDiskSpaceChecker` to get live or mocked instances of `DiskSpaceChecker`.
- You can either use `mockEmptyDisk` which mocks situation when there
is enough space on disk.
- Or you can use `mockFullDisk` to mock situation when there isn't enough space on disk.
Closes#81
- Ported ZcashHoldToSendButton from ECC referecne wallet and make it work with TCA. And then use it on Send Confirmation screen.
- Added colors that are used by HoldToSendButton to asset catalogue.
- Update Send confirmation screen look according to designs.
- Ported ZcashCheckCircle from ECC reference wallet and use it on Send confirmation screen.
- Added colors used by CheckCircle to assets catalogue.
- Add test for the case when not including memo in transaction.
- Updated ZcashLightClientKit to 0.16.10-beta to fix transaction failure when memo is nil.
Closes#25
- Add `todos` swiftlint rule which detects `TODO:` or `FIXME:` without
ticket number.
- Use `TODO [#<issue number>]:` to not trigger this rule.
- Updated TODOs and FIXMEs which had issue number in different format in
the code.
Closes#379
- `TransactionDetailView` is updated and instead of `ViewStore` it now has `Store`. `Store` is required to show alert. It's not possible with `ViewStore`.
- There are three more actions added to `WalletEventsFlowAction`. These are used to handle the new alert.
- Block explorer URL is changed to https://zcashblockexplorer.com. New URL scheme is derived from how URLs looks now when some transaction is opened.
- refactored to async/await TCA
- reduced a few dependencies
- removed schedulers
- simplified the code
- cleaned up the tests
[409] Rewrite LocalAuthenticationHandler so it supports new concurrency (410)
- Sendable protocol
[409] Rewrite LocalAuthenticationHandler so it supports new concurrency (410)
- fixed typo
- full screen cover for the balance breakdown
- clearing out the background so we can do semi transparency
- bindings for the full screen cover
[224] [Scaffold] Balance Breakdown
- draft of UI
[224] [Scaffold] Balance Breakdown
- latest block business logic
- mocked auto shielding threshold
- unit tests
- snapshot tests
[224] [Scaffold] Balance Breakdown (412)
- comments resolved
- bigger refactor of the synchronizer, taking advantage of SynchronizerState being reported every time .synced pass
- unit tests fixed and refactored
[224] [Scaffold] Balance Breakdown (412)
- ClearBackgroundView documented, reference to the proposed solution added
Following dependencies refactored to await/async
- RecoveryPhraseValidationFlowReducer
- RecoveryPhraseDisplayStore
- AppStore
- UserPreferencesStorage
- WrappedUserDefaults
which allowed to reduce imports of Combine/TCA
- MultiLineTextField Store & View implemented
- memo char limit is set from the zcash sdk environment
- fixed tests
- unit tests for the multiline textfield
- send flow form validity unit tests extended to cover memo char limit
- rescan blockchain feature
- backup phrase feature
- system (biometrics) authentication dependency implemented
- unit tests
- snapshot tests
[75] [Scaffold] Settings Screen
- rescan cleanup
[75] [Scaffold] Settings Screen
- quick and full rescan reset to home screen unit tests
[75] [Scaffold] Settings Screen (398)
- biometrics (touch ID, face ID) preferred, passcode is fallback, when no protection is set, we let users go to the sensitive content
- initial frame connected to available data (progress)
- zboto balance
- $ balance
- inner / outer progress logic
- isDownloading and isUpToDate controls added
- outer circle parametrical solution implemented
- unit tests fixed
- SyncStatusSnapshot implemented
- snapshot tests
[102] [Functional] Full Wallet History
- latest design updates
- solved issue with the List and accessory views
[102] [Functional] Full Wallet History
- fixes for the 'all' button
- reduced actions for the detail binding
[102] [Functional] Full Wallet History
- padding fixes (all events are visible)
- home screen drawer's height set to show 3 events on screen
[102] [Functional] Full Wallet History
- final UI for all states of transaction for rows
- Lottie package added
- Lottie animation for the pending transaction added
[102] [Functional] Full Wallet History
- snapshot tests cleaned up and refactored
- snapshotting all 4 types of transaction wallet events rows (sent, pending, received, failed)
[102] [Functional] Full Wallet History (393)
- Rubik fonts
[102] [Functional] Full Wallet History (393)
- leading padding fixed
- UITableView appearance moved to onAppear()
[153] [Scaffold] Progress Status Circular Bar (#389)
- rebased
- the view holding all requested (mocked) data is prepared
- copy to pasteboard implemented
- deeplink 'reply-to' memo implemented
- view online implemented and button visible only when the URL is valid
- asset colors for the texts
- unit tests
- snapshot tests
- concept of activities instead of transactions
- the drawer is now fully universal and data driven, rendering some View, going to some detail View
- unit tests work again
- refactor of Activity -> WalletEvent
- WalletEvent view builders simplified
- transactions & wallet events timestamps instead of Date type
- review comments resolved
- missing 'Transactions' terms updated to 'WalletEvents'
- The app responds to openURL scheme starting with zcash://
- The currently implemented routes:
home
send :no parameters provided
send: amount
send: amount, address
send: amount, address and memo
- making the DeeplinkManager fully independent from the AppAction
- the app processes the deeplink only when fully capable of (initialized and synced) for now
- unit tests
- support for the zcash:{address} format
- the backup is the whole flow so the implementation covers all screens:
- preamble
- validation with 4 steps to fill in the chips
- success/failure screens
- snapshot package added
- welcome snapshot taken
[337] Set up Snapshot Testing
- iPhone 8 Plus welcome screen references
[337] Set up Snapshot Testing
- snapshot references removed
- snapshots only recorded, no comparison
[337] Set up Snapshot Testing
- isRecording removed
[337] Set up Snapshot Testing
- iPhone 8 Plus, iOS 15.4 screenshots
[337] Set up Snapshot Testing
- lowering the precision to 0.999
[337] Set up Snapshot Testing
- attempts to get it pass the test
[337] Set up Snapshot Testing
- frame set up
[337] Set up Snapshot Testing
- resized image
[337] Set up Snapshot Testing
- many different snapshot tests
[337] Set up Snapshot Testing
- low precision test
[337] Set up Snapshot Testing
- updated pngs
[337] Set up Snapshot Testing
- another set of pngs
[337] Set up Snapshot Testing
- precision 0.99
[337] Set up Snapshot Testing
- XCTAttachments
[337] Set up Snapshot Testing
- typo fixed
[337] Set up Snapshot Testing
- reference images
[337] Set up Snapshot Testing
- no precision set
[337] Set up Snapshot Testing
- screenshot names added
- precision so low it passes all the time
[337] Set up Snapshot Testing (350)
- cleanup
[337] Set up Snapshot Testing (350)
- removed snapshot library completely
[337] Set up Snapshot Testing (350)
- code simplification and cleanup
[337] Set up Snapshot Testing (350)
- adding attachments refactored to simplify the code even more
[337] Set up Snapshot Testing (350)
- last simplification to wrap both light and dark under the hood
[337] Set up Snapshot Testing (350)
- addAttachments method to follow the same XCTestCase terminology
[337] Set up Snapshot Testing (350)
- attachments name fix
- recovery phrase randomizer & wrapper
- did finish launching -> initialized wallet test
- cleanup of static dependencies
- did finish launching -> keys missing integration test
- did finish launching -> uninitialized integration test
- database files were missing, mocked to behave like it's available
- key missing test fix, the database files were missing too => mocked to act like being present
- Int64+Zcash.swift and Double+Zcash.swift removed
- Balances and amounts updated to use Zatoshi
- Remove TODOs
- Tests updated
- FIXED: Send amount being in Zatoshi is clamping $ value to 21M max -> send amount input is no longer Zatoshi typed
[329] Update wallet to use Zatoshi type (333)
- alphabetical order(s)
[329] Update wallet to use Zatoshi type (333)
- static .zero for the Zatoshi
- conformance to Equatable moved to extension
[329] Update wallet to use Zatoshi type (333)
- small improvement by reducing code duplicity
- added words counter X/24
- added input for the birthday
- all kinds of validity check implemented
- unit tests for the whole import wallet business logic implemented
[301] Import Wallet does not have a Birthday input field (328)
- support for the birthday to be optional input
[301] Import Wallet does not have a Birthday input field (328)
- Int -> BlockHeight refactor
- scan UI view
- UI representable
- scaffold of scan view
- rect of interest support
- simple URI parser and validator
- tests
[106] [Scaffold] Scan QR Screen
- scan status added
- scan status tests
[106] [Scaffold] Scan QR Screen
- custom back button added
[106] [Scaffold] Scan QR Screen
- fixed typo
[106] [Scaffold] Scan QR Screen (321)
- valid vs. invalid code part of the enum
[106] [Scaffold] Scan QR Screen (321)
- refactor
[106] [Scaffold] Scan QR Screen (321)
- cleanup
[106] [Scaffold] Scan QR Screen (321)
- review comments solved
- some improvements added
- firing the valid qr code after 1s
[106] [Scaffold] Scan QR Screen (321)
- tests fixed
- onAppear test added
- print() cleanup
[106] [Scaffold] Scan QR Screen (321)
- wrapped audio services
- vibrate when QR found
- alphabetical order of environmental parameters
- AVCaptureSession stopRunning explicit call, probably handled by AVCaptureSession itself but I didn't find proof
- QRCodeScanView simplified and cleaned up
[106] [Scaffold] Scan QR Screen (321)
- URIParser added to the project
Initial user preferences storage
refactor of one comment
handling defaults
singleton removed
support for the defaults
alphabetical sort
standard user defaults set by default
unit tests added
for-each to cover all cases
project fix
The RecoveryPhraseStorage is an implementation of KeyStoring protocol. The unit tests are testing the keychain functionality to ensure security and proper error handling.
Refactor
All comments from the PR have been incorporated
Another batch of comment updates
thx Adam!
alphabetical order
refactored to private extension
Update secant/Util/RecoveryPhraseStorage.swift
Update secant/Util/RecoveryPhraseStorage.swift
cleanup
refactor and cleanup
setData refactor
Updated to the latest requirements
The KeyStoring implementation now relies on JSON (encoded) storing version, seed phrase and birthday.
method separation
fixed typo
functions documented
typo and warnings fixed
Mock services removed
the file and the content is not used anywhere, once we will need some mocks, we will implement it
RecoveryPhraseStorage singleton removed
Language added to the storage
Co-Authored-By: Adam <adam@olemae.com>
Rename struct to RecoveryPhraseValidationState. Add docs
WordGrid + tests
Make Word Groups Droppable and Blue word chips draggable
cleanup
Rename Stores and adopt aliases and default pattern for reducers
Fix drop not working
FIX: apply background to header. Spacing
Fix compilation errors. Add validation demo to AppView
Fix: the empty chips are rendered once, because they are not uniquely identifiable
Add the Validation screen to the App Home
make mutating functions static
fix project warnings
Fix Tests
Fixed .complete test
refactoring the Enum. first step
Move given() to RecoveryPhraseValidationState and fix tests
Add canary test for computed property of State
Move RecoveryPhraseValidationStep to a nested type of RecoveryPhraseValidationState
rename RecoveryPhraseValidationState.RecoveryPhraseValidationStep to RecoveryPhraseValidationState.Step
Move static functions from RecoveryPhraseValidationStep to RecoveryPhraseValidationState
Move creational factory methods together to the same extension
Remove unused functions
remove associated values from Step enum
Fix: Avoid Drop being disable between chips
0.0.1-10
add navigation bar to phrase validation demo
Reduce spacing between groups. Code cleanup
Remove RecoveryPhraseValidationStep.swift
Move remaining code to proper places
PR Fixes. Move .initial factory method to test target. Rename given() to apply(chip:group:) and make it a member function
Cleanup. Remove .validate, .invalid and .valid states. Figure word chips out of the state.
Fix randomIndices()
Tie view's title to state
Connect Header to State
BlueChip is now ColoredChip.
Success Screen
fix project
Connect Success Screen to successful validation
Add Red color to backgrounds
Validation Failed Screen
Connect SuccessValidation Screen to home
hide back button on Success view
Connect Phrase Display to validation
0.0.1-11
Fix word grid background colors
View Modifier to add scrollview when the content is being scaled up by DynamicType
Adjust UI spacing and padding to designs
Add Placeholder states for SwiftUI Previews
Flatten EnumeratedChip Hierarchy
Flatten EnumeratedChip view hierarchy
Fix: LazyVGrid can't take GeometryReader on its items' bodies
Fix: Colored Chip does not adjust
Fix: Vertical separation between wordgroups is too tall.
Fix: Accesibility fixes for Validation Failed screen
Rename ValidationFailedView
Accessibility Pass on Validation success screen
FIX: Colored chips too big when scaled up
Fix: ValidationFailedScreen does not scroll well when scaled up
Fix Empty chip shadow color for dark color scheme
Fix: chip grid background does not bleed out to bottom of the screen
build 12
Fix: pre success/failure screen step shrinks the screen because word grid is missing
Resolved PR comments
Fixes to resolve PR conversations
Fixes to resolve PR conversations
Fix PhraseChip preview
Make ScrollableWhenScaledUp modifier fileprivate
Remove comments and clean up code
Fix Swiftlint issues
Renamed RecoveryPhraseStepFulfillment to ValidationWord
Rename pickWordsFromMissingIndices
PR fixes
PR suggestions
PR suggestions
Move words(fromMissingIndices:size) to RecoveryPhrase
Make ScrollableWhenScaled struct fileprivate
PR Suggestions Part two
PR Suggestion changes
remove unused
PR suggestions
suggested rename
PR suggestions
remove apply(chip:into) move that to Reducer
Formatting changes
more formatting changes
Fix: iPhone 13 Pro Max displays 4 columns instead of three
Fix: Recovery Phrase puzzle shows incorrect number of columns and margin alignment on bigger devices
Add test to catch state not changing as intended
Phrase validation reducer refactor + tests
make step computed property a bool
make isComplete a single line
PR Suggestions
Rename ValidationSuccededView.swift
Fix Bug: valid phrase should contemplate that the phrase is complete first
PR Suggestion
refactor and add Unit Tests for resultingPhrase, isComplete, isValid
Initial Light Mode Recovery Phrase Backup Screen
Dark mode color adjustments
Quotes "Navigation Bar Title"
Fix Recovery Phrase chips throw a UI Thread warning
Integrate Copy to buffer button
create test build 4 for UX validation
FIX: Archiving compilation errors
fix warnings. add TODOs for demo code that is needed to build on release mode
PR Fixes: remove dump calles add TODOs
remove unneeded padding
remove prints
PR fixes: remove min height from standard button style.
change extension from View to Text
change comment format
PR Fixes. code style
Add ticket number to TODOs
Rename "Backup Flow" to BackupFlow
PR lint fixes
Add tests
Fix lint issue. cleanup
rename "UI Components" to "UIComponents"
Renamed folder with spaces to CamelCase names:
"App Errors" to "AppErrors"
"Mocked Dependencies" to "MockedDependencies"
Renamed "Font Styles" to "FontStyles"
hook up to home screen
Adding: [Suggestion(adding pasteboard to environment)]
Implement [Suggestion(use specific RecoveryPhraseError) | non-blocking]
Remove double carriage return and replace by VStack of Text()
add App Uses Non-Exempt Encryption -> NO value to Info.plist
bump build #
0.0.1-7
make view modifiers private
move modifiers into extension
Testable Pasteboard
Fix: Word groups don't have noticeable spacing that allows the user to tell them apert
FIX: don't truncate enumerated chips
Recovery Phrase word chip, fonts and colors
Adjust font and layout
move background code to EnumeratedChip
enhance preview
Fix chip size not being uniform and trimming
code cleanup
remove Font License
code cleanup