mirror of
https://github.com/livebook-dev/livebook.git
synced 2024-12-28 10:42:25 +08:00
New import info flash (#630)
* adding a new info flash on imported notebooks * changing the imported notebook error flashes to warning level * Update lib/livebook_web/live/session_helpers.ex Co-authored-by: José Valim <jose.valim@gmail.com> * adding unit tests for the flash messages and fixing put_import_flash/1 call location * changing name of put_import_flash_messages/2 to put_import_warnings * Update lib/livebook_web/live/home_live.ex * formating code Co-authored-by: José Valim <jose.valim@gmail.com> Co-authored-by: Jonatan Kłosko <jonatanklosko@gmail.com>
This commit is contained in:
parent
887a4ad0d1
commit
c6d7c81ee9
5 changed files with 64 additions and 10 deletions
|
@ -257,7 +257,7 @@ defmodule LivebookWeb.HomeLive do
|
|||
images_dir = Session.images_dir_for_notebook(file)
|
||||
|
||||
socket
|
||||
|> put_import_flash_messages(messages)
|
||||
|> put_import_warnings(messages)
|
||||
|> create_session(
|
||||
notebook: notebook,
|
||||
copy_images_from: images_dir,
|
||||
|
@ -278,7 +278,7 @@ defmodule LivebookWeb.HomeLive do
|
|||
case import_notebook(file) do
|
||||
{:ok, {notebook, messages}} ->
|
||||
socket
|
||||
|> put_import_flash_messages(messages)
|
||||
|> put_import_warnings(messages)
|
||||
|> create_session(notebook: notebook, file: file, origin: {:file, file})
|
||||
|
||||
{:error, error} ->
|
||||
|
@ -408,7 +408,15 @@ defmodule LivebookWeb.HomeLive do
|
|||
|
||||
defp import_content(socket, content, session_opts) do
|
||||
{notebook, messages} = Livebook.LiveMarkdown.Import.notebook_from_markdown(content)
|
||||
socket = put_import_flash_messages(socket, messages)
|
||||
|
||||
socket =
|
||||
socket
|
||||
|> put_import_warnings(messages)
|
||||
|> put_flash(
|
||||
:info,
|
||||
"You have imported a notebook, no code has been executed so far. You should read and evaluate code as needed."
|
||||
)
|
||||
|
||||
session_opts = Keyword.merge(session_opts, notebook: notebook)
|
||||
create_session(socket, session_opts)
|
||||
end
|
||||
|
|
|
@ -30,15 +30,15 @@ defmodule LivebookWeb.SessionHelpers do
|
|||
|
||||
@doc """
|
||||
Formats the given list of notebook import messages and puts
|
||||
into the info flash.
|
||||
into the warning flash.
|
||||
"""
|
||||
@spec put_import_flash_messages(Phoenix.LiveView.Socket.t(), list(String.t())) ::
|
||||
@spec put_import_warnings(Phoenix.LiveView.Socket.t(), list(String.t())) ::
|
||||
Phoenix.LiveView.Socket.t()
|
||||
def put_import_flash_messages(socket, messages)
|
||||
def put_import_warnings(socket, messages)
|
||||
|
||||
def put_import_flash_messages(socket, []), do: socket
|
||||
def put_import_warnings(socket, []), do: socket
|
||||
|
||||
def put_import_flash_messages(socket, messages) do
|
||||
def put_import_warnings(socket, messages) do
|
||||
list =
|
||||
messages
|
||||
|> Enum.map(fn message -> ["- ", message] end)
|
||||
|
@ -49,6 +49,6 @@ defmodule LivebookWeb.SessionHelpers do
|
|||
"We found problems while importing the file and tried to autofix them:\n" | list
|
||||
])
|
||||
|
||||
put_flash(socket, :info, flash)
|
||||
put_flash(socket, :warning, flash)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -872,7 +872,7 @@ defmodule LivebookWeb.SessionLive do
|
|||
{file, notebook} = file_and_notebook(fork?, origin, notebook)
|
||||
|
||||
socket
|
||||
|> put_import_flash_messages(messages)
|
||||
|> put_import_warnings(messages)
|
||||
|> create_session(notebook: notebook, origin: origin, file: file)
|
||||
|
||||
{:error, message} ->
|
||||
|
|
|
@ -9,6 +9,15 @@
|
|||
</div>
|
||||
<% end %>
|
||||
|
||||
<%= if live_flash(@flash, :warning) do %>
|
||||
<div class="flex items-center space-x-2 rounded-lg px-4 py-2 bg-yellow-100 text-yellow-600 hover:opacity-75 cursor-pointer" role="alert"
|
||||
phx-click="lv:clear-flash"
|
||||
phx-value-key="warning">
|
||||
<.remix_icon icon="error-warning-line" class="text-2xl" />
|
||||
<span class="whitespace-pre-wrap"><%= live_flash(@flash, :warning) %></span>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<%= if live_flash(@flash, :error) do %>
|
||||
<div class="flex items-center space-x-2 rounded-lg px-4 py-2 bg-red-100 text-red-400 hover:opacity-75 cursor-pointer" role="alert"
|
||||
phx-click="lv:clear-flash"
|
||||
|
|
|
@ -206,6 +206,43 @@ defmodule LivebookWeb.HomeLiveTest do
|
|||
{:ok, view, _} = live(conn, "/sessions/#{id}")
|
||||
assert render(view) =~ "My notebook"
|
||||
end
|
||||
|
||||
test "should show info flash with information about the imported notebook", %{conn: conn} do
|
||||
{:ok, view, _} = live(conn, "/home/import/content")
|
||||
|
||||
notebook_content = """
|
||||
# My notebook
|
||||
"""
|
||||
|
||||
view
|
||||
|> element("form", "Import")
|
||||
|> render_submit(%{data: %{content: notebook_content}})
|
||||
|
||||
{_path, flash} = assert_redirect(view)
|
||||
|
||||
assert flash["info"] =~
|
||||
"You have imported a notebook, no code has been executed so far. You should read and evaluate code as needed."
|
||||
end
|
||||
|
||||
test "should show warning flash when the imported notebook have errors", %{conn: conn} do
|
||||
{:ok, view, _} = live(conn, "/home/import/content")
|
||||
|
||||
# Notebook with 3 headers
|
||||
notebook_content = """
|
||||
# My notebook
|
||||
# My notebook
|
||||
# My notebook
|
||||
"""
|
||||
|
||||
view
|
||||
|> element("form", "Import")
|
||||
|> render_submit(%{data: %{content: notebook_content}})
|
||||
|
||||
{_path, flash} = assert_redirect(view)
|
||||
|
||||
assert flash["warning"] =~
|
||||
"We found problems while importing the file and tried to autofix them:\n- Downgrading all headings, because 3 instances of heading 1 were found"
|
||||
end
|
||||
end
|
||||
|
||||
describe "public import endpoint" do
|
||||
|
|
Loading…
Reference in a new issue