From 738fdfd54a8368ff37a2155020de2da3bbd1b67c Mon Sep 17 00:00:00 2001 From: nicomiguelino Date: Mon, 3 Aug 2026 07:12:57 -0700 Subject: [PATCH] feat: upgrade asset API calls to v4.1 and pass browser user agent The v4 assets endpoint never granted write access to the user_agent column, so there was no way to tell Screenly's screenshot/rendering pipeline which browser produced a saved asset's headers. Move createWebAsset, updateWebAsset, getWebAsset, and the existing-asset lookup to v4.1 (a strict superset of v4) and forward navigator.userAgent when creating or updating a web asset. --- src/assets/ts/features/asset/thunks/submit-asset.ts | 2 ++ src/assets/ts/features/asset/thunks/update-proposal.ts | 2 +- src/assets/ts/main.ts | 10 +++++++--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/assets/ts/features/asset/thunks/submit-asset.ts b/src/assets/ts/features/asset/thunks/submit-asset.ts index 4578109..537db44 100644 --- a/src/assets/ts/features/asset/thunks/submit-asset.ts +++ b/src/assets/ts/features/asset/thunks/submit-asset.ts @@ -48,6 +48,7 @@ export const submitAsset = createAsyncThunk< proposal.title, headers, bypassVerification, + navigator.userAgent, ) : await updateWebAsset( assetState.assetId, @@ -56,6 +57,7 @@ export const submitAsset = createAsyncThunk< proposal.title, headers, bypassVerification, + navigator.userAgent, ); if (result.length === 0) { diff --git a/src/assets/ts/features/asset/thunks/update-proposal.ts b/src/assets/ts/features/asset/thunks/update-proposal.ts index d1e5fc2..4dfe8ac 100644 --- a/src/assets/ts/features/asset/thunks/update-proposal.ts +++ b/src/assets/ts/features/asset/thunks/update-proposal.ts @@ -39,7 +39,7 @@ export const updateProposal = createAsyncThunk< ].join('&'); const result = await callApi( 'GET', - `v4/assets/?${queryParams.toString()}`, + `v4.1/assets/?${queryParams.toString()}`, null, user.token, ); diff --git a/src/assets/ts/main.ts b/src/assets/ts/main.ts index e954ab0..d99f302 100644 --- a/src/assets/ts/main.ts +++ b/src/assets/ts/main.ts @@ -66,15 +66,17 @@ export function createWebAsset( title: string, headers: object | null, disableVerification: boolean, + userAgent?: string, ): Promise { return callApi( 'POST', - `v4/assets/`, + `v4.1/assets/`, { source_url: url, title: title, headers: headers, disable_verification: disableVerification, + ...(userAgent ? { user_agent: userAgent } : {}), }, user.token, ).then((response: ApiResponseData[]) => { @@ -89,17 +91,19 @@ export function updateWebAsset( title: string, headers: object | null, disableVerification: boolean, + userAgent?: string, ): Promise { const params = new URLSearchParams({ id: `eq.${assetId || ''}` }); return callApi( 'PATCH', - `v4/assets/?${params.toString()}`, + `v4.1/assets/?${params.toString()}`, { // API expects snake_case, so we transform from camelCase title: title, headers: headers, disable_verification: disableVerification, + ...(userAgent ? { user_agent: userAgent } : {}), }, user.token, ).then((response: ApiResponseData[]) => { @@ -115,7 +119,7 @@ export function getWebAsset( return callApi( 'GET', - `v4/assets/?${params.toString()}`, + `v4.1/assets/?${params.toString()}`, null, user.token, ).then((response: ApiResponseData[]) => {