Skip to content

Commit 96243ed

Browse files
committed
update claim page to display co-authors
1 parent 02e79ab commit 96243ed

File tree

2 files changed

+36
-27
lines changed

2 files changed

+36
-27
lines changed

lib/algora_web/live/claim_live.ex

Lines changed: 35 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,44 @@ defmodule AlgoraWeb.ClaimLive do
22
@moduledoc false
33
use AlgoraWeb, :live_view
44

5+
import Ecto.Query
6+
57
alias Algora.Bounties.Claim
68
alias Algora.Github
79
alias Algora.Repo
810

911
@impl true
10-
def mount(%{"id" => id}, _session, socket) do
11-
{:ok, claim} = Repo.fetch(Claim, id)
12-
13-
claim =
14-
Repo.preload(claim, [
12+
def mount(%{"group_id" => group_id}, _session, socket) do
13+
claims =
14+
from(c in Claim, where: c.group_id == ^group_id)
15+
|> order_by(desc: :group_share)
16+
|> Repo.all()
17+
|> Repo.preload([
1518
:user,
1619
source: [repository: [:user]],
1720
target: [repository: [:user], bounties: [:owner]]
1821
])
1922

20-
{:ok, prize_pool} = claim.target.bounties |> Enum.map(& &1.amount) |> Money.sum()
23+
[primary_claim | _] = claims
24+
25+
{:ok, prize_pool} = primary_claim.target.bounties |> Enum.map(& &1.amount) |> Money.sum()
2126

2227
source_body_html =
2328
with token when is_binary(token) <- Github.TokenPool.get_token(),
24-
{:ok, source_body_html} <- Github.render_markdown(token, claim.source.description) do
29+
{:ok, source_body_html} <- Github.render_markdown(token, primary_claim.source.description) do
2530
source_body_html
2631
else
27-
_ -> claim.source.description
32+
_ -> primary_claim.source.description
2833
end
2934

3035
{:ok,
3136
socket
32-
|> assign(:page_title, "Claim Details")
33-
|> assign(:claim, claim)
34-
|> assign(:target, claim.target)
35-
|> assign(:source, claim.source)
36-
|> assign(:user, claim.user)
37-
|> assign(:bounties, claim.target.bounties)
37+
|> assign(:page_title, primary_claim.source.title)
38+
|> assign(:claims, claims)
39+
|> assign(:primary_claim, primary_claim)
40+
|> assign(:target, primary_claim.target)
41+
|> assign(:source, primary_claim.source)
42+
|> assign(:bounties, primary_claim.target.bounties)
3843
|> assign(:prize_pool, prize_pool)
3944
|> assign(:source_body_html, source_body_html)}
4045
end
@@ -76,15 +81,19 @@ defmodule AlgoraWeb.ClaimLive do
7681
<%!-- Claimer Info --%>
7782
<.card>
7883
<.card_header>
79-
<div class="flex items-center gap-4">
80-
<.avatar>
81-
<.avatar_image src={@user.avatar_url} />
82-
<.avatar_fallback>{String.first(@user.name)}</.avatar_fallback>
83-
</.avatar>
84-
<div>
85-
<p class="font-medium">{@user.name}</p>
86-
<p class="text-sm text-muted-foreground">@{@user.handle}</p>
87-
</div>
84+
<div class="grid grid-cols-1 sm:grid-cols-3">
85+
<%= for claim <- @claims do %>
86+
<div class="flex items-center gap-4">
87+
<.avatar>
88+
<.avatar_image src={claim.user.avatar_url} />
89+
<.avatar_fallback>{String.first(claim.user.name)}</.avatar_fallback>
90+
</.avatar>
91+
<div>
92+
<p class="font-medium">{claim.user.name}</p>
93+
<p class="text-sm text-muted-foreground">@{claim.user.handle}</p>
94+
</div>
95+
</div>
96+
<% end %>
8897
</div>
8998
</.card_header>
9099
<.card_content>
@@ -126,15 +135,15 @@ defmodule AlgoraWeb.ClaimLive do
126135
<div class="space-y-2">
127136
<div class="flex justify-between text-sm">
128137
<span class="text-muted-foreground">Status</span>
129-
<span>{@claim.status |> to_string() |> String.capitalize()}</span>
138+
<span>{@primary_claim.status |> to_string() |> String.capitalize()}</span>
130139
</div>
131140
<div class="flex justify-between text-sm">
132141
<span class="text-muted-foreground">Submitted</span>
133-
<span>{Calendar.strftime(@claim.inserted_at, "%B %d, %Y")}</span>
142+
<span>{Calendar.strftime(@primary_claim.inserted_at, "%B %d, %Y")}</span>
134143
</div>
135144
<div class="flex justify-between text-sm">
136145
<span class="text-muted-foreground">Last Updated</span>
137-
<span>{Calendar.strftime(@claim.updated_at, "%B %d, %Y")}</span>
146+
<span>{Calendar.strftime(@primary_claim.updated_at, "%B %d, %Y")}</span>
138147
</div>
139148
</div>
140149
</.card_content>

lib/algora_web/router.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ defmodule AlgoraWeb.Router do
141141

142142
live "/open-source", OpenSourceLive, :index
143143

144-
live "/claims/:id", ClaimLive
144+
live "/claims/:group_id", ClaimLive
145145
end
146146

147147
# Other scopes may use custom stacks.

0 commit comments

Comments
 (0)