From 5923413c5f34733883d7aa771a261da1f66186c3 Mon Sep 17 00:00:00 2001 From: Chris Bongers Date: Tue, 13 Aug 2024 14:00:59 +0200 Subject: [PATCH] fix: add allowed_content_curation flag to feed config (#2123) --- __tests__/integrations/feed.ts | 44 +++++++++++++++++++++++++++++ src/integrations/feed/configs.ts | 21 ++++++++++---- src/integrations/feed/generators.ts | 4 +-- src/integrations/feed/types.ts | 2 +- src/schema/feeds.ts | 4 +-- 5 files changed, 64 insertions(+), 11 deletions(-) diff --git a/__tests__/integrations/feed.ts b/__tests__/integrations/feed.ts index 7e36714a8..9b97f3964 100644 --- a/__tests__/integrations/feed.ts +++ b/__tests__/integrations/feed.ts @@ -179,6 +179,13 @@ describe('FeedPreferencesConfigGenerator', () => { defaultEnabledState: true, options: { type: PostType.Article }, }, + { + title: 'News', + group: 'content_curation', + description: '', + defaultEnabledState: true, + options: { type: 'news' }, + }, ]); await con.getRepository(FeedAdvancedSettings).save([ { feedId: '1', advancedSettingsId: 1, enabled: false }, @@ -222,6 +229,43 @@ describe('FeedPreferencesConfigGenerator', () => { }); }); + it('should generate feed config with blocked content curation', async () => { + await con + .getRepository(FeedAdvancedSettings) + .save([{ feedId: '1', advancedSettingsId: 3, enabled: false }]); + const generator: FeedConfigGenerator = new FeedPreferencesConfigGenerator( + config, + { + includeContentCuration: true, + }, + ); + + const actual = await generator.generate(ctx, { + user_id: '1', + page_size: 2, + offset: 3, + }); + expect(actual).toEqual({ + config: { + allowed_content_curations: [ + 'release', + 'opinion', + 'listicle', + 'comparison', + 'tutorial', + 'story', + 'meme', + ], + feed_config_name: FeedConfigName.Personalise, + fresh_page_size: '1', + offset: 3, + page_size: 2, + total_pages: 20, + user_id: '1', + }, + }); + }); + it('should generate feed config with blocked tags and sources', async () => { const generator: FeedConfigGenerator = new FeedPreferencesConfigGenerator( config, diff --git a/src/integrations/feed/configs.ts b/src/integrations/feed/configs.ts index 533efa350..07d915521 100644 --- a/src/integrations/feed/configs.ts +++ b/src/integrations/feed/configs.ts @@ -18,11 +18,21 @@ type Options = { includeBlockedSources?: boolean; includeSourceMemberships?: boolean; includePostTypes?: boolean; - includeBlockedContentCuration?: boolean; + includeContentCuration?: boolean; feedId?: string; }; type BaseConfig = Partial>; +const AllowedContentCurationTypes = [ + 'news', + 'release', + 'opinion', + 'listicle', + 'comparison', + 'tutorial', + 'story', + 'meme', +] as const; function getDefaultConfig( baseConfig: BaseConfig, @@ -83,11 +93,10 @@ const addFiltersToConfig = ({ baseConfig.allowed_post_types || postTypes ).filter((x) => !filters.excludeTypes.includes(x)); } - if ( - filters.blockedContentCuration?.length && - opts.includeBlockedContentCuration - ) { - baseConfig.blocked_content_curations = filters.blockedContentCuration; + if (filters.blockedContentCuration?.length && opts.includeContentCuration) { + baseConfig.allowed_content_curations = AllowedContentCurationTypes.filter( + (type) => !filters.blockedContentCuration.includes(type), + ); } return baseConfig; diff --git a/src/integrations/feed/generators.ts b/src/integrations/feed/generators.ts index 8927c5f80..e1f7f40fe 100644 --- a/src/integrations/feed/generators.ts +++ b/src/integrations/feed/generators.ts @@ -57,7 +57,7 @@ const opts = { includeBlockedSources: true, includeSourceMemberships: true, includePostTypes: true, - includeBlockedContentCuration: true, + includeContentCuration: true, }; export const baseFeedConfig: Partial = { @@ -75,7 +75,7 @@ export const feedGenerators: Partial> = includePostTypes: true, includeBlockedSources: true, includeBlockedTags: true, - includeBlockedContentCuration: true, + includeContentCuration: true, }, ), 'popular', diff --git a/src/integrations/feed/types.ts b/src/integrations/feed/types.ts index 3d2c7c6e1..5c15b0f85 100644 --- a/src/integrations/feed/types.ts +++ b/src/integrations/feed/types.ts @@ -48,7 +48,7 @@ export type FeedConfig = { blocked_tags?: string[]; blocked_sources?: string[]; allowed_post_types?: string[]; - blocked_content_curations?: string[]; + allowed_content_curations?: string[]; squad_ids?: string[]; providers?: Record; source_types?: ('machine' | 'squad')[]; diff --git a/src/schema/feeds.ts b/src/schema/feeds.ts index 67abc9a02..ff6b4abae 100644 --- a/src/schema/feeds.ts +++ b/src/schema/feeds.ts @@ -1299,7 +1299,7 @@ export const resolvers: IResolvers = traceResolvers({ includePostTypes: true, includeBlockedSources: true, includeBlockedTags: true, - includeBlockedContentCuration: true, + includeContentCuration: true, feedId: feedId, }, ), @@ -1347,7 +1347,7 @@ export const resolvers: IResolvers = traceResolvers({ includePostTypes: true, includeBlockedSources: true, includeBlockedTags: true, - includeBlockedContentCuration: true, + includeContentCuration: true, feedFilters: filters, }, ),