Browse Source

enhance(rtc): throw when recv `Internal server error` message

rcmerci 1 year ago
parent
commit
e0a59e7e08

+ 3 - 0
src/main/frontend/worker/rtc/exception.cljs

@@ -43,6 +43,9 @@ the server will put it to s3 and return its presigned-url to clients.")
 (def ex-local-not-rtc-graph
   (ex-info "RTC is not supported for this local-graph" {:type :rtc.exception/not-rtc-graph}))
 
+(def ex-unknown-server-error
+  (ex-info "Unknown server error" {:type :rtc.exception/unknown-server-error}))
+
 
 (defn ->map
   [e]

+ 6 - 0
src/main/frontend/worker/rtc/ws.cljs

@@ -5,6 +5,7 @@
   (:require [cljs-http.client :as http]
             [frontend.common.missionary-util :as c.m]
             [frontend.worker.rtc.const :as rtc-const]
+            [frontend.worker.rtc.exception :as r.ex]
             [missionary.core :as m]))
 
 (defn- get-state
@@ -137,10 +138,15 @@
       (m/? ((:send mws) message-str)))))
 
 (defn recv-flow
+  "Throw if recv `Internal server error`"
   [m-ws]
   (assert (some? (:recv-flow m-ws)) m-ws)
   (m/eduction
    (map #(js->clj (js/JSON.parse %) :keywordize-keys true))
+   (map (fn [m]
+          (if (= "Internal server error" (:message m))
+            (throw r.ex/ex-unknown-server-error)
+            m)))
    (map rtc-const/data-from-ws-coercer)
    (:recv-flow m-ws)))