2020-09-25 20:31:01 -07:00
|
|
|
//
|
|
|
|
// HorizontalPageDelegate.swift
|
|
|
|
// NewsBlur
|
|
|
|
//
|
|
|
|
// Created by David Sinclair on 2020-09-24.
|
|
|
|
// Copyright © 2020 NewsBlur. All rights reserved.
|
|
|
|
//
|
|
|
|
|
|
|
|
import UIKit
|
|
|
|
|
2020-09-26 20:30:35 -07:00
|
|
|
//#warning("hack: this function is just for testing")
|
|
|
|
//func storyViewController() -> OriginalStoryViewController {
|
|
|
|
// let viewController = OriginalStoryViewController()
|
|
|
|
//
|
|
|
|
// if let appDelegate = UIApplication.shared.delegate as? NewsBlurAppDelegate {
|
|
|
|
// let urls = ["https://dejal.com/", "https://dejus.com/", "https://yellowcottagehomestead.com/", "https://apple.com", "https://amazon.com"]
|
|
|
|
//
|
|
|
|
// appDelegate.activeOriginalStoryURL = URL(string: urls.randomElement() ?? "https://dejal.com/")
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// _ = viewController.view
|
|
|
|
// viewController.loadInitialStory()
|
|
|
|
//
|
|
|
|
// return viewController
|
|
|
|
//}
|
2020-09-25 20:31:01 -07:00
|
|
|
|
|
|
|
/// Delegate and data source of the story horizontal page view controller.
|
|
|
|
class HorizontalPageDelegate: NSObject {
|
|
|
|
}
|
|
|
|
|
|
|
|
extension HorizontalPageDelegate: UIPageViewControllerDataSource {
|
|
|
|
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
|
2020-10-30 20:58:27 -07:00
|
|
|
guard let pageViewController = pageViewController as? HorizontalPageViewController, let currentViewController = viewController as? VerticalPageViewController, let detailViewController = pageViewController.detailViewController else {
|
2020-09-25 20:31:01 -07:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2020-10-30 20:58:27 -07:00
|
|
|
let pageIndex = (currentViewController.pageIndex ?? -1) - 1
|
|
|
|
let previousViewController = detailViewController.pageIndexIsValid(pageIndex) ? Storyboards.shared.controller(withIdentifier: .verticalPages) as? VerticalPageViewController : nil
|
2020-09-25 20:31:01 -07:00
|
|
|
|
2020-10-30 20:58:27 -07:00
|
|
|
pageViewController.previousController = previousViewController
|
|
|
|
previousViewController?.horizontalPageViewController = pageViewController
|
|
|
|
previousViewController?.currentController = detailViewController.makeStoryController(for: pageIndex)
|
2020-09-25 20:31:01 -07:00
|
|
|
|
2020-10-30 20:58:27 -07:00
|
|
|
return previousViewController
|
2020-09-25 20:31:01 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
|
2020-10-30 20:58:27 -07:00
|
|
|
guard let pageViewController = pageViewController as? HorizontalPageViewController, let currentViewController = viewController as? VerticalPageViewController, let detailViewController = pageViewController.detailViewController else {
|
2020-09-25 20:31:01 -07:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2020-10-30 20:58:27 -07:00
|
|
|
var pageIndex = (currentViewController.pageIndex ?? -1) + 1
|
2020-09-25 20:31:01 -07:00
|
|
|
|
2020-10-30 20:58:27 -07:00
|
|
|
if pageIndex == -1 {
|
|
|
|
pageIndex = 0
|
|
|
|
}
|
|
|
|
|
|
|
|
let nextViewController = detailViewController.pageIndexIsValid(pageIndex) ? Storyboards.shared.controller(withIdentifier: .verticalPages) as? VerticalPageViewController : nil
|
|
|
|
|
|
|
|
pageViewController.nextController = nextViewController
|
|
|
|
nextViewController?.horizontalPageViewController = pageViewController
|
|
|
|
nextViewController?.currentController = detailViewController.makeStoryController(for: pageIndex)
|
2020-09-25 20:31:01 -07:00
|
|
|
|
2020-10-30 20:58:27 -07:00
|
|
|
return nextViewController
|
2020-09-25 20:31:01 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
extension HorizontalPageDelegate: UIPageViewControllerDelegate {
|
2020-10-30 20:58:27 -07:00
|
|
|
func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
|
|
|
|
guard let pageViewController = pageViewController as? HorizontalPageViewController, let detailViewController = pageViewController.detailViewController else {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
detailViewController.setStoryFromScroll(false)
|
|
|
|
}
|
2020-09-25 20:31:01 -07:00
|
|
|
}
|