Summary:
Updated IGListCollectionView:initWithFrame:collectionViewLayout constructor to support UIAppearance for the backgroundColor property.
Fixes#294
- [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/master/.github/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/298
Differential Revision: D4292394
Pulled By: rnystrom
fbshipit-source-id: a7c4f0e516728b684993f2651eadcc25001de783
Summary:
Beefing up our test coverage. Made an improvement to supplementary view behavior along the way. Will update `CHANGELOG.md` once travis finishes w/ link to PR #.
- [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/master/.github/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/286
Differential Revision: D4281961
Pulled By: jessesquires
fbshipit-source-id: 32b5877bd72250b9a99e600ceffc64d686fa5651
Summary: Rare, but very real crash that occurs when a reload is manually queued and then the section gets deleted in a diff.
Reviewed By: jeremycohen
Differential Revision: D4267678
fbshipit-source-id: a5bedf77934ff85f76830e3f0123a993fc5d885c
Summary:
Fixes from PR #273 rebase.
jessesquires rnystrom this should look a little better and be able to merge.
- [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/master/.github/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/275
Differential Revision: D4271440
Pulled By: rnystrom
fbshipit-source-id: a85b8c80b5504640d7f82b183ed5b5d0d0ea5c1b
Summary:
- Add scrolling method on IGListCollectionContext so that section controllers can scroll to themselves.
- Update CHANGELOG.
- Other misc fixes.
- Closes#267 on GitHub.
Reviewed By: rnystrom
Differential Revision: D4261144
fbshipit-source-id: 9eed833cfff06107607bba01a0beee1d871497b6
Summary:
Even with the assert, we will add `NSNotFound` to the set which will crash. Instead, skip adding the value in case a consumer is using a reference to an object that doesn't exist anymore.
Also, should be using `continue` if a section controller isn't returned by the data source.
Reviewed By: jessesquires
Differential Revision: D4226771
fbshipit-source-id: ed6df0992fdef611dd8fae64f4716e296df11f9a
Summary: Removing the category entirely (recreated for unit tests and examples). Went through and updated all of Instagram so we don't rely on the category and found a few models that needed cleaning up.
Reviewed By: jessesquires
Differential Revision: D4206552
fbshipit-source-id: ee8147e8872ea19f6c8bd8072df61eed5bffb6f3
Summary:
Rebase from #140:
Create a flow layout for IGList that does not newline sections. Closes#3
- [x] Minimum inter-item spacing
- [x] Minimum line spacing
- [x] Constant item size with constant layout time
- [x] Update layout on insert/delete/move
- [x] Unit Test
Closes https://github.com/Instagram/IGListKit/pull/225
Differential Revision: D4211469
Pulled By: rnystrom
fbshipit-source-id: f4710dbf195701098ac50f94b6b2aa8c801b2a83
Summary:
3 variables were meant to be sets but were initialized as arrays, as discussed in #232. Corrected initialization to match definitions.
- [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/master/.github/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/233
Differential Revision: D4213541
Pulled By: jessesquires
fbshipit-source-id: 5b2528d683bd6a2358fd8a1ff4e5fec58f4a59b1
Summary:
Update documentation for diff to be in sync with ab890fc607. Documentation update only, nothing to test.
- [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/master/.github/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/231
Differential Revision: D4211422
Pulled By: rnystrom
fbshipit-source-id: 9cb637e42300d9db173d99c1305845984d52ce7b
Summary:
I was able to build a unit test that reproduces the issue. We can avoid the crash by simply returning `nil` when accessing a cell while working range events are being vended.
There is definitely something weird going on here though. When debugging `cellForItemAtIndexPath:` I found:
```
(lldb) po indexPath
<NSIndexPath: 0xc000000000000516> {length = 2, path = 5 - 0}
(lldb) po [[self collectionView] numberOfSections]
11
```
So in theory we should be fine, right? But when I continue I get
```
*** Assertion failure in -[UICollectionViewData numberOfItemsBeforeSection:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3600.5.2/UICollectionViewData.m:611
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'request for number of items before section 5 when there are only 3 sections in the collection view'
```
There _were_ 3 sections in the UICV before the update, but the data source and structure powering
Closes https://github.com/Instagram/IGListKit/pull/216
Differential Revision: D4204625
Pulled By: rnystrom
fbshipit-source-id: 455ed199dfc115077e4294e2843016a50e179015
Summary:
Swapped NSUInteger to NSInteger in public headers. Fixed a test in IGListSectionMapTests.m to pass with NSInteger. For issue #200!
- [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/master/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/205
Differential Revision: D4191521
Pulled By: rnystrom
fbshipit-source-id: 3f15c5ee3f8ed2d382de2602912a2e998bfbcbba
Summary:
Did a full pass on documentation.
- Clean up
- Fixes
- Better markdown
> **NOTE:** this PR does not re-gen docs. I will do that next. Before we cut 2.0
Closes https://github.com/Instagram/IGListKit/pull/198
Reviewed By: rnystrom
Differential Revision: D4181253
Pulled By: jessesquires
fbshipit-source-id: 133c4af392bb396ecc6eff0c895c55e6d18730b7
Summary:
- Removed dead code in batch data and updater
- Tested updating with empty index sets
- Tested updating with not-found section controller
- Tested reloading when collection view or data source are not set
- Tested `-[IGListAdapter sectionForObject:]`
- Tested index path return for not-found section controller
- Tested pointer comparison with `NSObject+IGListDiffable` category
Fixes#190, #189
- [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/master/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/191
Differential Revision: D4172781
Pulled By: rnystrom
fbshipit-source-id: c25cc917e9a1ebc5fc94fa022e01f99c80c2466c
Summary:
Changing the API to avoid overiding `-[NSObject isEqual:]` because of the side effects it brings (e.g. `-hash`). Not to mention the problems with Swift 2.3.
Fixes#65.
Reviewed By: jessesquires
Differential Revision: D4138570
fbshipit-source-id: 804af6c468c4c273adb73377e9bfda22515121d1
Summary: Rare crashers that take `NSNotFound` from `sectionFor...` API and then immediately look up the object w/out checking for not found. Instead return nil.
Reviewed By: dshahidehpour
Differential Revision: D4142946
fbshipit-source-id: ca80f87729b5ee6699740de897d73b819d27d132
Summary: Adding this API to make querying visible objects a little easier. Fixes#164.
Reviewed By: dshahidehpour
Differential Revision: D4138472
fbshipit-source-id: 0136c39e17c72941b85284b7f3b5494b1ddabf68
Summary:
Saw this pop up in coverage reports. We don't log or assert `NSIndexPath` at all so this doesn't really seem necessary.
- [x] All tests pass. Demo project builds and runs.
- [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/165
Differential Revision: D4138474
Pulled By: rnystrom
fbshipit-source-id: ad8375e47d1584f594d3df29f07a1d5d1a53f3c5
Summary:
Continuing the work on #90. I don't believe I can push directly to that PR since the origin is `master` of a repo I don't have access to.
https://help.github.com/articles/checking-out-pull-requests-locally/
I went ahead and added another supplementary view test copying the old one we had.
cc jessesquires in case there's something else I can do here. I believe this will still give rawlinxx credit?
Closes https://github.com/Instagram/IGListKit/pull/162
Differential Revision: D4137364
Pulled By: rnystrom
fbshipit-source-id: d8418ac5728fd6d9570fa1d1568f4343f5c4112b
Summary:
Miss this in the previous PR #92. Will add unit test soon.
Closes https://github.com/Instagram/IGListKit/pull/123
Differential Revision: D4101594
Pulled By: rnystrom
fbshipit-source-id: 820030358532b0878f6d9e9092834266c9260a38
Summary: Don't need support for iOS 7 anymore, save some cycles on layout.
Reviewed By: ocrickard
Differential Revision: D4098229
fbshipit-source-id: eeaaf875acda1229f9622f11acc7c77ccad75cf0
Summary:
According to rnystrom 's comment on #125 , we leave only two small changes in this PR.
1. Call copy method to avoid a potential issue for an `NSString` property.
2. fix a typo.
close#125
- [x] All tests pass. Demo project builds and runs.
- [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/131
Differential Revision: D4095492
Pulled By: rnystrom
fbshipit-source-id: b162842a38850c826685efd0746022daabe9d2b8
Summary:
- Add missing docs in `IGListAdapterUpdaterDelegate`, fix#128.
- [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/master/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/130
Differential Revision: D4095494
Pulled By: rnystrom
fbshipit-source-id: 49acb065b61e3837a9624a4d7e9b50fcd08351e8
Summary:
This commit changes some assertion texts. No behavior is changed; no assertions are added (just reworded). Some of them were short or contained no real meaningful informations, where the error probably is.
Ref: #113
- [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/master/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/122
Differential Revision: D4090470
Pulled By: rnystrom
fbshipit-source-id: 96f492a1efd258ec3424ce334802229fdbdee191
Summary:
Replacing the move+update API with a batch-updates-safe API on the diff results object. This makes using the diff results w/out the rest of IGListKit infra much easier when working with `UITableView` or `UICollectionView`.
- Added unit tests
- Removed outdated unit tests
Reviewed By: dshahidehpour
Differential Revision: D4065798
fbshipit-source-id: 30da8a7b483d56d5acc497da9320dc07a6d0b7ad
Summary:
I started working on adding support for dequeuing cells created from nibs (issue #1). Additionally I extended `IGListSingleSectionController` so that it can be used with nibs too. I don't know if you had this also in mind.
- [x] I'm currently thinking about the best way to test these changes.
- [x] I was not able to update the documentation (issue #55).
- [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/master/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/56
Reviewed By: dshahidehpour
Differential Revision: D4023746
Pulled By: rnystrom
fbshipit-source-id: 6a8b4cfb4dba38ea6e9870a9a4506288ee155cfe
Summary:
Simplifies block ridding of one if-else branch met only once.
Solves issue #68.
- [*] All tests pass. Demo project builds and runs.
- [ ] I added tests, an experiment, or detailed why my change isn't tested.
- [*] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/69
Reviewed By: jessesquires
Differential Revision: D4021608
Pulled By: rnystrom
fbshipit-source-id: 21cfca8578398c819a68aa3a118d27d58bb580b3
Summary: Product needs show that section controllers need some sort of awarenes when they are the first/last section in a list (e.g. for cell borders). Adding this simple API, non-breaking.
Reviewed By: jessesquires
Differential Revision: D4016023
fbshipit-source-id: c75f9298fc73875a1cabad191fe2db6cb9ee4376
Summary:
- I ran the static analyzer, and it found a case in `performUpdatesAnimated:completion:` where it looks like we meant to bail out early if the `collectionView` or `dataSource` is nil, but it only does so if `completion` is provided.
- Fixed a spelling error in nearby documentation
- [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/master/CONTRIBUTING.md)
- There is one other analyzer warning, but it seems to be making an incorrect assumption. In any case, it's not something I can fix quickly (requires more time spent staring at IGListDiff.mm).
- A ticket should be opened to add static analysis to .travis.yml. I'lll do this soonish, unless someone beats me to it!
- I could add a test for this, but this project is annotated well enough with null
Closes https://github.com/Instagram/IGListKit/pull/51
Reviewed By: ocrickard
Differential Revision: D4008605
Pulled By: rnystrom
fbshipit-source-id: c2b7516cb8c1fc619aa63d1e9b0c26f2918cd8a1
Summary:
Replaced the two methods for generating a reusable identifier with an inline C function (as per #40) which has 3 parameters: `viewClass` (unchanged), `nibName` (for when #1 is added), and `kind`. The string is generated following the same pattern as before.
A few things:
- The current test only tests one of the options. May want to add more tests for each.
- Not sure if you guys prefer `NS_INLINE` vs `static inline`.
- Not sure if we want to add assertions for empty strings for nibName/kind parameters.
- [x] All tests pass. Demo project builds and runs.
- [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/49
Differential Revision: D4005549
Pulled By: jessesquires
fbshipit-source-id: e1683ebe8882d1a8de934c8166f67d3508cffba9