diff --git a/src/lib/svelte-mocks/app/stores.ts b/src/lib/svelte-mocks/app/stores.ts index d81413173..6cf441309 100644 --- a/src/lib/svelte-mocks/app/stores.ts +++ b/src/lib/svelte-mocks/app/stores.ts @@ -39,7 +39,7 @@ const settings: Settings = { isLocal: true, envOverride: true, }, - version: '2.0.0', + version: '2.28.0', }; const data: App.PageData = { diff --git a/src/lib/utilities/route-for-api.test.ts b/src/lib/utilities/route-for-api.test.ts index ac4b14a87..dcad75caf 100644 --- a/src/lib/utilities/route-for-api.test.ts +++ b/src/lib/utilities/route-for-api.test.ts @@ -181,7 +181,7 @@ describe('API Request Encoding', () => { workflowId: 'workflow#with#hashes', }); expect(route).toBe( - 'http://localhost:8233/api/v1/namespaces/namespace/workflows/workflow%2523with%2523hashes', + 'http://localhost:8233/api/v1/namespaces/namespace/workflows/workflow%23with%23hashes', ); }); @@ -194,7 +194,7 @@ describe('API Request Encoding', () => { 'temporal.canary.cron-workflow.sanity-2022-05-02T16:03:11-06:00/workflow.advanced-visibility.scan', }); expect(route).toBe( - 'http://localhost:8233/api/v1/namespaces/canary/workflows/temporal.canary.cron-workflow.sanity-2022-05-02T16%253A03%253A11-06%253A00%252Fworkflow.advanced-visibility.scan', + 'http://localhost:8233/api/v1/namespaces/canary/workflows/temporal.canary.cron-workflow.sanity-2022-05-02T16%3A03%3A11-06%3A00%2Fworkflow.advanced-visibility.scan', ); }); }); diff --git a/src/lib/utilities/route-for-api.ts b/src/lib/utilities/route-for-api.ts index 7ebb7d19d..5ed1b9e0a 100644 --- a/src/lib/utilities/route-for-api.ts +++ b/src/lib/utilities/route-for-api.ts @@ -33,6 +33,7 @@ import type { } from '$lib/types/api'; import { getApiOrigin } from './get-api-origin'; +import { minimumVersionRequired } from './version-check'; const replaceNamespaceInApiUrl = ( apiUrl: string, @@ -79,9 +80,14 @@ const withBase = (path: string, namespace?: string): string => { const encode = ( parameters: Partial, ): APIRouteParameters => { + const version = get(page)?.data?.settings?.version; return Object.keys(parameters ?? {}).reduce( (acc, key) => { - acc[key] = encodeURIComponent(encodeURIComponent(parameters[key])); + if (version && minimumVersionRequired('2.23.0', version)) { + acc[key] = encodeURIComponent(parameters[key]); + } else { + acc[key] = encodeURIComponent(encodeURIComponent(parameters[key])); + } return acc; }, {