Skip to content

Commit

Permalink
Profiles: Checkpoint (#3431)
Browse files Browse the repository at this point in the history
* Profiles: improve ens search (#3120)

* fetch avatar when searching

* seach up to 8

* use ens records enum

* check profiles enabled

* profiles enabled

* Profiles: Log upload image errors (#3173)

* Profiles: phase two final review comments (#3176)

* #2979

* #2979

* ens records lang

* #2979

* #2979

* use getENSRegistrarControllerContract

* tweak paddings and register screen

* export and remove

* Profiles: Only show ENS on-chain data warning once per user (#3170)

* Save onchain data disclaimer state

* Fixes

* Profiles: merge ens phase 2 (#3178)

* Refactor postinstall.sh to reduce code duplication and improve error handling (#3132)

* Refactor postinstall.sh to reduce code duplication and improve error handling

* Clean whitespace

* Fix broken line break

* Fix possibility to scroll with scroll indicator on unique asset image preview (#3150)

Co-authored-by: Jakub Adamczyk <jakub@rainbow.me>

* Remove smile emoji from label (#3160)

* Profiles: adjust confirm screen in small screens (#3163)

* Countdown Timer Component for ENS registration (#3158)

* Countdown Timer Component for ENS registration

* codeowners + change export

* convert components to TS + DS

* Fix hourglass animation on android

* address PR comments (#3171)

* exclude pin creation for isReadOnly mode (#3161)

* Update audit-ci allowlist (#3175)

Co-authored-by: jinchung <jin.chung17@gmail.com>

* Profiles: Log upload image errors (#3173)

* Profiles: phase two final review comments (#3176)

* #2979

* #2979

* ens records lang

* #2979

* #2979

* use getENSRegistrarControllerContract

* tweak paddings and register screen

* export and remove

Co-authored-by: Tomasz Czajęcki <tomek.czajecki@gmail.com>
Co-authored-by: Jakub Adamczyk <jkk.adamczyk@gmail.com>
Co-authored-by: Jakub Adamczyk <jakub@rainbow.me>
Co-authored-by: Wojtek Witkowski <hi@wojtek.im>
Co-authored-by: moxey.eth <jakemoxey@gmail.com>
Co-authored-by: Taras Perun <48593211+perunt@users.noreply.github.com>
Co-authored-by: Bruno Barbieri <brunobar79@gmail.com>
Co-authored-by: jinchung <jin.chung17@gmail.com>

* Update ProfileSheet header (#3174)

* Profiles: Fix keyboard inconsistencies (#3169)

* fix keyboard issues

* Fixes

* fix android crash

* Profiles: Fallback to ENS metadata API when OpenSea metadata not available yet (#3148)

* Add fallback for ENS metadata

* refactor

* refactor

* Fix

* Profiles: Misc fixes (#3193)

* fix keyboard issues

* Fixes

* fix android crash

* RNBW-3263

* RNBW-3251

* Fixes

* More fixes

* Fix

* remove hideAvatar

* Update confirm sheet ui (#3197)

* Profiles: additional records sheet (#3172)

* add routes and additional records wip

* additional records

* default config sheet

* add more records

* TextEncoder polyfill

* content hash validations

* adjust height

* move validation to one method

* move import fast-text-encoding

* typo

* isPrimaryDisplayRecord

* dotsButtonIsSelected

* handle additional ens sheet height

* lint

* fix bad renaming

* get fixed values with getENSRegistrationGasLimit

* remove expired incomplete ens registrations (#3167)

* Profiles: separate data for incomplete profiles by ens name (#3182)

* Profiles: several bug fixes (#3190)

* RNBW-3264

* RNBW-3263

* RNBW-3241

* RNBW-3223

* do not show empty avatar in pending registrations

* RNBW-3224

* fixit

* add option to extend any ens name

* rename from comments

* add recordKeysWithValue

* Profiles: ens navigator horizontal swipe (#3205)

* enable stack swipe if name available

* fix is testing

* Profiles: improve gas handling (#3183)

* get fixed values with getENSRegistrationGasLimit

* usequeries for each tx

* working

* estimate gas txs

* use recoil to store gas validation

* commit working

* do not update fee on confirm

* update records

* step gas limit working

* edit working

* renew working

* records

* getQueryData refactor

* getGasParams

* get gas params

* Revert "get gas params"

This reverts commit b9bbc91.

* Revert "getGasParams"

This reverts commit 03d4948.

* Revert "getQueryData refactor"

This reverts commit f58e05f.

* handle gas updates in background

* use query all around

* fix insufficient ETH in commit

* remove gas params request

* use reverse record from hook

* remove recoil

* merge

* istesting

* Profiles: 60 secs wait from COMMIT tx (#3113)

* check 60 secs passed on a block level:

* ens wait back to 60 secs again

* a bit cleanerr

* ready to register if IS_TESTING

* check tests

* add comments

* promise all

* getBlockMsTimestamp

* Drop metadata.ens.domains fallback in favour of The Graph + ImgixImg (#3211)

* Profiles: primary ens name explainer sheet (#3191)

* ENS Profile zoomable images (#3184)

* Update header

* Extend ImagePreviewOverlay to work for multiple instances

* remove redundant animationProgress

* PR comments

* Fix

* Fixes

* Profiles: Make ordering of action buttons match order of fields (#3212)

* Make ordering of action buttons match order of fields

* oops

* Remove lines from gradient (#3222)

* Profiles: Intro Screen polishhh (#3221)

* Polish

* Revert

* Profiles: bio hyperlinks (#3218)

* get accent color in ens confirm

* add hyperlinks

* recordsDescription

* create own components

* handling links correctly

* add additional height to profile intro

* fix regex

* hyper link weight regular

* Profiles: set primary from expanded ens (#3194)

* add switch

* send to primary tx confirmation

* with explainer

* ENS Registration Steps Progress Component (#3210)

* ENS Registration Steps Progress Component

* Use accentColor

* isAnimatingFill change

* add paddings

* Revert "isAnimatingFill change"

This reverts commit d1408d3.

* use magic memo + padding

* step

Co-authored-by: Esteban Miño <efmino@uc.cl>

* Profiles: intro screen updates (#3219)

* use primary name if any

* add context menu

* lang

* magnifyingglass.circle

* add missing util

* Profiles polish (#3225)

* fetch account ens in register ens section

* revalidateCollectibleInBackground only for unknown ens

* remove staletime

* Profiles: merge phase 2 to phase 3 (#3227)

* merge

* import text

* add line to auditci

* remove old ens

* remove old ens

* usePersistentDominantColorFromImage with lowResUrl

* Fix ENS NFT regressions (#3230)

Co-authored-by: moxey.eth <jakemoxey@gmail.com>

* Profiles: fix unintended side effects of TokenInfoItem changes (#3228)

* Fix zoomable images on intro screen (#3231)

* Profiles: Choose NFT as cover photo (#3232)

* WIP

* WIP

* WIP

* WIP

* Fixes

* Profiles: Various fixes (#3239)

* Fix

* Fix

* Profiles: improve ens discovery (#3240)

* Profiles: don't normalize search input display text (#3226)

* Pulsing checkmark when visible for more than 2s (#3251)

* Profiles: improve costs hook (#3238)

* wip

* add memos

* revert some changes

* more cleanup

* sign fix

* use step in ens search costs hook

* use step in ens search costs hook

* Profiles: more fixes (#3252)

* more fixes

* use accent color when speed up correctly

* enable watcher

* add ens_domain

* rm fix

* Fix scroll issues (#3257)

* Profiles: final flows e2e (#3248)

* Refactor postinstall.sh to reduce code duplication and improve error handling (#3132)

* Refactor postinstall.sh to reduce code duplication and improve error handling

* Clean whitespace

* Fix broken line break

* Fix possibility to scroll with scroll indicator on unique asset image preview (#3150)

Co-authored-by: Jakub Adamczyk <jakub@rainbow.me>

* Remove smile emoji from label (#3160)

* Profiles: adjust confirm screen in small screens (#3163)

* Countdown Timer Component for ENS registration (#3158)

* Countdown Timer Component for ENS registration

* codeowners + change export

* convert components to TS + DS

* Fix hourglass animation on android

* address PR comments (#3171)

* exclude pin creation for isReadOnly mode (#3161)

* Update audit-ci allowlist (#3175)

Co-authored-by: jinchung <jin.chung17@gmail.com>

* Profiles: Log upload image errors (#3173)

* Fix blank charts (#3107)

* Do not rerender chart if it's empty

* make linter happy

* Add additional memo

* Profiles: phase two final review comments (#3176)

* #2979

* #2979

* ens records lang

* #2979

* #2979

* use getENSRegistrarControllerContract

* tweak paddings and register screen

* export and remove

* Bump moment from 2.29.1 to 2.29.2 (#3177)

* Fedora V1  (#3149)

* Fix vulnerability in 2.x async (#3186)

* update sendable check (#3165)

* update sendable check

* add erc721 to sendable nft types

* Add Fedora branch indicator (#3185)

* add another async vuln (#3198)

* Bump ios and android version; update CHANGELOG (#3195)

* Update audit deps (#3202)

* image handling fixes + refactor (#3188)

* getFullSIzeUrl + low res size tweaks

* handleAndSIgnImages in parsing

* better option handling

* rm legacy logic

* tweak poap to match

* rm legacy size props

* ts

* rm extra logic and use lowResUrls

* revert poap change oops

* readd for background

* lowRes for blurWrapper & color fallback

* Fix: android disconnecting messages (#3189)

* get meta from route

* useeffect

* add android specific

* handle repeated uris

* Fix sky06 color (rgb → rgba) (#3208)

* Do not remount rows of RecyclerListView (#3207)

* Do not remount rows of RecyclerListView

* Bring back assertNever

* kidding me?

* Update rebase (#3214)

* Update rebase.yml (#3216)

* Profiles: 60 secs wait from COMMIT tx (#3113)

* check 60 secs passed on a block level:

* ens wait back to 60 secs again

* a bit cleanerr

* ready to register if IS_TESTING

* check tests

* add comments

* promise all

* getBlockMsTimestamp

* Update audit-ci.json (#3223)

* @tchayen/fix swap gesture on expanded asset (#3187)

* Fix swap gesture on expanded asset

* Apply fix the real cause of the issue

Co-authored-by: osdnk <micosa97@gmail.com>

* add missing util

* ignore async vuln which was already patched (#3229)

* Revert "Do not remount rows of RecyclerListView (#3207)"

This reverts commit 48a540c.

* we got an ens (#3234)

* wip

* save OG image url and fix polygon imgs

* add memos

* revert some changes

* more cleanup

* use MD5 through JSI with react-native-quick-md5 (#3224)

* Finish Sentry Performance setup (#3181)

* sign fix

* use step in ens search costs hook

* use step in ens search costs hook

* sign fix

* use step in ens search costs hook

* use step in ens search costs hook

* REVERT PATCH COMMENT

* rm is_testing ui conditions

* REVERT RM ALL E2E BUT PROFILES

* start from intro screen

* divide hook for registration step and other for actions

* working locally

* lintt

* marquee actions

* confirming records

* logs

* tap by text

* going to ENS nft

* set as primary name from expanded state

* remove avatar from flow for bitrise

* add renew flow

* maybe bitrise?

* lint

* fix lint

* Choose NFT

* add discover and taking out avatar from registration flow

* add avatar anyways, passing locally

* Revert "REVERT PATCH COMMENT"

This reverts commit 58dde25.

* Revert "REVERT RM ALL E2E BUT PROFILES"

This reverts commit 958c782.

* missing avatar

* use accent color when speed up correctly

* rollback useSelectImageMenu

Co-authored-by: Tomasz Czajęcki <tomek.czajecki@gmail.com>
Co-authored-by: Jakub Adamczyk <jkk.adamczyk@gmail.com>
Co-authored-by: Jakub Adamczyk <jakub@rainbow.me>
Co-authored-by: Wojtek Witkowski <hi@wojtek.im>
Co-authored-by: moxey.eth <jakemoxey@gmail.com>
Co-authored-by: Taras Perun <48593211+perunt@users.noreply.github.com>
Co-authored-by: Bruno Barbieri <brunobar79@gmail.com>
Co-authored-by: jinchung <jin.chung17@gmail.com>
Co-authored-by: Terry Sahaidak <tasssik@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Michał Osadnik <micosa97@gmail.com>
Co-authored-by: Skylar Barrera <skylar.barrera@gmail.com>
Co-authored-by: Christian Baroni <christianbaroni@me.com>

* Profiles: improve registrations fetch (#3259)

* query for fetchImages

* types

* dault to localstorage while loading

* put primary ens at begining

* fast af

* Add ability to remove contact from profile sheet (#3258)

* Fix text record field state (#3256)

* Profiles: clear current registration name when RegisterENSNavigator unmounts (#3244)

* Profiles: tweak isLoading conditions in useENSRegistrationForm (#3250)

* Profiles: performance improvements and stuff (#3263)

* use images directly from resolved in useENSProfile

* useMemo for initial values

* disable swipe in ens navigator

* REVERT enable ens for watch wallets

* Revert "use images directly from resolved in useENSProfile"

This reverts commit b9b96a8.

* show all records in profile

* use coin addresses and memo for values

* only fetch records and coin addresses that we support

* divide hooks to avoid duplication of calculations and redux calls

* query only records in assign records

* isloading condition

* handle navigation goback

* handle labels

* Revert "REVERT enable ens for watch wallets"

This reverts commit 383e1ab.

* rollback hook isloading change

* rename useENSAssignRegistration to useENSModifiedRegistration

* ens records

* ens records

* Profiles: fix NFTs recycler list scroll handler in profiles sheet (#3266)

* rm scroll handler

* Fix

Co-authored-by: moxey.eth <jakemoxey@gmail.com>

* Profiles: Improve watch/unwatch flow (#3265)

* Improve watch/unwatch flow

* Update WatchButton.tsx

* Profiles polish (#3269)

* Improve GIF playback speed on ProMotion devices

Bumps react-native-fast-image's SDWebImage dependency to include this change: SDWebImage/SDWebImage#3280

There's still an issue where if a GIF is in a sheet and you're dragging the sheet, the speed changes while dragging, but otherwise this fixes the issue

* Update TintButton styles

* Adjust colors

* Remove SearchFab

* Clean up avatar, cover styles

* Clean up discover

* Fix wallet sheet "Watching" badge positioning, improve styles

* Design system: add sizing, spacing values

* Design system: adjust shadows and text, add text sizes

* Clean up profiles

* owner = registrant, manager = controller

* Clean up copy

* Fix ActionButton types

* Account for reversed colors in lightGreyTransparent gradient

* Polish intro screen, SelectENSSheet

* Remove unused ColorModeProvider

* Clean up discover search, ENS avatar shadows

* Fix send contact list scrollview bounds

KeyboardArea height was wrong, was causing watched wallets to be cut off by the keyboard

* Fix swap button color regression

Caused by https://github.com/rainbow-me/rainbow/pull/2989/files#diff-5408fa5b27b810b3ad4777e8659d9dc65f602f803134286fe1bac59167397c71R314

* Improve profiles status bar handling

Fixes most cases where the status bar displays in the wrong color

* Polish search component

* Adjust gas button fee copy

* Clean up ENS search screen

* Clean up create profile screen, reorder records

* Partially clean up confirm registration sheets

* Add more intro screen wallets

* Adjust intro screen content layout, fix MaskedView type warning

* Improve profiles sheet transitions

* Disable shortForm profile preview sheet after transition to longForm, adjust height

* Fix Telegram record

* Clean up ENS expanded state

* Don't goBack() when editing an ENS name from the NFT expanded state

* Fix missing NFT expanded state background images

lowResUrl is more predictably a standard image file

* Remove unused isENS on ZoomableWrapper

* Fix ZoomableWrapper status bar handling

* Prevent pinch to enter ZoomableWrappers on profiles

* Use blurred background image in ImagePreviewOverlay, position overlay properly within sheets

* Make sure ZoomableWrapper GestureBlocker covers the screen

Fixes a bug where you could dismiss the sheet from the zoomed state of ZoomableWrapper by dragging from certain points

* Remove unnecessary zIndex transition

Seems to make the animation slightly less smooth, behavior is otherwise the same with or without this being set

* Make ZoomableWrapper pan speed consistent

Previously wasn't accounting for differing scale factors

* Set ZoomableWrapper bounds correctly within sheets

* Design system: use hex codes for solid colors

* Match disabled step button color to spec

* lint

* comments

Co-authored-by: Esteban Miño <efmino@uc.cl>

* Profiles: last bugs (#3274)

* fix wrong accent color in confirm when selecting an image

* clear name from confirm register sheet

* ens assign records scrollable again

* correct label when creating and editing

* Fixup design system `Box` usage (#3275)

* Fix issue where field would clear when navigating to confirm screen (#3276)

* Profiles: ens profile go to NFTs from avatar / cover (#3272)

* WIP

* revert podfile

* handle presss cover and avatar

* lint

* avatar / cover fade in

* smooth

* label on create / edit profile

* divide usememo

Co-authored-by: moxey.eth <jakemoxey@gmail.com>

* Profiles: reorder records and add coins to profile (#3273)

* reorder

* hhandle addresses ub orifukes/;

* Profiles: UI fixes (#3262)

* remove search sheet divider if there are no pending registrations

* change 'expires in' to 'expires on' when ens expanded state expiry item displays the expiration date instead of duration

Co-authored-by: Esteban Miño <efmino@uc.cl>

* Profiles: autopopulate ens name and avatar when adding contact (#3264)

* Profiles: more tweaks (#3278)

* fix avatar image in previe

* show primary name switch only in imported wallets

* fix explainer

* confirm sheet heights

* get images urls on extend and set name

* load title label when there's info to show

* update e2e

* fixes

* fix avatar emojis not showing up

* profile emoji avatar

* Revert "fix avatar emojis not showing up"

This reverts commit 897ab14.

* nft setting is external correctly

* images pofile and intro

* is external only when address is different than account address

* allow ens extension in ens name

* handle gas limit for renew and external colors

* externalAvatarUrlAtom

* reset externalAvatarUrlAtom in search

* block set name if external profile

* reset external color

* fix gas estimation not valid

* clear name on confirm for set name and renew

* enable profile info section for cover

* onpress changes

* rm externalAvatarUrlAtom

* rm externalAvatarUrlAtom

* lint

* revert set name calculations

* add accent color to hourglass

Co-authored-by: Ben Goldberg <bengoldberg@rainbow.me>

* lint

* Fix flickering keyboard (#3296)

* Profiles: fix records updates lag (#3287)

* align confirm title center

* startRegistration in search before continue to the rest of flows

* fix register gas limit calculation wasn't triggering

* update query key

* rm prev dominant color

* set image accent color when there's an image

* fix back button comment

* Profiles: improve registrations in progress (#3295)

* support initial minutes and secods in large countdown clock

* use changedRecords not beounced records to estimate gas

* display remaining seconds to continue registration

* export seconds since commit confirmed

* fix profile hook isOwner

* Profiles: intro screen jump fix (#3302)

* fix jump

* use screenOptions

* assign records title and accent colors

* align contact modal + import wallet modal (#3285)

* align contact modal + import wallet modal

* image avatar tweak

* fix spacing

* view profile from send sheet contact

* tweak delete contact from send sheet

* fix send header input bug

* lint

* ts

* starting again from earlier state

* address comments

* store ens in contact

* tweak updating of ens in contacts

* fix flash of ens->contact nickname in send sheet header

* add nickname to modal

Co-authored-by: Esteban Miño <efmino@uc.cl>

* Profiles: Fix edit profile infinite loading state (#3312)

* fix issue where edit profile had infinite loading state

* PR review

* Profiles: Add better caching for ENS avatar/cover images (#3309)

* Add caching to ENS images

* PR review

* fix merge regression

* fix issue where edit profile had infinite loading state

* Prefetch images on avatar press

* lint + @types/qs

* Profiles: update analytics (#3314)

* check ens info all wallets

* names owned

* track properties

* tx actions analytics

* final event triggers

* update number of

* Profiles: e2e passing in bitrise (#3320)

* passing locally

* REVERT

* fix lint

* dont use context menu

* max priority fee

* just urgent

* discover e2e update

* Revert "REVERT"

This reverts commit 3c68acc.

* revert some changes for testing

* fix lint cycle in hooks

* lint again

* clear keychain on init

* fix zoomable wrapper undefined opacity

* e2e fixes

* send test passing

* images in send contacts suggestions

* prefetch images on send

* profiles enabled deeplink

* removing all e2e but deeplinks

* use flag value

* dont wait for matic

* Revert "removing all e2e but deeplinks"

This reverts commit eb8fc88.

* PR feedback

* Fix RAL context values (#3332)

* Profiles: Fix small device UI issues (#3346)

* Fix undefined opacity animated value

* Fix iPhone SE issues

* Fix

* Profiles: qa fixes phase three (#3347)

* update isUnknownOpenSeaENS

* fix speed up

* getProviderForNetwork

* move android stack

* rollbacks

* Fixes RNBW-3624

* Profiles: Address phase 3 PR review comments (#3338)

* Address PR feedback

* Update _french.json

* Profiles: Convert ENS sheets to TypeScript (#3341)

* Convert sheets to typescript

* Fix any type

* Convert RegisterENSNavigator to TS

* Profiles: small phones alignments fix (#3355)

* wip

* merge

* lint

* Profiles: android register crash + tweaks (#3357)

* fix authentication crash on register

* fix my ens names sheet background

* reverse record toggle

* dismiss keyboard when going to pending regiistration on android

* fix android presets

* minheight for intro screen

* lint

* Profiles: send sheet fixes (#3356)

* Profiles: Fetch recently registered ENS NFTs (#3349)

* Fetch recently registered ENS NFTs

* Fix

* return empty array

* fix

* fallback to simplehash (#3334)

* Profiles: Improve sheet styling on Android (#3359)

* Profiles: assign record sheet fixes (#3358)

* fix formatRecordsForTransaction so it doesn't filter out removal of records

* micro change

* fix bug where uploaded cover photo does not display

* Profiles: fix swap estimation + opensea link for new ens (#3362)

* Profiles: Fix intro sheet height for small devices (#3364)

* Fix sheet height for small devices

* prolly don't need context

* Profiles: More pixel pushing for small devices (#3365)

* Fix incorrect offset calculation

* Fix action sheet height for small devices

* Profiles: last qa fixes (#3361)

* pull records when editing ens

* take duration from hook instead of registration params

* fix gas estimations when setting records

* take external avatar url first to get dominant color

* take external avatar url first to get dominant color revert

* Fixes 3635

* isUnknownOpenSeaENS optional checks

* more contacts

* only use initial records

* add recipient to send header

* isempty rm

* Profiles: android Omit isPreview flag for intro screen preview profiles (#3366)

* Profiles: disable step indicator android (#3371)

* Profiles: change ENSConfirmRenewSheetHeight on android (#3372)

* Profiles: last last qa fixes (#3363)

* Profiles: Increase ENS fallback time (#3375)

* Profiles: add ENS NFT fallback to profile sheet & use `handleAndSignImages` in fallback (#3376)

* Use sign images in fallback & add fallback to profile sheet

* add .name check

Co-authored-by: Esteban Miño <efmino@uc.cl>

* Profiles: handle set primary name different flows (#3374)

* @esteban/reverse-record-fix

* remove web3Provider in handlers/ens

* use reverse record to update name

* update wallet avatars on refresh

* fetchReverseRecordWithRetry

* utils

* handle empty account address

* rm inprimary name from profile, get it on useEnsProfile instead

* fetchensavatars

* add logs

* logz

* logz

* more logs

* more logs

* more logs

* fix

* fix

* fix

* fix

* fix

* add profile flag to load state

* lint

* rm hook

* primary name is set name enabled

* remove param from fetchENSProfile

* account ens first

* fix test

* label first than ens again

* Remove send button if watching profile from a read-only wallet

* Update BTC record up to 42 characters

* Update LTC record up to 64 characters

* Profiles: more profiles (#3378)

* fix all registrations being fetched

* fix poap crash

* fix reload and change wallet

* remove ETH from initialRecords

* add gas and value validation for renew

* Profiles: records and gas fee panel updates (#3379)

* improve records

* improve gas updates

* timeouts

* back to timeout 200

* Fix cover preview overlay opacity (#3386)

* profiles: filter non owned ens (#3388)

* filter it

* ENS_SUGGESTIONS with owner

* Profiles: final review comments phase three (#3392)

* chaining and remove unused method

* get accountAddress from getState.settings

* ensSeenOnchainDataDisclaimerKey

* getWalletENSAvatars refactor

* usePendingRegistrations

* toLowerCase

* optional chaining

* oneliners ftw

* timeout and EIP155_FORMATTED_AVATAR_RECORD

* opt chaining again

* gradients.checkmarkAnimation

* selected

* remove ownerAddress

* use fetchReverseRecord instead of looup in handlers/ens

* remove updateRegistrationDuration

* rm scrollIndicatorInsets

* add afterall back

* lint

* Profiles: Fix ENS navigator on android (#3405)

* Fix ENS navigator on android

* android top style

Co-authored-by: Esteban Miño <efmino@uc.cl>

* profiles set records estimations tweaks (#3412)

* tweaksss

* CODEOWNERS

* init pr

* Fix laggy text record fields (#3422)

* Fix issue where quickly watching and unwatching wallets wouldn't unwatch the wallet (#3418)

* remvoe comment

* profiles: remove hardcoded @ in username records (#3438)

* remove$

* end of line

* prevent loading placeholder from getting cut off (#3414)

* profiles: release bugz (#3426)

* RNBW-3722

* RNBW-3741

* better profilesEnabled conditions for hooks

* refactors

* RNBW-3728

* Rework StepIndicator to stop crashing on Android (#3437)

* Profiles: add spellcheck to some record inputs  (#3442)

* Profiles: improve intro screen load performance (#3423)

* Improve intro screen load performance

* PR review

* fix lint error

* revert

* more lint

* Profiles: Fix SVG NFT avatars & filter out non-image NFTs (#3445)

* Fixup imageUrl resolution for NFT avatar/cover

* filter nfts

* filter poaps and ens

* fix blurry avatar/cover & filter out showcase

* Fix profile avatar/cover issues (#3454)

* Fix issue where expanding an NFT would sometimes produce a duplicate (#3453)

* Profiles: Fix stale text record values (#3450)

* Fix stale text record values

* add key to TextRecordsForm to force a full rerender when the ens name changes

Co-authored-by: Ben Goldberg <bengoldberg@rainbow.me>

* fix lint issues

* Prefetch ENS records before "Edit Profile" (#3458)

* Profiles: Open Wallet + Share web link for Profile menu (#3451)

* Open Wallet + Share web link for Profile menu

* Don’t reload selected wallet + cleanup

* Refactor logic with available useWatchWallet hook

* Update icon based on Christian’s feedback

* Profiles: new testflight version (#3456)

* prefetch and return error if no image resolved

* remove prefetch

* rm throw

* patch

* check profiles enabled

* fix broken merge conflict

* Fix ENS fallback when not available in subgraph yet (#3479)

* remove advanced section from ens expanded state (#3492)

* Fix ENS Registration Intro screen blank section (#3496)

* Disable Profiles sheet bounce (#3497)

* Fix edit mode default state race condition (#3501)

* Profiles: Polish set primary name flows (#3474)

* Polish set primary name flows

* lint

* PR feedback

* fix

* lint

* update explainers (#3515)

* use ens avatars in backup sheet (#3514)

* Fix issue where sending L2 asset on intro screen profile crashed app (#3517)

* disable 'Review' button until new avatar/cover has uploaded to pinata (#3518)

* Fix e2e

* fix brief blank intro profiles

* Update avatars after registration/set records (#3520)

* update react-native-pager-view (#3519)

* prevent ExpandedAssetSheet from hiding when ENS is chosen (#3524)

Co-authored-by: moxey.eth <jakemoxey@gmail.com>

* don't attempt to prefetch ens profile if nft is not an ens (#3527)

* Profiles: Limit opensea api requests (#3526)

* limit opensea api requests

* refactor

* comment

* Fix empty string crash

* Fix vulnerability:

* update lockfile

* Profiles: ENS Search Sheet improvements (#3551)

* parallelize some async operations in useENSSearch

* fix searchinput maskelement on android

* fix ens search lag

* use promise.all

* Profiles: Fix duplicate registrations (#3569)

* Fix issue where user tries to register same name again while register txn is still pending

* Fixes

* Fixes

* add lang

* Profiles: Split up `useENSProfile` into separate hooks (#3592)

* Segregate useENSProfile into separate hooks

* Fix

* More tweaks

* fix lint

* Fix issue where sending NFT would show error

* PR review

* fix .eth.eth issue (#3650)

* PR review

* fix translations merge conflict

* fix type issue

* Fix hourglass background

* Fix lint

* Fix ts

* Profiles: ENS Send Flow (#3389)

* Add ENS send flow

* Fix ENS images

* Add setAddr to action handlers

* fix empty eth address

* PR comments

* refactor

* Profiles: send ens flow gas (#3413)

* WIP

* wip

* add gas speed button to ens send confirmation sheet

* calculate cost of sending ens nft

* calculate cost of setting ens name to recipient address

* wip

* Add ENS send flow

* refactor gas estimation

* include gas cost of clearing profile records

* include gas cost of setting controller

* fix

* fix gas estimation for set name and set owner

* rework gas estimation for clear-records and set-address (clearing ETH address still broken)

* fix reset ETH record and multicall usage in setrecords gas estimation

* remove console logs

* remove merge leftovers

* clean ens name

* use add method from utilities in gasLimits reducer

* make null GasSpeedButton parameters optional

* estimateENSSetRecordsGasLimit refactor

* revert shouldUseMulticallTransaction

* get rid of shouldUseMulticall in favor of getTransactionTypeForRecords, which takes into account setAddr in addition to setText

* set padded gas flag to true

* fixes

* use records from send screen

* getRapActionTypeForTxType handler

Co-authored-by: moxey.eth <jakemoxey@gmail.com>

* PR feedback

* ENS send flow e2e (#3467)

* lint

* e2e

* e2e

* optional chaining

* fixes

* owner test commented

* uncomment some testS

* remove patch

* apply patch

* repatch

* patch

* revert

* reclaim

* downgrade react-native-fast-image to get CI to install deps

* PR feedback

* uncomment e2e

* use reclaim

* revert react-native-fast-image downgrade

* fix

* fix

* fix

* fix

* fix

* ownerAddress -> toAddress

* fix broken setAddr gas estimate

* fix ui bugz

* Fixes

* update explainer

* revert

* lint

* fix e2e

* fix lint

* fix lint

* fix nonce

* fix

* PR review

* Fix nonce issue

* add feature flag to confirmation sheet

* Fix double face id

* Fix ts

Co-authored-by: Ben Goldberg <bengoldberg@rainbow.me>
Co-authored-by: Esteban Miño <efmino@uc.cl>

* Profiles: New discover cards (#3537)

* fix e2e

* Add new discover cards, update layout

* Restore PulseIndexSection

* Update e2e testID for new profiles card

* Lint

* Fix ts errors

* Fix import ordering

* Clean up animated gwei timing function

* Update e2e to account for removed search fab

* fix e2e ids

* Fix e2e

* lil refactors & terrys comments

* update icon text hierarchy

* Get DPI asset from within handlePress

* Clean up DPICard shadows

* Clean up inline shadows, styles

* Make getColorForGwei a worklet

* Move gradient colors to theme

* fix e2e

* Fix e2e

* Fix e2e

* Fix e2e

* Add @1x, @2x discover-profiles-card images

* Add e2e coverage for ENS search card & gas card

Co-authored-by: moxey.eth <jakemoxey@gmail.com>
Co-authored-by: Christian Baroni <7061887+christianbaroni@users.noreply.github.com>

* Profiles: Checkpoint 2 (#3565)

* Profiles: Real time records validation (#3495)

* real time validations

* get rid of leftovers and add more validation error messages

* Update src/hooks/useENSRegistrationForm.ts

Co-authored-by: moxey.eth <jakemoxey@gmail.com>

* disable 'Review' button if fields are not valid, fix discord regex

* remove comment

Co-authored-by: moxey.eth <jakemoxey@gmail.com>

* Profiles: ENS Search Sheet improvements (#3551)

* parallelize some async operations in useENSSearch

* fix searchinput maskelement on android

* fix ens search lag

* use promise.all

* Profiles: Support emoji avatars for ens owners w/o ens avatar (#3525)

* support emoji/image avatars for ens profiles without ens avatar

* use/edit ens profile depending on whether it exists already or not

* merge ens domain filtering logic into useAccountENSDomains

* remove cancel if no other options from avatar action sheet

* Profiles: Fix nft upload flash when editing profile (#3541)

* nft flash

* add registration name to useEffect dependency array

* fix svgs

* Profiles: Remove NFT avatar/cover option if no NFTs (#3575)

* remove nft option from selectimagemenu if not applicable

* always show context menu if avatar/cover exists

Co-authored-by: moxey.eth <jakemoxey@gmail.com>

* Fix

* Profiles: Misc. fixes (#3583)

* unfurl 0x addresses to ens in discover search

* filter out ens that resolve to zero address

* toggle containsEmoji for profile record tags

* use checksum address

* fix merge conflict

* Profiles: Improve fetch of ens first tx timestamp (#3605)

* prefetch ens first tx timestamp

* enable prefetch only if profile sheet is not for intro marquee (means already prefetched)

* prefetch ens in search

* use fetchENSAddress inside useENSFirstTransactionTimestamp

Co-authored-by: moxey.eth <jakemoxey@gmail.com>

* add poaps to profiles (#3666)

* Fix ts

* Fix merge

Co-authored-by: moxey.eth <jakemoxey@gmail.com>

* dynamic sizing of confirm update sheet (#3890)

* Flag on

* Profiles: remove videos from nft selection (#3894)

* remove videos

* lint

* extract condition

* undo unrelated change

* Revert "Flag on"

This reverts commit 2863c9d.

* Profiles: My ENS Names sheet fixes (#3905)

* fix placeholder avatar color

* fix my ens names sheet height

* Fix sheet dismissal issues on Android (#3895)

* Reorder search groups to highlight profiles (#3907)

* Reorder search groups to highlight profiles

* Refactor key mapping

* Fix issue where zoomable overlays weren't aware of the scroll view (#3900)

* resize + sign cover photo (#3910)

* fix nft previews (#3911)

Co-authored-by: dev <dev@Skylars-MacBook-Pro.local>

* Profiles: Fix for Android Discover shadows & Max button in send input (#3913)

* Fix ‘Max’ button not appearing in input on Android

* Fix Discover card shadows clipping on Android

* Extra card tweaks for Android

* Fix send sheet layout again (#3916)

* Fix undefined ENS NFT (#3914)

* Fix ENS owner caching issue (#3915)

* fix android crash when switching wallets (#3924)

* Profiles: Text records validation fixes (#3904)

* fix copy text

* reset text records error state when switching ens profile

* text + validation fixes

* turn off search -> renable interactions (#3925)

* Fix keyboard not dismissing when registering ENS (#3926)

* Profiles: Fix ENS expanded state edit button (#3896)

* Fix ENS expanded state edit button

* e2e

* fix e2e

* bump undici (#3920)

Co-authored-by: dev <dev@Skylars-MacBook-Pro.local>

* profiles: speedup registration improvements (#3898)

* add 5 secs padding and registration costs

* disable speed up while 5 secs padding

* handle speed up from tx list

* bump test wait

* fix for now

* add delay

* handle commit cancel

* Fix URL wrapping (#3933)

* Better menu for profiles android (#3934)

* Better menu for choose NFT (#3936)

* Add the most important wallet (#3940)

* Add the most important wallet

* Update ens-intro-marquee-names.json

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

* Profiles: Make cover NFTs open NFT expanded state (#3929)

* Make cover NFTs open NFT expanded state

* use profiles nfts vs accounts

* oop

* handle both scenarios

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

* 'More' button menu for android (#3935)

* More button menu for android

* lol

* lol

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

* Profiles: Profile avatar options (#3897)

* fix profile avatar options

* bug fix

* e2e

* move destructive button to bottom

* fix e2e

* android fix

* shuffle emoji text

* cover to header

* profiles: header + avatar tweaks (#3941)

* profiles: profile avatar / names updates after ens transactions (#3919)

* update use memo if image changed

* images and ens name

* use selectors on useAccountProfile

* rm network from getAccountProfileInfo

* accountProfileSelector

* add ens flag to start fetching avatars

* fetch ens names before avatars

* testsss

* fix redundant setting of primary name

* src/redux/wallets.ts

* push the e2e

* override account label only on ens name change

Co-authored-by: moxey.eth <jakemoxey@gmail.com>

* profiles: fix da colors (#3946)

* Fix marquee list with avatars (#3938)

* Fix marquee list with avatars

* Fix marquee list with avatars

* add height prop to MarqueeList

* Update MarqueeList.js

* Update MarqueeList.js

Co-authored-by: Ben Goldberg <bengoldberg@rainbow.me>

* turn flag off

* Profiles: make hidden nfts work with profiles (#3953)

* make hidden nfts work with profiles

* fix e2e

* Profiles: Fix Checkpoint E2E when profiles flag is default on (#3930)

* fix e2e

* Fix undefined ENS NFT (#3914)

* Fix ENS owner caching issue (#3915)

* fix android crash when switching wallets (#3924)

* Profiles: Text records validation fixes (#3904)

* fix copy text

* reset text records error state when switching ens profile

* text + validation fixes

* turn off search -> renable interactions (#3925)

* Fix keyboard not dismissing when registering ENS (#3926)

* turn flag on

* fix

* Fix e2e once and for all

* fix deeplink e2e

Co-authored-by: Esteban Miño <efmino@uc.cl>
Co-authored-by: Ben Goldberg <bengoldberg@rainbow.me>
Co-authored-by: Skylar Barrera <skylar.barrera@gmail.com>
Co-authored-by: pugson <hi@wojtek.im>

* Profiles: Fix ENS NFT video filter (#3952)

* revert

* Fix ENS NFT filter

* Fix & refactor open ENS NFT issues (#3951)

* Profiles: Fixes for the navigation (#3932)

* Fixes for the navigation

* Fix select NFT modal on Android (#3939)

* Fxi scrolling experience in NFT select

* yarn lock

* fix iOS scrolling bug

Co-authored-by: Jakub Adamczyk <jakub@rainbow.me>

* Revert "Profiles: Fixes for the navigation (#3932)"

This reverts commit 9daf039.

* extra bottom padding for ens intro sheet android only (#3959)

* ignore savings e2e for now

Co-authored-by: Esteban Miño <efmino@uc.cl>
Co-authored-by: moxey.eth <jakemoxey@gmail.com>
Co-authored-by: Tomasz Czajęcki <tomek.czajecki@gmail.com>
Co-authored-by: Jakub Adamczyk <jkk.adamczyk@gmail.com>
Co-authored-by: Jakub Adamczyk <jakub@rainbow.me>
Co-authored-by: Wojtek Witkowski <hi@wojtek.im>
Co-authored-by: Taras Perun <48593211+perunt@users.noreply.github.com>
Co-authored-by: Bruno Barbieri <brunobar79@gmail.com>
Co-authored-by: jinchung <jin.chung17@gmail.com>
Co-authored-by: Terry Sahaidak <tasssik@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Michał Osadnik <micosa97@gmail.com>
Co-authored-by: Skylar Barrera <skylar.barrera@gmail.com>
Co-authored-by: Christian Baroni <christianbaroni@me.com>
Co-authored-by: Christian Baroni <7061887+christianbaroni@users.noreply.github.com>
Co-authored-by: dev <dev@Skylars-MacBook-Pro.local>
  • Loading branch information
17 people committed Aug 9, 2022
1 parent 68b74c0 commit d2978db
Show file tree
Hide file tree
Showing 165 changed files with 5,871 additions and 2,445 deletions.
18 changes: 11 additions & 7 deletions e2e/deeplinks.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,21 +67,25 @@ describe('Deeplinks spec', () => {
await Helpers.tapAlertWithButton('OK');
});

it('should show the Showcase Sheet for rainbow.me universal links with ENS names', async () => {
it('should show the Profile Sheet for rainbow.me universal links with ENS names', async () => {
await Helpers.openDeeplinkFromBackground(
'https://rainbow.me/rainbowwallet.eth'
);
await Helpers.checkIfVisible('showcase-sheet', 30000);
await Helpers.checkIfVisible('profile-sheet', 30000);
await Helpers.checkIfElementByTextIsVisible('rainbowwallet.eth', 30000);
await Helpers.swipe('showcase-sheet', 'down');
await Helpers.swipe('profile-sheet', 'down');
});
it('should show the Showcase Sheet for rainbow.me universal links with 0x addresses', async () => {

it('should show the Profile Sheet for rainbow.me universal links with 0x addresses', async () => {
await Helpers.openDeeplinkFromBackground(
'https://rainbow.me/0xE46aBAf75cFbFF815c0b7FfeD6F02B0760eA27f1'
);
await Helpers.checkIfVisible('showcase-sheet', 30000);
await Helpers.checkIfElementByTextIsVisible('0xE46aBAf7...27f1', 30000);
await Helpers.swipe('showcase-sheet', 'down');
await Helpers.checkIfVisible('profile-sheet', 30000);
await Helpers.checkIfElementByTextIsVisible(
'0xE46aBAf75cFbFF815c0b7FfeD6F02B0760eA27f1',
30000
);
await Helpers.swipe('profile-sheet', 'down');
});

it('should be able to handle ethereum payments urls for ETH (mainnet)', async () => {
Expand Down
96 changes: 18 additions & 78 deletions e2e/discoverSheetFlow.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,15 @@ describe('Discover Sheet Flow', () => {
await Helpers.checkIfNotVisible('lists-section');
});

it('Should open Discover Search on pressing search fab', async () => {
it('Should see the gas card', async () => {
await Helpers.checkIfVisible('gas-button');
await Helpers.tap('gas-button');
});

it('Should open Discover Search on pressing search input', async () => {
await Helpers.swipe('discover-header', 'up');
await Helpers.waitAndTap('search-fab');
await Helpers.swipe('discover-home', 'down');
await Helpers.waitAndTap('discover-search-input');
await Helpers.checkIfVisible('done-button');
});

Expand Down Expand Up @@ -97,7 +103,7 @@ describe('Discover Sheet Flow', () => {
);
});

it('Should search and open Showcase modal for rainbowwallet.eth', async () => {
it('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 @@ -113,11 +119,15 @@ describe('Discover Sheet Flow', () => {
await Helpers.waitAndTap(
'discover-currency-select-list-contact-row-rainbowwallet.eth'
);
await Helpers.checkIfVisible('showcase-sheet');
await Helpers.checkIfVisible('profile-sheet');
});

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

it('Should close showcase and return to Search on swiping down', async () => {
await Helpers.swipe('showcase-header-wrapper', 'down');
it('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(
'discover-currency-select-list-exchange-coin-row-ETH-token'
Expand All @@ -128,22 +138,6 @@ describe('Discover Sheet Flow', () => {
await Helpers.waitAndTap('done-button');
});

it('Top Movers should be swipeable and open expanded states', async () => {
try {
await Helpers.checkIfVisible('top-movers-section');
await Helpers.waitAndTap('top-gainers-coin-row-0');
await Helpers.swipe('expanded-state-header', 'down');
await Helpers.swipe('top-gainers', 'left');
await Helpers.checkIfNotVisible('top-gainers-coin-row-0');
await Helpers.waitAndTap('top-losers-coin-row-0');
await Helpers.swipe('expanded-state-header', 'down');
await Helpers.swipe('top-losers', 'left');
await Helpers.checkIfNotVisible('top-losers-coin-row-0');
} catch (_) {
// zerion did not return any top movers :(
}
});

it('Should open DPI expanded state on DPI press', async () => {
await Helpers.waitAndTap('dpi-button');
await Helpers.checkIfVisible('index-expanded-state');
Expand All @@ -162,6 +156,7 @@ describe('Discover Sheet Flow', () => {
});

it('Should cycle through token lists', async () => {
await Helpers.swipe('discover-sheet', 'up', 'slow', 0.3);
await Helpers.checkIfVisible('lists-section-favorites');
await Helpers.checkIfNotVisible('list-coin-row-Unisocks');
await Helpers.waitAndTap('list-watchlist');
Expand All @@ -178,7 +173,7 @@ describe('Discover Sheet Flow', () => {
});

it('Should cycle through pools lists', async () => {
await Helpers.swipe('dpi-button', 'up');
await Helpers.swipe('discover-sheet', 'up', 'slow', 0.3);
await Helpers.waitAndTap('pools-list-liquidity');
await Helpers.checkIfVisible('pools-section-liquidity');
await Helpers.waitAndTap('pools-list-annualized_fees');
Expand All @@ -189,61 +184,6 @@ describe('Discover Sheet Flow', () => {
await Helpers.checkIfVisible('pools-section-oneDayVolumeUSD');
});

it('Should navigate to the Wallet screen after swiping right', async () => {
await Helpers.swipe('discover-home', 'down', 'slow');
await Helpers.swipe('discover-sheet', 'right', 'slow');
await Helpers.checkIfVisible('wallet-screen');
});

it('Should navigate to the Profile screen after swiping right again', async () => {
await Helpers.swipe('wallet-screen', 'right', 'slow');
await Helpers.checkIfVisible('profile-screen');
});

it('Should navigate to Settings Sheet after tapping Settings Button', async () => {
await Helpers.waitAndTap('settings-button');
await Helpers.checkIfVisible('settings-sheet');
});

it('Should navigate to Developer Settings after tapping Developer Section', async () => {
await Helpers.waitAndTap('developer-section');
await Helpers.checkIfVisible('developer-settings-sheet');
});

it('Should make ENS Profiles available', async () => {
await Helpers.swipe('developer-settings-sheet', 'up', 'slow');
await Helpers.tapByText('ENS Profiles');
await Helpers.tapByText('Done');
});

it('Should go to Discover screen', async () => {
await Helpers.swipe('profile-screen', 'left', 'slow');
await Helpers.swipe('wallet-screen', 'left', 'slow');
await Helpers.checkIfVisible('ens-register-name-banner');
});

it('Should search and open Profile for rainbowwallet.eth', async () => {
await Helpers.waitAndTap('search-fab');
await Helpers.typeText(
'discover-search-input',
'rainbowwallet.eth\n',
true
);
await Helpers.checkIfVisible(
'discover-currency-select-list-contact-row-rainbowwallet.eth'
);
await Helpers.checkIfNotVisible(
'discover-currency-select-list-exchange-coin-row-ETH'
);
await Helpers.waitAndTap(
'discover-currency-select-list-contact-row-rainbowwallet.eth'
);
});

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

afterAll(async () => {
// Reset the app state
await device.clearKeychain();
Expand Down
4 changes: 2 additions & 2 deletions e2e/hardhatTransactionFlow.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ describe('Hardhat Transaction Flow', () => {
await Helpers.checkIfVisible('wallet-screen');
});

it('Should deposit DAI (via Compound)', async () => {
xit('Should deposit DAI (via Compound)', async () => {
await Helpers.tap('Savings-list-header');
await Helpers.waitAndTap('savings-list-row-DAI');
await Helpers.waitAndTap('deposit-action-button');
Expand All @@ -171,7 +171,7 @@ describe('Hardhat Transaction Flow', () => {
await Helpers.swipe('profile-screen', 'left', 'slow');
});

it('Should withdraw DAI (via Compound)', async () => {
xit('Should withdraw DAI (via Compound)', async () => {
await Helpers.waitAndTap('savings-list-row-DAI');
await Helpers.waitAndTap('withdraw-action-button');
await Helpers.typeText('withdraw-modal-input', '1', true);
Expand Down
2 changes: 1 addition & 1 deletion e2e/hiddenTokensFlow.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ describe('Hidden tokens flow', () => {
it('NFT is hideable', async () => {
// open ENS and tap on our ENS NFT
await Helpers.swipe('wallet-screen', 'up', 'slow');
await Helpers.tapByText('ENS');
await Helpers.tap('token-family-header-ENS');
await Helpers.swipe('wallet-screen', 'up', 'slow');
await Helpers.waitAndTap('wrapped-nft-rainbowtestwallet.eth');
await Helpers.waitAndTap('unique-token-expanded-state-context-menu-button');
Expand Down
Loading

0 comments on commit d2978db

Please sign in to comment.