fix: clear stale custom wallet icon references#4079
Draft
shubhamkmr04 wants to merge 2 commits into
Draft
Conversation
Contributor
There was a problem hiding this comment.
Code Review
This pull request introduces a cleanup mechanism for node photos in the SettingsStore. It adds a photoExists utility to verify the existence of local files referenced by rnfs:// URIs and clears references to missing files during the settings loading process to prevent broken images in the UI. Feedback was provided to wrap state modifications within runInAction to comply with MobX best practices for asynchronous updates.
c31adf8 to
e81d0a3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Relates to issue: #4042
Custom wallet photos are stored as device-local files in
DocumentDirectoryPathand referenced asrnfs://<filename>in node settings. These files only exist on the device that originally picked the photo. If anrnfs://reference makes its way into another device's settings (e.g. via an iCloud backup restore, or a legacy iCloud Keychain sync from an older Zeus version), the UI tries to load a file that doesn't exist, resulting in a broken/missing wallet iconReproduction note
We were unable to reproduce the original bug on a fresh install of the current build (physical iPhone + iOS Simulator, same Apple ID) because the migration to
cloudSync: falsefor keychain storage already prevents new cross-device sync. The bug might be specific to users who upgraded to the latest build from older Zeus versions where settingswere synced via iCloud Keychain.
What this PR does
photoExists()helper inPhotoUtilsto check whether the file behind anrnfs://reference is actually present on disk.cleanupMissingNodePhotos()toSettingsStore.getSettings(). On every settings load, it scans each node'sphotofield and clears anyrnfs://reference whose file is missing, so the UI falls back toNodeIdenticoninstead of rendering a broken image.This pull request is categorized as a:
Checklist
yarn run tscand made sure my code compiles correctlyyarn run lintand made sure my code didn’t contain any problematic patternsyarn run prettierand made sure my code is formatted correctlyyarn run testand made sure all of the tests passTesting
If you modified or added a utility file, did you add new unit tests?
I have tested this PR on the following platforms (please specify OS version and phone model/VM):
I have tested this PR with the following types of nodes (please specify node version and API version where appropriate):
On-device
Remote
Locales
Third Party Dependencies and Packages
yarnafter this PR is merged inpackage.jsonandyarn.lockhave been properly updatedOther: