-
Notifications
You must be signed in to change notification settings - Fork 5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix crash upon removing contact #9031
Conversation
This depends upon #9030 |
Builds ready [fa426b5]
Page Load Metrics (592 ± 40 ms)
|
The UI would crash upon deleting a contact from the contact list. This happened for two reasons: the deletion could result in a re-render before the `history.push` finished navigating back to the contact list (it was a race condition), and the contact entry left behind an invalid `identities` entry when it was removed. The first problem was fixed by making the container components for view and edit contact more tolerant of being passed an `address` that doesn't correspond to a contact. If they are given an address without a contact, `null` is passed to the component via the `address` prop. The component will redirect back to the list when this happens instead rendering. This is more awkward than I'd like, but it was the most sensible way of handling this I could think of without making much more drastic changes to how we're handling routing here. The second problem was caused by the `setAccountLabel` call, which was used to ensure the contact entry for any wallet accounts was kept in-sync with the account label. This was being called even for non- wallet accounts though, which is where this problem arose. This step is now skipped for non-wallet accounts. Fixes #9019
fa426b5
to
31fcfc7
Compare
Builds ready [31fcfc7]
Page Load Metrics (588 ± 9 ms)
|
I had originally written a migration to remove any |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
The UI would crash upon deleting a contact from the contact list. This happened for two reasons: the deletion could result in a re-render before the
history.push
finished navigating back to the contact list (it was a race condition), and the contact entry left behind an invalididentities
entry when it was removed.The first problem was fixed by making the container components for view and edit contact more tolerant of being passed an
address
that doesn't correspond to a contact. If they are given an address without a contact,null
is passed to the component via theaddress
prop. The component will redirect back to the list when this happens instead rendering. This is more awkward than I'd like, but it was the most sensible way of handling this I could think of without making much more drastic changes to how we're handling routing here.The second problem was caused by the
setAccountLabel
call, which was used to ensure the contact entry for any wallet accounts was kept in-sync with the account label. This was being called even for non-wallet accounts though, which is where this problem arose. This step is now skipped for non-wallet accounts.Fixes #9019