diff --git a/frontend/src/app/main/errors.cljs b/frontend/src/app/main/errors.cljs index 0ea0455c5..316a9e16c 100644 --- a/frontend/src/app/main/errors.cljs +++ b/frontend/src/app/main/errors.cljs @@ -142,17 +142,23 @@ (when expl (js/console.error expl)) (js/console.groupEnd msg))) +(defn on-unhandled-error + [error] + (if (instance? ExceptionInfo error) + (-> error sentry/capture-exception ex-data ptk/handle-error) + (let [hint (ex-message error) + msg (str "Unhandled Internal Error: " hint)] + (sentry/capture-exception error) + (ts/schedule (st/emitf (rt/assign-exception error))) + (js/console.group msg) + (ex/ignoring (js/console.error error)) + (js/console.groupEnd msg)))) + (defonce uncaught-error-handler (letfn [(on-error [event] (.preventDefault ^js event) - (when-let [error (unchecked-get event "error")] - (let [hint (ex-message error) - msg (str "Unhandled Internal Error: " hint)] - (sentry/capture-exception error) - (ts/schedule (st/emitf (rt/assign-exception error))) - (js/console.group msg) - (ex/ignoring (js/console.error error)) - (js/console.groupEnd msg))))] + (some-> (unchecked-get event "error") + (on-unhandled-error)))] (.addEventListener js/window "error" on-error) (fn [] (.removeEventListener js/window "error" on-error)))) diff --git a/frontend/src/app/main/ui/viewer.cljs b/frontend/src/app/main/ui/viewer.cljs index a9eccfee9..148064cdf 100644 --- a/frontend/src/app/main/ui/viewer.cljs +++ b/frontend/src/app/main/ui/viewer.cljs @@ -6,6 +6,7 @@ (ns app.main.ui.viewer (:require + [app.common.exceptions :as ex] [app.common.geom.point :as gpt] [app.main.data.comments :as dcm] [app.main.data.viewer :as dv] @@ -38,14 +39,10 @@ [{:keys [params data]}] (let [{:keys [page-id section index]} params + {:keys [file users project perms]} data local (mf/deref refs/viewer-local) - file (:file data) - users (:users data) - project (:project data) - perms (:permissions data) - page-id (or page-id (-> file :data :pages first)) page (mf/use-memo @@ -78,6 +75,9 @@ (hooks/use-shortcuts ::viewer sc/shortcuts) + (when (nil? page) + (ex/raise :type :not-found)) + ;; Set the page title (mf/use-effect (mf/deps (:name file))