Page MenuHomePhabricator

[lib] Move `selectFromGalleryAndUpdateThreadAvatar` from provider to `avatar-hooks`
ClosedPublic

Authored by atul on Aug 5 2023, 2:50 AM.
Tags
None
Referenced Files
Unknown Object (File)
Fri, Aug 30, 1:43 AM
Unknown Object (File)
Fri, Aug 30, 12:11 AM
Unknown Object (File)
Thu, Aug 29, 9:41 PM
Unknown Object (File)
Wed, Aug 28, 9:39 AM
Unknown Object (File)
Sat, Aug 24, 3:39 PM
Unknown Object (File)
Aug 20 2024, 1:01 AM
Unknown Object (File)
Jul 31 2024, 1:00 AM
Unknown Object (File)
Jul 31 2024, 1:00 AM
Subscribers

Details

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.

Diff Detail

Repository
rCOMM Comm
Lint
Lint Not Applicable
Unit
Tests Not Applicable