Commit Graph

60 Commits

Author SHA1 Message Date
Lukas Korba 63e28def20 PoC and first batch of overall re-write 2025-04-17 08:21:07 +02:00
Lukas Korba 0a3e59beba FIrebase removed from the project
- Firebase dependency removed
- CrashReporter dependency removed
- DSYm file upload removed
- Custom plist generation script removed
2025-04-08 12:50:48 +02:00
Lukas Korba 25430c323f Delete Zashi logic improved
- the SDK wipe is first with max 3 attempts to retry
- the App wipe is next
- the Keychain data delete is next with max 3 attempts to retry
- new alert view states added for delete stage errors
2025-02-06 13:42:17 +01:00
Lukas Korba 32a49809cd [#1284] Flexa
- Flexa tested and fixes implemented on our side
- SDK numerator/denominator fixes WIP

[#1284] Flexa

- Total vs. Available balance handling
- Fixed freeze of Zashi by wrapping Flexa code into Task
- Prints cleanup

[#1284] Flexa

- SDK reverted to 2.2.3

[#1284] Flexa

- rebased

[#1284] Flexa

- Initialization moved to the Integrations screen

[#1284] Flexa

- simple feature flaggins system implemented
- flexa is behind the feature flags, hidden in the production & testnet builds, available for internal builds

[#1284] Flexa

- flexa seek logo added to the integrations screen

[#1284] Flexa

- fixes

[#1284] Flexa

- versions bumped up

[#1284] Flexa

- versions cleanup

[#1284] Flexa

- live vs. test Flexa keys support

[#1284] Flexa

- Versions

[#1284] Flexa

- WIP

[#1284] Flexa

- disconnect a user after reset zashi

[#1284] Flexa

- ZEC logo in Flexa
- shielded balance instead of total balance

[#1284] Flexa

- code cleanup
2024-11-12 10:44:18 +01:00
Lukas Korba 37c976499f [#1284] Flexa integration
- implemented POC for server check in Zashi, adopted SDK with the feature

[#1237] Choose the best server by testing responses from multiple server hosts

- Logic has been updated to deliver all requirements
- UI has been upgraded to reflect latest and new design

[#1237] Choose the best server by testing responses from multiple server hosts

- inverted tint if needed implemented for the progress view

[#1237] Choose the best server by testing responses from multiple server hosts

- Rebased

[#937] Shielded transaction UI

- The TransactionState has been extended to handle shielding
- The UI for the transaction row has been extended to handle right states for all types of transactions, newly for shielding, shielded and shielding failed

[#937] Shielded transaction UI

- Rebased and updated to the latest API

[#937] Shielded transaction UI

- WIP

[#937] Shielded transaction UI

- Shileding UI updated to show amount the same way as sent/received
- Shielding UI updated to show ID

[#1337] update UI of the Settings and Advanced Settings screens

- settings WIP

[#1337] update UI of the Settings and Advanced Settings screens

- Changelog updated
- Design is finalized for both Settings and Advanced Settings

design-system

- POC done
- All Colors added/implemented
- first set of variables implemented

design-system

- Color names made unique
- CurrencyConversion screen refactored to use new design system colors
- Currency conversion colors removed from the catalogue

design-system

- Variables made for the Utilities (all of them are missing aliases in Figma so it's just prepared except a few I updated myself)
- ServerSwitch refactored to use design system
- error and primary tint updated to use design system

design-system

- Utility variables finished
- Server switch refactored to the latest design system variables

tca-deprecation-resolution

- All reducers have been updated to use @Reducer macro
- All scopes have been updated to use \. case path
- All destinations have been updated to use new Bindings

tca-deprecation-resolution

- @DependencyClient macro used for all dependencies
- Unit tests fixed

shared-state

- POC

shared-state

- Exchange rate is now handled by TCA's shared state

shared-state

- Hide balances feature has been refactored using TCA's shared state
- It's no longer treated as "hide balances" but rather "hide sensitive data" because we will add a few more things to it besides balances in the near future
- Previous approach with Combine's subject and TCA's dependency have been removed from Zashi

[#1284] Flexa integration

- WIP

[#1284] Flexa integration

- Some progress, I'm able to create an account and pass the verification
- WIP: Dealing with no assets issue

[#1284] Flexa integration

- AccountId used for the start of Flexa

[#1284] Flexa integration

- onTransactionrequest connected to the TCA

[#1284] Flexa integration

- Version bumped to 1.0.1

[#1284] Flexa integration

- Rebased and updated for the latest design

[#1284] Flexa integration

- Settings remade to have a new navigational path for all Integrations, Flexa is among them

[#1284] Flexa integration

- SettingsRow supports a description if needed

[#1284] Flexa integration

- WalletStatus updated to be handled by TCA's Shared state so it can be used to determine when Flexa is available and when it's not

[#1284] Flexa integration

- Handling of restoring status in the integrations

[#1284] Flexa integration

- Payment flow finalized, testing the functionality, cleanup needed

[#1284] Flexa integration

- code cleanup after rebase

[#1284] Flexa integration

- Code cleanup

[#1284] Flexa integration

- Flexa key handled by PartnerKeys

[#1284] Flexa integration

- Accountid generated only once until Zashi is deleted

[#1284] Flexa integration

- Package.resolved

[#1284] Flexa integration

- Version bumped up to 1.0.2
- Total balance ditched and replaced with available balance
- Start of the Flexa uses the latest known balance
2024-09-26 14:10:02 +02:00
Lukas Korba 006b57fff7 shared-state
- implemented POC for server check in Zashi, adopted SDK with the feature

[#1237] Choose the best server by testing responses from multiple server hosts

- Logic has been updated to deliver all requirements
- UI has been upgraded to reflect latest and new design

[#1237] Choose the best server by testing responses from multiple server hosts

- inverted tint if needed implemented for the progress view

[#1237] Choose the best server by testing responses from multiple server hosts

- Rebased

[#937] Shielded transaction UI

- The TransactionState has been extended to handle shielding
- The UI for the transaction row has been extended to handle right states for all types of transactions, newly for shielding, shielded and shielding failed

[#937] Shielded transaction UI

- Rebased and updated to the latest API

[#937] Shielded transaction UI

- WIP

[#937] Shielded transaction UI

- Shileding UI updated to show amount the same way as sent/received
- Shielding UI updated to show ID

[#1337] update UI of the Settings and Advanced Settings screens

- settings WIP

[#1337] update UI of the Settings and Advanced Settings screens

- Changelog updated
- Design is finalized for both Settings and Advanced Settings

design-system

- POC done
- All Colors added/implemented
- first set of variables implemented

design-system

- Color names made unique
- CurrencyConversion screen refactored to use new design system colors
- Currency conversion colors removed from the catalogue

design-system

- Variables made for the Utilities (all of them are missing aliases in Figma so it's just prepared except a few I updated myself)
- ServerSwitch refactored to use design system
- error and primary tint updated to use design system

design-system

- Utility variables finished
- Server switch refactored to the latest design system variables

tca-deprecation-resolution

- All reducers have been updated to use @Reducer macro
- All scopes have been updated to use \. case path
- All destinations have been updated to use new Bindings

tca-deprecation-resolution

- @DependencyClient macro used for all dependencies
- Unit tests fixed

shared-state

- POC

shared-state

- Exchange rate is now handled by TCA's shared state

shared-state

- Hide balances feature has been refactored using TCA's shared state
- It's no longer treated as "hide balances" but rather "hide sensitive data" because we will add a few more things to it besides balances in the near future
- Previous approach with Combine's subject and TCA's dependency have been removed from Zashi

shared-state

- removed unused file

shared-state

- code cleanup

shared-state

- code cleanup

shared-state

- build fixed
2024-09-09 11:35:31 +02:00
Lukas Korba 8a760bdc99 server-checks
- implemented POC for server check in Zashi, adopted SDK with the feature

[#1237] Choose the best server by testing responses from multiple server hosts

- Logic has been updated to deliver all requirements
- UI has been upgraded to reflect latest and new design

[#1237] Choose the best server by testing responses from multiple server hosts

- inverted tint if needed implemented for the progress view

[#1237] Choose the best server by testing responses from multiple server hosts

- Rebased

[#937] Shielded transaction UI

- The TransactionState has been extended to handle shielding
- The UI for the transaction row has been extended to handle right states for all types of transactions, newly for shielding, shielded and shielding failed

[#937] Shielded transaction UI

- Rebased and updated to the latest API

[#937] Shielded transaction UI

- WIP

[#937] Shielded transaction UI

- Shileding UI updated to show amount the same way as sent/received
- Shielding UI updated to show ID

[#1337] update UI of the Settings and Advanced Settings screens

- settings WIP

[#1337] update UI of the Settings and Advanced Settings screens

- Changelog updated
- Design is finalized for both Settings and Advanced Settings

tca-deprecation-resolution

- All reducers have been updated to use @Reducer macro
- All scopes have been updated to use \. case path
- All destinations have been updated to use new Bindings

tca-deprecation-resolution

- @DependencyClient macro used for all dependencies
- Unit tests fixed

tca-deprecation-update

- cleanup

tca-navigation-update

- cleanup of : Reducer

tca-navigation-update

- code cleanup
2024-09-09 10:22:11 +02:00
Lukas Korba 6e07c064d3 [#1302] Upgrade RootReducer to the latest TCA
- Initial draft done

[#1302] Upgrade RootReducer to the latest TCA

- RootReducer has been refactored to the @Reducer Root
- All unit tests have been refactored as well

[#1302] Upgrade RootReducer to the latest TCA

- Code cleanup
2024-06-20 08:17:08 +02:00
Lukas Korba d444b0511b [#1272] Fix all broken unit tests
- Massive refactor and update of all unit tests that addresses work in past few months
2024-06-14 15:56:46 +02:00
Lukas Korba 2366a62f43 [#1288] Detect unavailable service and show a dialog
- draft

[#1288] Detect unavailable service and show a dialog

- cleanup

[#1288] Detect unavailable service and show a dialog

- changelog updated

[#1288] Detect unavailable service and show a dialog

- localizations added to the strings file

[#1288] Detect unavailable service and show a dialog

- Restoring badge has been completely redesigned to be a universal wallet status panel
- 3 possible states at the moment: none, restoring and disconnected
- Disconnected state is now tight to the wallet status disconnected, rendered over restoring if needed

[#1288] Detect unavailable service and show a dialog

- changelog updated

[#1288] Detect unavailable service and show a dialog

- code cleanup
- package resolved updated

[#1288] Detect unavailable service and show a dialog (#1289)

- show the dialog only with the transition from any state to disconnected one

[#1288] Detect unavailable service and show a dialog (#1289)

- cleanup

[#1288] Detect unavailable service and show a dialog (#1289)

- latest copy

[#1288] Detect unavailable service and show a dialog (#1289)

- Fixed the case when Zashi's server is down while attempting to recover wallet from a seed
2024-06-05 21:10:19 +02:00
Lukas Korba 1d7d5426d4 [#1254] Refresh balances immediately after send
- The balances are proactively refreshed immediately after send or shield proposals are processed
- I also noticed wrong color of disabled message box when sending to transparent address so it's been fixed in this PR as well

[#1254] Refresh balances immediately after send

- unit tests fixed
2024-05-07 13:52:27 +02:00
Lukas Korba 3d6ed24dd4 [#1189] Cleanup of unused translations
- All unused texts have been removed from the project
- Tests checked and fixed (missing dependencies)
2024-04-15 14:00:39 +02:00
Lukas Korba 88f91380eb [#1029] Not enough free space UI
- The UI has been updated to the latest design
- The values of disc space are provided
- The business logic has changed to react to check every app start or app foreground
- Test has been fixed

[#1029] Not enough free space UI

- Final copy

[#1029] Not enough free space UI (#1170)

- changelog updated
2024-04-04 07:54:57 +02:00
Lukas Korba 3e6afc69a8 [#1024] KeysMissing when restored to a new iPhone
- validation flow done for the 2 out of 3 flows
- 1. when the restore path is selected and the seed doesn't match the DB
- 2. when create new wallet is selected
- (missing) 3. seed is validated (waiting on API)

[#1024] KeysMissing when restored to a new iPhone

- preparations for SDK 2.1.0

[#1024] KeysMissing when restored to a new iPhone

- Seed validation API used and integrated
- There's an error in rust that must be resolved first

[#1024] KeysMissing when restored to a new iPhone

- rebased

[#1024] KeysMissing when restored to a new iPhone

- updated to use latest SDK's isSeedRelevantToAnyDerivedAccount

[#1024] KeysMissing when restored to a new iPhone

- unstable SDK branch test

[#1024] KeysMissing when restored to a new iPhone

- version bump

[#1024] KeysMissing when restored to a new iPhone

- bugfix
- packae redirected to ECCs repo

[#1024] KeysMissing when restored to a new iPhone

- tests fixed
2024-03-26 18:24:49 +01:00
Lukas Korba 1bc7f3ca59 [#1129] Call configureCrashReporter only when didFinishLaunching
- I moved the configuration of Firebase to the didFinishLaunching, this way the FB is configured only once at the start of the app, not causing crashes or issues of type 'FB is already configured'
- tests fixed
2024-03-13 18:39:48 +01:00
Lukas Korba b5a71c7bed [#1106] Zashi-iOS audit Issue G
- storedWallet is no longer held in memory
- unit tests fixed
2024-03-06 16:12:23 +01:00
Lukas Korba 557cae3552 [#1086] Resolve interaction with the keychain for both fore and background app states
- draft

[#1086] Resolve interaction with the keychain for both fore and background app states

- revert

[#1086] Resolve interaction with the keychain for both fore and background app states

- initialization pipeline updated to handle state when BGTask runs with fresh app start, in such case Zashi wait and doesn't try to initialize SDK -> no keychain error is triggered

[#1086] Resolve interaction with the keychain for both fore and background app states

- code cleaned up
- finished the state handling
- closing the BGTask asap for state that is supposed to just wait

[#1086] Resolve interaction with the keychain for both fore and background app states

- unit tests fixed

[#1086] Resolve interaction with the keychain for both fore and background app states (#1091)

- Comments addressed

[#1086] Resolve interaction with the keychain for both fore and background app states (#1091)

- Unit tests fixed
- Block time of didFinishLaunching increased to 0.5s (from 0.02)
2024-03-03 10:09:16 +01:00
Lukas Korba 21412a356b [#1056] Redactable AccountBalance
- AccountBalance has been wrapped into RedactableAccountBalance
- SynchronizerState has been wrapped into RedactableSynchronizerState
- Code updated to use these new redactable structs instead of direct use of unredacted ones
- tests fixed
2024-02-15 12:42:11 +01:00
Lukas Korba 9b683651cf [#1058] Cleanup dependency injection in reducers
- All work here is just cleanup of obsolete dependency injection. #981 introduced a brand new approach of DI for token name and SDK constants. That allowed me to deliver expected values directly in the TCA fashion so all reducers no longer needed those values to be passed via initializers.
2024-02-14 14:42:01 +01:00
Lukas Korba 1f39ce2423 [#1022] Restore UI not activated when app is deleted and reinstalled
- Restore mode in the UI was missing when Zashi was deleted from an iPhone and reinstalled again.
- Syncing bar in the restore mode bottom padding.
2024-02-05 17:02:26 +01:00
Lukas Korba 79ab841f75
[#997] Keys missing handling (#1000)
- changelog update
- the keys missing error state has been tweaked to try 3 retry attempts because of unresponsiveness keychain API
- in case of true missing keys, the user is no longer locked on a splash screen but rather let land to the Account tab so the rest of the Zashi can be used
- unit tests fixed + implemented new ones for the 3-attempt retry logic
2024-01-28 19:28:18 -08:00
Lukas Korba b801ac72d7
[#974] Restore of the wallet UI (#989)
The broadcasting technology done, the views can subscribe to the restoring wallet state dependency
The restoring wallet badge implemented + handling of different backgrounds underneath it
Progress of the sync implemented on the Account screen
SyncProgress feature implemented, this new component is used 2 times already in Zashi so it's been separated into its own module (used in balances screen and at home screen when restoring the wallet)
Unit tests fixed + implemented new ones for the restore wallet flag
2024-01-09 19:36:42 +01:00
Lukas Korba 1d60dd3275
[#982] Background syncing (#985)
Background processing task implemented
Doc for the Background Synchronization added
changelog update
custom wifi check
2024-01-08 14:14:48 +01:00
Lukas Korba 9ed49c9a29
[#852] Persistency in onboarding flows (#977)
- check for the confirmed phrase backup implemented, when not confirmed, the phrase is displayed and awaiting user's confirmation
- unit tests added + modified
2023-12-15 09:26:04 +01:00
Lukas Korba c76322c0fb
[#922] Batch of ux feedback tweaks (#924)
message (memo) text regular weight, black color
change the color or received message bubble background
no message included... title regular + black
transaction ID (expanded one) regular font + black
expanded address regular font + black
2023-11-21 09:58:00 +01:00
Lukas Korba a8a68852d3
[#902] Adopt TCA version 1 (#920)
- Reducers refactored
- EffectTasks refactored
- WithViewStores refactored
- all side effects refactored to the newest API
- tests refactored to MainActor async ones
- hosting application bypassed so the tests are passing and not flaky
- code cleanup
- snapshot tests with ViewStore bindings work again
- Confirmation dialog refactored, used brand new navigation TCA pattern
- unit tests fixed
2023-11-16 16:10:24 +01:00
Lukas Korba 14c5057eff
[#900] Reset states after wipe of the wallet (#901)
- concept of placeholder states removed finally, replaced with initial states that are production ready
- this change allowed the TCA roto state to simply clear out to initial after nuke/wipe
- code + tests refactored and fixed
- unit tests implemented
2023-11-14 15:33:07 +01:00
Lukas Korba 44510ac88d
[#865] Settings UI (#867)
- Settings UI according to the Zashi UI
- cleanup of unused code
- fixed tests
2023-10-20 15:00:52 +02:00
Lukas Korba 9f4243b475
[#861] Remove lightwalletd related error dialogs (#862)
- error dialogs removed
- cleanup of the code

[#861] Remove lightwalletd related error dialogs

- sdk 2.0.2 adopted, version bumped
- error dialogs removed
- a few bugfixes:
- phrase display can handle longer words and still render it fully with no truncation
- tabs tap area increased
- receive screen with addresses now uses the wallet's UA
2023-10-13 08:36:50 -06:00
Lukas Korba c1190c782e
[#851] Tab bar layout for the home screen (#855)
- concept of tabs implemented, it's the main navigation hub
- home reducer simplified because it no longer plays a role of a navigation hub
- navigation bar titles implemented
- hamburger menu for the settings screen
- balances screen tweaked
- wallet events on home screen instead of a separate screen
- tests fixed
- feature flags removed from the debug menu, no longer used
- semitransparent nav bar implemented
2023-10-13 07:47:04 +02:00
Lukas Korba 4fb80ed89f
[#841] Warning screen (#843)
- custom toggle
- security screen UI and logic finished
- splash screen extended to report completion, this way I can assure it never shows again
- dynamic Zashi version + build implemented into the warning message
2023-10-05 11:30:04 +02:00
Lukas Korba e33ee405ee
[#830] Zashi design buttons (#837)
- all features of the button done
- cleanup of everything that is not part of the design anymore, needed for the colors for the buttons
- zcashStyle used for the buttons
2023-10-04 11:04:22 +02:00
Lukas Korba bbd8da45d6
[#826] proper handling of apps lifecycle (#827)
- SDK version updated
- handling of stopped state added
- swiftgen plugin removed until it's supported by xcode 15 again
2023-09-29 10:23:17 +02:00
Lukas Korba feb4ab4eaf
[#820] Adopt SDK sbs-rc1 (#821)
- adopted SDK 2.0.0 RC1 with the Spend-before-Sync
- fixed how memo is selected out of the array of memos (.text is picked, .empty ignored)
2023-09-14 17:10:46 +02:00
Lukas Korba 59e0a68da5
[#747] CrashReporterClient as isolated package (#799)
- CrashReporter is now an independent module
- all crash reporter TODOs removed
- the crash reporter code commented out is now back in action
- package.resolved file updated
- adopted latest SDK
- test crash reporter added back to debug menu
- typo in comments fixed
2023-08-10 08:20:31 +02:00
Lukas Korba 1de13698d8
[#793] Polish debug menu and fix dark mode (#794)
- fixed alerts in debug menu
- fixed confirmation dialog in for rescan action
- fixed dark mode colors
- updated texts
- simplified texteditor UI so it's more consistent with the other components
- reduced debug menu items
- tests fixed
2023-08-07 08:33:33 +02:00
Lukas Korba f1de69f10e
[#767] Modularize batch of features Vol IV (#770)
Following features have been modularized:
- Home
- Root
2023-06-09 10:29:01 +02:00
Lukas Korba e3a312ee1a
[#761] AlertReducer and RootReducer needs to be decoupled (#763)
- AlertRequest + Reducer + States removed
- Alerts decoupled and living within the features
- tests fixed
2023-06-06 11:30:58 +02:00
Lukas Korba 9b77a57a5f
[#757] Modularize batch of leaf features Vol I (#760)
Following features have been modularized:
- AddressDetails
- RecoveryPhraseDisplay
- Welcome
- Profile
2023-06-01 10:11:37 -04:00
Lukas Korba 561ccc0689
[#750] Batch of Dependency Packages Vol IV (#756)
Last 4 dependencies modularized

- URIParser
- UserPreferencesStorage
- WalletConfigProvider
- WalletStorage
2023-06-01 16:05:35 +02:00
Lukas Korba e2502075e0
[#754] Structure for modules (#755)
- the modules are now in folders
2023-05-31 09:49:37 +02:00
Lukas Korba dbc6316766
[#749] Batch of Dependency Packages Vol III (#751)
Finished modules for:

RecoveryPhraseRandomizer
RecoveryPhraseValidationFlow
ReviewRequest
SDKSynchronizer
SecItem
SupportDataGenerator
ZcashSDKEnvironment
UserDefaults
2023-05-31 08:29:32 +02:00
Lukas Korba 7e9f8c3170
[#746] Batch of Dependency Packages Vol II (#748)
Finished modules for:
- DiskSpaceChecker
- FeedbackGenerator
- LocalAuthentication
- LogsHandler
- Mnemonic
- NumberFormatter
- Pasteboard
2023-05-30 22:33:56 +02:00
Lukas Korba c8546376db
[#744] Batch of Dependency Packages Vol I (#745)
Finished modules for:
- AudioServices
- Capturedevice
- DatabaseFiles + FileManager
- Deeplink
- DerivationTool
- Utils: NumberFormatter+zcash, String, URL+Empty
2023-05-29 14:38:53 +02:00
Lukas Korba c143f4b31d
[#709] Better error handling in tests (#713)
- Strings replaced with ZcashError
- unit test don't depend on error descriptions anymore

[#709] Better error handling in tests (#713)

- cleanup

[#709] Better error handling in tests (#713)

- alerts now show error message + code
2023-05-10 13:52:56 -03:00
Lukas Korba 36d2090654
[#698] RootView to use SwitchStore (#699)
- all alerts refactored and connected
- unit tests fixed
2023-03-31 07:25:13 +02:00
Lukas Korba ef26c835c2
[#691] Adopt sync/async synchronizer changes (#696)
- async APIs called instead of a sync one
- tests fixed
2023-03-23 16:10:18 +01:00
Lukas Korba 702b71103b
[#682] Adopt removal of the Notification center on the SDK side (#687)
- secant is buildable again, notifications replaced by publishers
- tests WIP
- all unit tests fixed
- syntax of dependencies consolidated
- syntax of .send and .receive states consolidated
2023-03-21 11:03:42 +01:00
Michal Fousek 5ce87b18a9
[#654] Convert SDKSynchronizerDependency to regular TCA dependency (#672)
Closes #654

- `SDKSynchronizerClient` is now regular TCA dependency like any other
  dependency that we have in the app.
2023-03-15 09:53:16 +01:00
Michal Fousek 082e058055
[#592] Add export logs to debug menu (#621)
Closes #592

- Export logs feature moved to separate reducer - `ExportLogsReducer`.
- New reducer is used in debug screen and in settings.
2023-03-07 14:01:22 +01:00