Summary:
## Changes in this pull request
It's been a few years since I did an audit of our test suite. The majority of changes to IGListKit since then were adding additional error checking and hardening, so this was relatively straightforward.
### Checklist
- [x] All tests pass. Demo project builds and runs.
- [x] I added tests, an experiment, or detailed why my change isn't tested.
- [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/main/.github/CONTRIBUTING.md)
Pull Request resolved: https://github.com/instagram/IGListKit/pull/1654
Reviewed By: jurmarcus
Differential Revision: D91551666
Pulled By: TimOliver
fbshipit-source-id: c89c7a45abebb44dbf50b252bfadc9a7c2928683
Summary: We'll need access to the tracker from different parts of `IGListKit`, so lets attach it to the view itself.
Differential Revision: D60691860
fbshipit-source-id: 87987b2939a0e13d733d25382ca4384fdfdd875e
Summary:
We want to give higher diffing and coalescing priority to `IGListAdapters` that have a visible `UICollectionView`. Let's create `IGListViewVisibilityTracker`, which uses the views `window`, `hidden`, and `alpha` properties to get a best guess ...
I've also noticed that a few view-controllers call `-performUpdate` even before their views are in the window, so their updates will be slowed down. Lets add `IGListViewVisibilityStateNotVisibleEarly` to make that distinction. A time comparison is not ideal, but there's isn't a great way to tell if a VC is about to be visible without making app specific assumptions.
If we see promising results, we can go even further and look if the frame is in the visible bounds of the window, but that's a bit more complicated and expensive. Lets start simple.
Differential Revision: D60691857
fbshipit-source-id: dccdd6f59210710f5e0c1ca4150336c1381b875b