The avatar cache files written for Communication Notifications cannot be
deleted right after the handler returns (the system reads them lazily, e.g.
the Apple Watch fetching the image), and the NSE gets no dismissal callback.
Add best-effort, age-based cleanup that drops files older than 24 hours each
time a new avatar is written. Notifications are ephemeral, so any device that
needed an old file is long done. The cleanup tolerates concurrent NSE
instances removing the same file.
Chat notifications are upgraded to Communication Notifications and attach
the sender's avatar to the INPerson via downloadAvatarImage. The image was
built with INImage(imageData:), which renders on the iPhone but is not
relayed to paired devices like the Apple Watch. The Watch then falls back to
drawing a monogram from the sender's initials instead of the avatar.
Write the downloaded avatar bytes to a file in the shared App Group
container and back the INImage with INImage(url:) so the system can resolve
the image lazily across devices. Files are named by a stable hash of the
content-addressed thumbnail URL so notifications from the same sender reuse
one file.
* tweak in-post threadgate button
* tweak composer threadgate button
* reduce date length slightly
* pressed styles
* make date length depend on breakpoint
* add chevron to label btn
* add tiny chevron, special-case button icon width
* [Threadgate] Add hint (#9350)
* get tooltip working on web
* add compatibility layer for working in iOS sheets
* add timeout to profile tooltip now that it appears instantly
* rm debug code
* Update ThreadgateBtn.tsx
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
* remeasure when keyboard changes
---------
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
* fix types
* [Threadgate] Refresh dialog (#9342)
* wip new ui
* update threadgate dialog with new designs
* restore nobody option
* relayout android sheet when ratio changes
* fix ratio changing case in bottom sheet
* timebox reached, use setTimeout
* update panel styles
* missing imports
* extract out Panel
* tweak layout animation
* fix icon color
* use same color mechamism for icon as text
* restore the header
* refreshed toggle styles (#9343)
* [Threadgate] Persist settings (#9341)
* add persist toggle to threadgate dialog
* move state back down
* sort out spacing
* wire up query
* @surfdude29 tweaks
* use tiny chevron in WhoCanReply
* wait for prefetch before opening
* move Panel into the Toggle namespace
* default -> pref
* use medium date length
* rm hover state from web selects, fix border radius
* fix key issue in Selects
---------
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
* radix select component on web
* native implementation (wip)
* fix sheet height/padding
* tone down web styles
* react 19 cleanup
* replace primary language select
* change style on native
* get auto placeholder working
* more style tweaks
* replace app language dropdown
* replace rnpickerselect with native select
* rm react-native-picker-select dependency
* rm placeholder, since a value is always selected
* docblock for renderItem
* add more docblocks
* add style prop to item
* pass selectedValue through renderItem
* fix context
* Style overflow buttons
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* tweak height/padding of iOS
* tweak android ratio calculation
* add a bit of extra padding to full height iOS to account for the bit below the safe area
* package upgrades
* upgrade system ui
* update patches
* rename patch
* rm
* use .set/.set
* resolve yarnlock
* fix accidentally removed package
* fix use permissions hook
* fix some type errors
* type fixes
* more tweaking
* clean
* Discard changes to src/screens/Onboarding/StepProfile/index.tsx
* oops
* fix splash
* use ios/android in config
* Fix tests
* add back patch
* add to rn patch
* fullscreen?
* Revert "add to rn patch"
This reverts commit 4716d2c643.
* try this
* test with revert
* test
* maybe this
* fix config
* Bump @react-native-picker/picker
* Bump some packages
* Rm unused
* Update lockfile
* Rename expo-notifications+0.29.8.patch.md to expo-notifications+0.29.10.patch.md
* Update react-native+0.76.3.patch.md
* Update react-native+0.76.3.patch.md
* Inline splash configs
Jumping around the file is annoying and makes it harder to understand how this is structured.
* Start fixing Android splash
* Downgrade compressor
This version isn't building for me due to https://github.com/numandev1/react-native-compressor/issues/322.
* Make Android splash empty for now
* Work around a bug
* Bump the compressor
* Bump again
* Include splash fixes
* Try updating
* No custom Android splash
* Revert to using icons
* welp
* Fix sizes
* Make sizing work
* Bump size
---------
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>