diff --git a/src/lib/ae_core/ae_comp__hosted_files_download_button.svelte b/src/lib/ae_core/ae_comp__hosted_files_download_button.svelte index 0a67ddb9..6e3537d2 100644 --- a/src/lib/ae_core/ae_comp__hosted_files_download_button.svelte +++ b/src/lib/ae_core/ae_comp__hosted_files_download_button.svelte @@ -35,6 +35,7 @@ interface Props { require_auth?: boolean; classes?: string; click?: () => void | Promise; + track_click_promise?: boolean; label?: import('svelte').Snippet; } @@ -57,6 +58,7 @@ let { require_auth = true, classes = '', click, + track_click_promise = true, label }: Props = $props(); @@ -193,8 +195,9 @@ async function handle_click() { if (click) { const result = click(); - // If the override returns a promise, track it so the UI shows progress - if (result instanceof Promise) { + // If the override returns a promise, track it so the UI shows progress. + // Launcher open flows can opt out so native status messages stay authoritative. + if (track_click_promise && result instanceof Promise) { ae_promises[file_id] = result; } return; diff --git a/src/routes/events/[event_id]/(launcher)/launcher_file_cont.svelte b/src/routes/events/[event_id]/(launcher)/launcher_file_cont.svelte index ebd5451a..aef975c2 100644 --- a/src/routes/events/[event_id]/(launcher)/launcher_file_cont.svelte +++ b/src/routes/events/[event_id]/(launcher)/launcher_file_cont.svelte @@ -593,6 +593,7 @@ function prevent_default(fn: (event: T) => void) { hosted_file_id={event_file_id} hosted_file_obj={event_file_obj} require_auth={false} + track_click_promise={!($ae_loc.is_native && $events_loc.launcher.app_mode === 'native')} classes="btn {btn_size} gap-1 justify-between min-w-full w-full max-w-96 preset-tonal-primary border border-primary-500" click={handle_open_file}> {#snippet label()}