add deleting images
This commit is contained in:
parent
6e701b539a
commit
839546e22c
2 changed files with 28 additions and 8 deletions
|
@ -131,7 +131,12 @@ defmodule Chiya.Notes do
|
||||||
end
|
end
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
Creates a note image and attaches it to a note
|
Gets a single note image.
|
||||||
|
"""
|
||||||
|
def get_note_image!(id), do: Repo.get!(NoteImage, id)
|
||||||
|
|
||||||
|
@doc """
|
||||||
|
Creates a note image and attaches it to a note.
|
||||||
"""
|
"""
|
||||||
def create_note_image(attrs) do
|
def create_note_image(attrs) do
|
||||||
case %NoteImage{}
|
case %NoteImage{}
|
||||||
|
@ -147,6 +152,12 @@ defmodule Chiya.Notes do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def delete_note_image(%NoteImage{} = note_image) do
|
||||||
|
{:ok, _} = Repo.delete(note_image)
|
||||||
|
:ok = Chiya.Uploaders.NoteImage.delete({note_image.path, note_image})
|
||||||
|
:ok
|
||||||
|
end
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
Returns an `%Ecto.Changeset{}` for tracking note_image changes.
|
Returns an `%Ecto.Changeset{}` for tracking note_image changes.
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -5,6 +5,8 @@ defmodule ChiyaWeb.NoteShowLive do
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
def render(assigns) do
|
def render(assigns) do
|
||||||
|
channels = Enum.map_join(assigns.note.channels, ", ", fn c -> c.name end)
|
||||||
|
|
||||||
~H"""
|
~H"""
|
||||||
<.header>
|
<.header>
|
||||||
Note <%= @note.id %>
|
Note <%= @note.id %>
|
||||||
|
@ -23,16 +25,12 @@ defmodule ChiyaWeb.NoteShowLive do
|
||||||
<:item title="Published at"><%= @note.published_at %></:item>
|
<:item title="Published at"><%= @note.published_at %></:item>
|
||||||
<:item title="Kind"><%= @note.kind %></:item>
|
<:item title="Kind"><%= @note.kind %></:item>
|
||||||
<:item title="Url"><%= @note.url %></:item>
|
<:item title="Url"><%= @note.url %></:item>
|
||||||
|
<:item title="Channels"><%= channels %></:item>
|
||||||
</.list>
|
</.list>
|
||||||
|
|
||||||
<ul>
|
|
||||||
<%= for channel <- @note.channels do %>
|
|
||||||
<li><%= channel.name %></li>
|
|
||||||
<% end %>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<.line />
|
<.line />
|
||||||
|
|
||||||
|
<%= if !Enum.empty?(@note.images) do %>
|
||||||
<div class="flex flex-wrap gap-3">
|
<div class="flex flex-wrap gap-3">
|
||||||
<%= for image <- @note.images do %>
|
<%= for image <- @note.images do %>
|
||||||
<article>
|
<article>
|
||||||
|
@ -40,7 +38,9 @@ defmodule ChiyaWeb.NoteShowLive do
|
||||||
class="rounded-lg w-28 "
|
class="rounded-lg w-28 "
|
||||||
src={Chiya.Uploaders.NoteImage.url({image.path, image}, :thumb_dithered)}
|
src={Chiya.Uploaders.NoteImage.url({image.path, image}, :thumb_dithered)}
|
||||||
/></a>
|
/></a>
|
||||||
<p class="text-center text-xs text-zinc-700"><a href="">Delete image</a></p>
|
<p class="text-center text-xs text-zinc-700">
|
||||||
|
<a href="#" phx-click="delete_image" phx-value-id={image.id} data-confirm="Are you sure?">Delete image</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
<a href="#" class="lightbox" id={"image-#{image.id}"}>
|
<a href="#" class="lightbox" id={"image-#{image.id}"}>
|
||||||
<span style={"background-image: url('#{Chiya.Uploaders.NoteImage.url({image.path, image}, :full_dithered)}')"}></span>
|
<span style={"background-image: url('#{Chiya.Uploaders.NoteImage.url({image.path, image}, :full_dithered)}')"}></span>
|
||||||
|
@ -50,6 +50,7 @@ defmodule ChiyaWeb.NoteShowLive do
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<.line />
|
<.line />
|
||||||
|
<% end %>
|
||||||
|
|
||||||
<.header>
|
<.header>
|
||||||
Note Images
|
Note Images
|
||||||
|
@ -113,4 +114,12 @@ defmodule ChiyaWeb.NoteShowLive do
|
||||||
|> update(:uploaded_files, &(&1 ++ uploaded_files))
|
|> update(:uploaded_files, &(&1 ++ uploaded_files))
|
||||||
|> assign(:note, Notes.get_note_preloaded!(socket.assigns.note.id))}
|
|> assign(:note, Notes.get_note_preloaded!(socket.assigns.note.id))}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@impl Phoenix.LiveView
|
||||||
|
def handle_event("delete_image", %{"id" => id}, socket) do
|
||||||
|
:ok = Notes.get_note_image!(id)
|
||||||
|
|> Notes.delete_note_image()
|
||||||
|
|
||||||
|
{:noreply, assign(socket, :note, Notes.get_note_preloaded!(socket.assigns.note.id))}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue