summaryrefslogtreecommitdiff
path: root/lib/aggiedit_web/live/post_live/index.html.heex
blob: 89767f87b82467e10ae46f989c9d410656634035 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<h1>@<%= @room.domain %></h1>

<%= if @live_action in [:new, :edit] do %>
  <.modal return_to={Routes.post_index_path(@socket, :index, @room)}>
    <.live_component
      current_user={@current_user}
      module={AggieditWeb.PostLive.FormComponent}
      id={@post.id || :new}
      title={@page_title}
      action={@live_action}
      post={@post}
      return_to={Routes.post_index_path(@socket, :index, @room)}
    />
  </.modal>
<% end %>

<span><%= live_patch "New Post", to: Routes.post_index_path(@socket, :new, @room) %></span>
<div id="posts" phx-update="prepend">
  <%= for post <- @posts do %>
    <div id={"post-#{post.id}"} class="card d-flex flex-row align-items-center p-2 m-2 shadow">
      <div class="d-flex flex-column m-2">
        <%= 
          has_vote = Map.has_key?(@votes, post.id)
          is_upvote = has_vote && @votes[post.id].is_up
          ""
        %>
        <div class="d-flex">
          <span><%= link "", to: "#", phx_click: "upvote", phx_value_id: post.id, class: "bi bi-arrow-up-circle#{if has_vote && is_upvote, do: "-fill", else: ""}" %></span>
        </div>
        <div class="d-flex">
          <%= post.score %>
        </div>
        <div class="d-flex">
          <span><%= link "", to: "#", phx_click: "downvote", phx_value_id: post.id, class: "bi bi-arrow-down-circle#{if has_vote && !is_upvote, do: "-fill", else: ""}" %></span>
        </div>
      </div>
      <div class="m-2 card-image d-flex justify-content-center" style="width: 100px">
        <%= if !is_nil(post.upload) do %>
          <%= live_redirect to: Routes.post_show_path(@socket, :show, @room, post) do %>
            <img class="fluid-img thumbnail" src={Routes.static_path(@socket, "/uploads/#{post.upload.file}")} />
          <% end %>
        <% end %>
      </div>
      <div class="card-body">
        <%= live_redirect to: Routes.post_show_path(@socket, :show, @room, post) do %>
          <h4 class="card-title"><%= post.title %></h4>
        <% end %>
        <h6 class="card-subtitle mb-2"><span class="text-muted">aggie/</span><%= post.user.username %></h6>
        <p class="card-text"><%= post.body %></p>

        <%= if Aggiedit.Roles.guard?(@current_user, :edit, post) && Aggiedit.Roles.guard?(@current_user, :edit, post) do %>
          <span><%= live_patch "Edit", to: Routes.post_index_path(@socket, :edit, @room, post) %></span>
          <span><%= link "Delete", to: "#", phx_click: "delete", phx_value_id: post.id %></span>
        <% end %>
      </div>
    </div>
  <% end %>
</div>