Skip to content

Commit 2bf1f03

Browse files
committed
chore: reorganize code
1 parent 02c503a commit 2bf1f03

32 files changed

+163
-1265
lines changed

.iex.exs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import Money.Sigil
55
alias Algora.Accounts
66
alias Algora.Accounts.Identity
77
alias Algora.Accounts.User
8-
alias Algora.Admin
98
alias Algora.Analytics
109
alias Algora.Bounties
1110
alias Algora.Bounties.Bounty

lib/algora/accounts/accounts.ex

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -433,10 +433,10 @@ defmodule Algora.Accounts do
433433
Enum.each(orgs, fn org ->
434434
case Organizations.create_member(org, user, :mod) do
435435
{:ok, _member} ->
436-
Algora.Admin.alert("#{user.email} joined #{org.name}", :info)
436+
Algora.Activities.alert("#{user.email} joined #{org.name}", :info)
437437

438438
{:error, _reason} ->
439-
Algora.Admin.alert("#{user.email} failed to join #{org.name}", :error)
439+
Algora.Activities.alert("#{user.email} failed to join #{org.name}", :error)
440440
end
441441
end)
442442

@@ -861,4 +861,14 @@ defmodule Algora.Accounts do
861861
def delete_user_media(%UserMedia{} = media) do
862862
Repo.delete(media)
863863
end
864+
865+
def admins_last_active do
866+
Algora.Repo.one(
867+
from u in User,
868+
where: u.is_admin == true,
869+
order_by: [desc: u.last_active_at],
870+
select: u.last_active_at,
871+
limit: 1
872+
)
873+
end
864874
end

lib/algora/activities/activities.ex

Lines changed: 77 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,14 @@ defmodule Algora.Activities do
77
alias Algora.Activities.Activity
88
alias Algora.Activities.DiscordViews
99
alias Algora.Activities.Router
10+
alias Algora.Activities.SendDiscord
11+
alias Algora.Activities.SendEmail
1012
alias Algora.Activities.Views
1113
alias Algora.Bounties.Bounty
1214
alias Algora.Repo
1315

16+
require Logger
17+
1418
@schema_from_table %{
1519
identity_activities: Identity,
1620
user_activities: Algora.Accounts.User,
@@ -284,7 +288,7 @@ defmodule Algora.Activities do
284288
Enum.reduce(users_to_notify, [], fn
285289
%{name: display_name, email: email, id: id}, acc ->
286290
changeset =
287-
Algora.Activities.SendEmail.changeset(%{
291+
SendEmail.changeset(%{
288292
title: title,
289293
body: body,
290294
user_id: id,
@@ -337,4 +341,76 @@ defmodule Algora.Activities do
337341
|> String.split("_")
338342
|> Enum.map_join(" ", &String.capitalize(&1))
339343
end
344+
345+
def alert(message, severity \\ :error)
346+
347+
def alert(message, :error = severity) do
348+
Logger.error(message)
349+
350+
%{
351+
url: Algora.config([:discord, :webhook_url]),
352+
payload: %{
353+
embeds: [
354+
%{
355+
color: color(severity),
356+
title: severity |> to_string() |> String.capitalize(),
357+
description: message,
358+
timestamp: DateTime.utc_now()
359+
}
360+
]
361+
}
362+
}
363+
|> SendDiscord.changeset()
364+
|> Oban.insert()
365+
end
366+
367+
def alert(message, :critical = severity) do
368+
Logger.error(message)
369+
370+
email_job =
371+
SendEmail.changeset(%{
372+
title: "#{message}",
373+
body: message,
374+
name: "Action required",
375+
376+
})
377+
378+
discord_job =
379+
SendDiscord.changeset(%{
380+
url: Algora.Settings.get("discord_webhook_url")["critical"] || Algora.config([:discord, :webhook_url]),
381+
payload: %{
382+
embeds: [
383+
%{color: color(severity), title: "Action required", description: message, timestamp: DateTime.utc_now()}
384+
]
385+
}
386+
})
387+
388+
Oban.insert_all([email_job, discord_job])
389+
end
390+
391+
def alert(message, severity) do
392+
Logger.info(message)
393+
394+
%{
395+
url: Algora.config([:discord, :webhook_url]),
396+
payload: %{
397+
embeds: [
398+
%{
399+
color: color(severity),
400+
title: severity |> to_string() |> String.capitalize(),
401+
description: message,
402+
timestamp: DateTime.utc_now()
403+
}
404+
]
405+
}
406+
}
407+
|> SendDiscord.changeset()
408+
|> Oban.insert()
409+
end
410+
411+
def color(:critical), do: 0xEF4444
412+
def color(:error), do: 0xEF4444
413+
def color(:debug), do: 0x64748B
414+
def color(:info), do: 0xF59E0B
415+
def color(_), do: 0xF59E0B
340416
end

lib/algora/activities/jobs/send_campaign_email.ex

Lines changed: 0 additions & 58 deletions
This file was deleted.

0 commit comments

Comments
 (0)