HomePhabricator
Diffusion Comm 4b38dc2000d7

[lib] Move `selectFromGalleryAndUpdateThreadAvatar` from provider to `avatar…

Description

[lib] Move selectFromGalleryAndUpdateThreadAvatar from provider to avatar-hooks

Summary:
This diff involved moving selectFromGalleryAndUpdateThreadAvatar from EditThreadAvatarProvider to avatar-hooks.react.js.

  1. 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 providers and hooks made things difficult to work w/ when dealing w/ implementing image avatars on web.
  2. 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.
  3. selectFromGallery functionality is specific to native where we launch the image gallery programmatically and process the media selection. On web, we "virtually" click on the <input> to launch file selection, and then handle selected media from onChange callback... so things aren't as "sequential."
NOTE: This is the "thread avatar version" of D8318.

Test Plan: Still able to select and set image thread avatars on native.

Reviewers: ashoat, ginsu

Reviewed By: ashoat

Subscribers: tomek

Differential Revision: https://phab.comm.dev/D8736

Details

Provenance
atulAuthored on Aug 5 2023, 6:26 PM
Reviewer
ashoat
Differential Revision
D8736: [lib] Move `selectFromGalleryAndUpdateThreadAvatar` from provider to `avatar-hooks`
Parents
rCOMMcf12040be85f: [web] Call `baseSetUserAvatar` from `onImageSelected`
Branches
Unknown
Tags
Unknown