diff --git a/assets/js/hooks/js_view.js b/assets/js/hooks/js_view.js index e5bc4e2ff..9f7e43bf1 100644 --- a/assets/js/hooks/js_view.js +++ b/assets/js/hooks/js_view.js @@ -95,8 +95,8 @@ const JSView = { const errorRef = this.channel.on( `error:${this.props.ref}`, - ({ message }) => { - this.handleServerError(message); + ({ message, init }) => { + this.handleServerError(message, init); } ); @@ -334,7 +334,11 @@ const JSView = { }); }, - handleServerError(message) { + handleServerError(message, init) { + if (init) { + this.clearInitTimeout(); + } + if (!this.errorContainer) { this.errorContainer = document.createElement("div"); this.errorContainer.classList.add("error-box", "mb-4"); diff --git a/lib/livebook_web/channels/js_view_channel.ex b/lib/livebook_web/channels/js_view_channel.ex index 3c1b1df6c..e36e55ee7 100644 --- a/lib/livebook_web/channels/js_view_channel.ex +++ b/lib/livebook_web/channels/js_view_channel.ex @@ -70,7 +70,7 @@ defmodule LivebookWeb.JSViewChannel do with {:error, error} <- try_push(socket, "init:#{ref}:#{id}", nil, payload) do message = "Failed to serialize initial widget data, " <> error - push(socket, "error:#{ref}", %{"message" => message}) + push(socket, "error:#{ref}", %{"message" => message, "init" => true}) end {:noreply, socket}