Skip to content

Commit 37154cc

Browse files
feat: reqeusted changes working
1 parent 13cef73 commit 37154cc

File tree

4 files changed

+20
-10
lines changed

4 files changed

+20
-10
lines changed

lib/cesium_link/links/link.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ defmodule CesiumLink.Links.Link do
1717
field :visits, :integer, default: 0
1818
field :edited_at, :utc_datetime
1919
field :publish_at, :utc_datetime
20+
field :in_future, :boolean, default: false
2021

2122
timestamps(type: :utc_datetime)
2223
end

lib/cesium_link_web/live/link_live/index.ex

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,16 @@ defmodule CesiumLinkWeb.LinkLive.Index do
66

77
@impl true
88
def mount(_params, _session, socket) do
9-
{:ok, stream(socket, :links, Links.list_unarchived_links())}
9+
links = Links.list_unarchived_links()
10+
enriched_links = Enum.map(links, fn link ->
11+
in_future = publish_in_future?(link)
12+
%{link | in_future: in_future}
13+
end)
14+
15+
{:ok, stream(socket, :links, enriched_links)}
1016
end
1117

18+
1219
@impl true
1320
def handle_params(params, _url, socket) do
1421
{:noreply, apply_action(socket, socket.assigns.live_action, params)}

lib/cesium_link_web/live/link_live/index.html.heex

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,27 @@
1616

1717
<.table id="links" rows={@streams.links} phx-hook="Sorting">
1818
<:col :let={{_id, link}}>
19-
<.icon name="hero-bars-3 cursor-pointer ml-4" class={"handle w-5 h-5 #{if publish_in_future?(link), do: "opacity-50"}"} />
19+
<.icon name="hero-bars-3 cursor-pointer ml-4" class={"handle w-5 h-5 #{if link.in_future, do: "opacity-50"}"} />
2020
</:col>
2121

2222
<:col :let={{_id, link}} label="Name">
23-
<p class={"font-semibold text-zinc-900 #{if publish_in_future?(link), do: "opacity-50"}"}><%= link.name %></p>
23+
<p class={"font-semibold text-zinc-900 #{if link.in_future, do: "opacity-50"}"}><%= link.name %></p>
2424
</:col>
2525

2626
<:col :let={{_id, link}} label="Emoji">
27-
<span class={if publish_in_future?(link), do: "opacity-50"}>
27+
<span class={if link.in_future, do: "opacity-50"}>
2828
<.emoji code={link.emoji} />
2929
</span>
3030
</:col>
3131

3232
<:col :let={{_id, link}} label="URL">
33-
<.link target="_blank" class={"hover:text-brand hover:underline #{if publish_in_future?(link), do: "opacity-50"}"} navigate={link.url}>
33+
<.link target="_blank" class={"hover:text-brand hover:underline #{if link.in_future, do: "opacity-50"}"} navigate={link.url}>
3434
<%= truncate_elipsis(link.url, 50) %>
3535
</.link>
3636
</:col>
3737

3838
<:col :let={{_id, link}} label="Time Left">
39-
<%= if publish_in_future?(link) do %>
39+
<%= if link.in_future do %>
4040
<div id="timer-countdown" phx-hook="Timer" data-finish-time={DateTime.to_unix(link.publish_at)} class="opacity-50">
4141
00:00:00
4242
</div>
@@ -46,28 +46,29 @@
4646
</:col>
4747

4848
<:col :let={{_id, link}} label="Clicks">
49-
<p class={if publish_in_future?(link), do: "opacity-50"}>
49+
<p class={if link.in_future, do: "opacity-50"}>
5050
<%= link.visits %>
5151
</p>
5252
</:col>
5353

5454
<:col :let={{_id, link}} label="Attention">
55-
<input type="checkbox" disabled={true} checked={link.attention} class={"self-center block rounded-md text-gray-600 #{if publish_in_future?(link), do: "opacity-50"}"} />
55+
<input type="checkbox" disabled={true} checked={link.attention} class={"self-center block rounded-md text-gray-600 #{if link.in_future, do: "opacity-50"}"} />
5656
</:col>
5757

5858
<:action :let={{_id, link}}>
5959
<.link patch={~p"/admin/links/#{link}/edit"}>
60-
<.icon name="hero-pencil" class={"w-5 h-5 #{if publish_in_future?(link), do: "opacity-50"}"} />
60+
<.icon name="hero-pencil" class={"w-5 h-5 #{if link.in_future, do: "opacity-50"}"} />
6161
</.link>
6262
</:action>
6363

6464
<:action :let={{_id, link}}>
6565
<.link patch={~p"/admin/links/#{link}/archive"}>
66-
<.icon name="hero-archive-box" class={"w-5 h-5 #{if publish_in_future?(link), do: "opacity-50"}"} />
66+
<.icon name="hero-archive-box" class={"w-5 h-5 #{if link.in_future, do: "opacity-50"}"} />
6767
</.link>
6868
</:action>
6969
</.table>
7070

71+
7172
<.modal :if={@live_action in [:new, :edit]} id="link-modal" show on_cancel={JS.patch(~p"/admin/links")}>
7273
<.live_component module={CesiumLinkWeb.LinkLive.FormComponent} id={@link.id || :new} title={@page_title} action={@live_action} link={@link} patch={~p"/admin/links"} />
7374
</.modal>

priv/repo/migrations/20240418234531_create_links.exs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ defmodule CesiumLink.Repo.Migrations.CreateLinks do
1212
add :attention, :boolean, default: false, null: false
1313
add :archived, :boolean, default: false, null: false
1414
add :edited_at, :utc_datetime
15+
add :in_future, :boolean, default: false, null: false
1516

1617
timestamps(type: :utc_datetime)
1718
end

0 commit comments

Comments
 (0)