actual working counters i think

This commit is contained in:
Luna D 2019-12-04 18:15:54 -05:00
parent c3e6bb5f3e
commit accc9b5304
No known key found for this signature in database
GPG key ID: D0F46C94720BAA4B
7 changed files with 77 additions and 4 deletions

View file

@ -101,4 +101,10 @@ defmodule Philomena.DnpEntries do
def change_dnp_entry(%DnpEntry{} = dnp_entry) do
DnpEntry.changeset(dnp_entry, %{})
end
def count_dnp_entries() do
DnpEntry
|> where([ul], ul.aasm_state in [ "requested", "claimed", "acknowledged" ])
|> Repo.aggregate(:count, :id)
end
end

View file

@ -114,4 +114,10 @@ defmodule Philomena.DuplicateReports do
def change_duplicate_report(%DuplicateReport{} = duplicate_report) do
DuplicateReport.changeset(duplicate_report, %{})
end
def count_duplicate_reports() do
DuplicateReport
|> where([dr], dr.state == "open")
|> Repo.aggregate(:count, :id)
end
end

View file

@ -116,4 +116,10 @@ defmodule Philomena.Reports do
report
end
def count_reports() do
Report
|> where(open: true)
|> Repo.aggregate(:count, :id)
end
end

View file

@ -104,4 +104,10 @@ defmodule Philomena.UserLinks do
def change_user_link(%UserLink{} = user_link) do
UserLink.changeset(user_link, %{})
end
def count_user_links() do
UserLink
|> where([ul], ul.aasm_state == "unverified")
|> Repo.aggregate(:count, :id)
end
end

View file

@ -0,0 +1,48 @@
defmodule PhilomenaWeb.AdminCountersPlug do
@moduledoc """
This plug stores the counts used by the admin bar.
## Example
plug PhilomenaWeb.AdminCountersPlug
"""
alias Plug.Conn
alias Philomena.DuplicateReports
alias Philomena.Reports
alias Philomena.UserLinks
alias Philomena.DnpEntries
import Plug.Conn, only: [assign: 3]
@doc false
@spec init(any()) :: any()
def init(opts), do: opts
@doc false
@spec call(Plug.Conn.t()) :: Plug.Conn.t()
def call(conn), do: call(conn, nil)
@doc false
@spec call(Plug.Conn.t(), any()) :: Plug.Conn.t()
def call(conn, _opts) do
user = conn.assigns.current_user
maybe_assign_admin_metrics(conn, staff?(user))
end
defp maybe_assign_admin_metrics(conn, false), do: conn
defp maybe_assign_admin_metrics(conn, true) do
duplicate_reports = DuplicateReports.count_duplicate_reports()
reports = Reports.count_reports()
user_links = UserLinks.count_user_links()
dnps = DnpEntries.count_dnp_entries()
conn
|> assign(:duplicate_report_count, duplicate_reports)
|> assign(:report_count, reports)
|> assign(:user_link_count, user_links)
|> assign(:dnp_entry_count, dnps)
end
defp staff?(%{role: role}) when role in ["assistant", "moderator", "admin"], do: true
defp staff?(_user), do: false
end

View file

@ -19,6 +19,7 @@ defmodule PhilomenaWeb.Router do
plug PhilomenaWeb.ForumListPlug
plug PhilomenaWeb.FilterSelectPlug
plug PhilomenaWeb.ChannelPlug
plug PhilomenaWeb.AdminCountersPlug
end
pipeline :api do

View file

@ -38,19 +38,19 @@
= link to: "#", class: "header__link", title: "Duplicates" do
=<> "D"
span.header__counter__admin
| 0
= @duplicate_report_count
= link to: "#", class: "header__link", title: "Reports" do
=<> "R"
span.header__counter__admin
| 0
= @report_count
= link to: "#", class: "header__link", title: "User Links" do
=<> "L"
span.header__counter__admin
| 0
= @user_link_count
= link to: "#", class: "header__link", title: "DNP Requests" do
=<> "S"
span.header__counter__admin
| 0
= @dnp_entry_count
.dropdown.hide-mobile
a.header__link title="Bans"
=<> "B"