mirror of
https://github.com/penpot/penpot.git
synced 2026-04-25 11:18:36 +00:00
🐛 Fix indicate that the mcp is disabled if the mcp key has expired
If the mcp key has expired, the switch that indicates the status in the dashboard will appear as disabled, and will show a modal for regenerate the key. It will also appear as disabled in the workspace, not allowing the plugin to connect
This commit is contained in:
parent
b0b2c0d264
commit
b60695f54a
@ -648,3 +648,9 @@
|
||||
|
||||
(def progress
|
||||
(l/derived :progress st/state))
|
||||
|
||||
(def access-tokens
|
||||
(l/derived :access-tokens st/state))
|
||||
|
||||
(def access-token-created
|
||||
(l/derived :access-token-created st/state))
|
||||
|
||||
@ -34,15 +34,8 @@
|
||||
[app.util.dom :as dom]
|
||||
[app.util.forms :as fm]
|
||||
[app.util.i18n :as i18n :refer [tr]]
|
||||
[okulary.core :as l]
|
||||
[rumext.v2 :as mf]))
|
||||
|
||||
(def tokens-ref
|
||||
(l/derived :access-tokens st/state))
|
||||
|
||||
(def token-created-ref
|
||||
(l/derived :access-token-created st/state))
|
||||
|
||||
(def notification-timeout 7000)
|
||||
|
||||
(def ^:private schema:form-access-token
|
||||
@ -78,7 +71,7 @@
|
||||
(mf/defc token-created*
|
||||
{::mf/private true}
|
||||
[{:keys [title mcp-key?]}]
|
||||
(let [token-created (mf/deref token-created-ref)
|
||||
(let [token-created (mf/deref refs/access-token-created)
|
||||
|
||||
on-copy-to-clipboard
|
||||
(mf/use-fn
|
||||
@ -310,7 +303,7 @@
|
||||
[]
|
||||
(let [created? (mf/use-state false)
|
||||
|
||||
tokens (mf/deref tokens-ref)
|
||||
tokens (mf/deref refs/access-tokens)
|
||||
mcp-key (some #(when (= (:type %) "mcp") %) tokens)
|
||||
mcp-key-id (:id mcp-key)
|
||||
|
||||
@ -413,7 +406,7 @@
|
||||
(mf/defc mcp-server-section*
|
||||
{::mf/private true}
|
||||
[]
|
||||
(let [tokens (mf/deref tokens-ref)
|
||||
(let [tokens (mf/deref refs/access-tokens)
|
||||
profile (mf/deref refs/profile)
|
||||
|
||||
mcp-key (some #(when (= (:type %) "mcp") %) tokens)
|
||||
@ -422,6 +415,8 @@
|
||||
expires-at (:expires-at mcp-key)
|
||||
expired? (and (some? expires-at) (> (ct/now) expires-at))
|
||||
|
||||
show-enabled? (and mcp-enabled? (false? expired?))
|
||||
|
||||
tooltip-id
|
||||
(mf/use-id)
|
||||
|
||||
@ -511,14 +506,17 @@
|
||||
(tr "integrations.mcp-server.status.expired.1")]]])
|
||||
|
||||
[:div {:class (stl/css :mcp-server-switch)}
|
||||
[:> switch* {:label (if mcp-enabled?
|
||||
[:> switch* {:label (if show-enabled?
|
||||
(tr "integrations.mcp-server.status.enabled")
|
||||
(tr "integrations.mcp-server.status.disabled"))
|
||||
:default-checked mcp-enabled?
|
||||
:default-checked show-enabled?
|
||||
:on-change handle-mcp-change}]
|
||||
(when (and (false? mcp-enabled?) (nil? mcp-key))
|
||||
[:div {:class (stl/css :mcp-server-switch-cover)
|
||||
:on-click handle-generate-mcp-key}])]]]
|
||||
:on-click handle-generate-mcp-key}])
|
||||
(when (true? expired?)
|
||||
[:div {:class (stl/css :mcp-server-switch-cover)
|
||||
:on-click handle-regenerate-mcp-key}])]]]
|
||||
|
||||
(when (some? mcp-key)
|
||||
[:div {:class (stl/css :mcp-server-key)}
|
||||
@ -567,7 +565,7 @@
|
||||
(mf/defc access-tokens-section*
|
||||
{::mf/private true}
|
||||
[]
|
||||
(let [tokens (mf/deref tokens-ref)
|
||||
(let [tokens (mf/deref refs/access-tokens)
|
||||
|
||||
handle-click
|
||||
(mf/use-fn
|
||||
|
||||
@ -43,13 +43,9 @@
|
||||
[app.util.i18n :as i18n :refer [tr]]
|
||||
[app.util.keyboard :as kbd]
|
||||
[beicon.v2.core :as rx]
|
||||
[okulary.core :as l]
|
||||
[potok.v2.core :as ptk]
|
||||
[rumext.v2 :as mf]))
|
||||
|
||||
(def tokens-ref
|
||||
(l/derived :access-tokens st/state))
|
||||
|
||||
(mf/defc shortcuts*
|
||||
{::mf/private true}
|
||||
[{:keys [id]}]
|
||||
@ -749,14 +745,22 @@
|
||||
(mf/defc mcp-menu*
|
||||
{::mf/private true}
|
||||
[{:keys [on-close]}]
|
||||
(let [plugins? (features/active-feature? @st/state "plugins/runtime")
|
||||
|
||||
profile (mf/deref refs/profile)
|
||||
mcp (mf/deref refs/mcp)
|
||||
(let [plugins? (features/active-feature? @st/state "plugins/runtime")
|
||||
|
||||
profile (mf/deref refs/profile)
|
||||
mcp (mf/deref refs/mcp)
|
||||
tokens (mf/deref refs/access-tokens)
|
||||
|
||||
expired? (some->> tokens
|
||||
(some #(when (= (:type %) "mcp") %))
|
||||
:expires-at
|
||||
(> (ct/now)))
|
||||
|
||||
mcp-enabled? (true? (-> profile :props :mcp-enabled))
|
||||
mcp-connected? (= "connected" (get mcp :connection-status))
|
||||
|
||||
show-enabled? (and mcp-enabled? (false? expired?))
|
||||
|
||||
on-nav-to-integrations
|
||||
(mf/use-fn
|
||||
(fn []
|
||||
@ -794,7 +798,7 @@
|
||||
:pos-6 plugins?)
|
||||
:on-close on-close}
|
||||
|
||||
(when mcp-enabled?
|
||||
(when show-enabled?
|
||||
[:> dropdown-menu-item* {:id "mcp-menu-toggle-mcp-plugin"
|
||||
:class (stl/css :base-menu-item :submenu-item)
|
||||
:on-click on-toggle-mcp-plugin
|
||||
@ -809,7 +813,7 @@
|
||||
:on-click on-nav-to-integrations
|
||||
:on-key-down on-nav-to-integrations-key-down}
|
||||
[:span {:class (stl/css :item-name)}
|
||||
(if mcp-enabled?
|
||||
(if show-enabled?
|
||||
(tr "workspace.header.menu.mcp.server.status.enabled")
|
||||
(tr "workspace.header.menu.mcp.server.status.disabled"))]]]))
|
||||
|
||||
@ -983,7 +987,7 @@
|
||||
:class (stl/css :item-arrow)}]])
|
||||
|
||||
(when (contains? cf/flags :mcp)
|
||||
(let [tokens (mf/deref tokens-ref)
|
||||
(let [tokens (mf/deref refs/access-tokens)
|
||||
expired? (some->> tokens
|
||||
(some #(when (= (:type %) "mcp") %))
|
||||
:expires-at
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user