├── .gitignore ├── .swift-version ├── .travis.yml ├── Example ├── FeedCollectionViewController.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ ├── FeedCollectionViewController-Example.xcscheme │ │ └── FeedCollectionViewController_Tests.xcscheme ├── FeedCollectionViewController.xcworkspace │ └── contents.xcworkspacedata ├── FeedCollectionViewController │ ├── AppDelegate.swift │ ├── Base.lproj │ │ ├── LaunchScreen.xib │ │ └── Main.storyboard │ ├── ColorCaptionFeedViewController.swift │ ├── ColorFeedViewController.swift │ ├── ColorImageCellData.swift │ ├── ErroringColorFeedViewController.swift │ ├── ImageCollectionViewCell.swift │ ├── Images.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ └── Info.plist ├── Podfile ├── Podfile.lock └── Tests │ ├── ColorFeedViewControllerTests.swift │ ├── ErrorMessageTests.swift │ ├── Info.plist │ ├── ReferenceImages_64 │ ├── FeedCollectionViewController_Tests.ColorFeedViewControllerTests │ │ ├── testInitialScreen@2x.png │ │ ├── testRefresh@2x.png │ │ ├── testScroll@2x.png │ │ ├── testScrollToNewScreen@2x.png │ │ └── testTapOnCell@2x.png │ ├── FeedCollectionViewController_Tests.ErrorMessageTests │ │ ├── testCustomErrorMessage@2x.png │ │ ├── testDisplay@2x.png │ │ ├── testErrorMessages@2x.png │ │ └── testHidingMessage@2x.png │ └── FeedCollectionViewController_Tests.SingleImageViewTests │ │ └── testCaption@2x.png │ ├── SingleImageViewTests.swift │ └── upload_failures.py ├── FeedCollectionViewController.podspec ├── FeedCollectionViewController ├── Assets │ └── .gitkeep └── Classes │ ├── .gitkeep │ ├── AdjustingErrorView.swift │ ├── CellData.swift │ ├── CellDataLoadDelegate.swift │ ├── DefaultErrorDataSource.swift │ ├── DefaultErrorPresenter.swift │ ├── ErrorDataSource.swift │ ├── ErrorPresenter.swift │ ├── FeedCollectionViewController.swift │ ├── FeedDataSource.swift │ └── FeedDelegate.swift ├── ImageFeedCollectionViewController.podspec ├── ImageFeedCollectionViewController ├── .gitignore ├── .travis.yml ├── Assets │ └── .gitkeep └── Classes │ ├── .gitkeep │ ├── IDMCellBrowser.swift │ ├── ImageCellData.swift │ ├── ImageFeedCollectionViewController.swift │ ├── ImageFeedDataSource.swift │ ├── ImageFeedPresenter.swift │ ├── PhotoBrowserDelegate.swift │ ├── PhotoBrowserPresenter.swift │ ├── SingleImageView.swift │ ├── WrappedFeedDataSource.swift │ └── WrappedFeedDelegate.swift ├── Images ├── infinite_scroll.gif ├── loads_as_scroll.gif ├── refresh.gif └── view_photos.gif ├── LICENSE └── README.md /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/.gitignore -------------------------------------------------------------------------------- /.swift-version: -------------------------------------------------------------------------------- 1 | 5.0 2 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/.travis.yml -------------------------------------------------------------------------------- /Example/FeedCollectionViewController.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/FeedCollectionViewController.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /Example/FeedCollectionViewController.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/FeedCollectionViewController.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /Example/FeedCollectionViewController.xcodeproj/xcshareddata/xcschemes/FeedCollectionViewController-Example.xcscheme: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/FeedCollectionViewController.xcodeproj/xcshareddata/xcschemes/FeedCollectionViewController-Example.xcscheme -------------------------------------------------------------------------------- /Example/FeedCollectionViewController.xcodeproj/xcshareddata/xcschemes/FeedCollectionViewController_Tests.xcscheme: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/FeedCollectionViewController.xcodeproj/xcshareddata/xcschemes/FeedCollectionViewController_Tests.xcscheme -------------------------------------------------------------------------------- /Example/FeedCollectionViewController.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/FeedCollectionViewController.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /Example/FeedCollectionViewController/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/FeedCollectionViewController/AppDelegate.swift -------------------------------------------------------------------------------- /Example/FeedCollectionViewController/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/FeedCollectionViewController/Base.lproj/LaunchScreen.xib -------------------------------------------------------------------------------- /Example/FeedCollectionViewController/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/FeedCollectionViewController/Base.lproj/Main.storyboard -------------------------------------------------------------------------------- /Example/FeedCollectionViewController/ColorCaptionFeedViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/FeedCollectionViewController/ColorCaptionFeedViewController.swift -------------------------------------------------------------------------------- /Example/FeedCollectionViewController/ColorFeedViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/FeedCollectionViewController/ColorFeedViewController.swift -------------------------------------------------------------------------------- /Example/FeedCollectionViewController/ColorImageCellData.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/FeedCollectionViewController/ColorImageCellData.swift -------------------------------------------------------------------------------- /Example/FeedCollectionViewController/ErroringColorFeedViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/FeedCollectionViewController/ErroringColorFeedViewController.swift -------------------------------------------------------------------------------- /Example/FeedCollectionViewController/ImageCollectionViewCell.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/FeedCollectionViewController/ImageCollectionViewCell.swift -------------------------------------------------------------------------------- /Example/FeedCollectionViewController/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/FeedCollectionViewController/Images.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /Example/FeedCollectionViewController/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/FeedCollectionViewController/Info.plist -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/Podfile -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/Podfile.lock -------------------------------------------------------------------------------- /Example/Tests/ColorFeedViewControllerTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/Tests/ColorFeedViewControllerTests.swift -------------------------------------------------------------------------------- /Example/Tests/ErrorMessageTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/Tests/ErrorMessageTests.swift -------------------------------------------------------------------------------- /Example/Tests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/Tests/Info.plist -------------------------------------------------------------------------------- /Example/Tests/ReferenceImages_64/FeedCollectionViewController_Tests.ColorFeedViewControllerTests/testInitialScreen@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/Tests/ReferenceImages_64/FeedCollectionViewController_Tests.ColorFeedViewControllerTests/testInitialScreen@2x.png -------------------------------------------------------------------------------- /Example/Tests/ReferenceImages_64/FeedCollectionViewController_Tests.ColorFeedViewControllerTests/testRefresh@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/Tests/ReferenceImages_64/FeedCollectionViewController_Tests.ColorFeedViewControllerTests/testRefresh@2x.png -------------------------------------------------------------------------------- /Example/Tests/ReferenceImages_64/FeedCollectionViewController_Tests.ColorFeedViewControllerTests/testScroll@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/Tests/ReferenceImages_64/FeedCollectionViewController_Tests.ColorFeedViewControllerTests/testScroll@2x.png -------------------------------------------------------------------------------- /Example/Tests/ReferenceImages_64/FeedCollectionViewController_Tests.ColorFeedViewControllerTests/testScrollToNewScreen@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/Tests/ReferenceImages_64/FeedCollectionViewController_Tests.ColorFeedViewControllerTests/testScrollToNewScreen@2x.png -------------------------------------------------------------------------------- /Example/Tests/ReferenceImages_64/FeedCollectionViewController_Tests.ColorFeedViewControllerTests/testTapOnCell@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/Tests/ReferenceImages_64/FeedCollectionViewController_Tests.ColorFeedViewControllerTests/testTapOnCell@2x.png -------------------------------------------------------------------------------- /Example/Tests/ReferenceImages_64/FeedCollectionViewController_Tests.ErrorMessageTests/testCustomErrorMessage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/Tests/ReferenceImages_64/FeedCollectionViewController_Tests.ErrorMessageTests/testCustomErrorMessage@2x.png -------------------------------------------------------------------------------- /Example/Tests/ReferenceImages_64/FeedCollectionViewController_Tests.ErrorMessageTests/testDisplay@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/Tests/ReferenceImages_64/FeedCollectionViewController_Tests.ErrorMessageTests/testDisplay@2x.png -------------------------------------------------------------------------------- /Example/Tests/ReferenceImages_64/FeedCollectionViewController_Tests.ErrorMessageTests/testErrorMessages@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/Tests/ReferenceImages_64/FeedCollectionViewController_Tests.ErrorMessageTests/testErrorMessages@2x.png -------------------------------------------------------------------------------- /Example/Tests/ReferenceImages_64/FeedCollectionViewController_Tests.ErrorMessageTests/testHidingMessage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/Tests/ReferenceImages_64/FeedCollectionViewController_Tests.ErrorMessageTests/testHidingMessage@2x.png -------------------------------------------------------------------------------- /Example/Tests/ReferenceImages_64/FeedCollectionViewController_Tests.SingleImageViewTests/testCaption@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/Tests/ReferenceImages_64/FeedCollectionViewController_Tests.SingleImageViewTests/testCaption@2x.png -------------------------------------------------------------------------------- /Example/Tests/SingleImageViewTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/Tests/SingleImageViewTests.swift -------------------------------------------------------------------------------- /Example/Tests/upload_failures.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Example/Tests/upload_failures.py -------------------------------------------------------------------------------- /FeedCollectionViewController.podspec: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/FeedCollectionViewController.podspec -------------------------------------------------------------------------------- /FeedCollectionViewController/Assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /FeedCollectionViewController/Classes/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /FeedCollectionViewController/Classes/AdjustingErrorView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/FeedCollectionViewController/Classes/AdjustingErrorView.swift -------------------------------------------------------------------------------- /FeedCollectionViewController/Classes/CellData.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/FeedCollectionViewController/Classes/CellData.swift -------------------------------------------------------------------------------- /FeedCollectionViewController/Classes/CellDataLoadDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/FeedCollectionViewController/Classes/CellDataLoadDelegate.swift -------------------------------------------------------------------------------- /FeedCollectionViewController/Classes/DefaultErrorDataSource.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/FeedCollectionViewController/Classes/DefaultErrorDataSource.swift -------------------------------------------------------------------------------- /FeedCollectionViewController/Classes/DefaultErrorPresenter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/FeedCollectionViewController/Classes/DefaultErrorPresenter.swift -------------------------------------------------------------------------------- /FeedCollectionViewController/Classes/ErrorDataSource.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/FeedCollectionViewController/Classes/ErrorDataSource.swift -------------------------------------------------------------------------------- /FeedCollectionViewController/Classes/ErrorPresenter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/FeedCollectionViewController/Classes/ErrorPresenter.swift -------------------------------------------------------------------------------- /FeedCollectionViewController/Classes/FeedCollectionViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/FeedCollectionViewController/Classes/FeedCollectionViewController.swift -------------------------------------------------------------------------------- /FeedCollectionViewController/Classes/FeedDataSource.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/FeedCollectionViewController/Classes/FeedDataSource.swift -------------------------------------------------------------------------------- /FeedCollectionViewController/Classes/FeedDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/FeedCollectionViewController/Classes/FeedDelegate.swift -------------------------------------------------------------------------------- /ImageFeedCollectionViewController.podspec: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/ImageFeedCollectionViewController.podspec -------------------------------------------------------------------------------- /ImageFeedCollectionViewController/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/ImageFeedCollectionViewController/.gitignore -------------------------------------------------------------------------------- /ImageFeedCollectionViewController/.travis.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/ImageFeedCollectionViewController/.travis.yml -------------------------------------------------------------------------------- /ImageFeedCollectionViewController/Assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ImageFeedCollectionViewController/Classes/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ImageFeedCollectionViewController/Classes/IDMCellBrowser.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/ImageFeedCollectionViewController/Classes/IDMCellBrowser.swift -------------------------------------------------------------------------------- /ImageFeedCollectionViewController/Classes/ImageCellData.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/ImageFeedCollectionViewController/Classes/ImageCellData.swift -------------------------------------------------------------------------------- /ImageFeedCollectionViewController/Classes/ImageFeedCollectionViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/ImageFeedCollectionViewController/Classes/ImageFeedCollectionViewController.swift -------------------------------------------------------------------------------- /ImageFeedCollectionViewController/Classes/ImageFeedDataSource.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/ImageFeedCollectionViewController/Classes/ImageFeedDataSource.swift -------------------------------------------------------------------------------- /ImageFeedCollectionViewController/Classes/ImageFeedPresenter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/ImageFeedCollectionViewController/Classes/ImageFeedPresenter.swift -------------------------------------------------------------------------------- /ImageFeedCollectionViewController/Classes/PhotoBrowserDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/ImageFeedCollectionViewController/Classes/PhotoBrowserDelegate.swift -------------------------------------------------------------------------------- /ImageFeedCollectionViewController/Classes/PhotoBrowserPresenter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/ImageFeedCollectionViewController/Classes/PhotoBrowserPresenter.swift -------------------------------------------------------------------------------- /ImageFeedCollectionViewController/Classes/SingleImageView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/ImageFeedCollectionViewController/Classes/SingleImageView.swift -------------------------------------------------------------------------------- /ImageFeedCollectionViewController/Classes/WrappedFeedDataSource.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/ImageFeedCollectionViewController/Classes/WrappedFeedDataSource.swift -------------------------------------------------------------------------------- /ImageFeedCollectionViewController/Classes/WrappedFeedDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/ImageFeedCollectionViewController/Classes/WrappedFeedDelegate.swift -------------------------------------------------------------------------------- /Images/infinite_scroll.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Images/infinite_scroll.gif -------------------------------------------------------------------------------- /Images/loads_as_scroll.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Images/loads_as_scroll.gif -------------------------------------------------------------------------------- /Images/refresh.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Images/refresh.gif -------------------------------------------------------------------------------- /Images/view_photos.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/Images/view_photos.gif -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oliveroneill/FeedCollectionViewController/HEAD/README.md --------------------------------------------------------------------------------