From 531b187535e7c7d3d42c43180af4174d1998b5b0 Mon Sep 17 00:00:00 2001 From: alexandre Date: Mon, 27 May 2024 10:13:42 +0200 Subject: [PATCH 1/3] [docs-infra] Split feedback channels per product --- netlify/functions/feedback-management.mts | 27 +++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/netlify/functions/feedback-management.mts b/netlify/functions/feedback-management.mts index 051317beeafcd4..37a27a9d694b33 100644 --- a/netlify/functions/feedback-management.mts +++ b/netlify/functions/feedback-management.mts @@ -8,6 +8,15 @@ const X_FEEBACKS_CHANNEL_ID = 'C04U3R2V9UK'; const JOY_FEEBACKS_CHANNEL_ID = 'C050VE13HDL'; const TOOLPAD_FEEBACKS_CHANNEL_ID = 'C050MHU703Z'; const CORE_FEEBACKS_CHANNEL_ID = 'C041SDSF32L'; + +const BASE_UI_FEEBACKS_CHANNEL_ID = 'C075LJG1LMP'; +const MATERIAL_UI_FEEBACKS_CHANNEL_ID = 'C0757QYLK7V'; +// const PIGMENT_CSS_FEEBACKS_CHANNEL_ID = 'C074TBW0JKZ'; +const X_GRID_FEEBACKS_CHANNEL_ID = 'C0757R0KW67'; +const X_CHARTS_FEEBACKS_CHANNEL_ID = 'C0757UBND98'; +const X_EXPLORE_FEEBACKS_CHANNEL_ID = 'C074TBYQK2T'; +// const DESIGN_KITS_FEEBACKS_CHANNEL_ID = 'C075ADGN0UU'; + // The design feedback alert was removed in https://github.com/mui/material-ui/pull/39691 // This dead code is here to simplify the creation of special feedback channel const DESIGN_FEEDBACKS_CHANNEL_ID = 'C05HHSFH2QJ'; @@ -18,12 +27,30 @@ const getSlackChannelId = (url, specialCases) => { if (isDesignFeedback) { return DESIGN_FEEDBACKS_CHANNEL_ID; } + if (url.includes('/x/')) { + if (url.includes('/x/react-charts')) { + return X_CHARTS_FEEBACKS_CHANNEL_ID; + } + if (url.includes('/x/react-date-pickers') || url.includes('/x/react-tree-view')) { + return X_EXPLORE_FEEBACKS_CHANNEL_ID; + } + if (url.includes('/x/react-data-grid')) { + return X_GRID_FEEBACKS_CHANNEL_ID; + } + return X_FEEBACKS_CHANNEL_ID; } + if (url.includes('/material-ui/')) { + return MATERIAL_UI_FEEBACKS_CHANNEL_ID; + } + if (url.includes('/base-ui/')) { + return BASE_UI_FEEBACKS_CHANNEL_ID; + } if (url.includes('/joy-ui/')) { return JOY_FEEBACKS_CHANNEL_ID; } + if (url.includes('/toolpad/')) { return TOOLPAD_FEEBACKS_CHANNEL_ID; } From 0ee239883ad5203d3ec7672fec7d2f2211b1e7be Mon Sep 17 00:00:00 2001 From: alexandre Date: Mon, 27 May 2024 15:59:16 +0200 Subject: [PATCH 2/3] use product ID --- .../modules/components/AppLayoutDocsFooter.js | 10 +-- .../modules/utils/getProductInfoFromUrl.ts | 5 +- netlify/functions/feedback-management.mts | 68 ++++++++++++------- 3 files changed, 54 insertions(+), 29 deletions(-) diff --git a/docs/src/modules/components/AppLayoutDocsFooter.js b/docs/src/modules/components/AppLayoutDocsFooter.js index b507c377e10134..26fe9dbdfe8740 100644 --- a/docs/src/modules/components/AppLayoutDocsFooter.js +++ b/docs/src/modules/components/AppLayoutDocsFooter.js @@ -96,7 +96,7 @@ async function postFeedback(data) { } async function postFeedbackOnSlack(data) { - const { rating, comment, commentedSection } = data; + const { rating, comment, commentedSection, productId } = data; const sentData = { callback_id: 'send_feedback', @@ -106,6 +106,7 @@ async function postFeedbackOnSlack(data) { commmentSectionURL: `${window.location.origin}${window.location.pathname}#${commentedSection.hash}`, commmentSectionTitle: commentedSection.text, githubRepo: process.env.SOURCE_CODE_REPO, + productId, }; if (!comment || comment.length < 10) { return 'ignored'; @@ -187,7 +188,7 @@ async function getUserFeedback(id) { } } -async function submitFeedback(page, rating, comment, language, commentedSection) { +async function submitFeedback(page, rating, comment, language, commentedSection, productId) { const data = { id: getCookie('feedbackId'), page, @@ -197,7 +198,7 @@ async function submitFeedback(page, rating, comment, language, commentedSection) language, }; - const resultSlack = await postFeedbackOnSlack({ ...data, commentedSection }); + const resultSlack = await postFeedbackOnSlack({ ...data, productId, commentedSection }); if (rating !== undefined) { const resultVote = await postFeedback(data); if (resultVote) { @@ -259,7 +260,7 @@ export default function AppLayoutDocsFooter(props) { const theme = useTheme(); const t = useTranslate(); const userLanguage = useUserLanguage(); - const { activePage } = React.useContext(PageContext); + const { activePage, productId } = React.useContext(PageContext); const [rating, setRating] = React.useState(); const [comment, setComment] = React.useState(''); const [snackbarOpen, setSnackbarOpen] = React.useState(false); @@ -303,6 +304,7 @@ export default function AppLayoutDocsFooter(props) { comment, userLanguage, commentedSection, + productId, ); if (result) { setSnackbarMessage(t('feedbackSubmitted')); diff --git a/docs/src/modules/utils/getProductInfoFromUrl.ts b/docs/src/modules/utils/getProductInfoFromUrl.ts index f2577ae8c50b13..5a44572596f514 100644 --- a/docs/src/modules/utils/getProductInfoFromUrl.ts +++ b/docs/src/modules/utils/getProductInfoFromUrl.ts @@ -10,7 +10,10 @@ export type MuiProductId = | 'docs' | 'x-data-grid' | 'x-date-pickers' - | 'x-charts'; + | 'x-charts' + | 'x-tree-view' + | 'toolpad-studio' + | 'toolpad-core'; type MuiProductCategoryId = 'null' | 'core' | 'x'; diff --git a/netlify/functions/feedback-management.mts b/netlify/functions/feedback-management.mts index 37a27a9d694b33..5131c5e8509bda 100644 --- a/netlify/functions/feedback-management.mts +++ b/netlify/functions/feedback-management.mts @@ -21,38 +21,57 @@ const X_EXPLORE_FEEBACKS_CHANNEL_ID = 'C074TBYQK2T'; // This dead code is here to simplify the creation of special feedback channel const DESIGN_FEEDBACKS_CHANNEL_ID = 'C05HHSFH2QJ'; -const getSlackChannelId = (url, specialCases) => { +export type MuiProductId = + | 'null' + | 'base-ui' + | 'material-ui' + | 'joy-ui' + | 'system' + | 'docs-infra' + | 'docs' + | 'x-data-grid' + | 'x-date-pickers' + | 'x-charts' + | 'x-tree-view' + | 'toolpad-studio' + | 'toolpad-core'; + +const getSlackChannelId = ( + url: string, + productId: MuiProductId, + specialCases: { isDesignFeedback?: boolean }, +) => { const { isDesignFeedback } = specialCases; if (isDesignFeedback) { return DESIGN_FEEDBACKS_CHANNEL_ID; } - if (url.includes('/x/')) { - if (url.includes('/x/react-charts')) { - return X_CHARTS_FEEBACKS_CHANNEL_ID; - } - if (url.includes('/x/react-date-pickers') || url.includes('/x/react-tree-view')) { - return X_EXPLORE_FEEBACKS_CHANNEL_ID; - } - if (url.includes('/x/react-data-grid')) { + switch (productId) { + case 'base-ui': + return BASE_UI_FEEBACKS_CHANNEL_ID; + case 'material-ui': + return MATERIAL_UI_FEEBACKS_CHANNEL_ID; + case 'joy-ui': + return JOY_FEEBACKS_CHANNEL_ID; + case 'x-data-grid': return X_GRID_FEEBACKS_CHANNEL_ID; - } - - return X_FEEBACKS_CHANNEL_ID; - } - if (url.includes('/material-ui/')) { - return MATERIAL_UI_FEEBACKS_CHANNEL_ID; - } - if (url.includes('/base-ui/')) { - return BASE_UI_FEEBACKS_CHANNEL_ID; - } - if (url.includes('/joy-ui/')) { - return JOY_FEEBACKS_CHANNEL_ID; + case 'x-date-pickers': + case 'x-tree-view': + return X_EXPLORE_FEEBACKS_CHANNEL_ID; + case 'x-charts': + return X_CHARTS_FEEBACKS_CHANNEL_ID; + case 'toolpad-studio': + case 'toolpad-core': + return TOOLPAD_FEEBACKS_CHANNEL_ID; + default: + break; } - if (url.includes('/toolpad/')) { - return TOOLPAD_FEEBACKS_CHANNEL_ID; + // Fallback + + if (url.includes('/x/')) { + return X_FEEBACKS_CHANNEL_ID; } return CORE_FEEBACKS_CHANNEL_ID; }; @@ -181,6 +200,7 @@ export const handler: Handler = async (event, context, callback) => { commmentSectionURL: inCommmentSectionURL, commmentSectionTitle, githubRepo, + productId, } = data; // The design feedback alert was removed in https://github.com/mui/material-ui/pull/39691 @@ -208,7 +228,7 @@ from ${commmentSectionURL} }); await app.client.chat.postMessage({ - channel: getSlackChannelId(currentLocationURL, { isDesignFeedback }), + channel: getSlackChannelId(currentLocationURL, productId, { isDesignFeedback }), text: simpleSlackMessage, // Fallback for notification blocks: [ { From e36e403992490479e4bbe8b8efab10003df830a8 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Tue, 28 May 2024 14:59:13 +0200 Subject: [PATCH 3/3] Update netlify/functions/feedback-management.mts Signed-off-by: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> --- netlify/functions/feedback-management.mts | 1 + 1 file changed, 1 insertion(+) diff --git a/netlify/functions/feedback-management.mts b/netlify/functions/feedback-management.mts index 5131c5e8509bda..df1f852b44bcb5 100644 --- a/netlify/functions/feedback-management.mts +++ b/netlify/functions/feedback-management.mts @@ -51,6 +51,7 @@ const getSlackChannelId = ( case 'base-ui': return BASE_UI_FEEBACKS_CHANNEL_ID; case 'material-ui': + case 'system': return MATERIAL_UI_FEEBACKS_CHANNEL_ID; case 'joy-ui': return JOY_FEEBACKS_CHANNEL_ID;