diff --git a/iOS/MasterFeed/MasterFeedViewController.swift b/iOS/MasterFeed/MasterFeedViewController.swift index a7eaa4146..6dc3d6e88 100644 --- a/iOS/MasterFeed/MasterFeedViewController.swift +++ b/iOS/MasterFeed/MasterFeedViewController.swift @@ -269,7 +269,7 @@ class MasterFeedViewController: UITableViewController, UndoableCommandRunner { if proposedDestinationIndexPath.section == 0 { return IndexPath(row: 0, section: 1) } - return proposedDestinationIndexPath + return coordinator.cappedIndexPath(proposedDestinationIndexPath) }() guard let draggedNode = coordinator.nodeFor(sourceIndexPath), let destNode = coordinator.nodeFor(destIndexPath), let parentNode = destNode.parent else { diff --git a/iOS/SceneCoordinator.swift b/iOS/SceneCoordinator.swift index 544a848f6..f5f1924af 100644 --- a/iOS/SceneCoordinator.swift +++ b/iOS/SceneCoordinator.swift @@ -357,6 +357,13 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider { return shadowTable[section] } + func cappedIndexPath(_ indexPath: IndexPath) -> IndexPath { + guard indexPath.section < shadowTable.count && indexPath.row < shadowTable[indexPath.section].count else { + return IndexPath(row: shadowTable[shadowTable.count - 1].count - 1, section: shadowTable.count - 1) + } + return indexPath + } + func indexPathFor(_ node: Node) -> IndexPath? { for i in 0..