From 570af436157faa6a9f86863dc3a37986ad4d099e Mon Sep 17 00:00:00 2001 From: Jaanus Sellin Date: Wed, 13 Mar 2024 11:17:40 +0200 Subject: [PATCH] feat: share context between both frontend apis (#6529) We are sharing contexts because we want both clients to use same session ID. --- src/lib/features/frontend-api/create-context.ts | 1 + .../features/frontend-api/frontend-api-controller.ts | 12 +++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/lib/features/frontend-api/create-context.ts b/src/lib/features/frontend-api/create-context.ts index 3d6adccdb6..d2b1e2801c 100644 --- a/src/lib/features/frontend-api/create-context.ts +++ b/src/lib/features/frontend-api/create-context.ts @@ -36,5 +36,6 @@ export function createContext(value: any): Context { // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export const enrichContextWithIp = (query: any, ip: string): Context => { query.remoteAddress = query.remoteAddress || ip; + query.sessionId = query.sessionId || String(Math.random()); return createContext(query); }; diff --git a/src/lib/features/frontend-api/frontend-api-controller.ts b/src/lib/features/frontend-api/frontend-api-controller.ts index d30ab0fd69..24f62d2ed5 100644 --- a/src/lib/features/frontend-api/frontend-api-controller.ts +++ b/src/lib/features/frontend-api/frontend-api-controller.ts @@ -179,14 +179,15 @@ export default class FrontendAPIController extends Controller { let toggles: FrontendApiFeatureSchema[]; let newToggles: FrontendApiFeatureSchema[] = []; if (this.config.flagResolver.isEnabled('globalFrontendApiCache')) { + const context = FrontendAPIController.createContext(req); [toggles, newToggles] = await Promise.all([ this.services.frontendApiService.getFrontendApiFeatures( req.user, - FrontendAPIController.createContext(req), + context, ), this.services.frontendApiService.getNewFrontendApiFeatures( req.user, - FrontendAPIController.createContext(req), + context, ), ]); const sortedToggles = toggles.sort((a, b) => @@ -201,9 +202,10 @@ export default class FrontendAPIController extends Controller { toggles.length }, new count ${newToggles.length}, projects ${ req.user.projects - }, environment ${req.user.environment}, diff ${diff( - sortedToggles, - sortedNewToggles, + }, environment ${ + req.user.environment + }, diff ${JSON.stringify( + diff(sortedToggles, sortedNewToggles), )}`, ); }