Commit graph

312 commits

Author SHA1 Message Date
Ryan Nystrom
5fe27d8809 Add debug dump scripts
Summary:
Got a little time on the plane to mess around with this idea. Very much want comments on this! Some questions:

- We should probably compile out parts of this using `#if DEBUG`.
  - Should I compile out all of the description methods?
  - Maybe I wrap the entire debug files w/ `#if DEBUG ... #endif` so none of it is loaded?
- ryanolsonk I used [FLEX](https://github.com/Flipboard/FLEX/blob/master/Classes/Utility/FLEXHeapEnumerator.m) for searching the heap, lmk if you see any problems w/ this
  - Its lifted w/ only a few changes for my specific needs (including comments 😂)
  - Chalk us up for using [another bit](https://github.com/Instagram/IGListKit/blob/master/Source/Internal/IGListAdapterProxy.m#L77-L82) of your code
- Added a basic test so that the basics of this work and coverage doesn't tank
  - Anything else I should test?
- Is there more data we should be dumping?
- I have to track batch update state on the updater in order to dump it. If this seems dan
Closes https://github.com/Instagram/IGListKit/pull/617

Reviewed By: jessesquires

Differential Revision: D4929426

Pulled By: rnystrom

fbshipit-source-id: fcba0d6f0b7766485440f208cf70ad39dfc7a42e
2017-04-21 16:46:06 -07:00
Bas Broek
ea5a4cc00f Init without working range size
Summary:
Issue fixed: #414

- [x] All tests pass. Demo project builds and runs.
- [ ] I added tests, an experiment, or detailed why my change isn't tested.
- [x] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes.
- [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md)

What should we do with testing? I changed all the occurrences of the old initializer with the new one, so I think this is good to go?
Closes https://github.com/Instagram/IGListKit/pull/686

Differential Revision: D4931986

Pulled By: jessesquires

fbshipit-source-id: d6f0ac6578c11f8ef37ec0e385bc110e3abd7c91
2017-04-21 14:30:46 -07:00
Artem Goncharov
e729ab8211 Fixed empty space bug in CollectionView
Summary:
Fixed situation when cells with small height don't intersect with the _Rect_ and stop the enumeration that cause empty spaces in _collectionView_.

Issue fixed: # [680](https://github.com/Instagram/IGListKit/issues/680)

- [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 added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes.
- [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/684

Differential Revision: D4929315

Pulled By: rnystrom

fbshipit-source-id: 4437df21772697a9a6421d213f4fed7b8470371b
2017-04-21 08:20:16 -07:00
Ryan Nystrom
fdbe025fe1 Add base test case class for simpler unit testing
Summary:
Making it simpler to setup tests w/ default config and objects. Less LoC in tests, lower setup cost when creating new test suites.

Should I changelog?

Issue fixed: #183

- [x] All tests pass. Demo project builds and runs.
- [x] I added tests, an experiment, or detailed why my change isn't tested.
Closes https://github.com/Instagram/IGListKit/pull/678

Differential Revision: D4921633

Pulled By: rnystrom

fbshipit-source-id: fb4d08acb6ed0ba885cf56ce147f70b304301ff1
2017-04-20 14:36:28 -07:00
Ryan Nystrom
073fc073e0 Prevent duplicate item deletes and drop reload collisions
Summary:
a415ef5552 exposed a bug in `UICollectionView` where its state gets corrupted when deleting the same index path more than once in a single batch update block. This resulted crashes like

```
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x4)
Closes https://github.com/Instagram/IGListKit/pull/657

Reviewed By: jessesquires

Differential Revision: D4913790

Pulled By: rnystrom

fbshipit-source-id: 8f6fcdd2e2438da309fc64ca0ac111b9a0980149
2017-04-19 17:17:41 -07:00
Ryan Nystrom
ad416ecccd Remove refs to IGListSectionType, fix TV app example
Summary:
- Clean up docs
  - Remove `IGListSectionType` and `IGListCollectionView`
- Fix TV app example

Issue fixed: #675

- [x] All tests pass. Demo project builds and runs.
Closes https://github.com/Instagram/IGListKit/pull/676

Differential Revision: D4915634

Pulled By: rnystrom

fbshipit-source-id: 60eb1f1e5ece7fe68f6bf44b465bd5379615d716
2017-04-19 16:21:07 -07:00
Jesse Squires
145327647b Invalidate layout when collection view reused between IGListAdapters
Summary:
Closes #659
Closes https://github.com/Instagram/IGListKit/pull/677

Differential Revision: D4915322

Pulled By: jessesquires

fbshipit-source-id: 2ae6ff4ee1726fe2395233d7d662c0b12956a746
2017-04-19 13:00:47 -07:00
heshamsalman
04e6c1bff1 Increased timeout time, close #669
Summary:
Simple find and replace for `waitForExpectationsWithTimeout:15` and `waitForExpectationsWithTimeout:16`

Issue fixed: #669

- [ ] All tests pass. Demo project builds and runs.
- [ ] I added tests, an experiment, or detailed why my change isn't tested.
- [ ] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes.
- [ ] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/670

Differential Revision: D4915711

Pulled By: rnystrom

fbshipit-source-id: 7afd990cd5d18844ec1da08c5335f7138feb0b87
2017-04-19 13:00:47 -07:00
Ryan Nystrom
301f1471c9 Add generic type section controller
Summary: Adding and implementing an example of a new section controller that can be configured with a type. This section controller automatically stores its object in `didUpdateToObject:`, and implementations can trust the type-safety of the object!

Reviewed By: jessesquires

Differential Revision: D4914179

fbshipit-source-id: 39e2dce8ca29a1c0c92dc78eb8c25a7ab0a21978
2017-04-19 12:45:36 -07:00
Ryan Nystrom
3102852ce2 Remove IGListSectionType
Summary:
Removing the `IGListSectionType` protocol and adding default implementations into `IGListSectionController`.

- `numberOfItems` returns 1
- `cellForItemAtIndex:` asserts (have to return a cell)
- `didUpdateToObject:` no-ops
- `didSelectItemAtIndex:` no-ops

Fixes #168

Reviewed By: jessesquires

Differential Revision: D4909585

fbshipit-source-id: 8816702504e3fc0683868914ff4dd20e4af7c166
2017-04-19 08:26:30 -07:00
Ryan Nystrom
4441bd84cc Fix crash when requesting OOB layout attributes
Summary: There's a small crash showing up when requesting an index path that doesn't exist. It's totally valid that this could be requested from a product and not the infra. Should fail gracefully.

Differential Revision: D4911349

fbshipit-source-id: eee8891cf9400b3c3cd5539e839296f393f82354
2017-04-19 08:26:30 -07:00
Jesse Squires
693cb8a523 fix NSProxy init
Summary:
`NSProxy` doesn't define `init` because it's abstract.

designated init requires a call to super designated init (which doesn't exist for NSProxy)

sweet
Closes https://github.com/Instagram/IGListKit/pull/667

Differential Revision: D4908034

Pulled By: jessesquires

fbshipit-source-id: c223e05f49ab74d69affe8fdf37e0625e587c8b0
2017-04-18 13:00:55 -07:00
Andrew Monshizadeh
ae11d6af53 Move UICollectionView(DataSource|Delegate) to category
Summary:
This reduces the quantity of the code within IGListAdapter.m and is a bit more in line with Swift style of putting protocol conformance into extensions.

This does not change functionality just rearranges where code lives.

- [X] All tests pass. Demo project builds and runs.
- [X] I added tests, an experiment, or detailed why my change isn't tested.
- [N/A] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes.
- [N/A] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/599

Reviewed By: jessesquires

Differential Revision: D4861777

Pulled By: amonshiz

fbshipit-source-id: eaa31aa9438f3892193aeb8b4ae580ba2960ee8b
2017-04-18 11:21:18 -07:00
Bas Broek
edc38c77fe Remove @param alignment from header docs #trivial
Summary:
Issue fixed: #655

- [x] All tests pass. Demo project builds and runs.
- [ ] I added tests, an experiment, or detailed why my change isn't tested.
- [ ] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes.
- [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md)

I've also addressed a few cases where there was no empty line between the `param`s and `return`.
Closes https://github.com/Instagram/IGListKit/pull/665

Differential Revision: D4906215

Pulled By: jessesquires

fbshipit-source-id: 5693c85eb548644b0b0e2571eea8ff4d9f706b12
2017-04-18 09:46:18 -07:00
Jesse Squires
a4b579a089 Create Working with UICollectionView guide
Summary:
Close #527
Closes https://github.com/Instagram/IGListKit/pull/664

Differential Revision: D4906260

Pulled By: jessesquires

fbshipit-source-id: c849dd17d6161ab121d0d3dd55e59e9e0832be73
2017-04-18 08:47:42 -07:00
Bas Broek
2e3d798870 Fix GitHub capitalization
Summary:
Issue fixed: --

- [x] All tests pass. Demo project builds and runs.
- [ ] I added tests, an experiment, or detailed why my change isn't tested.
- [ ] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes.
- [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/666

Differential Revision: D4906205

Pulled By: jessesquires

fbshipit-source-id: b24e187dcc16fda2305804add4129da60197e86c
2017-04-18 08:47:42 -07:00
James Sherlock
df0e538119 Added NS_UNAVAILABLE to new/init
Summary:
Not sure what was expected for a "designated initialiser" feel free to school me and I'll do it!

(Also just had to google difference between + and - in ObjC)

Issue fixed: #654, #652
Closes https://github.com/Instagram/IGListKit/pull/662

Differential Revision: D4900092

Pulled By: jessesquires

fbshipit-source-id: 7858065ecc88a9ad7cb064811f0180d0f84f174d
2017-04-17 15:01:54 -07:00
Ryan Nystrom
63ed50c23c Update FAQ with more Questions
Summary:
Been compiling a list of more questions, adding them to the FAQ. Note that this includes some 3.0-only stuff.
Closes https://github.com/Instagram/IGListKit/pull/660

Differential Revision: D4899942

Pulled By: jessesquires

fbshipit-source-id: c19b2f226285ab9e2734a677ccacd98d33755cbc
2017-04-17 12:18:00 -07:00
James Sherlock
c736a37b5f Fix storyboard example app, Fix example build issue
Summary:
Collection view layout has "user defined runtime attributes" which were left over from the old IG grid layout. I've removed them as we don't use them any more.

Also I couldn't build the project because of the map function in the dependency injection example, so changed that slightly to make it run (tested that and still works)

Issue fixed: #656
Closes https://github.com/Instagram/IGListKit/pull/658

Differential Revision: D4899250

Pulled By: jessesquires

fbshipit-source-id: 04f15399732ce07c6026d07801e228de5d5e47ab
2017-04-17 11:02:36 -07:00
James Sherlock
049b463d2c Replaced placeholders in changelog
Summary:
Travis is complaining about dead links, so this fixes the one in changelog but there's still a broken link in guides to the core data guide which isn't published yet (via Jazzy).

Should we regen docs but reset everything which isn't the guides? Or are we happy to just leave that one until we release 3.0?
Closes https://github.com/Instagram/IGListKit/pull/649

Differential Revision: D4898644

Pulled By: jessesquires

fbshipit-source-id: d1524ef521931471409021ceb23bea7853628294
2017-04-17 10:44:32 -07:00
yuzushioh@gmail.com
74b84da4c3 Added a project link for IGListKit with RxSwift section in the guide
Summary:
I updated IGListKit with RxSwift section in the guide. related to #619
Closes https://github.com/Instagram/IGListKit/pull/648

Differential Revision: D4898650

Pulled By: jessesquires

fbshipit-source-id: 7c3a6913003efe5595155da5c8ca9ba640d1c5cc
2017-04-17 10:44:32 -07:00
heshamsalman
3c41fb15e5 Uniqueness assert of section controllers, close #567
Summary:
Issue fixed: #567

- [ ] All tests pass. Demo project builds and runs.
- [ ] I added tests, an experiment, or detailed why my change isn't tested.
- [ ] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes.
- [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/639

Differential Revision: D4878842

Pulled By: jessesquires

fbshipit-source-id: 664648cf4f5e28d0a6af308e30151cb66863962c
2017-04-12 16:15:55 -07:00
Jesse Squires
281e6416b2 Update README.md
Summary:
Adding some more "Getting started" resources
Closes https://github.com/Instagram/IGListKit/pull/640

Differential Revision: D4878807

Pulled By: jessesquires

fbshipit-source-id: d063242af31c91244278c997018d860c88f287ab
2017-04-12 15:04:29 -07:00
Jesse Squires
a415ef5552 Prevent a crash when inserting the same index twice, re-open of #616
Summary:
Original comment:

If you insert or delete into the same index twice **and** update your data source to reflect those changes, we will squash the insert/delete into a single update because we're using `NSSet` internally.

This becomes very apparent when multiple updates are coalesced.

Issue fixed: #483

- [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 added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes.
Closes https://github.com/Instagram/IGListKit/pull/634

Differential Revision: D4860479

Pulled By: jessesquires

fbshipit-source-id: 3aa271d90fca21b11201f62cefa8d7fbcef6930f
2017-04-11 15:02:13 -07:00
heshamsalman
6758355f0c Chore/variable accessibility, close #618
Summary:
Issue fixed: #618

- [ ] All tests pass. Demo project builds and runs.
- [ ] I added tests, an experiment, or detailed why my change isn't tested.
- [ ] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes.
- [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/637

Differential Revision: D4869624

Pulled By: jessesquires

fbshipit-source-id: a9d5623dbb7a032691f3af5a2abf61adc3a42cd0
2017-04-11 13:46:41 -07:00
Jesse Squires
c49511fb4f Update .travis.yml
Summary:
Async tests seem to be consistently failing for these OS/device combinations.

 travis-ci + xcode voodoo 

See:
- https://travis-ci.org/Instagram/IGListKit/builds/220759328
- https://travis-ci.org/Instagram/IGListKit/builds/220614176
- https://travis-ci.org/Instagram/IGListKit/builds/221005278
- https://travis-ci.org/Instagram/IGListKit/builds/218269854
Closes https://github.com/Instagram/IGListKit/pull/638

Differential Revision: D4869620

Pulled By: jessesquires

fbshipit-source-id: 19f93c55bb645cdd138004b7e1ceb59c0f8ad349
2017-04-11 13:46:40 -07:00
Adlai Holler
4a5fd32ad8 Add Nullability to a Few Headers
Summary:
I saw some `!` in the Swift example that we can remove 🙂

Same as I mentioned in my last PR, the iOS examples project can't be opened on my machine, but I believe I updated the examples to be compatible.
Closes https://github.com/Instagram/IGListKit/pull/626

Differential Revision: D4860165

Pulled By: jessesquires

fbshipit-source-id: 74bcac8fc759da8105e658901c3df9e71afc609f
2017-04-10 10:18:20 -07:00
Jesse Squires
d930862c5f updates to README.md file
Summary:
A section added called Examples in the README file
Closes https://github.com/Instagram/IGListKit/pull/628

Differential Revision: D4860149

Pulled By: jessesquires

fbshipit-source-id: c3bad98a827f020b98bf81ada8d678ae8c697329
2017-04-10 09:34:21 -07:00
Rune Madsen
d26ceeb7d9 Fix iOS Example xcodeproj file
Summary:
Issue fixed: #630

- [x] All tests pass. Demo project builds and runs.
- [ ] I added tests, an experiment, or detailed why my change isn't tested.
- [ ] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes.
- [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/631

Differential Revision: D4860116

Pulled By: jessesquires

fbshipit-source-id: 8138b50106ae06e06c643ba74451c511f38b0b98
2017-04-10 09:34:21 -07:00
Jesse Squires
da4ef11f5b Add vision doc
Summary:
Adding a `VISION.md` doc at the root dir to give collaborators and users guidance about what we will work on and how we will prioritize features/fixes for IGListKit.

Issue fixed: #542

Closes https://github.com/Instagram/IGListKit/pull/607

Differential Revision: D4852285

Pulled By: jessesquires

fbshipit-source-id: 9588c1ade63d291d60a4ff34c50506c38b51b5b0
2017-04-07 15:23:47 -07:00
Ryan Nystrom
ba65b56a9b Improve the ObjC demo to reflect best-practices
Summary:
Couple best practices I want to make sure our examples reflect:

- Multiple cells in a section controller
- Unique models returned in `objectsForListAdapter:` (no dupes!)
- Dynamic item count (`comments` array)

Issue fixed: #595

- [x] All tests pass. Demo project builds and runs.
Closes https://github.com/Instagram/IGListKit/pull/615

Differential Revision: D4852192

Pulled By: jessesquires

fbshipit-source-id: f4a89800f90e6b5ea4b6dd7c0d9a78ca5d65082c
2017-04-07 11:33:43 -07:00
Ryan Nystrom
49bf24693d Demo for dependency injection and announcing changes
Summary:
Created a new demo that shows off how to:

- Inject dependencies to section controllers
  - Objects shared between section controllers
  - Things that aren't the core "object"
- Announce changes from the VC that make their way to the section controllers
  - Without calling updates
Closes https://github.com/Instagram/IGListKit/pull/612

Differential Revision: D4827188

Pulled By: rnystrom

fbshipit-source-id: 9575df0e105fd06f9a59db49432b19e8b824e0e3
2017-04-04 10:16:39 -07:00
Andrew Monshizadeh
2ac81d4c37 Generics are now necessary on the IGListBindingSectionController object
Summary:
PR #602 added generics to `IGListBindingSectionController` in the ObjC code but did not update the Swift Examples. Swift fails to compile without any form of generic specification.

Fixed example compilation.

- [X] All tests pass. Demo project builds and runs.
- [ ] I added tests, an experiment, or detailed why my change isn't tested.
- [ ] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes.
- [ ] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/608

Differential Revision: D4818132

Pulled By: rnystrom

fbshipit-source-id: 8ccdab044ac68d2a95085faedf683ac1b882cbff
2017-04-02 20:30:57 -07:00
PhilCai
7c81d0bd3d fix a test mistake in IGListDisplayHandlerTests
Summary:
Issue fixed: #

- [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 added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes.
- [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/605

Differential Revision: D4817720

Pulled By: rnystrom

fbshipit-source-id: a6d2cda39ede7bf4b44c2fefe6675339f467f2ae
2017-04-02 13:37:40 -07:00
Adlai Holler
e9e09d726c Make -[IGListBindingSectionController object] Public
Summary:
Issue fixed: #572

I didn't add an entry into `CHANGELOG` since the entire component is new. I've been doing some proof-of-concepts for IGListBindingSectionController + AsyncDisplayKit in Pinterest and it's working like a charm!
Closes https://github.com/Instagram/IGListKit/pull/602

Reviewed By: rnystrom

Differential Revision: D4812758

Pulled By: jessesquires

fbshipit-source-id: 9c23f32882cb99f6539ab45dec0e76a274c64370
2017-03-31 15:03:11 -07:00
Jesse Squires
2284ce3897 kill IGListCollectionView. GH issue #409 (redo of D4640425)
Summary:
Take 2. Remove `IGListCollectionView` per #409. Use plain old `UICollectionView`.
(This re-applies D4640425 and updates as needed.)

Also:
- run `pod update` everywhere
- update changelog

Reviewed By: paulvanderspek

Differential Revision: D4812207

fbshipit-source-id: 1ddbae06cdeddb43d8af175d3e8a045a36ff150e
2017-03-31 14:54:09 -07:00
Andrew Monshizadeh
9735d611e8 Nitpicky comment fixes
Summary:
Mainly this addresses clarity of a few comments, line breaks at weird places, and style differences within a single file.

Just comments and including JetBrains `.idea` config folder in the `gitignore`.

- [X] All tests pass. Demo project builds and runs.
- [X] I added tests, an experiment, or detailed why my change isn't tested.
- [N/A] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes.
- [N/A] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/600

Differential Revision: D4810628

Pulled By: jessesquires

fbshipit-source-id: fce445c0253f592a43045ae098e440d41c166993
2017-03-31 13:01:40 -07:00
Ryan Nystrom
623ff2a8a8 Container size doesnt use content inset, add new APIs
Summary:
The content inset of a collection view can change at any time (as it does with our refresh control) and isn't a good measure of the container size. I don't want to totally remove that API though, so I changed the default behavior, added an insets API, and also added the functionality of the original in a new API.

This makes sizes much more deterministic.

Reviewed By: jessesquires

Differential Revision: D4800758

fbshipit-source-id: 85ce843b5b1c297cea2e2ea705fa255617cbe356
2017-03-30 09:35:03 -07:00
Ryan Nystrom
4e9b0bb4c4 Prevent negative spaces for items and supplementaries
Summary:
If a negative height/width comes down, cap it to `0.0`.

Issue fixed: #566

Also fixes t16455632 internally.

- [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 added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes.
Closes https://github.com/Instagram/IGListKit/pull/583

Differential Revision: D4797520

Pulled By: jessesquires

fbshipit-source-id: 3eeec5244a445bb451460286b4f006ca0d9c67d1
2017-03-29 15:01:08 -07:00
Jesse Squires
a98c4ff252 Updates to the Contributing.md file.
Summary:
Issue fixed: #473

- [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 added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes.
- [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/558

Differential Revision: D4797501

Pulled By: jessesquires

fbshipit-source-id: e197283f30781017e6fd76a6c604599a4f480e69
2017-03-29 13:47:18 -07:00
Tapan Prakash
6cce7b42d5 Changed xcode version to 8.3 in .travis file
Summary:
Updated osx_image to xcode8.3, close #590

Issue fixed:
- Updated .travis file osx_image to 8.3
- Updated iphonesimulator and tvossimulator.
- Doesn't require tests, as it'll either pass with no changes to the codebase or break CI.

- [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 added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes.
- [x ] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/594

Differential Revision: D4797499

Pulled By: jessesquires

fbshipit-source-id: a45c6c849564d08ba995ebf97b4ddf9937609d77
2017-03-29 13:32:55 -07:00
Ryan Nystrom
5eca718ea7 Drop section moves if they are also deleted or inserted
Summary:
Issue fixed: #430

- [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 added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes.
Closes https://github.com/Instagram/IGListKit/pull/577

Differential Revision: D4768612

Pulled By: rnystrom

fbshipit-source-id: 6a2024101411302446cc2b7843fa175cd43a1562
2017-03-23 22:31:38 -07:00
Ryan Nystrom
653a5b62da Deflake Travis jobs
Summary:
Too much noise, really want to see  on PRs instead of having to fish to see it was just the UI tests again.
Closes https://github.com/Instagram/IGListKit/pull/576

Differential Revision: D4768596

Pulled By: rnystrom

fbshipit-source-id: fe525d5434614643a389d11fc7a76be4f5112958
2017-03-23 21:01:58 -07:00
Ryan Nystrom
ca9e9a16b7 Fix unused variable warning when asserts compiled out
Summary:
Found this examining Travis output. Warning removed when asserts aren't compiled.

Closes https://github.com/Instagram/IGListKit/pull/580

Differential Revision: D4763179

Pulled By: rnystrom

fbshipit-source-id: af23780387e8d8f95f11fe778d91e281006ff6fb
2017-03-23 11:47:58 -07:00
Ryan Nystrom
1818c20e5f Add missing changelog entry from diff identifier fix
Summary:
Was missing changelog
Closes https://github.com/Instagram/IGListKit/pull/575

Differential Revision: D4755775

Pulled By: rnystrom

fbshipit-source-id: b4f3a4477f88077c74ba1e936e39907b6a272542
2017-03-22 13:01:20 -07:00
Ryan Nystrom
a15ea08614 Move section controller mutation API to object provided in update block
Summary:
We constantly have random bugs pop up when mutations are made outside of a batch update. This change restricts the mutation API to a batch context object (which is just an `IGListAdapter`) so they can only be done **inside an update block**.

- Fixed open source project
- Confirmed open source examples build
- Updated all of Instagram.app to use this API
- Changelog breaking changes entry

Fixes #392

Reviewed By: jessesquires

Differential Revision: D4754129

fbshipit-source-id: 11d32a0fac3e50c9edbb01e92a8a0c7b8a43cf2d
2017-03-22 12:46:49 -07:00
Ryan Nystrom
af984ca81d Assert nil diff identifier, remove if nil
Summary:
Do not allow `nil` diff identifiers to get through. Pluck the objects if this happens and assert.

- Fix the bug if it happens
- Assert to tell the developer what is wrong

Differential Revision: D4753827

fbshipit-source-id: 3a92543c648ed7157ec30af7cb1c91a6e6238e33
2017-03-22 09:49:26 -07:00
Nikolai Johan Heum
353d90f397 fixed broken example project
Summary:
- The recent addition of `IGListCollectionViewLayoutInternal.h` in a80245a696 broke the example project. This PR fixes this.
- Name sorted the internal files

- [x] All tests pass. Demo project builds and runs.
- [x] Why didnt Travis catch this? 🤔
- [X] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes.
- [X] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/569

Differential Revision: D4740682

Pulled By: rnystrom

fbshipit-source-id: 2c57d03f9751d14edf35741eaa97d0ae8a2f167a
2017-03-20 14:48:14 -07:00
Shiyi Zhao
24308a9881 handle float number fraction part for layout.
Summary:
[IGListCollectionViewLayout]: handle float number fraction part for layout.
When width of item is a float number with non-zero fraction part.
After integer scaled, it might add up smaller or bigger than maxWidth.
Ex with 6 items with 13 padding on each side
1. iPhone 7, maxWidth = 349, scaledItemWidth = 58 -> 58 * 6 = 348, which is smaller than 349
-> this can cause issue where is extra one line at end
2. iPone 7 plus, maxWidth = 388, scaledItemWidth = 64.6667 -> 64.6667 * 6 = 388.0002, which is bigger than 388
-> this can cause issue where last item is mistakenly shifted to next row

To fix it, add epsilon = 1 to allow some error range
Also add stretchToEdge BOOL flag to handle case 1 to decide whether to strech the width of last item.

Reviewed By: ryanolsonk, jessesquires

Differential Revision: D4720156

fbshipit-source-id: 765f6b13b7d601394d65788c30ae69ac1b37c3f2
2017-03-17 12:33:34 -07:00
Shiyi Zhao
a80245a696 add integer pixel scaled for frame
Summary: [IGListCollectionViewLayout]: add integer pixel scaled for frame

Reviewed By: jessesquires

Differential Revision: D4727500

fbshipit-source-id: dccabe9152fdec4a9bee2b92d9a7897552a0fecb
2017-03-17 12:33:34 -07:00