Skip to content

Commit 6e46788

Browse files
committed
Add handler to mark as read button
1 parent b94259b commit 6e46788

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

lib/ex_rss_web/feed_live/index.ex

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
defmodule ExRssWeb.FeedLive.Index do
22
use ExRssWeb, :live_view
33

4-
alias ExRss.User
4+
alias ExRss.{Entry, Feed, Repo, User}
55

66
def mount(
77
_params,
@@ -12,12 +12,44 @@ defmodule ExRssWeb.FeedLive.Index do
1212

1313
socket =
1414
socket
15+
|> assign(:current_user, current_user)
1516
|> assign(:api_token, api_token)
1617
|> assign(:oldest_unread_entry, oldest_unread_entry)
1718

1819
{:ok, socket}
1920
end
2021

22+
def handle_event("mark_as_read", %{"entry-id" => entry_id}, socket) do
23+
changeset =
24+
Repo.get!(User, socket.assigns.current_user.id)
25+
|> Ecto.assoc(:entries)
26+
|> Repo.get!(entry_id)
27+
|> Entry.changeset(%{"read" => true})
28+
29+
case Repo.update(changeset) do
30+
{:ok, entry} ->
31+
updated_feed = Repo.get!(Feed, entry.feed_id)
32+
33+
update_broadcaster =
34+
Application.get_env(:ex_rss, :update_broadcaster, ExRss.Crawler.UpdateBroadcaster)
35+
36+
Task.Supervisor.start_child(
37+
ExRss.TaskSupervisor,
38+
update_broadcaster,
39+
:broadcast_update,
40+
[updated_feed]
41+
)
42+
43+
oldest_unread_entry =
44+
User.oldest_unread_entry(socket.assigns.current_user.id)
45+
46+
{:noreply, assign(socket, :oldest_unread_entry, oldest_unread_entry)}
47+
48+
_ ->
49+
{:noreply, socket}
50+
end
51+
end
52+
2153
# 2024-12-03
2254
# This `use` is needed for `content_tag` to be available in `elm_module`.
2355
use Phoenix.HTML

lib/ex_rss_web/feed_live/index.html.heex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<a href={@oldest_unread_entry.url} target="_blank" aria-label={"View entry #{@oldest_unread_entry.title}"}>
1313
<.icon name="hero-arrow-top-right-on-square-solid" />
1414
</a>
15-
<button aria-label="Mark as read">
15+
<button aria-label="Mark as read" phx-click="mark_as_read" phx-value-entry-id={@oldest_unread_entry.id}>
1616
<.icon name="hero-check-circle-solid" />
1717
</button>
1818
</div>

0 commit comments

Comments
 (0)