diff --git a/src/config.ts b/src/config.ts index 2922bc8b62..2af14a0478 100644 --- a/src/config.ts +++ b/src/config.ts @@ -87,31 +87,6 @@ const logglyApiKey = (): string | undefined => { return getEnvironmentVariabel('LOGGLY_API_KEY'); }; -export const allowedAIOrgs = () => { - const defaultList = [ - 'Agder fylkeskommune', - 'Nordland fylkeskommune', - 'Rogaland fylkeskommune', - 'Troms og Finnmark fylkeskommune', - 'Trøndelag fylkeskommune', - 'Vestland fylkeskommune', - ]; - if (['local', 'dev'].includes(ndlaEnvironment)) { - return [...defaultList, 'Universitetet i Rogn']; // frank_foreleser - } - if (['test'].includes(ndlaEnvironment)) { - return [ - ...defaultList, - 'Innlandet fylkeskommune', - 'Møre og Romsdal fylkeskommune', - 'Vestfold og Telemark fylkeskommune', - 'Viken fylkeskommune', - 'Universitetet i Rogn', - ]; - } - return defaultList; -}; - export const getDefaultLocale = () => getEnvironmentVariabel('NDLA_DEFAULT_LOCALE', 'nb'); @@ -139,7 +114,6 @@ export type ConfigType = { matomoTagmanagerId: string; isVercel: boolean; monsidoToken: string; - allowedAIOrgs: string[]; }; const config: ConfigType = { @@ -175,7 +149,6 @@ const config: ConfigType = { matomoTagmanagerId: getEnvironmentVariabel('MATOMO_TAGMANAGER_ID', ''), isVercel: getEnvironmentVariabel('IS_VERCEL', false), monsidoToken: getEnvironmentVariabel('MONSIDO_TOKEN', ''), - allowedAIOrgs: allowedAIOrgs(), }; export function getUniversalConfig() { diff --git a/src/containers/MyNdla/MyNdlaPage.tsx b/src/containers/MyNdla/MyNdlaPage.tsx index d4258bfb37..30370d8cdc 100644 --- a/src/containers/MyNdla/MyNdlaPage.tsx +++ b/src/containers/MyNdla/MyNdlaPage.tsx @@ -6,7 +6,7 @@ * */ -import { useContext, useEffect } from 'react'; +import { useContext, useEffect, useMemo } from 'react'; import { useLocation } from 'react-router-dom'; import { Trans, useTranslation } from 'react-i18next'; import keyBy from 'lodash/keyBy'; @@ -28,7 +28,6 @@ import { ModalTrigger, ModalContent, } from '@ndla/modal'; -import config from '../../config'; import InfoPart, { InfoPartIcon, InfoPartText } from './InfoSection'; import { AuthContext } from '../../components/AuthenticationContext'; import { @@ -44,6 +43,7 @@ import { useBaseName } from '../../components/BaseNameContext'; import { useDeletePersonalData } from './userMutations'; import { getAllDimensions } from '../../util/trackingUtil'; import { UserInfo } from './components/UserInfo'; +import { useAiOrgs } from './configQueries'; const ShareIcon = InfoPartIcon.withComponent(Share); const HeartOutlineIcon = InfoPartIcon.withComponent(HeartOutline); @@ -116,6 +116,7 @@ const MyNdlaPage = () => { const { trackPageView } = useTracker(); const { deletePersonalData } = useDeletePersonalData(); const { allFolderResources } = useRecentlyUsedResources(); + const { data: aiData } = useAiOrgs(); const { data: metaData, loading } = useFolderResourceMetaSearch( allFolderResources?.map((r) => ({ id: r.resourceId, @@ -147,6 +148,11 @@ const MyNdlaPage = () => { const aiLang = i18n.language === 'nn' ? 'nn' : ''; + const allowedAiOrgs = useMemo(() => { + if (!aiData?.aiEnabledOrgs?.value) return []; + return aiData?.aiEnabledOrgs.value; + }, [aiData]); + return ( @@ -155,7 +161,7 @@ const MyNdlaPage = () => { {t('myNdla.myPage.welcome')} - {config.allowedAIOrgs.includes(user?.baseOrg?.displayName ?? '') && ( + {allowedAiOrgs.includes(user?.baseOrg?.displayName ?? '') && ( { + const { data } = useGraphQuery(configQuery); + return { data }; +}; diff --git a/src/graphqlTypes.ts b/src/graphqlTypes.ts index 2ac4043c15..d42cf426f7 100644 --- a/src/graphqlTypes.ts +++ b/src/graphqlTypes.ts @@ -1067,6 +1067,7 @@ export type GQLProgrammePage = { export type GQLQuery = { __typename?: 'Query'; + aiEnabledOrgs?: Maybe; alerts?: Maybe>>; allFolderResources: Array; arenaCategories: Array; @@ -2665,6 +2666,17 @@ export type GQLArenaUserQuery = { arenaUser?: { __typename?: 'ArenaUser' } & GQLArenaUserQueryFragmentFragment; }; +export type GQLAiOrganizationsQueryVariables = Exact<{ [key: string]: never }>; + +export type GQLAiOrganizationsQuery = { + __typename?: 'Query'; + aiEnabledOrgs?: { + __typename?: 'ConfigMetaStringList'; + key: string; + value: Array; + }; +}; + export type GQLFolderResourceFragmentFragment = { __typename: 'FolderResource'; resourceId: string; diff --git a/src/schema.graphql b/src/schema.graphql index 3757297391..f2bce948ef 100644 --- a/src/schema.graphql +++ b/src/schema.graphql @@ -890,6 +890,7 @@ type ProgrammePage { } type Query { + aiEnabledOrgs: ConfigMetaStringList alerts: [UptimeAlert] allFolderResources(size: Int): [FolderResource!]! arenaCategories: [ArenaCategory!]! diff --git a/src/util/apiHelpers.ts b/src/util/apiHelpers.ts index 2be5f695fc..0b238e62f3 100644 --- a/src/util/apiHelpers.ts +++ b/src/util/apiHelpers.ts @@ -236,6 +236,12 @@ const typePolicies: TypePolicies = { MyNdlaPersonalData: { keyFields: (obj) => obj.__typename, }, + ConfigMetaBoolean: { + keyFields: ['key'], + }, + ConfigMetaStringList: { + keyFields: ['key'], + }, }; function getCache() {