From a94c0c0b1434904d2db7d87e066616e1690c1b92 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 18 Feb 2026 23:27:40 +0100 Subject: [PATCH] Vereinfacht: sync linked member only when email or member changed Run SyncLinkedMemberAfterUserChange only when email or member relationship changed to avoid unnecessary API calls. --- .../changes/sync_linked_member_after_user_change.ex | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/mv/vereinfacht/changes/sync_linked_member_after_user_change.ex b/lib/mv/vereinfacht/changes/sync_linked_member_after_user_change.ex index e5cb599..cffb079 100644 --- a/lib/mv/vereinfacht/changes/sync_linked_member_after_user_change.ex +++ b/lib/mv/vereinfacht/changes/sync_linked_member_after_user_change.ex @@ -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 ->