Swiftpack.co - blockchain/My-Wallet-V3-iOS as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by blockchain.
blockchain/My-Wallet-V3-iOS v202207.1.0(3)
Blockchain iOS Wallet
⭐️ 307
🕓 2 weeks ago
iOS
.package(url: "https://github.com/blockchain/My-Wallet-V3-iOS.git", from: "v202207.1.0(3)")

Blockchain Wallet for iOS

Banner GitHub last commit GitHub pull requests

Tooling

Homebrew: 3.4.1+ Xcode: 13.2.1+ Ruby: 2.6.9 Ruby-Gems: 3.0.3 Swiftlint: 0.46.5+ Swiftformat: 0.49.5+

If you are using a M1 you might need to update ruby to version 2.7.5 or 3.x.x. Postponing the upgrade now so we don't disturb the current builds until the CI is updated to M1 and everybody get their M1s.

Building

Install Xcode

After installing Xcode, open it to begin the Command Line Tools installation. After finished, make sure that a valid CL Tool version is selected in Xcode > Preferences > Locations > Command Line Tools.

Install Git submodules

$ git submodule update --init

If the submodules are not fetched, run:

$ git submodule update --recursive --force

If you don't have read access to My-Wallet-V3-Private:

Open .gitmodules and modify My-Wallet-V3 entry url to the public repo:

.gitmodules from:

[submodule "Submodules/My-Wallet-V3"]
    path = Submodules/My-Wallet-V3
    url = git@github.com:blockchain/My-Wallet-V3-Private.git
    ignore = dirty

to:

[submodule "Submodules/My-Wallet-V3"]
    path = Submodules/My-Wallet-V3
    url = git@github.com:blockchain/My-Wallet-V3.git
    ignore = dirty

Then run:

$ git submodule sync
$ git submodule update --init

Install homebrew

https://brew.sh/

Install Ruby dependencies

Install a Ruby version manager such as rbenv.

$ brew update && brew install rbenv
$ rbenv init

Install a recent ruby version:

$ rbenv install 2.6.9
$ rbenv global 2.6.9
$ eval "$(rbenv init -)"

For M1 use this: $ rbenv install 2.7.6 $ rbenv global 2.7.6 $ eval "$(rbenv init -)"

Then the project ruby dependencies (fastlane, etc.):

$ gem install bundler
$ bundle install

Install build dependencies (brew)

$ sh scripts/install-brew-dependencies.sh

Install JS Dependencies

You will be installing: - nvm - node - yarn

Install nvm and Node

Check nvm installaton instructions.

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

Install the correct node version:

$ nvm install 8.17.0
$ nvm use 8.17.0

If nvm is failing to install, please make sure you are installing it with the curl command above. If it still fails, check their website for a possibly newer installer.

Install Yarn

$ brew install yarn

Checkout ios branch from Submodules/My-Wallet-V3

$ cd Submodules/My-Wallet-V3
$ git checkout ios
$ cd ../..

Install and build js files

$ sh scripts/install-js.sh && sh scripts/build-js.sh

If the above command is failing you might need to fix the missing python binary on systems with python3 installed.

Install python3 using homebrew:

$ brew install python3

You should see those Caveats at the end of a successful installation:

==> Caveats
Python has been installed as
/opt/homebrew/bin/python3

Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to
`python3`, `python3-config`, `pip3` etc., respectively, have been installed into
/opt/homebrew/opt/python@3.9/libexec/bin

The first lines tells us python3 binary was installed.

The second part tells us that there are unversioned aliases also installed in another directory that is not in our PATH but we can add to it if we want to make those unversioned aliases available.

To do so, edit your ~/.zshrc or ~/.bashrc depending on which shell do you use. Find a line that starts with export PATH and add the aliases path to it. Example below:

BREW_PYTHON="$(brew --prefix python3)/libexec/bin"
export PATH=$HOME/bin:/usr/local/bin:$BREW_PYTHON:$PATH

Prepare OpenSSL

$ cd ./Submodules/OpenSSL-for-iPhone
$ ./build-libssl.sh --cleanup --archs="x86_64 arm64"

Add production Config file

Clone the wallet-ios-credentials repository and copy it's Config directory to this project root directory, it contains a .xcconfig for each environment:

Config/BlockchainConfig/Dev.xcconfig
Config/BlockchainConfig/Production.xcconfig
Config/BlockchainConfig/Staging.xcconfig
Config/BlockchainConfig/Alpha.xcconfig
Config/NetworkKitConfig/Dev.xcconfig
Config/NetworkKitConfig/Production.xcconfig
Config/NetworkKitConfig/Staging.xcconfig
Config/NetworkKitConfig/Alpha.xcconfig

For example, This is how BlockchainConfig/Production.xcconfig looks like:

ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon
OPENSSL_CERT_URL = blockchain.info

For example, This is how NetworkKitConfig/Production.xcconfig looks like:

