Skip to content

Commit 9be2b14

Browse files
Refactor course filtering to use Storyblok language settings (#1456)
* refactor: remove getDisabledCourses function from featureFlag * refactor: remove disabled courses tests from featureFlag test suite * refactor: streamline course filtering logic and clean up featureFlag test * `Refactor StoryblokRelatedContent.tsx: remove unused code and simplify logic` * `Update StoryblokRelatedContent.tsx to remove and re-add type union members` --------- Co-authored-by: Kylee Fields <43586156+kyleecodes@users.noreply.github.com>
1 parent 3df23e0 commit 9be2b14

File tree

4 files changed

+8
-35
lines changed

4 files changed

+8
-35
lines changed

app/[locale]/courses/page.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,17 @@ export default async function Page({ params }: { params: Params }) {
5252

5353
const contentLanguagesString = locale === 'en' ? 'default' : locale;
5454

55-
const courses = coursesStories?.filter(
56-
(course: ISbStoryData) => !FeatureFlag.getDisabledCourses().has(course.full_slug),
55+
// ✅ NEW logic for filtering courses by Storyblok 'languages' config
56+
const courses = coursesStories?.filter((course: ISbStoryData) =>
57+
course.content.languages?.includes(contentLanguagesString),
5758
);
5859

5960
const conversations = conversationsStories?.filter((conversation: ISbStoryData) =>
60-
conversation.content.languages.includes(contentLanguagesString),
61+
conversation.content.languages?.includes(contentLanguagesString),
6162
);
6263

6364
const shorts = shortsStories?.filter((short: ISbStoryData) =>
64-
short.content.languages.includes(contentLanguagesString),
65+
short.content.languages?.includes(contentLanguagesString),
6566
);
6667

6768
return <CoursesPage courseStories={courses} conversations={conversations} shorts={shorts} />;

components/storyblok/StoryblokRelatedContent.tsx

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,27 +48,24 @@ export const StoryblokRelatedContent = (props: StoryblokRelatedContentProps) =>
4848
};
4949
});
5050

51-
const disabledCoursesString = process.env.FF_DISABLED_COURSES;
52-
5351
const filteredRelatedContent = useMemo(() => {
5452
return relatedContent.filter((story) => {
5553
const localeString = locale === 'en' ? 'default' : locale || 'default';
5654
const storyAvailableForLocale =
5755
story.content?.languages?.length > 0
5856
? story.content.languages.includes(localeString)
5957
: true;
60-
const storyDisabled = disabledCoursesString?.includes(story.full_slug);
6158
const storyIncludedForUserPartners =
6259
story.content?.included_for_partners?.length > 0
6360
? userContentPartners.some((partner) =>
6461
story.content?.included_for_partners?.map((p) => p.toLowerCase()).includes(partner),
6562
)
6663
: true;
67-
return storyAvailableForLocale && storyIncludedForUserPartners && !storyDisabled;
64+
return storyAvailableForLocale && storyIncludedForUserPartners;
6865
});
69-
}, [relatedContent, disabledCoursesString, locale, userContentPartners]);
66+
}, [relatedContent, locale, userContentPartners]);
7067

71-
let items = filteredRelatedContent
68+
const items = filteredRelatedContent
7269
.map((relatedContentItem) => (
7370
<RelatedContentCard
7471
key={`related_content_${relatedContentItem.id}`}

lib/featureFlag.test.ts

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,7 @@
11
import { expect } from '@jest/globals';
22
import { FeatureFlag } from './featureFlag';
33

4-
const disabledCourse1 = 'fr/courses/healing-from-sexual-trauma/';
5-
const disabledCourse2 = 'fr/courses/dating-boundaries-and-relationships/';
6-
74
describe('featureFlag', () => {
8-
it('should return disabled courses when environment variable set', () => {
9-
process.env.FF_DISABLED_COURSES = [disabledCourse1, disabledCourse2].join(',');
10-
11-
expect(Array.from(FeatureFlag.getDisabledCourses())).toContain(disabledCourse1);
12-
expect(Array.from(FeatureFlag.getDisabledCourses())).toContain(disabledCourse2);
13-
});
14-
15-
it('should return empty array when environment variable not', () => {
16-
process.env.FF_DISABLED_COURSES = '';
17-
18-
expect(FeatureFlag.getDisabledCourses().size).toEqual(0);
19-
});
20-
215
it('should return user research banner value when environment variable set', () => {
226
process.env.NEXT_PUBLIC_FF_USER_RESEARCH_BANNER = 'true';
237

lib/featureFlag.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,4 @@
11
export namespace FeatureFlag {
2-
export const getDisabledCourses: () => Set<string> = () => {
3-
const disabledCourses: string[] = [];
4-
5-
const disabledCoursesString = process.env.FF_DISABLED_COURSES;
6-
if (disabledCoursesString) disabledCourses.push(...disabledCoursesString.split(','));
7-
8-
return new Set<string>(disabledCourses);
9-
};
10-
112
export const isUserResearchBannerEnabled = () => {
123
return process.env.NEXT_PUBLIC_FF_USER_RESEARCH_BANNER?.toLowerCase() === 'true';
134
};

0 commit comments

Comments
 (0)