[lib] Move selectFromGalleryAndUpdateUserAvatar from provider to avatar-hooks
Summary:
This diff involved moving selectFromGalleryAndUpdateUserAvatar from Edit*AvatarProvider to avatar-hooks.react.js... which makes a lot more sense.
- As discussed D8316, this allows us to better decouple the avatar providers and hooks. The providers are an entity(user/thread)-specific, but platform-agnostic interface b/w client and keyserver, whereas avatar hooks are platform-specific implementations. The coupling between the providers and hooks made things difficult to work w/ when dealing with implementing image avatars on web.
- Previously we had hooks which were "functions" of provider state which itself was a "function" of hooks. This diff starts to enforce the idea that hooks are "downstream" of providers which makes things easier to reason about.
- selectFromGallery functionality is specific to native where we launch the image gallery programmatically and process the media selection. On web, we "virtually" click on an <input> to launch file selection, and then handle selected media from onChange callback... so things aren't as "sequential."
- We're one step closer to merging WebEditUserAvatarProvider and NativeEditUserAvatarProvider.
Depends on D8316
Test Plan: Still able to select and set image avatar from native.
Reviewers: ashoat, ginsu, rohan
Reviewed By: ginsu
Subscribers: tomek
Differential Revision: https://phab.comm.dev/D8318