Commit graph

784 commits

Author SHA1 Message Date
Tim Oliver
ffd51e6235 Enable using the invalidateLayout method in IGListCollectionViewLayout
Summary:
I noticed some strange behaviour in a collection view I was testing that was using `IGListCollectionView` and `IGListCollectionViewLayout`. Even if I called `invalidateLayout` on it, the cells wouldn't resize and would sometimes end up overflowing outside the collection view's bound.

I eventually managed to trace this back to `IGListCollectionViewLayout` that uses a `_minimumInvalidatedSection` flag to track when list content has changed before it starts calling the sizing logic of each section controller. While `invalidateLayoutWithContext:(IGListCollectionViewLayoutInvalidationContext *)context` was correctly setting this flag, `invalidateLayout` wasn't subclassed, and so this call was basically always falling through.

This diff configures `invalidateLayout` to set this flag, so when this method is called, it will correctly perform a new cell sizing pass.

Reviewed By: DimaVartanian

Differential Revision: D47787723

fbshipit-source-id: 724d76ba3e7b5c32b60e7c76347a129c30f0b502
2023-07-26 20:35:00 -07:00
Tim Oliver
e965f28515 Refine "Load More" view controller for iPad
Summary:
The "Tail Loading" example wasn't working correctly on some iPad variants as some of the screens were too large for the number of items in the collection.

This diff:
* Enables scroll bouncing regardless of content size
* Adds more items to the list on iPad to ensure it always has some scrollable height.
* Adds `invalidateLayout()` to view size changes in order to properly handle landscape/portrait rotations.
* Hides the disclosure chevron by default (Since only the Demos view controller when running on iPhone needs it)

Reviewed By: DimaVartanian

Differential Revision: D47662107

fbshipit-source-id: a9b2ee532a84b62a387685da09c5ea532eb2c874
2023-07-25 09:17:11 -07:00
Tim Oliver
71d06d54c1 Convert Demos to rounded group style
Summary: To demonstrate some more advanced UI customization with IGListKit, and to help make the sample app look more modern, this diff updates the root Demos view controller to adopt the 'grouped inset' style of lists that was introduced in iOS 13.

Reviewed By: DimaVartanian

Differential Revision: D47050305

fbshipit-source-id: e230bea3c98ecb9f547d4fb04b74f32efcb4d986
2023-07-25 09:17:11 -07:00
Tim Oliver
6ab6109779 Polish Demos view controller
Summary:
Adds additional polish and refinement to the initial Demos view controller.

* Adds SF Symbols to each section.
* Correctly selects and deselects cells when in and out split view mode.
* Fixes demo table view cell to adapt to safe area insets correctly.

Reviewed By: fabiomassimo

Differential Revision: D45686668

fbshipit-source-id: 5e24120a0aab5cb3fb9c33b0b0d7c087a56d6304
2023-07-19 22:08:21 -07:00
Tim Oliver
1e48bf9141 Add split mode to iPad
Summary: Updates the sample iOS app with `UISplitViewController` to enable split view functionality on iPad, and larger screen iPhones.

Reviewed By: fabiomassimo

Differential Revision: D45687142

fbshipit-source-id: 171cf7f3306b64db92216dded5c129fa15fd97b3
2023-07-19 22:08:21 -07:00
Tim Oliver
6f8c494060 Add iOS 11 large titles
Summary:
As part of the push for a new public release of IGListKit, I thought it'd be a good idea to go back, review the sample apps and provide some visual updates where possible. There are a lot of modern features of iOS and the other platforms that we can use to improve the look of the sample apps for free. 😁

For starters, this diff adds the standard iOS 11 large titles to the view controllers in the iOS sample app.

Reviewed By: fabiomassimo

Differential Revision: D45685793

fbshipit-source-id: f1846cfce32fb4945a6edf5e1a05c4cafd73dacc
2023-07-19 22:08:21 -07:00
Maxime Ollivier
cd3f84f227 fix crash when calling reloadObjects during an update
Summary:
Follow up to D47263265

## What's happening
We're calling `listAdapter.reloadObjects(...)` in the middle of the IGListKit's internal data update, so it's using the new section index path, instead of the old one. So we're going from a list of 2, insert at 0, and try to reload index 1, then we crash (it'll try to update index 2, which doesn't exist in the old array)

