Skip to content

Commit

Permalink
Cloud backup flow (#5348)
Browse files Browse the repository at this point in the history
* [APP-1051]: (feat): add backups global config (#5306)

* (feat): add backups global config

* stash

* add migration for setting initial backup method

* add method to migrations array

* revert pbx change

* change backup status value

* chore: hide testnet settings (#5308)

* remote testnet settings

* trying this

* switch to breadcrumbs (#5309)

* switch to breadcrumbs

* change to debug calls

* . (#5311)

* bump version to v1.9.14 (#5312)

* [APP-1052]: Add icon to Settings depending on `preferredBackupMethod` and `backupStatus` (#5313)

* [APP-1052]: (feat): adjust settings page row

* fix migration and hook for useWallets

* simplify an if statement

* chore: fix CI (#5307)

* disable deeplinks jest tests

* try this

* disable

* oop

* anotha 1

* oop

* swap changes

* e2e for swap flow changes

* testing

* yes

* revert file names

* yup

* audit: follow-redirects (#5323)

* audit mmkv (#5325)

* wallets and backups screen progress (#5315)

* wallets and backups screen progress

* manual backups progress

* progress

* feat(backups): more work on wallets and backups

* revert pbx

* rev init wallet change

* final touches on wallets and backup view

* f (#5327)

* bump react-native-linear-gradient (#5328)

* CHANGE: upgrade camera package to react-native-vision-camera FIX: [APP-171], [APP-776] (#5178)

* init

* init

* more

* GRR!!! BARK BARK

* fixes

* revert

* fix

* changes

* changes

* hoist

* hook

* comment

* fix

* i actually did it

* cleanup 1

* get android build working

* remove old package

* move back to hook

* .

* .

* .

* build

* build fix

* provisioning profiles

* bump ios version

* .

* .

* oops

* language change

* final fixes

* Update project.pbxproj

---------

Co-authored-by: Ben Goldberg <bengoldberg@rainbow.me>
Co-authored-by: skylarbarrera <skylar.barrera@gmail.com>

* [APP-925]: Backend Driven Cards (#5198)

* add experimental flag for remote cards (#5196)

* [APP-929]: Add `RemoteCardProvider` and react-query calls (#5197)

* add card and cardCollection to arc

* rm logs

* [APP-930]: Add `<RemoteCard />` component (#5203)

* start progress on remote card

* update remote card

* [APP-932]: Add `<RemoteCardCarousel />` component (#5205)

* added card carousel to wallet and discover screen

* update card and package

* tweaks to make carousel fit in

* update styles

* idkwtfiad

* disable scroll when only one card is present and adjust view dimensions size based on card length

* .

* fix layout issues

* remove unused debuglayout

* fix card and re-enable check to not show cards again

* Apply suggestions from code review

* tweak discover page

* add some testing edge cases

* add remote config stuff

* fix graphql schema

* code review changes

* change to new remote config hook

* fix remote config

* new design

* start with view weekly earnings flow

* progress on points breakdown from last week

* Delete ios/.xcode.env.local

* Update src/components/asset-list/RecyclerAssetList2/core/ViewDimensions.tsx

* Update src/components/asset-list/RecyclerAssetList2/core/getLayoutProvider.tsx

* Apply suggestions from code review

* chore: rm snap carousel

* Update shim.js

* finish earnings screen

* finish spec

* adjust gutter size depending on how many cards are in the carousel

* clean unused import

* fix font weight on android and conditionally wrap remote card if primary button has action

* fix recycler list view blank space for watched wallets

* adjust card to prev card on dismissal

* fix text formatting

* fix: lint

* change gutter size

* fix text truncation

* fix ios touch event overlap

* fix: disable hiding cards in dev

* Update src/components/cards/remote-cards/RemoteCardProvider.tsx

* weekly earnings fix and leaderboard diff (#5330)

* fix weekly earnings total

* leaderboard ranking diff

* Update src/screens/points/content/PointsContent.tsx

Co-authored-by: Matthew Wall <matthew.wallt@gmail.com>

---------

Co-authored-by: Matthew Wall <matthew.wallt@gmail.com>

* filter & reduce

---------

Co-authored-by: Ben Goldberg <bengoldberg@rainbow.me>
Co-authored-by: skylarbarrera <skylar.barrera@gmail.com>

* bump: fastlane (#5331)

* Points: rank card fixes (#5332)

* fixes

* fix ens display

* Points: notifications toggle (#5329)

* cleanup unused stuff and progress on backups flow

* rename points topic (#5334)

* rename points topic

* Update constants.ts

---------

Co-authored-by: Skylar Barrera <skylar.barrera@gmail.com>

* backups: warning + new secret phrase styles (#5322)

* save progress

* cleanup and finish secret phrase / private key viewiing screens

---------

Co-authored-by: Matthew Wall <matthew.wallt@gmail.com>

* chore: cleanup WalletsAndBackup settings screen and replace lang with i18n

* bump minSdkVersion (#5337)

* android settings fixes

* progress on cloud backup flow

* cloud backup flow progress

---------

Co-authored-by: Skylar Barrera <skylar.barrera@gmail.com>
Co-authored-by: brdy <41711440+BrodyHughes@users.noreply.github.com>
Co-authored-by: Ibrahim Taveras <ibrahim@rainbow.me>
Co-authored-by: Ben Goldberg <bengoldberg@rainbow.me>
  • Loading branch information
5 people committed Jan 26, 2024
1 parent 2ebf045 commit 2370bfc
Show file tree
Hide file tree
Showing 134 changed files with 5,692 additions and 2,068 deletions.
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,17 @@ and this project adheres to [Semantic Versioning](http://semver.org/)

### Fixed

## [1.9.13] (https://github.com/rainbow-me/rainbow/releases/tag/v1.9.13)

### Added

- More translations for newer features (#5292)

### Changed

- Remove testnet option from developer settings (#5308)
- Update what logs get sent to sentry (#5309)

## [1.9.12] (https://github.com/rainbow-me/rainbow/releases/tag/v1.9.12)

### Added
Expand Down
4 changes: 2 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -152,8 +152,8 @@ android {
applicationId "me.rainbow"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 200
versionName "1.9.13"
versionCode 201
versionName "1.9.14"
missingDimensionStrategy 'react-native-camera', 'general'
renderscriptTargetApi 23
renderscriptSupportModeEnabled true
Expand Down
3 changes: 3 additions & 0 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@
android:requestLegacyExternalStorage="true"
android:resizeableActivity="false"
>
<meta-data
android:name="com.google.mlkit.vision.DEPENDENCIES"
android:value="barcode" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@mipmap/ic_state_ic_notification"
Expand Down
8 changes: 4 additions & 4 deletions android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ buildscript {

ext {
buildToolsVersion = "33.0.0"
minSdkVersion = 21
minSdkVersion = 26
compileSdkVersion = 33
targetSdkVersion = 33
ndkVersion = "23.1.7779620"
kotlin_version = "1.6.20"
kotlinVersion = "1.6.20"
kotlin_version = "1.7.21"
kotlinVersion = '1.7.21'
androidXCore = "1.6.0"
}

Expand All @@ -27,7 +27,7 @@ buildscript {
dependencies {
classpath("com.android.tools.build:gradle")
classpath("com.facebook.react:react-native-gradle-plugin")
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.21"
classpath("de.undercouch:gradle-download-task:5.0.1")
classpath 'com.google.gms:google-services:4.3.15'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
Expand Down
8 changes: 4 additions & 4 deletions e2e/deeplinks.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ describe('Deeplinks spec', () => {
await testEthereumDeeplink(url, false);
});

it('should be able to handle ethereum payments urls for ETH (optimism)', async () => {
it.skip('should be able to handle ethereum payments urls for ETH (optimism)', async () => {
const url = escapeUrl('ethereum:payment-brunobarbieri.eth@10?value=1e15');
await testEthereumDeeplink(url, false);
});
Expand All @@ -130,14 +130,14 @@ describe('Deeplinks spec', () => {

// FIXME: when doing open deeplinks with cold start, the account assets state
// comes back empty, find a fix and then change these tests to cold-start again
it('should be able to handle ethereum payments urls for ETH (arbitrum)', async () => {
it.skip('should be able to handle ethereum payments urls for ETH (arbitrum)', async () => {
const url = 'ethereum:payment-brunobarbieri.eth@42161?value=1e15';
await testEthereumDeeplink(url, false);
});

// FIXME: when doing open deeplinks with cold start, the account assets state
// comes back empty, find a fix and then change these tests to cold-start again
it('should be able to handle ethereum payments urls for DAI (optimism)', async () => {
it.skip('should be able to handle ethereum payments urls for DAI (optimism)', async () => {
const url = escapeUrl(
'ethereum:0xda10009cbd5d07dd0cecc66161fc93d7c9000da1@10/transfer?address=brunobarbieri.eth&uint256=1e15'
);
Expand All @@ -146,7 +146,7 @@ describe('Deeplinks spec', () => {

// FIXME: when doing open deeplinks with cold start, the account assets state
// comes back empty, find a fix and then change these tests to cold-start again
it('should be able to handle ethereum payments urls for MATIC (polygon)', async () => {
it.skip('should be able to handle ethereum payments urls for MATIC (polygon)', async () => {
const url = escapeUrl('ethereum:payment-brunobarbieri.eth@137?value=1e15');
await testEthereumDeeplink(url, false);
});
Expand Down
10 changes: 5 additions & 5 deletions e2e/discoverSheetFlow.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -111,11 +111,11 @@ describe('Discover Screen Flow', () => {
await Helpers.delay(3000);
await Helpers.checkIfVisible('favorites-0');
await Helpers.checkIfVisible('verified-1');
await Helpers.checkIfVisible('profiles-2');
await Helpers.checkIfVisible('highLiquidity-3');
await Helpers.checkIfExists('profiles-2');
await Helpers.checkIfExists('highLiquidity-3');
});

it('Should search and open Profile Sheet for rainbowwallet.eth', async () => {
it.skip('Should search and open Profile Sheet for rainbowwallet.eth', async () => {
await Helpers.waitAndTap('discover-search-clear-input');
await Helpers.typeText(
'discover-search-input',
Expand All @@ -134,11 +134,11 @@ describe('Discover Screen Flow', () => {
await Helpers.checkIfVisible('profile-sheet');
});

it('Should watch wallet from Profile sheet', async () => {
it.skip('Should watch wallet from Profile sheet', async () => {
await Helpers.waitAndTap('profile-sheet-watch-button');
});

it('Should close profile and return to Search on swiping down', async () => {
it.skip('Should close profile and return to Search on swiping down', async () => {
await Helpers.swipe('profile-sheet', 'down');
await Helpers.waitAndTap('discover-search-clear-input');
await Helpers.checkIfVisible(
Expand Down
11 changes: 11 additions & 0 deletions e2e/hardhatTransactionFlowSwaps.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ describe.skip('Hardhat Transaction Flow', () => {

it('Should be able to do a cross chain swap', async () => {
await Helpers.waitAndTap('swap-button');
await Helpers.tap('exchange-modal-input-selection-button');
await Helpers.typeText('currency-select-search-input', 'DAI', true);
await Helpers.waitAndTap(
'currency-select-list-exchange-coin-row-DAI-token'
Expand Down Expand Up @@ -129,6 +130,7 @@ describe.skip('Hardhat Transaction Flow', () => {
it('Should be able to do a bridge', async () => {
await Helpers.swipe('profile-screen', 'left', 'slow');
await Helpers.waitAndTap('swap-button');
await Helpers.tap('exchange-modal-input-selection-button');
await Helpers.typeText('currency-select-search-input', 'USDC', true);
await Helpers.waitAndTap(
'currency-select-list-exchange-coin-row-USDC-token'
Expand Down Expand Up @@ -163,6 +165,7 @@ describe.skip('Hardhat Transaction Flow', () => {

it('Should be able to search random tokens (like SWYF) via address and swap them', async () => {
await Helpers.waitAndTap('swap-button');
await Helpers.tap('exchange-modal-input-selection-button');
await Helpers.checkIfVisible('currency-select-list');
await Helpers.waitAndTap(
'currency-select-list-exchange-coin-row-ETH-token'
Expand Down Expand Up @@ -204,6 +207,7 @@ describe.skip('Hardhat Transaction Flow', () => {

it('Should be able to wrap ETH -> WETH', async () => {
await Helpers.tap('swap-button');
await Helpers.tap('exchange-modal-input-selection-button');
await Helpers.checkIfVisible('currency-select-list');
await Helpers.tap('currency-select-list-exchange-coin-row-ETH-token');
await Helpers.checkIfVisible('exchange-modal-input');
Expand Down Expand Up @@ -231,6 +235,7 @@ describe.skip('Hardhat Transaction Flow', () => {
});
it('Should be able to unwrap WETH -> ETH', async () => {
await Helpers.tap('swap-button');
await Helpers.tap('exchange-modal-input-selection-button');
await Helpers.checkIfVisible('currency-select-list');
await Helpers.typeText('currency-select-search-input', 'WETH', true);
await Helpers.tap('currency-select-list-exchange-coin-row-WETH-token');
Expand Down Expand Up @@ -258,6 +263,7 @@ describe.skip('Hardhat Transaction Flow', () => {
});
it('Should swap WETH -> DAI including approval (via tokenToToken)', async () => {
await Helpers.tap('swap-button');
await Helpers.tap('exchange-modal-input-selection-button');
await Helpers.checkIfVisible('currency-select-list');
await Helpers.typeText('currency-select-search-input', 'WETH', true);
await Helpers.tap('currency-select-list-exchange-coin-row-WETH-token');
Expand Down Expand Up @@ -286,6 +292,7 @@ describe.skip('Hardhat Transaction Flow', () => {

it('Should swap DAI -> USDC (via tokenToTokenWithPermit)', async () => {
await Helpers.tap('swap-button');
await Helpers.tap('exchange-modal-input-selection-button');
await Helpers.checkIfVisible('currency-select-list');
await Helpers.typeText('currency-select-search-input', 'DAI', true);
await Helpers.tap('currency-select-list-exchange-coin-row-DAI-token');
Expand Down Expand Up @@ -314,6 +321,7 @@ describe.skip('Hardhat Transaction Flow', () => {

it('Should swap DAI -> ETH (via tokenToETH)', async () => {
await Helpers.tap('swap-button');
await Helpers.tap('exchange-modal-input-selection-button');
await Helpers.checkIfVisible('currency-select-list');
await Helpers.typeText('currency-select-search-input', 'DAI', true);
await Helpers.tap('currency-select-list-exchange-coin-row-DAI-token');
Expand Down Expand Up @@ -341,6 +349,7 @@ describe.skip('Hardhat Transaction Flow', () => {

it('Should swap ETH -> USDC (via ethToToken)', async () => {
await Helpers.tap('swap-button');
await Helpers.tap('exchange-modal-input-selection-button');
await Helpers.checkIfVisible('currency-select-list');
await Helpers.tap('currency-select-list-exchange-coin-row-ETH-token');
await Helpers.checkIfVisible('exchange-modal-input');
Expand All @@ -367,6 +376,7 @@ describe.skip('Hardhat Transaction Flow', () => {
});
it('Should swap USDC -> WETH (via tokenToTokenWithPermit)', async () => {
await Helpers.tap('swap-button');
await Helpers.tap('exchange-modal-input-selection-button');
await Helpers.checkIfVisible('currency-select-list');
await Helpers.typeText('currency-select-search-input', 'USDC', true);
await Helpers.tap('currency-select-list-exchange-coin-row-USDC-token');
Expand Down Expand Up @@ -394,6 +404,7 @@ describe.skip('Hardhat Transaction Flow', () => {

it('Should swap USDC -> ETH (via tokenToETH)', async () => {
await Helpers.tap('swap-button');
await Helpers.tap('exchange-modal-input-selection-button');
await Helpers.checkIfVisible('currency-select-list');
await Helpers.typeText('currency-select-search-input', 'USDC', true);
await Helpers.tap('currency-select-list-exchange-coin-row-USDC-token');
Expand Down
4 changes: 2 additions & 2 deletions e2e/homeScreen.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ describe('Home Screen', () => {

it('tapping "Swap" opens the swap screen', async () => {
await Helpers.waitAndTap('swap-button');
await Helpers.checkIfVisible('currency-select-list');
await Helpers.swipe('currency-select-list', 'down');
await Helpers.checkIfExists('exchange-modal-input-selection-button');
await Helpers.swipe('exchange-modal-notch', 'down', 'slow');
});

it('tapping "Send" opens the send screen', async () => {
Expand Down
2 changes: 1 addition & 1 deletion e2e/newWalletFlow.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ describe('New Wallet flow', () => {
// Confirm it
await Helpers.authenticatePin('1234');
}
await Helpers.checkIfVisible('wallet-screen', 40000);
await Helpers.checkIfVisible('wallet-screen', 200000);
await Helpers.enableSynchronization();
});

Expand Down
9 changes: 9 additions & 0 deletions e2e/swapSheetFlow1.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ describe('Swap Sheet Interaction Flow', () => {
// marking the test as SKIP for now
it.skip('Should go to swap and open review sheet on mainnet swap', async () => {
await Helpers.waitAndTap('swap-button');
await Helpers.tap('exchange-modal-input-selection-button');
await Helpers.typeText('currency-select-search-input', 'DAI', true);
await Helpers.tap('currency-select-list-exchange-coin-row-DAI-token');
await Helpers.waitAndTap('exchange-modal-input-max');
Expand All @@ -93,6 +94,7 @@ describe('Swap Sheet Interaction Flow', () => {
// button
it.skip('Should go to swap and open review sheet on optimism swap', async () => {
await Helpers.waitAndTap('swap-button');
await Helpers.tap('exchange-modal-input-selection-button');
await Helpers.typeText('currency-select-search-input', 'OP', true);
await Helpers.tap('currency-select-list-exchange-coin-row-OP-optimism');
await Helpers.waitAndTap('exchange-modal-input-max');
Expand All @@ -119,6 +121,7 @@ describe('Swap Sheet Interaction Flow', () => {
// button
it.skip('Should go to swap and open review sheet on polygon swap', async () => {
await Helpers.waitAndTap('swap-button');
await Helpers.tap('exchange-modal-input-selection-button');
await Helpers.typeText('currency-select-search-input', 'DAI', true);
await Helpers.tap('currency-select-list-exchange-coin-row-DAI-polygon');
await Helpers.waitAndTap('exchange-modal-input-max');
Expand All @@ -145,6 +148,7 @@ describe('Swap Sheet Interaction Flow', () => {
// button
it.skip('Should go to swap and open review sheet on arbitrum swap', async () => {
await Helpers.waitAndTap('swap-button');
await Helpers.tap('exchange-modal-input-selection-button');
await Helpers.typeText('currency-select-search-input', 'DAI', true);
await Helpers.tap('currency-select-list-exchange-coin-row-DAI-arbitrum');
await Helpers.waitAndTap('exchange-modal-input-max');
Expand All @@ -170,6 +174,7 @@ describe('Swap Sheet Interaction Flow', () => {
it.skip('Should display currency selection screen on swap-button press', async () => {
await Helpers.checkIfVisible('wallet-screen');
await Helpers.waitAndTap('swap-button');
await Helpers.tap('exchange-modal-input-selection-button');
await Helpers.checkIfVisible('currency-select-list');
});

Expand Down Expand Up @@ -272,6 +277,7 @@ describe('Swap Sheet Interaction Flow', () => {
// FIXME: Dependent on a state from the previous test
it.skip('Should clear inputs when typing a number in inputs and then clearing it', async () => {
await Helpers.waitAndTap('swap-button');
await Helpers.tap('exchange-modal-input-selection-button');
await Helpers.checkIfVisible('currency-select-list');
await Helpers.tap('currency-select-list-exchange-coin-row-ETH-token');
await Helpers.checkIfVisible('exchange-modal-input');
Expand Down Expand Up @@ -315,6 +321,7 @@ describe('Swap Sheet Interaction Flow', () => {
// FIXME: Dependent on a state from the previous test
it.skip('Should clear inputs when typing a number in inputs and then clearing it optimism', async () => {
await Helpers.waitAndTap('swap-button');
await Helpers.tap('exchange-modal-input-selection-button');
await Helpers.checkIfVisible('currency-select-list');
await Helpers.typeText('currency-select-search-input', 'ETH\n', true);
await Helpers.tap('currency-select-list-exchange-coin-row-ETH-optimism');
Expand Down Expand Up @@ -351,6 +358,7 @@ describe('Swap Sheet Interaction Flow', () => {
// FIXME: Dependent on a state from the previous test
it.skip('Should clear inputs when typing a number in inputs and then clearing it arbitrum', async () => {
await Helpers.waitAndTap('swap-button');
await Helpers.tap('exchange-modal-input-selection-button');
await Helpers.checkIfVisible('currency-select-list');
await Helpers.typeText('currency-select-search-input', 'ETH\n', true);
await Helpers.tap('currency-select-list-exchange-coin-row-ETH-arbitrum');
Expand All @@ -371,6 +379,7 @@ describe('Swap Sheet Interaction Flow', () => {
// FIXME: Dependent on a state from the previous test
it.skip('Should clear inputs when typing a number in inputs and then clearing it polygon', async () => {
await Helpers.waitAndTap('swap-button');
await Helpers.tap('exchange-modal-input-selection-button');
await Helpers.checkIfVisible('currency-select-list');
await Helpers.typeText('currency-select-search-input', 'WETH', true);
await Helpers.tap('currency-select-list-exchange-coin-row-WETH-polygon');
Expand Down

0 comments on commit 2370bfc

Please sign in to comment.