         navigate(to: url.absoluteURL)
     }
 }
+
+extension TalkPageViewController: TalkPageTopicReplyOnboardingDelegate {
+
+    func presentTopicReplyOnboardingIfNecessary() {
+        guard !UserDefaults.standard.wmf_userHasOnboardedToContributingToTalkPages else {
+            return
+        }
+
+        let topicReplyOnboardingHostingViewController = TalkPageTopicReplyOnboardingHostingController(theme: theme)
+        topicReplyOnboardingHostingViewController.delegate = self
+        topicReplyOnboardingHostingViewController.modalPresentationStyle = .pageSheet
+        self.topicReplyOnboardingHostingViewController = topicReplyOnboardingHostingViewController
+
+        if let presentedViewController = presentedViewController {
+            presentedViewController.present(topicReplyOnboardingHostingViewController, animated: true)
+        } else {
+            present(topicReplyOnboardingHostingViewController, animated: true)
+        }
+    }
+
+    func userDidDismissTopicReplyOnboardingView() {
+        UserDefaults.standard.wmf_userHasOnboardedToContributingToTalkPages = true
+    }
+}

        navVC.modalPresentationStyle = .pageSheet
        navVC.presentationController?.delegate = self
        present(navVC, animated: true, completion: nil)
    }
    
    fileprivate func setupToolbar() {


    fileprivate let viewModel: TalkPageViewModel
    fileprivate var headerView: TalkPageHeaderView?

    fileprivate var topicReplyOnboardingHostingViewController: TalkPageTopicReplyOnboardingHostingController?
    
    fileprivate lazy var shareButton: IconBarButtonItem = IconBarButtonItem(image: UIImage(systemName: "square.and.arrow.up"), style: .plain, target: self, action: #selector(userDidTapShareButton))
    
