     }
     
     // MARK: - Public
-        
+
     func present(roomContextualMenuViewController: RoomContextualMenuViewController,
                  from viewController: UIViewController,
                  on view: UIView,
+                 contentToReactFrame: CGRect, // Not nullable for compatibility with Obj-C
                  animated: Bool,
                  completion: (() -> Void)?) {
         guard self.roomContextualMenuViewController == nil else {
             return
         }
         
-        roomContextualMenuViewController.view.alpha = 0
-        
         viewController.vc_addChildViewController(viewController: roomContextualMenuViewController, onView: view)
         
         self.roomContextualMenuViewController = roomContextualMenuViewController
         
+        roomContextualMenuViewController.contentToReactFrame = contentToReactFrame
+        
         roomContextualMenuViewController.hideMenuToolbar()
+        roomContextualMenuViewController.prepareReactionsMenuAnimations()
+        roomContextualMenuViewController.hideReactionsMenu()
+        
         roomContextualMenuViewController.view.layoutIfNeeded()
         
         let animationInstructions: (() -> Void) = {
             roomContextualMenuViewController.showMenuToolbar()
-            roomContextualMenuViewController.view.alpha = 1
+            roomContextualMenuViewController.showReactionsMenu()
             roomContextualMenuViewController.view.layoutIfNeeded()
         }
         

    
    func hideContextualMenu(animated: Bool, completion: (() -> Void)?) {
        guard let roomContextualMenuViewController = self.roomContextualMenuViewController else {
            return
        }
        
        let animationInstructions: (() -> Void) = {
            roomContextualMenuViewController.hideMenuToolbar()
            roomContextualMenuViewController.view.alpha = 0
            roomContextualMenuViewController.view.layoutIfNeeded()
        }
        
        let animationCompletionInstructions: (() -> Void) = {
            roomContextualMenuViewController.vc_removeFromParent()

            // TODO: To remove once the retain cycle caused by reactionsMenuViewModel is fixed
            self.roomContextualMenuViewController = nil

            completion?()
        }
        
        if animated {
            UIView.animate(withDuration: Constants.animationDuration, animations: {
                animationInstructions()
            }, completion: { completed in
                animationCompletionInstructions()
            })
        } else {
            animationInstructions()
            animationCompletionInstructions()
        }
    }
    
    func showReactionsMenu(reactionsMenuViewModel: ReactionsMenuViewModel, aroundFrame frame: CGRect) {
        self.roomContextualMenuViewController?.showReactionsMenu(withViewModel: reactionsMenuViewModel, aroundFrame: frame)
    }
}

    // MARK: - Constants
    
    private enum Constants {
        static let animationDuration: TimeInterval = 0.2
    }
    
    // MARK: - Properties
