diff --git a/__tests__/shared/components/Contentful/SearchBar/__snapshots__/SearchBar.jsx.snap b/__tests__/shared/components/Contentful/SearchBar/__snapshots__/SearchBar.jsx.snap
index c27a0e21fd..1772d9ce45 100644
--- a/__tests__/shared/components/Contentful/SearchBar/__snapshots__/SearchBar.jsx.snap
+++ b/__tests__/shared/components/Contentful/SearchBar/__snapshots__/SearchBar.jsx.snap
@@ -13,7 +13,7 @@ exports[`Matches shallow shapshot 1`] = `
onBlur={[Function]}
onChange={[Function]}
onFocus={[Function]}
- placeholder="Search.."
+ placeholder="Search..."
type="text"
value=""
/>
diff --git a/__tests__/shared/components/Settings/Preferences/__snapshots__/index.jsx.snap b/__tests__/shared/components/Settings/Preferences/__snapshots__/index.jsx.snap
index 286844d3c8..c4e74aa901 100644
--- a/__tests__/shared/components/Settings/Preferences/__snapshots__/index.jsx.snap
+++ b/__tests__/shared/components/Settings/Preferences/__snapshots__/index.jsx.snap
@@ -23,22 +23,10 @@ exports[`renders preferences setting page correctly 1`] = `
width="30"
xmlns="http://www.w3.org/2000/svg"
/>,
- "invitation letter":
- © 2020 Topcoder. All Rights Reserved -
`; diff --git a/src/assets/images/preferences/invletter.svg b/src/assets/images/preferences/invletter.svg deleted file mode 100755 index 5dd1a0c792..0000000000 --- a/src/assets/images/preferences/invletter.svg +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/src/assets/images/preferences/referral.svg b/src/assets/images/preferences/referral.svg deleted file mode 100755 index 99cf40e58c..0000000000 --- a/src/assets/images/preferences/referral.svg +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/src/server/services/contentful.js b/src/server/services/contentful.js index 231da070b2..8dba5cf7e2 100644 --- a/src/server/services/contentful.js +++ b/src/server/services/contentful.js @@ -69,8 +69,8 @@ function mapAssetFileUrlToCdn(asset) { * Creates a promise that resolves two second after its creation. * @return {Promise} */ -function threeSecondDelay() { - return new Promise(resolve => setTimeout(resolve, 3000)); +function oneSecondDelay() { + return new Promise(resolve => setTimeout(resolve, 1000)); } /** @@ -94,6 +94,10 @@ class ApiService { * @return {Promise} */ async fetch(endpoint, query) { + // Contentful API rate limits, which are 78 requests within 1 second + // we await 14ms before each request to make sure we don't break this limitation + await new Promise(resolve => setTimeout(resolve, 14)); + // fire calls to Contentful API let url = `${this.private.baseUrl}${endpoint}`; if (query) url += `?${qs.stringify(query)}`; let res; @@ -108,7 +112,7 @@ class ApiService { }); /* 429 = "Too Many Requests" */ if (res.status !== 429) break; - await threeSecondDelay(); + await oneSecondDelay(); /* eslint-enable no-await-in-loop */ } if (!res.ok) throw new Error(res.statusText); diff --git a/src/shared/components/Contentful/ArticleCard/ArticleCard.jsx b/src/shared/components/Contentful/ArticleCard/ArticleCard.jsx index f6e2e8e166..e153e91d5d 100644 --- a/src/shared/components/Contentful/ArticleCard/ArticleCard.jsx +++ b/src/shared/components/Contentful/ArticleCard/ArticleCard.jsx @@ -128,14 +128,14 @@ class ArticleCard extends React.Component { const title = ( themeName === 'Article small' && article.title.length > ART_SMALL_TITLE_MAX_LENGTH) - ? `${article.title.substring(0, ART_SMALL_TITLE_MAX_LENGTH)}..` + ? `${article.title.substring(0, ART_SMALL_TITLE_MAX_LENGTH)}...` : article.title; // truncate content for 'Article large' cards const content = ( (themeName === 'Article large' || themeName === 'Recommended') && article.content.length > CONTENT_PREVIEW_LENGTH) - ? markdown(`${article.content.substring(0, CONTENT_PREVIEW_LENGTH)}..`) + ? markdown(`${article.content.substring(0, CONTENT_PREVIEW_LENGTH)}...`) : undefined; // set the correct format to apply to the `article.creationDate` diff --git a/src/shared/components/Contentful/ArticleCard/themes/article_large.scss b/src/shared/components/Contentful/ArticleCard/themes/article_large.scss index 8e0c9cd4e8..1ec8bdcb82 100644 --- a/src/shared/components/Contentful/ArticleCard/themes/article_large.scss +++ b/src/shared/components/Contentful/ArticleCard/themes/article_large.scss @@ -45,7 +45,8 @@ .tags { display: flex; flex-direction: row; - margin: 28px 0 15px; + margin: 23px 0 15px; + flex-wrap: wrap; @include xs-to-sm { margin: 17px 0 7px; @@ -57,6 +58,7 @@ border-radius: 5px; padding: 4px 6px; margin-right: 3px; + margin-top: 5px; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 11px; font-weight: 400; diff --git a/src/shared/components/Contentful/ArticleCard/themes/forum_post.scss b/src/shared/components/Contentful/ArticleCard/themes/forum_post.scss index 4e689d1879..d0f60f62ad 100644 --- a/src/shared/components/Contentful/ArticleCard/themes/forum_post.scss +++ b/src/shared/components/Contentful/ArticleCard/themes/forum_post.scss @@ -44,10 +44,7 @@ display: flex; flex-direction: row; margin: 0 0 15px; - - @include xs-to-sm { - margin: 17px 0 7px; - } + flex-wrap: wrap; } .tag { @@ -55,6 +52,7 @@ border-radius: 5px; padding: 4px 6px; margin-right: 3px; + margin-top: 5px; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 11px; font-weight: 400; diff --git a/src/shared/components/Contentful/SearchBar/SearchBar.jsx b/src/shared/components/Contentful/SearchBar/SearchBar.jsx index 83aa24c709..3e3c53b58a 100644 --- a/src/shared/components/Contentful/SearchBar/SearchBar.jsx +++ b/src/shared/components/Contentful/SearchBar/SearchBar.jsx @@ -158,13 +158,24 @@ export class SearchBarInner extends Component { { _.map(suggestionList.Article, item => (- {`© ${currentYear} Topcoder. All Rights Reserved`} -