From 4cc37fc24da6774c299a935d2b14b457ac321bd4 Mon Sep 17 00:00:00 2001
From: Thomas Heller
Date: Sun, 19 May 2024 17:31:56 +0200
Subject: [PATCH] handle disconnect runtime in inspect
---
src/main/shadow/cljs/ui/components/build.cljs | 1 +
src/main/shadow/cljs/ui/components/inspect.cljs | 11 +++++++----
src/main/shadow/cljs/ui/components/runtimes.cljs | 1 +
src/main/shadow/cljs/ui/db/explorer.cljs | 4 ++--
src/main/shadow/cljs/ui/db/inspect.cljs | 6 ++++--
src/main/shadow/cljs/ui/main.cljs | 3 +++
6 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/src/main/shadow/cljs/ui/components/build.cljs b/src/main/shadow/cljs/ui/components/build.cljs
index 205c0933..890427dc 100644
--- a/src/main/shadow/cljs/ui/components/build.cljs
+++ b/src/main/shadow/cljs/ui/components/build.cljs
@@ -21,6 +21,7 @@
[env build-id]
(->> (::m/runtime env)
(vals)
+ (remove :disconnected)
(filter (fn [{:keys [runtime-info]}]
(and (= :cljs (:lang runtime-info))
(= build-id (:build-id runtime-info)))))
diff --git a/src/main/shadow/cljs/ui/components/inspect.cljs b/src/main/shadow/cljs/ui/components/inspect.cljs
index b26d4b05..7db26cbc 100644
--- a/src/main/shadow/cljs/ui/components/inspect.cljs
+++ b/src/main/shadow/cljs/ui/components/inspect.cljs
@@ -248,7 +248,7 @@
(event ::code-eval! [env {:keys [code]}]
(sg/run-tx env
{:e ::m/inspect-code-eval!
- :runtime-ident (:runtime object)
+ :runtime-id (:runtime-id object)
:ref-oid (:oid object)
:panel-idx panel-idx
:code code}))
@@ -367,19 +367,22 @@
(render
(let [{:keys [ns line column label]} summary
- {:keys [runtime-info runtime-id]} runtime
+ {:keys [runtime-info runtime-id disconnected]} runtime
$row
(css
:font-mono :border-b :px-2 :py-1 :cursor-pointer
[:hover :bg-gray-100]
+ ["&.disconnected" :cursor-not-allowed {:opacity "0.5"}]
["&.focus" :bg-gray-200]
["& > .header" :text-xs :text-gray-500]
["& > .val" :truncate])]
(<< [:div
- {:class (str $row (when focus " focus"))
- :on-click {:e ::inspect-object! :oid oid}}
+ {:class (str $row (when focus " focus") (when disconnected " disconnected"))
+ :title (when disconnected "runtime disconnected")
+ :on-click (when-not disconnected
+ {:e ::inspect-object! :oid oid})}
[:div.header
(str (:added-at-ts summary)
diff --git a/src/main/shadow/cljs/ui/components/runtimes.cljs b/src/main/shadow/cljs/ui/components/runtimes.cljs
index 11a11555..ac61d776 100644
--- a/src/main/shadow/cljs/ui/components/runtimes.cljs
+++ b/src/main/shadow/cljs/ui/components/runtimes.cljs
@@ -91,6 +91,7 @@
(defn q-runtimes-sorted [env]
(->> (::m/runtime env)
(vals)
+ (remove :disconnected)
(sort-by #(get-in % [:runtime-info :since]))
(mapv :runtime-id)))
diff --git a/src/main/shadow/cljs/ui/db/explorer.cljs b/src/main/shadow/cljs/ui/db/explorer.cljs
index 1d3c6b82..960d0940 100644
--- a/src/main/shadow/cljs/ui/db/explorer.cljs
+++ b/src/main/shadow/cljs/ui/db/explorer.cljs
@@ -121,5 +121,5 @@
(defn runtime-deselect-var!
{::ev/handle ::m/runtime-deselect-var!}
- [tx {:keys [runtime-ident] :as msg}]
- (update-in tx [::m/ui runtime-ident] dissoc ::m/explore-var ::m/explore-var-object))
\ No newline at end of file
+ [tx {:keys [runtime-id] :as msg}]
+ (update-in tx [::m/runtime runtime-id] dissoc ::m/explore-var ::m/explore-var-object))
\ No newline at end of file
diff --git a/src/main/shadow/cljs/ui/db/inspect.cljs b/src/main/shadow/cljs/ui/db/inspect.cljs
index a8b28786..b2080557 100644
--- a/src/main/shadow/cljs/ui/db/inspect.cljs
+++ b/src/main/shadow/cljs/ui/db/inspect.cljs
@@ -53,7 +53,7 @@
(ev/queue-fx :relay-send [{:op :request-supported-ops :to client-id}])))
:client-disconnect
- (update env ::m/runtime dissoc client-id)))
+ (assoc-in env [::m/runtime client-id :disconnected] true)))
(defn relay-supported-ops
{::ev/handle ::relay-ws/supported-ops}
@@ -442,7 +442,9 @@
(defn inspect-code-eval!
{::ev/handle ::m/inspect-code-eval!}
[tx {:keys [code runtime-id runtime-ns ref-oid panel-idx] :as msg}]
- (let [{:keys [supported-ops]} (get-in tx [::m/runtime runtime-id])
+ (let [supported-ops (get-in tx [::m/runtime runtime-id :supported-ops])
+
+ _ (js/console.log "code-eval" tx msg supported-ops)
;; FIXME: ns and eval mode should come from UI
[eval-mode ns]
diff --git a/src/main/shadow/cljs/ui/main.cljs b/src/main/shadow/cljs/ui/main.cljs
index 19b18af4..ad69114a 100644
--- a/src/main/shadow/cljs/ui/main.cljs
+++ b/src/main/shadow/cljs/ui/main.cljs
@@ -2,6 +2,7 @@
{:dev/always true
:shadow.css/include ["shadow/cljs/ui/main.css"]}
(:require
+ [clojure.core.protocols :as cp]
[shadow.grove :as sg :refer (<< defc)]
[shadow.css :refer (css)]
[shadow.grove.history :as history]
@@ -224,6 +225,8 @@
(sg/add-kv-table rt-ref ::m/object
{:primary-key :oid
+ :attrs
+ {:runtime-id {:references ::m/runtime}}
;; :oid number
;; :runtime-id number
;; :display-type keyword