User Avatars
Users should be able to update and edit their avatar image. By default, we use a generator to create avatars when a wallet address connects to the app. A user should be able to update their avatar image in their profile page.
Is your feature request related to a problem? Please describe.
Users cannot update their images currently.
Describe the solution you'd like
There are a handful of more mature solutions that are out there, i.e. ENS avatars tied to their address, Twitter avatars if we decide to verify with socials, and even Blockie generated ones. Instead, a first step would be to allow a user to upload an image.
For storage:
One idea: Images should be stored on IPFS. User records in MongoDB should be updated to point to this IPFS url. The url stored in mongo should be one from an IPFS provider, i.e. cloudflare, ipfs.io, dweb.link. This would require the client to fetch externally for showing the image, but relies on decentralized infrastructure in a more web3 way.
Another idea, maybe better: User images should be base64 encoded and stored directly in mongo, which doesn't rely on fetching external data from a URL.
For design:
In short, mimic LinkedIn for the most part.
When the user hovers over the circular avatar in their profile, a lightly transparent overlay should show up with the text saying "Update Avatar". Clicking the avatar image in this state should open up a modal. The modal should have an upload button which asks the user's operating system and searches the file system for them to choose a file to upload. The modal will have a button that shows to "Update" and "Cancel" which closes the modal. Update button should either 1. upload to ipfs then update the mongo db record for the given user, or 2. Convert the image into base64 and store it in the user's record in mongo. We may want to advise on loading a 1:1 image. Furthermore, we should show a circle that will crop the image, where the user can drag the image around to find how they'd like to crop it, similar to LinkedIn or other social platforms, like Twitter, Facebook, etc.
Describe alternatives you've considered
Social avatars, ENS, and other generated avatars like Blockie. We may want to also prevent adult content and other explicit material from being uploaded, using a service/AI to scan for this and censor it.
Additional context
Add any other context or screenshots about the feature request here.