 
         return collectionView.collectionViewLayout.layoutAttributesForItem(at: indexPath)?.frame
     }
-}
-
-// Proxy
-public extension ChatMessagesViewController {
-    func indexPath(of itemId: String) -> IndexPath? {
-        return self.messagesAdapter.indexPath(of: itemId)
-    }
-
-    func refreshContent(completionBlock: (() -> Void)? = nil) {
-        self.messagesAdapter.refreshContent(completionBlock: completionBlock)
-    }
-
-    func scrollToBottom(animated: Bool) {
-        self.collectionView.scrollToBottom(
-            animated: animated,
-            animationDuration: self.style.updatesAnimationDuration
-        )
-    }
-
-    func autoLoadMoreContentIfNeeded() {
+
+    public func autoLoadMoreContentIfNeeded() {
         guard self.config.autoLoadingEnabled else { return }
 
         let isCloseToTop = self.collectionView.isCloseToTop(threshold: self.config.autoMarginThreshold)

        }
    }

    func scroll(toItemId itemId: String,
                position: UICollectionView.ScrollPosition,
                animated: Bool,
                spotlight: Bool) {
        guard let itemIndexPath = self.messagesAdapter.indexPath(of: itemId),
              let rect = self.collectionView.rect(at: itemIndexPath) else { return }


    }
}

// Proxy
public extension ChatMessagesViewController {
    func indexPath(of itemId: String) -> IndexPath? {
        return self.messagesAdapter.indexPath(of: itemId)
    }

    func refreshContent(completionBlock: (() -> Void)? = nil) {
        self.messagesAdapter.refreshContent(completionBlock: completionBlock)
    }

    func scrollToBottom(animated: Bool) {
        self.collectionView.scrollToBottom(
            animated: animated,
            animationDuration: self.style.updatesAnimationDuration
        )
    }
}

extension ChatMessagesViewController {
    public override func collectionView(_ collectionView: UICollectionView,
                                        didEndDisplaying cell: UICollectionViewCell,
