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:
Moritz 2026-02-18 23:27:40 +01:00
parent 81f62a7c85
commit 9db5b7f292
Signed by: moritz
GPG key ID: 1020A035E5DD0824

View file

@ -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 ->