API_URL = api.blockchain.info
BUY_WEBVIEW_URL = blockchain.info/wallet/#/intermediate
COINIFY_URL = app-api.coinify.com
EXCHANGE_URL = exchange.blockchain.com
EXPLORER_SERVER = blockchain.com
RETAIL_CORE_SOCKET_URL = ws.blockchain.info/nabu-gateway/markets/quotes
RETAIL_CORE_URL = api.blockchain.info/nabu-gateway
WALLET_SERVER = blockchain.info
WALLET_HELPER = wallet-helper.blockchain.info/wallet-helper

Add Firebase Config Files

Clone wallet-ios-credentials repository and copy it's Firebase directory into Blockchain directory, it contains a GoogleService-Info.plist for each environment.

Firebase/Dev/GoogleService-Info.plist
Firebase/Prod/GoogleService-Info.plist
Firebase/Staging/GoogleService-Info.plist
Firebase/Alpha/GoogleService-Info.plist

Add environment variables for scripts

Clone wallet-ios-credentials repository and copy the env to the root folder of the project, hide the file by using mv env .env

XcodeGen

We are integrating XcodeGen and, despite still committing project files in git, we should generate project files using the following script:

Installing:

$ brew install xcodegen

Generate projects & dependencies:

$ sh scripts/bootstrap.sh

👉 Beware that this will take a while. Feel free to read some docs, a 📖, get a ☕, or go for a 🚶 while it runs…

⚠️ You may need to run the following command if you encounter an xcode-select error:

$ sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

Build the project

cmd-r

Modules

Please refer to the README in the Modules directory. Please also refer to the README in the TestKit directory.

Contributing

If you would like to contribute code to the Blockchain iOS app, you can do so by forking this repository, making the changes on your fork, and sending a pull request back to this repository.

When submitting a pull request, please make sure that your code compiles correctly and all tests in the BlockchainTests target passes. Be as detailed as possible in the pull request’s summary by describing the problem you solved and your proposed solution.

Additionally, for your change to be included in the subsequent release’s change log, make sure that your pull request’s title and commit message is prefixed using one of the changelog types.

The pull request and commit message format should be:

<changelog type>(<component>): <brief description>

For example:

fix(Create Wallet): Fix email validation

For a full list of supported types, see .changelogrc.

License

Source Code License: LGPL v3

Artwork & images remain Copyright Blockchain Luxembourg S.A.R.L

Security

Security issues can be reported to us in the following venues:

GitHub

link
Stars: 307
Last commit: 1 week ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Release Notes

202207.1.0
1 week ago

Blockchain Wallet V3 iOS

f430d73c7 ( Tue Jul 26 2022 09:56:09 GMT+0100 (British Summer Time) )

