Vereinfacht accounting software API closes #431 #432
1 changed files with 8 additions and 1 deletions
|
|
@ -17,13 +17,20 @@ defmodule Mv.Vereinfacht.Changes.SyncLinkedMemberAfterUserChange do
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
def change(changeset, _opts, _context) do
|
def change(changeset, _opts, _context) do
|
||||||
if Mv.Config.vereinfacht_configured?() do
|
if Mv.Config.vereinfacht_configured?() and relevant_change?(changeset) do
|
||||||
Ash.Changeset.after_transaction(changeset, &sync_linked_member_after_transaction/2)
|
Ash.Changeset.after_transaction(changeset, &sync_linked_member_after_transaction/2)
|
||||||
else
|
else
|
||||||
changeset
|
changeset
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Only sync when something that affects the linked member's data actually changed
|
||||||
|
# (email sync or member link), to avoid unnecessary API calls on every user update.
|
||||||
|
defp relevant_change?(changeset) do
|
||||||
|
Ash.Changeset.changing_attribute?(changeset, :email) or
|
||||||
|
Ash.Changeset.changing_relationship?(changeset, :member)
|
||||||
|
end
|
||||||
|
|
||||||
defp sync_linked_member_after_transaction(_changeset, {:ok, user}) do
|
defp sync_linked_member_after_transaction(_changeset, {:ok, user}) do
|
||||||
case load_linked_member(user) do
|
case load_linked_member(user) do
|
||||||
nil ->
|
nil ->
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue