Skip to content

Commit de5a90c

Browse files
committed
Mute and unmute errors
1 parent 5115547 commit de5a90c

File tree

5 files changed

+66
-0
lines changed

5 files changed

+66
-0
lines changed

lib/error_tracker.ex

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,26 @@ defmodule ErrorTracker do
179179
end
180180
end
181181

182+
@doc """
183+
Mutes the error so next ocurrences won't send telemetry events.
184+
"""
185+
@spec mute(Error.t()) :: {:ok, Error.t()} | {:error, Ecto.Changeset.t()}
186+
def mute(error = %Error{muted: false}) do
187+
changeset = Ecto.Changeset.change(error, muted: true)
188+
189+
Repo.update(changeset)
190+
end
191+
192+
@doc """
193+
Unmutes the error so next ocurrences will send telemetry events.
194+
"""
195+
@spec unmute(Error.t()) :: {:ok, Error.t()} | {:error, Ecto.Changeset.t()}
196+
def unmute(error = %Error{muted: true}) do
197+
changeset = Ecto.Changeset.change(error, muted: false)
198+
199+
Repo.update(changeset)
200+
end
201+
182202
@doc """
183203
Sets the current process context.
184204

lib/error_tracker/web/live/dashboard.ex

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,22 @@ defmodule ErrorTracker.Web.Live.Dashboard do
5757
{:noreply, paginate_errors(socket)}
5858
end
5959

60+
@impl Phoenix.LiveView
61+
def handle_event("mute", %{"error_id" => id}, socket) do
62+
error = Repo.get(Error, id)
63+
{:ok, _muted} = ErrorTracker.mute(error)
64+
65+
{:noreply, paginate_errors(socket)}
66+
end
67+
68+
@impl Phoenix.LiveView
69+
def handle_event("unmute", %{"error_id" => id}, socket) do
70+
error = Repo.get(Error, id)
71+
{:ok, _unmuted} = ErrorTracker.unmute(error)
72+
73+
{:noreply, paginate_errors(socket)}
74+
end
75+
6076
defp paginate_errors(socket) do
6177
%{page: page, search: search} = socket.assigns
6278
offset = (page - 1) * @per_page

lib/error_tracker/web/live/dashboard.html.heex

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,14 @@
102102
>
103103
Unresolve
104104
</.button>
105+
106+
<.button :if={!error.muted} phx-click="mute" type="link" phx-value-error_id={error.id}>
107+
Mute
108+
</.button>
109+
110+
<.button :if={error.muted} phx-click="unmute" type="link" phx-value-error_id={error.id}>
111+
Unmute
112+
</.button>
105113
</td>
106114
</tr>
107115
</tbody>

lib/error_tracker/web/live/show.ex

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,20 @@ defmodule ErrorTracker.Web.Live.Show do
6969
{:noreply, assign(socket, :error, updated_error)}
7070
end
7171

72+
@impl Phoenix.LiveView
73+
def handle_event("mute", _params, socket) do
74+
{:ok, updated_error} = ErrorTracker.mute(socket.assigns.error)
75+
76+
{:noreply, assign(socket, :error, updated_error)}
77+
end
78+
79+
@impl Phoenix.LiveView
80+
def handle_event("unmute", _params, socket) do
81+
{:ok, updated_error} = ErrorTracker.unmute(socket.assigns.error)
82+
83+
{:noreply, assign(socket, :error, updated_error)}
84+
end
85+
7286
defp load_related_occurrences(socket) do
7387
current_occurrence = socket.assigns.occurrence
7488
base_query = Ecto.assoc(socket.assigns.error, :occurrences)

lib/error_tracker/web/live/show.html.heex

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,14 @@
124124
<.button :if={@error.status == :resolved} phx-click="unresolve">
125125
Mark as unresolved
126126
</.button>
127+
128+
<.button :if={!@error.muted} phx-click="mute" type="link">
129+
Mute
130+
</.button>
131+
132+
<.button :if={@error.muted} phx-click="unmute" type="link">
133+
Unmute
134+
</.button>
127135
</.section>
128136
</div>
129137
</div>

0 commit comments

Comments
 (0)