Bug Fixes

  • fix(KYC) IOS-6933 skip questions form when buy crypto (#4318) bab247c9

    • fix(KYC) IOS-6920 add close and skip functionality to onboarding questionary (#4287) 09f0ba59
  • accountlist

    • Case Insensitive Compare for Account List to account for cEUR -> CEUR comparisons (#4343) 697bc0eb
      • 🍒 Improve Sort Ordering (#4338) a1ac8dd1
  • analytics

    • IOS-6833 Fix for send event not being triggered (#4200) af22c934
  • ci

    • IOS-0000 - Reverting 6411cbea8 (#4316) 5b05ddd0
  • coin selection

    • IOS-6219 - Support P2SH/P2WSH. (#4208) d8a65223
  • deeplink

    • Enable DeepLink DSL on Internal Builds 🍒 (#4188) f9f07393
  • deeplinking

    • IOS-6945 | Deeplinks opening twice (#4346) 0b728b3a
      • IOS-6932 | WalletConnect popup gets dismissed (#4309) a7b4adce
      • IOS-6931 | Open after background (#4304) 88f5b7af
  • deleteaccount

    • IOS-6893 fix delete account screen has text cut off (#4257) b247635c
  • errors

    • 🍒 Display UX errors when linking a card (#4332) d9ce9557
      • IOS-6910 Small UI Tweeks given Hannah's feedback (#4278) a3a7d2ac
  • growth

    • ios-6830 referral UI fixes (#4248) e8e5e495
      • IOS-6830 Referral bugfixes (#4242) b873ca97
  • kyc

    • IOS-6925 on completion questionary shows verif (#4306) 00409390
  • links

    • Fix deep links not correctly working on staging/alpha (#4186) 4b0819f3
  • login

    • After logging in, there was a race condition which trigged bad access (#4328) 1d3b8d50
  • metadata

    • IOS-6300 Fixes saving metadata entries (#4166) 7cfbda5c
  • nativewallet

    • IOS-6300 Adds missing decoding for AccountWrapper (#4333) 9b32ec5b
      • IOS-6918 Adds transactions notes saving for BTC (#4283) e138b572
      • IOS-6300 Adds address_book, removes tx_names (#4284) 65b6eb13
      • IOS-6899 Fixes duplicated requests for FaceID (#4259) 2b5a5e4b
      • IOS-6796 Fixes an issue with syncPubKeys on wallet sync (#4264) ca38bf1f
      • IOS-6300 Refactors response models for Wallet payload (#4238) 405efb59
      • IOS-6300 Delete keychain entry on Forget wallet (#4235) baa3df2c
      • IOS-6300 Refactors and changes use of MnemonicAccessAPI (#4234) 3d39d9ba
  • ns

    • DispatchQueue can be funny with lazy evaluation of properties, this moves us to a NSRecursiveLock which works much better (#4270) 044e35cd
  • qrcodescanner

    • IOS-6862 | dismiss info (#4190) (#4205) adf359bf
  • settings

    • 🍒 IOS-6929 Fix setting display currency (#4305) 37e50726
  • transactons

    • IOS-6771 Convert to crypto value when updating amount for swap and sell (#4172) 44f5ed16

Features

  • activity

    • IOS-6714: Delegated Self Custody Activity (#4285) 6a05e8b4
  • bind

    • BIND-49 Add USD deposits for BIND (#4223) 9f6f9953
      • BIND-49 Add support for Deposit and Withdraw for ARS (#4196) 1551cd0c
  • brokerage

    • Allow any event to get marked for haptics (#4321) (#4327) 9a9c3bd3
      • 🍒 Sort account picker on balance / trading volume / number of executed transactions for the pair (#4300) 016d5235
      • Return to dashboard deep link (#4289) 3b58eeae
  • cip

    • IOS-6781 | Separate Residential Address (#4220) e602606d
  • componentlibrary

    • migrate to nuke for better gif performance (#4240) a8ace86d
      • Import SwiftyGIF for more control over performance (#4216) e69079da
      • Add support for gif to AsyncMedia (#4214) f2865bbb
  • errors

    • Add categories to ux (#4217) e66b729a
      • Add localisedError to query parameters of requests to trigger error cases when inside brokerage (#4171) ecfd198e
  • growth

    • IOS-6830 Deeplink support for referrals (#4170) bc19c119
  • intercom

    • Create FeatureCustomerSupport Package (#4176) cd3602e0
  • kyc

  • latam

    • Adds ARS Trading Currency Support to Wallet (#4231) 708bddd4
  • lottie

    • Adds blockchain loading lottie animation (#4173) 3a717d34
  • native btc

  • native wallet

    • IOS-6884 Fetch receive address for BTC/BCH (#4215) d5656305
  • nativewallet

    • IOS-6300 Adds debug logs to observe payload (#4260) 92162233
  • pre-fill

    • IOS-6906 Add prefill buttons to buy (#4267) 33b8968b
  • rewards

    • IOS-6843 Add analytics for rewards (#4206) 427cae57
  • sanctions

    • iOS-6656 Russian Sanctions (#4152) ce835743
  • stacks

    • IOS-6712 - Add Receive Address support to Delegated Self Custody (#4275) 2f2d7b14
  • stx

    • IOS-6766 - Integrate Wallet PubKey Service (#4229) ad0082d9
  • tx

    • Pre-fill amount on enter amount screen iff the previous transaction session for that asset failed (#4222) c0d74f08
      • IOS-6848 Fill the amount with the previous amount for that crypto asset, remember the preferred payment method for transactions (#4183) 8dec7ad2
  • walletconnect

    • IOS-6054 | universal linking (#4297) 898cb7f4

Developer Tools

  • performancetracing
    • Remote performance tracing (#4134) 5d119490

Chore

  • Use Fastlane number_of_commits instead of git rev-list (#4320) 474e33bd

    • Use Fastlane number_of_commits instead of git rev-list (#4301) 6411cbea
  • activity

    • IOS-6714: Refactor BlockchainAccount.activity to Combine and more. (#4281) 53202b62
  • analytics

    • IOS-6869 update coin view analytics events (#4199) b6f7b301
  • build

  • m1fix

    • IOS-0000 Fix Firebase imports that were breaking the build on m1 (#4239) a0760771
  • release

    • 🍒 Auto-increment build number for release (#4342) 86d2db1a
  • transaction kit

    • IOS-6710 - Remove second password from Transaction Flow/Coincore. (#4298) 9b6b8a99

Branchs merged

  • Merge branch 'dev' into release/202206.2.0 a2a24b2f

Pull requests merged

  • Merge pull request #4255 from blockchain/release/202206.2.3 25eb26d8
    • Merge pull request #4251 from blockchain/release/202206.2.2 0b14ce00
    • Merge pull request #4250 from blockchain/release/202206.2.1 ba18434b
    • Merge pull request #4160 from blockchain/release/202206.2.0 ccd4d061
    • Merge pull request #4212 from blockchain/cherry-pick/user-deletion a2b3474a

Generated with git-changelog. If you have any problems or suggestions, create an issue. :) Thanks

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics