IGListKit/Source/IGListDiffKit
Maxime Ollivier ad5171978e create IGListUpdatingDelegateExperimental
Summary:
For diffing, `IGListAdapterUpdater` uses the full `fromObjects` instead of `validObjects`, which can be different if we're missing `IGListSectionController`. The diffing results won't match what the `IGListAdapter` tells the `UICollectionView`, so we can crash.

To fix this, lets try to generate the `IGListSectionController` before performing the diffing, and keep them in a container object (`IGListTransitionData`) alonside the `fromObjects` and `toObjects`. This might also unblock other cool features in the future, like giving `IGListSectionControllers` time for background work, but that's for another day.

Since this change is relatively large, lets create a temporary protocol `IGListUpdatingDelegateExperimental` which will have a slightly different API from `IGListUpdatingDelegate`. When/if the new implementation ships, we can merge both protocols.

Why not edit `IGListAdapterUpdater` directly?
* I don't want to mess up exiting updaters just yet.

Reviewed By: patters

Differential Revision: D23145776

fbshipit-source-id: 21642cafa64e2a26a173e2ba683ef5c6cede17d7
2020-09-08 09:11:11 -07:00
..
Internal Run lint on IGListKit 2019-12-19 09:34:42 -08:00
IGListAssert.h Run lint on IGListKit 2019-12-19 09:34:42 -08:00
IGListBatchUpdateData.h remove IGListExperimentFixIndexPathImbalance 2020-06-02 13:04:26 -07:00
IGListBatchUpdateData.mm remove IGListExperimentFixIndexPathImbalance 2020-06-02 13:04:26 -07:00
IGListCompatibility.h Run lint on IGListKit 2019-12-19 09:34:42 -08:00
IGListDiff.h Run lint on IGListKit 2019-12-19 09:34:42 -08:00
IGListDiff.mm remove unused experiment param 2020-09-08 09:11:11 -07:00
IGListDiffable.h Run lint on IGListKit 2019-12-19 09:34:42 -08:00
IGListDiffKit.h Run lint on IGListKit 2019-12-19 09:34:42 -08:00
IGListExperiments.h ship IGListExperimentSkipLayoutBeforeUpdate 2020-09-08 09:11:11 -07:00
IGListIndexPathResult.h Run lint on IGListKit 2019-12-19 09:34:42 -08:00
IGListIndexPathResult.m Run lint on IGListKit 2019-12-19 09:34:42 -08:00
IGListIndexSetResult.h Run lint on IGListKit 2019-12-19 09:34:42 -08:00
IGListIndexSetResult.m Run lint on IGListKit 2019-12-19 09:34:42 -08:00
IGListMacros.h create IGListUpdatingDelegateExperimental 2020-09-08 09:11:11 -07:00
IGListMoveIndex.h Run lint on IGListKit 2019-12-19 09:34:42 -08:00
IGListMoveIndex.m Run lint on IGListKit 2019-12-19 09:34:42 -08:00
IGListMoveIndexPath.h Run lint on IGListKit 2019-12-19 09:34:42 -08:00
IGListMoveIndexPath.m Run lint on IGListKit 2019-12-19 09:34:42 -08:00
NSNumber+IGListDiffable.h Run lint on IGListKit 2019-12-19 09:34:42 -08:00
NSNumber+IGListDiffable.m Run lint on IGListKit 2019-12-19 09:34:42 -08:00
NSString+IGListDiffable.h Run lint on IGListKit 2019-12-19 09:34:42 -08:00
NSString+IGListDiffable.m Run lint on IGListKit 2019-12-19 09:34:42 -08:00