## Fix
Just like for `[IGListAdapter performBatchAnimated:updates:completion:]`, lets use the old index. To get this working, lets ask the updater if we're in an update, rather than `IGListAdapter` try to keep track of it.

Sorry the diff is a bit long, but in case this feels reasonable to pick, I might

Differential Revision: D47281472

fbshipit-source-id: 193153cfc15c87084b67f58c50e921db459d6800
2023-07-07 11:36:50 -07:00
Fabio Milano
dbda739b62 Log critical assert
Summary: Use `IGFailure` to log critical issues

Differential Revision:
D46029468

Privacy Context Container: L1132866

fbshipit-source-id: f642a50310e7a7d7a80e01ba61d382bb9a794496
2023-05-19 13:40:51 -07:00
Fabio Milano
dffcd4d0c8 Added new assertion level in IGListKit
Summary: Added new level of assertions for failures.

Differential Revision: D46029469

fbshipit-source-id: d8bd7ff41a19c15967e198c22aa5dc7b43972800
2023-05-19 13:40:51 -07:00
Fabio Milano
eb9b18ada4 Added try catch for NSInternalInconsistencyException in the update transaction
Summary: Added try catch for managing NSInternalInconsistencyException that are now tunneled through our assert flow

Differential Revision: D45995182

fbshipit-source-id: 829d2ea3122c1ed40e25c8da36d1926d27b42418
2023-05-18 13:26:26 -07:00
Tim Oliver
f4afe0d84a Delete .travis.yml
Summary:
At this point, I think we've migrated most, if not all of the equivalent pipelines from Travis CI over to GitHub Actions.

As part of preparing to launch v5.0, let's do some housecleaning and remove files that aren't being used anymore.

Differential Revision: D45476049

fbshipit-source-id: 423713d72870d20a2c3e0746b1d500e5d95b6340
2023-05-09 01:41:03 -07:00
Tim Oliver
c2cea36534 Update references to committed features in CHANGELOG
Summary: There were a lot of placeholder references to the PRs of committed features in the CHANGELOG. I went along each one and tagged each PR/commit that added the feature.

Differential Revision: D45477107

fbshipit-source-id: 4d64366bbafc07de278aaacac7e8558b6483cae4
2023-05-09 01:39:22 -07:00
ke.xu
164f39c4d4 Fix unsigned integer overflow (#1299)
Summary:
## Changes in this pull request

Issue fixed: #

### Checklist

- [ ] 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)
Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1299

Reviewed By: m3rlin45

Differential Revision: D18703628

Pulled By: TimOliver

