Our AvatarBuilder caches were cleared in their entirety any time a
profile changes. If a profile update raced with a avatar fetch in
ConversationAvatarView, they'd blink briefly while the cached items were
removed.
This change ensures that we're only clearing out avatars that are
associated with an updated profile.
- Adjusts delegate interface to be useful in both cases
- Subscription view controller will now save updated badge settings
Also, a bonus change to disable badges on avatars
- Design speced out explicit offsets for 24pt and 112pt avatars
- We won't show badges in call views
Also fixes a couple bugs:
- Incorrect interpolation of interstitial badge sizes
- We should badge conversation headers and typing indicators
A few people reported this issue during the badges bug bash. Avatars
would show stale avatars in incorrect places.
This was due to async model updates being kicked off shortly before a
call to `reset()` the view. Resetting would only clear the image data
and data source but wouldn't do anything to cancel async updates that
were in-progress.
The fix is to tweak the implementation of reset() to go through existing
paths that account for this by incrementing the model generation. This
ensures that the async update will be dropped when it resolves and sees
that the model generation was incremented underneath it.
- Clear out avatar cache on local profile changes too
- ConversationAvatarView properly handles local profile updates
- Fix some tiny UI bugs in group calls
Creates a special data source enum for ConversationAvatarView data
providers. Before, ContactCell and ConversationAvatarView used the data
source, neither applying to each perfectly
Adoption of ConversationAvatarView2 in many key locations. This isn't
exhaustive, but it's mostly there.
Some work left to be done around ConversationAvatarView2 data source
tweaks.
I personally haven't been able to reproduce this issue. This might end
up fixing this issue, but if not we might need to rethink our
MentionPicker layout.