From 78ae776c5edde049f99536aa93664929226359ee Mon Sep 17 00:00:00 2001 From: Simon Backx Date: Wed, 30 Aug 2023 12:25:31 +0200 Subject: [PATCH] Added Recommendations browse API to admin-x-settings (#17870) refs https://github.com/TryGhost/Product/issues/3786 --- .../src/api/recommendations.ts | 27 ++++++++++++ .../settings/site/Recommendations.tsx | 29 ++++++++++++- .../components/settings/site/SiteSettings.tsx | 2 +- .../recommendations/RecommendationList.tsx | 42 +++++++++++++++++++ .../recommendations.test.js.snap | 12 ++++-- .../e2e-api/admin/recommendations.test.js | 5 +++ .../src/InMemoryRecommendationRepository.ts | 12 +++++- ghost/recommendations/src/Recommendation.ts | 5 ++- .../src/RecommendationController.ts | 3 +- 9 files changed, 127 insertions(+), 10 deletions(-) create mode 100644 apps/admin-x-settings/src/api/recommendations.ts create mode 100644 apps/admin-x-settings/src/components/settings/site/recommendations/RecommendationList.tsx diff --git a/apps/admin-x-settings/src/api/recommendations.ts b/apps/admin-x-settings/src/api/recommendations.ts new file mode 100644 index 0000000000..56d3777e5b --- /dev/null +++ b/apps/admin-x-settings/src/api/recommendations.ts @@ -0,0 +1,27 @@ +import {Meta, createQuery} from '../utils/apiRequests'; + +export type Recommendation = { + id: string + title: string + reason: string|null + excerpt: string|null // Fetched from the site meta data + featured_image: string|null // Fetched from the site meta data + favicon: string|null // Fetched from the site meta data + url: string + one_click_subscribe: boolean + created_at: string, + updated_at: string|null +} + +export interface RecommendationResponseType { + meta?: Meta + recommendations: Recommendation[] +} + +const dataType = 'RecommendationResponseType'; + +export const useBrowseRecommendations = createQuery({ + dataType, + path: '/recommendations/', + defaultSearchParams: {} +}); diff --git a/apps/admin-x-settings/src/components/settings/site/Recommendations.tsx b/apps/admin-x-settings/src/components/settings/site/Recommendations.tsx index 6736354d43..62b367cfca 100644 --- a/apps/admin-x-settings/src/components/settings/site/Recommendations.tsx +++ b/apps/admin-x-settings/src/components/settings/site/Recommendations.tsx @@ -1,15 +1,39 @@ -import React from 'react'; +import Button from '../../../admin-x-ds/global/Button'; +import React, {useState} from 'react'; +import RecommendationList from './recommendations/RecommendationList'; import SettingGroup from '../../../admin-x-ds/settings/SettingGroup'; +import TabView from '../../../admin-x-ds/global/TabView'; import useSettingGroup from '../../../hooks/useSettingGroup'; +import {useBrowseRecommendations} from '../../../api/recommendations'; const Recommendations: React.FC<{ keywords: string[] }> = ({keywords}) => { const { saveState, handleSave } = useSettingGroup(); + const {data: {recommendations} = {}} = useBrowseRecommendations(); + const [selectedTab, setSelectedTab] = useState('your-recommendations'); + + const buttons = ( +