Vereinfacht: sync linked member only when email or member changed
Run SyncLinkedMemberAfterUserChange only when email or member relationship changed to avoid unnecessary API calls.
This commit is contained in:
parent
a23f999eee
commit
a94c0c0b14
1 changed files with 8 additions and 1 deletions
|
|
@ -17,13 +17,20 @@ defmodule Mv.Vereinfacht.Changes.SyncLinkedMemberAfterUserChange do
|
|||
|
||||
@impl true
|
||||
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)
|
||||
else
|
||||
changeset
|
||||
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
|
||||
case load_linked_member(user) do
|
||||
nil ->
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue