diff --git a/setup_dropbox_node.py b/setup_dropbox_node.py index 47b9e93..9778071 100644 --- a/setup_dropbox_node.py +++ b/setup_dropbox_node.py @@ -33,7 +33,7 @@ class DropboxSetupNode: if is_connected: # If connected, only show reconnect option inputs["optional"]["reconnect"] = ("BOOLEAN", { - "label": "Reconnect Dropbox (clear saved credentials)", + "label": "🔄 Reconnect Dropbox (clears credentials & refreshes UI)", "default": False }) else: @@ -74,7 +74,21 @@ class DropboxSetupNode: if reconnect: print("[DropboxSetup] Reconnect requested - clearing credentials") auth_manager.reset() - message = "🔄 Dropbox credentials cleared. Please provide new auth code to reconnect." + + # Send WebSocket message to trigger ComfyUI refresh after clearing credentials + try: + from server import PromptServer + message_data = { + "type": "dropbox_reconnect_complete", + "success": True, + "message": "🔄 Credentials cleared - ComfyUI will refresh to show auth fields" + } + PromptServer.instance.send_sync("dropbox_reconnect_complete", message_data) + print(f"[DropboxSetup] Sent WebSocket notification for reconnect completion") + except Exception as e: + print(f"[DropboxSetup] Warning: Could not send WebSocket notification: {e}") + + message = "🔄 Dropbox credentials cleared. ComfyUI will refresh to show auth fields..." print(f"[DropboxSetup] {message}") return { "ui": {"text": [message]}, diff --git a/web/dropbox_oauth.js b/web/dropbox_oauth.js index cfadadf..2d8c2ca 100644 --- a/web/dropbox_oauth.js +++ b/web/dropbox_oauth.js @@ -25,6 +25,17 @@ app.registerExtension({ } }); + // Listen for WebSocket messages about reconnect completion + api.addEventListener("dropbox_reconnect_complete", (event) => { + console.log("[DropSendNode] Received reconnect completion notification via WebSocket", event.detail); + + const data = event.detail; + if (data.success) { + console.log("[DropSendNode] Reconnect successful - refreshing interface"); + this.handleReconnectSuccess(); + } + }); + // Listen for postMessage from OAuth popup window window.addEventListener("message", (event) => { if (event.data && event.data.type === 'dropbox_oauth_complete') { @@ -49,11 +60,19 @@ app.registerExtension({ // Refresh ComfyUI interface to update node UI setTimeout(() => { - console.log("[DropSendNode] Refreshing ComfyUI interface"); + console.log("[DropSendNode] Refreshing ComfyUI interface after OAuth success"); window.location.reload(); }, 1500); // Small delay to ensure OAuth processing is complete }, + handleReconnectSuccess() { + // Refresh ComfyUI interface to show auth fields again + setTimeout(() => { + console.log("[DropSendNode] Refreshing ComfyUI interface after reconnect"); + window.location.reload(); + }, 1000); // Shorter delay for reconnect + }, + // Override node execution to detect and handle OAuth URLs async beforeRegisterNodeDef(nodeType, nodeData, app) { if (nodeData.name === "DropboxSetupNode") {