Commit Graph

54 Commits

Author SHA1 Message Date
Lukas Korba 3d615a32d8
[#362] [scaffold] Pending Transaction Details (#381)
- transaction detail has been cut into pieces that can be composed to various versions of the detail
- handling all 4 cases (sent, received, pending, failed)

[362] [scaffold] Pending Transaction Details

- confirmations counting
- pending transaction status fixed

[362] [scaffold] Pending Transaction Details

- tests fixed

[362] [scaffold] Pending Transaction Details

- failed transactions

[362] [scaffold] Pending Transaction Details (381)

- snapshot tests

[362] [scaffold] Pending Transaction Details (381)

- comments resolved
2022-06-30 08:59:03 -03:00
Lukas Korba df2c721d32
[96] [Scaffold] Received Transaction Details (#378)
- 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
2022-06-28 09:38:08 +02:00
Lukas Korba e321114214
[98] [Scaffold] Full Wallet History (#376)
- 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'
2022-06-23 11:05:34 +02:00
Lukas Korba cb32ca42a9
[327] Navigation/Routing for the deeplinks (#371)
- 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
2022-06-20 10:11:21 +02:00
Lukas Korba 270a21668a
[346] Take Synced home screen snapshot (#356)
- home snapshot with mocked data
- also in the full history view
2022-06-14 12:01:51 +02:00
Lukas Korba 05b2d716b1
[342] Take empty validation puzzle snapshot (#355)
- 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
2022-06-14 12:00:08 +02:00
Lukas Korba bd94d13095
[341] Take Phrase Display Snapshots (#354)
- phrase display with mocked data, .demo environment
2022-06-14 11:58:21 +02:00
Lukas Korba d32eeaccac
[345] Take wallet import snapshot (#353)
- snapshot of import wallet, demo environment
2022-06-14 11:56:08 +02:00
Lukas Korba edeb3f7fee
[340] Take Onboarding Snapshots (#352)
- the OnboardingFlow info steps snapshots

[340] Take Onboarding Snapshots (352)

- cleanup
2022-06-14 11:51:13 +02:00
Lukas Korba d7c651b522
[337] Set up Snapshot Testing (#350)
- 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
2022-06-10 10:46:35 -03:00
Lukas Korba 6026aebc9b
[222] Tests for the initialisation check and process (#334)
- 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
2022-06-03 20:21:51 +02:00
Lukas Korba 9e2ac0c6aa
[312] WrappedNumberFormatter (#336)
- WrappedNumberFormatter implemented
- unit tests updated to inject en_US locale
- cleaned up all XCTSkipUnless
2022-06-03 14:28:48 +02:00
Lukas Korba 21806c737f
[323] Unit/Integration tests for Home (#335)
- integration test for the .onAppear action
- unit tests for the synchronizer status change
- unit tests for the drawer and tracsation history
2022-06-03 13:27:18 +02:00
Lukas Korba b2ae82ce1b
[#329] Update wallet to use Zatoshi type (#333)
- 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
2022-05-31 14:14:56 -03:00
Lukas Korba bab1dc6f82
[272] Decimals and Zatoshi type (#330)
[272] Decimals and Zatoshi type (330)
- Zatoshi type implemented
- conversions implemented
- 'from' convert methods refactored to better readable syntax
- fixed issue with rounding Decimal (in Zatoshi -> Decimal conversion)
- rounded -> roundedZec
- comments resolved
- zcashNumberFormatter by default
2022-05-27 17:19:21 +02:00
Lukas Korba c40b9660e3
[301] Import Wallet does not have a Birthday input field (#328)
- 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
2022-05-26 14:47:55 +02:00
Lukas Korba 4cc7737b21
[106] [Scaffold] Scan QR Screen (#321)
- 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
2022-05-24 08:30:12 +02:00
Lukas Korba b753efbc5f
[285] Advanced Routing: setting a route may vary depending on the originating context (#325)
- context based routing in Home Screen
- mnemonic refactor
- backup phrase display from the profile screen
2022-05-24 07:30:16 +02:00
Lukas Korba 339965b9e9
[#319] Update TCA to 0.35.0 (#326)
- TCA updated to 0.35.0
- tests modified so no state change is reflected
2022-05-23 12:36:29 -03:00
Lukas Korba af054b098c
[#180] Project Structure and Source code consistency (#317)
phrase 1:
- project restructured
- swifgen rewired
- files renamed

[180] Code inconsistency

phase 2:
- stores and views refactored

phase 3:
- models, dependencies, utils and UI components

[180] Code inconsistency

- tests fixed
2022-05-13 13:29:57 -03:00
Lukas Korba 2bb5451047
[#294] amount + address fields done (#308)
cleanup

validation

[#294] [Scaffold] Send Screen - transaction + address inputs (#308)

- zec amount refactored to be always Int64 - number formatter to zec string for the UI added
- cleaned up the invalid input conditions by providing computed properties
- isValidZcashAddress() added

[#294] [Scaffold] Send Screen - transaction + address inputs (#308)

- prefix input view support implemented
- zcash or $ symbol used as a prefix for the amount input
- $ computations and max out implemented

[#294] [Scaffold] Send Screen - transaction + address inputs (#308)

- insufficient funds logic (UI error + inability to send) added
- $ balance value visible at send screen
- cleanup

[#294] [Scaffold] Send Screen - transaction + address inputs (#308)

- send routing simplified and cleaned up

[#294] [Scaffold] Send Screen - transaction + address inputs (#308)

- unit tests

[#294] [Scaffold] Send Screen - transaction + address inputs (#308)

- cleanup

[#294] [Scaffold] Send Screen - transaction + address inputs (#308)

- review comments solved
2022-05-11 12:26:39 -03:00
Lukas Korba 6a12e09ee9
[#302] Synchronizer status on Home Screen (#304)
* synchronizer status

* amount input field enhancements

Closes #302
2022-05-04 17:01:48 -03:00
Lukas Korba f6e6f6991f
[#212] Wrapped user defaults (#298)
tests enhanced

guard/fail

cleanup
2022-05-03 09:34:17 -03:00
Lukas Korba e54ea3aa18
[#80] Scaffold - Send functionality (#297)
* UI + stores/reducers updated

* simple send done

cleanup

flag for sending

deny any attempt to send when sending is still in flight

cleanup

unit tests
2022-05-02 19:35:03 -03:00
Lukas Korba 3e8169551b
[#293] first draft of history of transactions (#293)
pending + cleared + sorted transactions

cleanup

any scheduler + tests skeleton

transaction history tests

syncedBlockHeight from the synchronizer
2022-04-28 07:22:31 -03:00
Lukas Korba ccb9301fb2
WrappedSyncrhonizer (#292)
(un)subscribed logic added
cleanup
refactor
commented solved
final agreed naming
2022-04-26 13:28:39 +02:00
Lukas Korba c6a90ff96c Initial functional code
cleanup + functional import wallet

app state check fix

synchronization wip

cleanup

cleanup + debug menus from the home

debug menus modifier added

fix for the failing tests

transparent -> shielded

comments resolved
2022-04-19 09:05:07 +02:00
Lukas Korba 6cc73ecd86 critical fix
added test
2022-04-14 13:16:57 +02:00
Lukas Korba a57cf312af wrapped derivation tool done
fixed build
2022-04-13 10:34:03 +02:00
Lukas Korba d0cca8121c Initialization refactored & covered by tests 2022-04-13 10:13:29 +02:00
Lukas Korba c22e18b07e Wrapped Security and Keychain handling 2022-04-12 14:32:58 +02:00
Lukas Korba a44bbaabad importing and storing the wallet
tests fixed
2022-04-11 14:36:09 +02:00
Lukas Korba 8136ec3040
Issue #220 - Dependency for the SDK database files/file management (#240)
unit tests implemented

naming enhanced
2022-04-07 11:13:40 -03:00
Lukas Korba 549a5c0806 Cleanup and refactor
lightweight wallet wrapper

getting rig of initialiser, import Security

SDK integrated, wallet's environment prepared

PR comments fixes

PR comments resolved

wallet storage as a dependency

PR comments resolved

Update secant/Util/WalletStorageInteractor.swift

agreed

Update secant/Util/WalletStorageInteractor.swift

order of parameters fixed

build fixed

tab resolved

buildable again

unit tests TODO added

Co-Authored-By: Adam <adam@olemae.com>
2022-04-04 15:37:02 +02:00
Lukas Korba 1635ee81ce draft of the storage
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
2022-03-24 16:21:38 +01:00
Lukas Korba 366d30a00d KeyStoring protocol implemented
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>
2022-03-23 19:18:08 +01:00
Lukas Korba 60d4db2f3b updated tests
all tests pass
2022-03-01 10:50:57 +01:00
Lukas Korba 465d4feded Test fixes 2022-02-24 17:26:06 +01:00
Francisco Gindre b75def9cc1 Issue #44: Recovery Phrase Validation flow + tests
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
2022-02-18 10:26:11 -03:00
Daniel Haight 8425dd94b1 Delete router style placeholders 2021-12-14 02:50:55 +00:00
Francisco Gindre 5646afbdd5 First Stab at The Composable Architecture
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
2021-12-13 15:58:13 -03:00
adam cc32e881ba Onboarding Screen 2021-12-07 06:18:35 -06:00
adam 9b46a4c9d3 Onboarding State Updates 2021-11-05 07:27:31 -05:00
adam 16adad59f0 Onboarding Skip 2021-11-04 07:54:30 -05:00
Francisco Gindre bafdd6df37 PR suggestions 2021-10-21 12:40:35 -03:00
Francisco Gindre dedea73ffc Numbered Text View + tests
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
2021-10-20 21:01:28 -03:00
adam c8d3ccf7a3 TCA Updates 2021-10-15 06:15:12 -05:00
adam 0169164472 Onboarding TCA intro 2021-10-13 07:25:17 -05:00
Francisco Gindre 4f9c2adb6d PR changes on loading tests. DRY helper 2021-09-22 11:58:09 -03:00
Francisco Gindre ef2eed4044 changes from PR suggestions 2021-09-21 17:38:36 -03:00