feat(avatar): sync avatar & profile across devices via Cesium+

A photo or profile changed on one device (phone, Cesium) would not appear on another (desktop): cached data was only re-checked after a 24h window, and an owned wallet's local avatar shortcut every display so its Cesium+ photo was never consulted at all.

  • Adopt the Cesium+ avatar for owned wallets when it differs ("latest published wins"), via a new AvatarSyncService that repoints wallet.imagePath so reactive DatapodAvatars reload. A photo just set on this device is protected from being reverted before the pod propagates it.
  • Re-validate cached avatars against Cesium+ once per session and on reconnection (compare-and-swap, no flicker).
  • Re-fetch the Cesium+ profile (name, description, city, socials, tags) on reconnection via a new onlineReconnectCountProvider, without blanking the displayed profile when the app goes offline.
  • Fix a crash where changeAvatar used the widget ref after the network upload, when the widget could already be unmounted: capture the providers up front instead.
  • Fix changeAvatar deleting a default assets/ avatar (in debug the path resolves to the real source asset), by only deleting custom files.

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

Merge request reports

Loading