 	}
 
 }
+
+// MARK: - Cell Swipe Actions
+
+@objc extension NotificationsCenterViewController: UIGestureRecognizerDelegate {
+
+    /// Only allow cell pan gesture if user's horizontal cell panning behavior seems intentional
+    func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
+        if gestureRecognizer == cellPanGestureRecognizer {
+            let panVelocity = cellPanGestureRecognizer.velocity(in: notificationsView.collectionView)
+            if abs(panVelocity.x) > abs(panVelocity.y) {
+                return true
+            }
+        }
+
+        return false
+    }
+
+    @objc fileprivate func userDidPanCell(_ gestureRecognizer: UIPanGestureRecognizer) {
+        switch gestureRecognizer.state {
+        case .began:
+            let touchPosition = gestureRecognizer.location(in: notificationsView.collectionView)
+            guard let cellIndexPath = notificationsView.collectionView.indexPathForItem(at: touchPosition) else {
+                gestureRecognizer.state = .ended
+                break
+            }
+
+            activelyPannedCellIndexPath = cellIndexPath
+        case .ended:
+            userDidSwipeCell(indexPath: activelyPannedCellIndexPath)
+            activelyPannedCellIndexPath = nil
+        default:
+            return
+        }
+    }
+
+    /// This will be removed in the final implementation
+    fileprivate func userDidSwipeCell(indexPath: IndexPath?) {
+        /*
+        guard let indexPath = indexPath, let cellViewModel = viewModel.cellViewModel(indexPath: indexPath) else {
+            return
+        }
+
+        let alertController = UIAlertController(title: cellViewModel.headerText, message: cellViewModel.bodyText, preferredStyle: .actionSheet)
+
+        let firstAction = UIAlertAction(title: "Action 1", style: .default)
+        let secondAction = UIAlertAction(title: "Action 2", style: .default)
+        let thirdAction = UIAlertAction(title: "Action 3", style: .default)
+        let cancelAction = UIAlertAction(title: "Cancel", style: .cancel)
+
+        alertController.addAction(firstAction)
+        alertController.addAction(secondAction)
+        alertController.addAction(thirdAction)
+        alertController.addAction(cancelAction)
+
+        if let popoverController = alertController.popoverPresentationController, let cell = notificationsView.collectionView.cellForItem(at: indexPath) {
+            popoverController.sourceView = cell
+            popoverController.sourceRect = CGRect(x: cell.bounds.midX, y: cell.bounds.midY, width: 0, height: 0)
+        }
+
+        present(alertController, animated: true, completion: nil)
+        */
+    }
+
+}

    }

    let viewModel: NotificationsCenterViewModel

    // MARK: - Lifecycle



		notificationsView.collectionView.delegate = self
		notificationsView.collectionView.dataSource = self

        notificationsView.collectionView.addGestureRecognizer(cellPanGestureRecognizer)
        cellPanGestureRecognizer.addTarget(self, action: #selector(userDidPanCell(_:)))
        cellPanGestureRecognizer.delegate = self

		viewModel.fetchNotifications(collectionView: notificationsView.collectionView)
	}
