From a835c6ca29e52f7a5fcd9a9511c8feabc7b60de9 Mon Sep 17 00:00:00 2001 From: Avior Date: Mon, 11 Apr 2022 12:17:22 +0200 Subject: [PATCH] fix: Handle variable lang directive (#272) --- server/src/V2/graphql/resolver.ts | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/server/src/V2/graphql/resolver.ts b/server/src/V2/graphql/resolver.ts index e1dbf42ed..69d4eb2a3 100644 --- a/server/src/V2/graphql/resolver.ts +++ b/server/src/V2/graphql/resolver.ts @@ -10,10 +10,25 @@ const middleware = = Record>(fn: (la _: any, e: any ) => { - let lang = e?.fieldNodes?.[0]?.directives?.[0]?.arguments?.[0]?.value?.value - if (!lang) { - lang = 'en' + + // get the locale directive + const langArgument = e?.fieldNodes?.[0]?.directives?.[0]?.arguments?.[0]?.value + + // if there is no locale directive + if (!langArgument) { + return fn('en', data) } + + // set default locale directive value + let lang = 'en' + + // handle variable for directive value + if (langArgument.kind === 'Variable') { + lang = e.variableValues[langArgument.name.value] + } else { + lang = langArgument.value + } + if (!checkLanguage(lang)) { return undefined }