                         ::hints-used             0
                         ::play-notes             play-notes
                         ::started?               false
+                        ::context-missing        false
                         ::custom-sounds-progress {:ui/progress-value 0
                                                   :ui/progress-total 1}
                         ::custom-sounds-req      nil})

          (dom/div #js {:style #js {"textAlign" "center"}}
            (dom/h1 nil "Make sure you have your volume up, many of our exercises play sound!")
            (if (and custom-sounds-req (not custom-sounds))
              (dom/div nil
                (some-> custom-sounds-progress progress-bar)
                (dom/div nil "Loading..."))
              (dom/a #js {:className "btn btn-primary"
                          :onClick   (fn [e]
                                       (.preventDefault e)

  (componentDidMount [this]
    (let [{::keys [custom-sounds-req]} (om/props this)]
      (if custom-sounds-req
        (if @audio/*audio-context*
          (start-exercise-custom-sounds this)
          (um/set-value! (om/parent this) ::context-missing true)))))

  (render [this]
    (let [{::keys [options ex-answer ex-total-questions streak-count notes hints context-missing
                   hints-used started? custom-sounds-req custom-sounds custom-sounds-progress]
           :as    props} (om/props this)
          state        (-> this om/get-reconciler om/app-state deref)
