From b20e9f7ba22f04d759b0a7a9474c01b50d93037d Mon Sep 17 00:00:00 2001 From: runarvestmann Date: Tue, 11 Jun 2024 16:13:40 +0000 Subject: [PATCH] Add filter tags to generic list items --- libs/cms/src/lib/generated/contentfulTypes.d.ts | 10 ++++++++-- libs/cms/src/lib/models/genericList.model.ts | 5 +++++ libs/cms/src/lib/models/genericListItem.model.ts | 5 +++++ .../lib/search/importers/genericListItem.service.ts | 6 +++++- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/libs/cms/src/lib/generated/contentfulTypes.d.ts b/libs/cms/src/lib/generated/contentfulTypes.d.ts index 7bdfdf7dddc86..82c4890c42949 100644 --- a/libs/cms/src/lib/generated/contentfulTypes.d.ts +++ b/libs/cms/src/lib/generated/contentfulTypes.d.ts @@ -1548,6 +1548,9 @@ export interface IGenericListFields { /** Item Type */ itemType?: 'Non-clickable' | 'Clickable' | undefined + + /** Filter Tags */ + filterTags?: IGenericTag[] | undefined } /** A list of items which can be embedded into rich text */ @@ -1585,11 +1588,14 @@ export interface IGenericListItemFields { /** Card Intro */ cardIntro?: Document | undefined + /** Slug */ + slug?: string | undefined + /** Content */ content?: Document | undefined - /** Slug */ - slug?: string | undefined + /** Filter Tags */ + filterTags?: IGenericTag[] | undefined } /** An item that belongs to a generic list */ diff --git a/libs/cms/src/lib/models/genericList.model.ts b/libs/cms/src/lib/models/genericList.model.ts index 48622500262f8..71612005b311c 100644 --- a/libs/cms/src/lib/models/genericList.model.ts +++ b/libs/cms/src/lib/models/genericList.model.ts @@ -5,6 +5,7 @@ import { CacheField } from '@island.is/nest/graphql' import { IGenericList, IGenericListFields } from '../generated/contentfulTypes' import { GenericListItemResponse } from './genericListItemResponse.model' import { GetGenericListItemsInput } from '../dto/getGenericListItems.input' +import { GenericTag, mapGenericTag } from './genericTag.model' enum GenericListItemType { NonClickable = 'NonClickable', @@ -28,6 +29,9 @@ export class GenericList { @CacheField(() => GenericListItemType, { nullable: true }) itemType?: GenericListItemType + + @CacheField(() => [GenericTag], { nullable: true }) + filterTags?: GenericTag[] } const mapItemType = (itemType?: IGenericListFields['itemType']) => @@ -49,4 +53,5 @@ export const mapGenericList = ({ }, searchInputPlaceholder: fields.searchInputPlaceholder, itemType: mapItemType(fields.itemType), + filterTags: fields.filterTags ? fields.filterTags.map(mapGenericTag) : [], }) diff --git a/libs/cms/src/lib/models/genericListItem.model.ts b/libs/cms/src/lib/models/genericListItem.model.ts index d14c6ebc1a590..5754b37572277 100644 --- a/libs/cms/src/lib/models/genericListItem.model.ts +++ b/libs/cms/src/lib/models/genericListItem.model.ts @@ -3,6 +3,7 @@ import { Field, ID, ObjectType } from '@nestjs/graphql' import { SliceUnion, mapDocument } from '../unions/slice.union' import { GenericList, mapGenericList } from './genericList.model' import { IGenericListItem } from '../generated/contentfulTypes' +import { GenericTag, mapGenericTag } from './genericTag.model' @ObjectType() export class GenericListItem { @@ -26,6 +27,9 @@ export class GenericListItem { @Field(() => String, { nullable: true }) slug?: string + + @CacheField(() => [GenericTag], { nullable: true }) + filterTags?: GenericTag[] } export const mapGenericListItem = ({ @@ -45,4 +49,5 @@ export const mapGenericListItem = ({ ? mapDocument(fields.content, `${sys.id}:content`) : [], slug: fields.slug, + filterTags: fields.filterTags ? fields.filterTags.map(mapGenericTag) : [], }) diff --git a/libs/cms/src/lib/search/importers/genericListItem.service.ts b/libs/cms/src/lib/search/importers/genericListItem.service.ts index 6c8e4981c0c48..88291a7f8f243 100644 --- a/libs/cms/src/lib/search/importers/genericListItem.service.ts +++ b/libs/cms/src/lib/search/importers/genericListItem.service.ts @@ -38,7 +38,11 @@ export class GenericListItemSyncService 2, ) - const tags: MappedData['tags'] = [] + const tags: MappedData['tags'] = + mapped.filterTags?.map((tag) => ({ + type: 'genericTag', + key: tag.id, + })) ?? [] if (mapped.genericList) { tags.push({