36 lines
1009 B
Swift
36 lines
1009 B
Swift
//
|
|
// Copyright 2026 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
//
|
|
|
|
import UIKit
|
|
|
|
/// A `UITableViewDiffableDataSource` that exposes hooks into various
|
|
/// `UITableViewDataSource` APIs that callers may be interested in.
|
|
public class OWSTableViewDiffableDataSource<
|
|
SectionIdentifier: Hashable,
|
|
ItemIdentifier: Hashable,
|
|
>: UITableViewDiffableDataSource<
|
|
SectionIdentifier,
|
|
ItemIdentifier,
|
|
> {
|
|
|
|
public var canMoveRow: ((_ indexPath: IndexPath) -> Bool)?
|
|
public var didMoveRow: ((_ sourceIndexPath: IndexPath, _ destinationIndexPath: IndexPath) -> Void)?
|
|
|
|
override public func tableView(
|
|
_ tableView: UITableView,
|
|
canMoveRowAt indexPath: IndexPath,
|
|
) -> Bool {
|
|
canMoveRow?(indexPath) ?? true
|
|
}
|
|
|
|
override public func tableView(
|
|
_ tableView: UITableView,
|
|
moveRowAt sourceIndexPath: IndexPath,
|
|
to destinationIndexPath: IndexPath,
|
|
) {
|
|
didMoveRow?(sourceIndexPath, destinationIndexPath)
|
|
}
|
|
}
|