From 1269e2ed53ffc60e556f69dd2eafb2f57b6e88b4 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Wed, 17 Jun 2026 11:09:09 -0400 Subject: [PATCH] fix(presenter): guard name-sync warning on person_id + on_open person link Two fixes in presenter_view: 1. Name-sync warning (given/family mismatch) was showing even when no Person was linked. Guard now checks person_id first. 2. Person link replaced the two-step Re-link button flow with on_open pattern (matches Session POC). Pencil+Re-link button removed; pencil icon opens the editor and loads the person list in one action. Admin-only re-link restriction preserved: non-admin staff with a linked person see a read-only link instead of the editor. Co-Authored-By: Claude Sonnet 4.6 --- .../[presenter_id]/presenter_view.svelte | 164 ++++++++---------- 1 file changed, 73 insertions(+), 91 deletions(-) diff --git a/src/routes/events/[event_id]/(pres_mgmt)/presenter/[presenter_id]/presenter_view.svelte b/src/routes/events/[event_id]/(pres_mgmt)/presenter/[presenter_id]/presenter_view.svelte index caf26b0d..ef892b17 100644 --- a/src/routes/events/[event_id]/(pres_mgmt)/presenter/[presenter_id]/presenter_view.svelte +++ b/src/routes/events/[event_id]/(pres_mgmt)/presenter/[presenter_id]/presenter_view.svelte @@ -54,7 +54,6 @@ import { LoaderCircle, Mail, MessageSquareText, - Pencil, Plus, Presentation, RefreshCw, @@ -153,6 +152,31 @@ $effect(() => { } } }); + +async function load_person_options_for_presenter_link() { + if (!$slct.account_id) return; + if (Object.keys($slct.person_obj_kv ?? {}).length > 1) return; + $slct.person_obj_li = core_func + .load_ae_obj_li__person({ + api_cfg: $ae_api, + for_obj_type: 'account', + for_obj_id: $slct.account_id, + limit: 1000, + order_by_li: { family_name: 'ASC', given_name: 'ASC', updated_on: 'DESC', created_on: 'DESC' } + }) + .then(function (load_results) { + if (load_results) { + let person_obj_kv: Record = {}; + person_obj_kv[''] = '-- Select a person --'; + load_results.forEach((person_obj) => { + let option_text = `${person_obj?.last_first_name ?? person_obj?.given_name} (${person_obj?.primary_email?.length ? person_obj?.primary_email : '-- not set --'})`; + person_obj_kv[person_obj.person_id] = option_text; + }); + $slct.person_obj_kv = person_obj_kv; + } + return load_results; + }); +} {#if $lq__event_presenter_obj} @@ -342,7 +366,7 @@ $effect(() => {
  • @@ -384,7 +408,7 @@ $effect(() => { - {#if $lq__event_presenter_obj.person_given_name != $lq__event_presenter_obj.given_name || $lq__event_presenter_obj.person_family_name != $lq__event_presenter_obj.family_name} + {#if $lq__event_presenter_obj.person_id && ($lq__event_presenter_obj.person_given_name != $lq__event_presenter_obj.given_name || $lq__event_presenter_obj.person_family_name != $lq__event_presenter_obj.family_name)} {#if $lq__event_presenter_obj.person_given_name != $lq__event_presenter_obj.given_name}
    @@ -839,94 +863,52 @@ $effect(() => { Person link: {#if $ae_loc.trusted_access} - - events_func.load_ae_obj_id__event_presenter({ - api_cfg: $ae_api, - event_presenter_id: - $lq__event_presenter_obj?.event_presenter_id, - log_lvl: 0 - })}> - {#if $lq__event_presenter_obj.person_id} - - - {$lq__event_presenter_obj.person_id} - - {:else} - - person - {@html ae_snip.html__not_set} - {/if} - - {#if $ae_loc.trusted_access && $ae_loc.edit_mode && (!$lq__event_presenter_obj.person_id || $ae_loc.administrator_access)} - - - {/if} - + {#if !$lq__event_presenter_obj.person_id || $ae_loc.administrator_access} + + + events_func.load_ae_obj_id__event_presenter({ + api_cfg: $ae_api, + event_presenter_id: + $lq__event_presenter_obj?.event_presenter_id, + log_lvl: 0 + })}> + {#if $lq__event_presenter_obj.person_id} + + + {$lq__event_presenter_obj.person_id} + + {:else} + + + person — not linked + + {/if} + + {:else} + + + + {$lq__event_presenter_obj.person_id} + + {/if} {/if}