fbshipit-source-id: d347ed9c59c62ccdb73bd3abd14e289b7c06f3f6
2023-05-02 02:23:55 -07:00
Kent Sutherland
3cd3a111dd Update deployment targets to silence Xcode 14 warnings (#1573)
Summary:
## Changes in this pull request

Xcode 14 changed the minimum deployment target to iOS/tvOS 11.0 and macOS 10.13. This PR moves up the deployment targets so that a warning isn't shown on every build.

I also silenced the development region and base localization warnings.

### 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 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/main/.github/CONTRIBUTING.md)

Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1573

Differential Revision: D45223095

Pulled By: TimOliver

fbshipit-source-id: 57fbd284809c09f86a9731d0676332de35fbe0df
2023-05-01 22:48:23 -07:00
Tim Oliver
f2b16b345e Add framework import check for IGListBindingSingleSectionController
Summary: One final tweak to IGListBindingSingleSectionController to ensure proper running with the sample apps on GitHub.

Reviewed By: m3rlin45

Differential Revision: D45170133

fbshipit-source-id: 8b48761962dee79a408cad2e9ffcc55a0fbd550e
2023-04-20 22:15:12 -07:00
Tim Oliver
bc83026985 Update IGListKit symlinks for SPM support
Summary: I ran the script needed to update the symlinks needed for SPM support. This removed the symlinks for the files we deleted and added the ones for `IGListBindingSingleSectionController`.

Reviewed By: candance

Differential Revision: D45147897

fbshipit-source-id: e3d351fcefd1f0e193aafc6f6c2af91fefb8c5cb
2023-04-20 14:26:11 -07:00
Tim Oliver
425cee4cef Split out checks for methods that throw
Summary:
I'm still not sure if there's an easier way to test throwing methods that work on both GitHub Actions and our internal build tooling (Since GitHub does throw at asserts, and our internal tools don't), but this way at least works.

Each statement has to be contained in its own separate `try` because the first throwing method will cancel execution in the rest of the code block.

This diff separates out each throwing test into its own `try` block

Reviewed By: candance

Differential Revision: D45147876

fbshipit-source-id: 95d587d5abe4a695b1ca1f76ebf3bda3984c6065
2023-04-20 14:26:11 -07:00
Tim Oliver
f66a0ae1e7 Add remaining test coverage for IGListBindingSingleSectionController
Summary: Adds additional tests to `IGListBindingSingleSectionControllerTests` to give `IGListBindingSingleSectionController` 100% code coverage

Reviewed By: candance

Differential Revision: D45147830

fbshipit-source-id: 0753888ab7f8058d72eb463f6444458bae65d964
2023-04-20 14:26:11 -07:00
Tim Oliver
d7206117a7 Add IGListBindingSingleSectionController to public headers
Summary:
While the `IGListBindingSingleSectionController` class and a nearly complete test suite were present in the IGListKit repo, they weren't imported into Xcode, and so they weren't part of the public release or the test CI.

Since the class looks like it's being used within Instagram, it's clear that it's not deprecated. I'm assuming it was added for a specific use-case in Instagram, and integrating it with the public Xcode project was still pending.

This diff integrates the class back into the public framework.

Reviewed By: candance

Differential Revision: D45147758

fbshipit-source-id: b0a84a2909635a4448480246f315243f4fcac134
2023-04-20 14:26:11 -07:00
Tim Oliver
b68ab60b92 Remove unused IGListExperimentalAdapterUpdater+DebugDescription.h header file
Summary: I found a file named `IGListExperimentalAdapterUpdater+DebugDescription.h` that wasn't part of the Xcode project, and had no accompanying implementation file. Since it looks like it's not being used, we can probably just delete it.

Reviewed By: candance

Differential Revision: D45147745

fbshipit-source-id: a1fbc0475c1c6098f03c7ea6a2f6316917c2e677
2023-04-20 14:26:11 -07:00
Tim Oliver
b09fc8c775 Add detached source files back to Xcode project
Summary:
I discovered after committing the last stack of diffs (especially after renaming `IGListReloadDataUpdaterTests`) that some of the other test files weren't included in IGListKit's Xcode project.

This diff updates the project file to include all of the previously unlinked test and source files.

Reviewed By: candance

Differential Revision: D45147042

fbshipit-source-id: 3141e15b7bc1d0431b6286f6d966e88bd8f88f2a
2023-04-20 14:26:11 -07:00
Tim Oliver
18287ef629 Omit the test suite from code coverage stats
Summary:
I realized halfway through this exercise that the code in the unit tests themselves was also getting counted in the final code coverage stats, and that this was artificially inflating the final number by a pretty big amount.

This diff omits the test suite from the coverage stats.

Reviewed By: candance

Differential Revision: D45022827

fbshipit-source-id: 45a043e70bcc053e07dbeefaa2e3da8a10a982db
2023-04-17 20:41:49 -07:00
Tim Oliver
b746af936d Added extra test case to IGTestDelegateController
Summary: Added making a call to the supplementary view data source in IGTestDelegateController so that codepath gets the same test exposure as the regular cell mechanism.

Reviewed By: candance

Differential Revision: D45004843

fbshipit-source-id: 6d3140ebc59da5ba4b7a151f6f104cdbd63418c2
2023-04-17 20:41:49 -07:00
Tim Oliver
bec019925c Added remaining test coverage for IGListSectionMap
Summary: Added remaining test coverage to IGListSectionMap

Reviewed By: candance

Differential Revision: D45004860

fbshipit-source-id: 30e4988a8b3ce56551aceb52c0cd99be2286fffa
2023-04-17 20:41:49 -07:00
Tim Oliver
d7574152d3 Add test coverage for list adapter debugger class
Summary: Adds additional functionality and coverage testing to the adapter debugger class

Reviewed By: candance

Differential Revision: D45004651

fbshipit-source-id: 40330f5f2fed2946cc5ead89b30cf4030b596b65
2023-04-17 20:41:49 -07:00
Tim Oliver
7d9ccfc9ea Added test coverage to collection view and collection view layout
Summary: Adds additional test coverage to the collection view and collection view layout test suites

Reviewed By: candance

Differential Revision: D45004591

fbshipit-source-id: 21587df6f9595cb54481067322aae6443e089152
2023-04-17 20:41:49 -07:00
Tim Oliver
97120d288d Added remaining test coverage to IGListBindingSectionController
Summary: Added remaining test cases to cover `IGListBindingSectionController`

Reviewed By: candance

Differential Revision: D45004640

fbshipit-source-id: 2dd1662af849841ab5dccc1f6731ddac800657a0
2023-04-17 20:41:49 -07:00
Tim Oliver
2b0ca81c0b Added more coverage cases to list adapter tests
Summary: I reenabled a couple of tests that had previously been marked disabled, but work properly now, and I added additional tests to cover some of the coverage cases that had previously been missed.

Reviewed By: candance

Differential Revision: D45004625

fbshipit-source-id: dacf49b2f0f420f269e3071ad4fc76762c95365c
2023-04-17 20:41:49 -07:00
Tim Oliver
1bc993381c Reenable some disabled tests in list adapter E2E tests
Summary:
There were several tests in the E2E test suite that had been deliberately disabled. I reenabled them and tested them, and they all passed correctly.

I've left them reenabled in this diff, but we can disable them down the line again if they start to fail again.

Differential Revision: D45004373

fbshipit-source-id: c0bc96e1d364d702d12e945059daedf2ae21cfa5
2023-04-17 20:41:49 -07:00
Tim Oliver
95e19a1430 Renamed IGReloadDataUpdaterTests to IGListReloadDataUpdaterTests
Summary: This diff renames `IGReloadDataUpdaterTests` to `IGListReloadDataUpdaterTests` to be consistent with the naming scheme of the other classes

Differential Revision: D45004236

fbshipit-source-id: 8ecc2ca60740ff6cca1028400621a22c7b1d3406
2023-04-17 20:41:49 -07:00
Tim Oliver
965025d2d3 Add new test files to IGListKit
Summary: This diff adds several new test classes to IGListKit's test suite, covering a variety of objects and use cases that weren't covered before.

Reviewed By: candance

Differential Revision: D45004015

fbshipit-source-id: 5e6cc3f56e62328173657c09c955c320e6067936
2023-04-17 20:41:49 -07:00
Tim Oliver
08a1d83652 Refactor code syntax in internal classes to be easier to provide code coverage
Summary: Similar to the previous diff, this diff updates some of the code styling and syntax in IGListKit's internal classes to make it much easier to provide test coverage to each method in there.

Reviewed By: candance

Differential Revision: D45003471

fbshipit-source-id: 1267901fc7a917bf1c30783654a8fd0da941bff1
2023-04-17 20:41:49 -07:00
Tim Oliver
dfb52ea701 Refactor code syntax in public classes to be easier to provide code coverage
Summary:
While testing the existing code coverage, I discovered several code patterns in some of IGListKit's public classes that were literally impossible to cover. These included things like bailing out of blocks when `weakSelf` is `nil`, or exiting early inside `switch` statements.

This diff reimplements some of the existing logic in several of the public facing IGListKit classes, so that all of these classes can be 100% covered by unit tests.

Reviewed By: candance

Differential Revision: D45002889

fbshipit-source-id: 6b87ea6338b9f33bed7955d6cc797d116b533085
2023-04-17 20:41:49 -07:00
Tim Oliver
610c6d2ba8 Remove unused IGListBatchUpdates class from IGListKit
Summary:
While auditing all of the classes in IGListKit, I discovered that `IGListBatchUpdates` is completely unused. It looks like in the documentation that a new class was introduced to replace it, and it looks like this transition has already completed.

Since it doesn't make sense to cover an unused class, let's delete it. :)

Differential Revision: D45002736

fbshipit-source-id: 45e39f37bf00dc6c4867e9df49cfdfce1252604f
2023-04-17 20:41:49 -07:00
Tim Oliver
ceda03a0e1 Bring IGListDiffKit test coverage to 100%
Summary: Fills in the remaining gaps in the tests in order to bring the code coverage of IGListDiffKit (ie, the diffing engine portion of IGListKit) up to 100%.

Differential Revision: D45002512

fbshipit-source-id: b4795946400f7e5ead8882b5d0f5003fb1d17aed
2023-04-17 20:41:49 -07:00
Tim Oliver
324e853468 Update build environment to latest OS versions
Summary:
Our CI harness for IGListKit on GitHub recently started to consistently fail at the unit test phase (https://github.com/Instagram/IGListKit/actions/runs/4683650178/jobs/8298963444).

After researching it, it looks like GitHub Actions changed some configurations with their older versions of macOS, and our existing build script no longer seems to be working now. The build output seems to imply that Xcode simply hangs when it gets to the testing phase.

I decided to take this chance to do a thorough audit of all our build steps and update as many of the dependencies as I could to their latest versions. This has fixed the issue, and hopefully given us a decent amount of future-proofing at the same time. :)

Reviewed By: candance

Differential Revision: D45002141

fbshipit-source-id: 40b22da4a9282900ff299b5e41f3a8566c4071f0
2023-04-17 20:41:49 -07:00
Fabio Milano
6f39c3140e Demoting assertion for performing batch updates on empty collection view
Summary: We keep receiving must fixes for this assert that effectively are not followed up since they are hard to debug and seems do not affect the app. Demoting.

Reviewed By: candance

Differential Revision: D44934015

fbshipit-source-id: a65b8a5980a1e2a8ab48201987e90fdff646c498
2023-04-12 15:52:54 -07:00
Tim Oliver
26ddcb503a Updated copyright symbol in documentation
Summary:
It turns out we need to use the actual © symbol and not the equivalent HTML code for the copyright notice to be recognized.

This diff updates the README and documentation accordingly.

Differential Revision: D44782819

fbshipit-source-id: a99c61d38485e9f26453db9e073cb673937969cf
2023-04-07 01:58:02 -07:00
Tim Oliver
9a0f1fd9b2 Regenerate docs via jazzy
Summary:
I regenerated the documentation that lives at https://instagram.github.io/IGListKit/ via the `scripts/build_docs.sh` script.

This updates the IGListKit documentation from 2021 to 2023, updating references to Meta's open source Twitter account, and ensuring the legally required copyright notices are visible.

Differential Revision: D44751773

fbshipit-source-id: 61cc1b9501b1659eb7d4810ea85b80da25e5a69a
2023-04-07 00:23:43 -07:00
Tim Oliver
f92b9339ee Standarize the copyright notice in all source files
Summary:
The standardized Meta copyright notice is "Copyright (c) Meta Platforms, Inc. and affiliates." and not "Copyright (c) Meta Platforms, Inc. and its affiliates." (Dropping the "its")

This diff updates the copyright notice in each source file to the correct this.

Reviewed By: willbailey

Differential Revision: D44737667

fbshipit-source-id: 643bf36df76723e70d9d826c53cf8f29b8a0c8cc
2023-04-06 02:44:16 -07:00
Tim Oliver
4cf134582b Add copyright, terms of use and privacy policy notices to README footer
Summary:
This diff helps bring the public-facing IGListKit repo into compliance with the standardized legal requirements of open source software that is published by Meta.

It adds to the README the following notices:

* Meta's standard copyright notice
* A link to Meta's global terms of use policy
* A link to Meta's global privacy policy

Reviewed By: willbailey

Differential Revision: D44736884

fbshipit-source-id: 3b600aaaf67777075d318062730bfe0e1b369a2b
2023-04-06 02:44:16 -07:00
Tim Oliver
501cccc6f0 Provide full test coverage for IGListDiffKit model description strings
Summary:
Five model classes in IGListDiffKit: `IGListBatchUpdateData`, `IGListIndexPathResult`, `IGListIndexSetResult`, `IGListMoveIndex`, and `IGListMoveIndexPath` didn't have 100% test coverage because their `description` debug string methods weren't being tested.

I added a new unit test file specifically for testing description strings in IGListDiffKit wrote a basic test to verify each one.

This brings IGListDiffKit's test coverage back up to 100%.

Differential Revision: D44002058

fbshipit-source-id: ebb1bbb3c9a6d380540fc6bbedf5b8c5e5b254f1
2023-03-21 19:12:01 -07:00
Tim Oliver
a41026d93d Provide full test coverage for IGListBatchUpdateData.mm
Summary:
There were some codepaths in `IGListBatchUpdateData.mm` that weren't completely covered by our unit test suite. Namely the equality checks where the object addresses are compared, and when incompatible objects are compared.

This diff adds 2 extra tests to cover those cases, bringing `IGListBatchUpdateData.mm`'s test coverage up to 100%.

Differential Revision: D44001262

fbshipit-source-id: 516851ca6ebdcbf3a1a4e7e6e0bd2efcef69920a
2023-03-21 19:12:01 -07:00
Tim Oliver
9e457c39da Update SwiftLint and make it an optional dependency
Summary:
Fixes one final friction point for the IGListKit sample apps: SwiftLint.

At the moment, building the sample apps will hard fail if SwiftLint isn't presently installed. This is generally a good thing when adding new code to the sample apps, but for developers who might want to simply run the sample apps to try out IGListKit, this potentially adds additional unneeded friction.

Since SwiftLint also runs on each incoming PR on GitHub Actions now, even if a third party contributor submits code that they didn't lint themselves, it will still be verified by the CI.

This diff:

* Updates `lint.sh` to check for the latest version of SwiftLint.
* Makes the message that appears if SwiftLint isn't present a warning, instead of an error.
* Adds the linting script to building the `IGListSwiftKit` framework targets as well.

Differential Revision: D43864872

fbshipit-source-id: f5cc18f3612795ad1cc15cc4b7c0dfd7102639c6
2023-03-13 00:49:15 -07:00
Lvv.me
c9e045c942 Improve SwiftPM support (#1546)
Summary:
This diff imports and refines the PR made by cntrump on GitHub.

The PR introduces the following:

* Sample apps now use SPM instead of CocoaPods to import IGListKit.
* Adds Mac Catalyst as an example target.
* Adds C++ flags to the CocoaPods specs.
* Fixes a script issue that was discovered when regenerating the symlinks.

The PR originally aimed to remove the need for symlinked references to the IGListKit and IGListDiffKit source files, but in testing, I couldn't get it working. It's possible SPM being too strict [on where the headers can be placed to be discovered](https://forums.swift.org/t/how-do-i-specify-the-headers-directory-for-a-objc-target-in-swift-package-managers-package-swift/58531/3).

Additionally, another issue was that the original PR changed all of the `#import` statements to the the modular `import` statements, which is fine for the sample apps, but ended up breaking compatibility for any apps that had modules disabled.

## Changes in this pull request

Improve SwiftPM support:

Build module `IGListDiffKit` and `IGListKit` as Objective-C++.

module `IGListDiffKit`:
    - Source/IGListDiffKit
    - module defined in `Source/IGListDiffKit/modulemap/module.modulemap`
    - requires `-fmodules` and `-fcxx-modules`

module `IGListKit`:
    - depend on `IGListDiffKit`, use `import IGListDiffKit;`
    - Source/IGListKit
    - module defined in `Source/IGListKit/modulemap/module.modulemap`
    - requires `-fmodules` and `-fcxx-modules`

module `IGListSwiftKit`:
    - depend on `IGListKit`, use `import IGListKit`
    - Source/IGListSwiftKit

Deleted `spm/` and `scripts/generate_spm_sources_layout.sh`, it is unnecessary.

Updated `.podspec`, add `'OTHER_CFLAGS' => '-fmodules'` and `'OTHER_CPLUSPLUSFLAGS' => '-fcxx-modules'`.

Add missing swift files for `IGListSwiftKit` in `IGListKit.xcodeproj`

### How to use

Replace `#import <IGListDiffKit/IGListDiffKit.h>` with `import IGListDiffKit;`, because `IGListDiffKit.h` isn't exist in `modulemap/`, Or create a symbol link by `ln -sf ../IGListDiffKit.h` for support it ?

### Examples

Use SwiftPM for building examples.

### Checklist

- [x] All tests pass. Demo project builds and runs.
- [x] 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)

Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1546

Test Plan: Test PR showing running tests: https://github.com/TimOliver/IGListKit/actions/runs/4339956050/jobs/7578047058

Reviewed By: lorixx

Differential Revision: D33592395

Pulled By: TimOliver

fbshipit-source-id: 8f7b1873f2b1c6a80908bb55b123e31bea13bb0c
2023-03-06 23:29:41 -08:00
Tim Oliver
f8a339ce16 Updated and reintegrated Danger into GitHub Actions CI
Summary:
Danger is the build tool we've been using to proof-check incoming PRs, including making sure the incoming change is properly documented, and if needed, running SwiftLint on incoming Swift code.

Danger was originally running in our Travis CI implementation, but it wasn't integrated when we switched to GitHub Actions.

This diff updates our Danger dependencies to the latest versions, and integrates Danger into our CI system as a separate build step. I've also modified its SwiftLint setup so it will now lint Swift files in both our sample apps, and the Swift source files in `IGListSwiftKit` itself.

Reviewed By: candance

Differential Revision: D43265158

fbshipit-source-id: 8939b821af36b544fe4d66662b6ce0f99a8f768c
2023-02-28 18:53:02 -08:00
Tim Oliver
9875d7e15b Redirect slather.yml from Travis CI to GitHub Actions
Summary: Sorry! I just realised I forgot to point the slather.yml file from Travis CI to GitHub Actions in the previous commit.

Differential Revision: D43148918

fbshipit-source-id: 557f72a5c091ce080fa6efc15013560a28917a6d
2023-02-09 01:38:19 -08:00
Tim Oliver
f84832118d Integrate Slather into GitHub Actions CI
Summary:
Slather is the utility we've been using to upload our code coverage stats up to Coveralls. It was omitted from our GitHub CI file (Quite possibly because Slather didn't support GitHub Actions at the time), and so our most recent Coverall stats are from April 2020.

This diff integrates Slather into our GitHub Actions CI pipeline. I had to modify the `xcodebuild` commands to remove the GCC settings since having them in there was producing completely empty coverage files. I'm assuming they were necessary for our previous CI setup, but it seems it's okay to drop them now.

Reviewed By: DimaVartanian

Differential Revision: D42995789

fbshipit-source-id: 7a86e262da8bc70b6da1e627a3f0ceb83348db27
2023-02-08 21:51:25 -08:00
Tim Oliver
b26630fc7f Update CI badge to point to GitHub Actions
Summary:
I noticed both the image and the link of the build badge in our README was pointing to the previous CI service we were using, which has since shut down. 🫡

This diff updates the link and image to point to build progress screen for the CI script.

Reviewed By: DimaVartanian

Differential Revision: D42996404

fbshipit-source-id: b20464c744606392549a829849a7adddf032cb24
2023-02-08 21:18:16 -08:00
Tim Oliver
2ed59fcf80 Update 'master' branch references to 'main' branch
Summary:
G'day folks! As promised, I'm spending a bit of my free time seeing what I can do to update and refresh the IGListKit repo on GitHub.

I noticed last night some strange behaviour in that the GitHub Actions CI wasn't running when new commits were merged into the main branch. I discovered the cause of this was because the `CI.yml` file still had `master` in its build rules instead of `main`. And once I noticed that, I noticed there were a lot of other references to the main branch being called `master` in a lot of the documentation.

Thankfully within the documentation, GitHub was smart enough to automatically redirect all of the `master` URLs to `main`, so nothing visibly broke, but I definitely think we should update all of that. :)

I went through the entire repo and did a thorough audit in all of its text files, and updated the main branch name accordingly.

Reviewed By: DimaVartanian

Differential Revision: D42990133

fbshipit-source-id: d6b06c40b1b959990856b46b048895e3c55a9870
2023-02-08 18:34:25 -08:00