From 659d7693f8fe3caa37a0cfe3aad910fa1594deb2 Mon Sep 17 00:00:00 2001 From: Arnaud Lier Date: Sun, 6 Mar 2022 20:30:43 +0100 Subject: [PATCH 1/7] feat: subreddit card --- api/services/subreddit/[query].ts | 31 +++++++++++++++++++ public/locales/de/translation.json | 1 + public/locales/en/translation.json | 1 + public/locales/fr/translation.json | 1 + public/locales/ja/translation.json | 1 + public/locales/pt-BR/translation.json | 1 + public/locales/zh-Hans/translation.json | 1 + public/locales/zh-Hant/translation.json | 1 + src/components/cards/index.tsx | 2 ++ src/components/cards/providers/Subreddit.tsx | 32 ++++++++++++++++++++ 10 files changed, 72 insertions(+) create mode 100644 api/services/subreddit/[query].ts create mode 100644 src/components/cards/providers/Subreddit.tsx diff --git a/api/services/subreddit/[query].ts b/api/services/subreddit/[query].ts new file mode 100644 index 0000000..706d6ab --- /dev/null +++ b/api/services/subreddit/[query].ts @@ -0,0 +1,31 @@ +import { send, sendError, fetch } from '../../../util/http'; +import { NowRequest, NowResponse } from '@vercel/node'; + +export default async function handler( + req: NowRequest, + res: NowResponse +): Promise { + const { query } = req.query; + + if (!query || typeof query !== 'string') { + return sendError(res, new Error('No query given')); + } + + if (/[^a-zA-Z0-9_]/.test(query)) { + return sendError(res, new Error('Invalid characters')); + } + + try { + const response = await fetch( + `https://reddit.com/r/${query}`, + 'GET' + ); + const body = await response.text(); + const availability = body.includes( + 'Sorry, there aren’t any communities on Reddit with that name.' + ); + send(res, { availability }); + } catch (err) { + sendError(res, err); + } +} diff --git a/public/locales/de/translation.json b/public/locales/de/translation.json index e61927e..2b9d499 100644 --- a/public/locales/de/translation.json +++ b/public/locales/de/translation.json @@ -37,6 +37,7 @@ "s3": "AWS S3", "slack": "Slack", "spectrum": "Spectrum", + "subreddit": "Subreddit", "twitter": "Twitter" }, "showMore": "Zeig mehr", diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json index 1587853..cd4c6e9 100644 --- a/public/locales/en/translation.json +++ b/public/locales/en/translation.json @@ -41,6 +41,7 @@ "s3": "AWS S3", "slack": "Slack", "spectrum": "Spectrum", + "subreddit": "Subreddit", "twitter": "Twitter" }, "showMore": "show more", diff --git a/public/locales/fr/translation.json b/public/locales/fr/translation.json index e1d2028..a8b17b0 100644 --- a/public/locales/fr/translation.json +++ b/public/locales/fr/translation.json @@ -37,6 +37,7 @@ "s3": "AWS S3", "slack": "Slack", "spectrum": "Spectrum", + "subreddit": "Subreddit", "twitter": "Twitter" }, "showMore": "afficher plus", diff --git a/public/locales/ja/translation.json b/public/locales/ja/translation.json index c0885ff..bfd2e5e 100644 --- a/public/locales/ja/translation.json +++ b/public/locales/ja/translation.json @@ -37,6 +37,7 @@ "s3": "AWS S3", "slack": "Slack", "spectrum": "Spectrum", + "subreddit": "Subreddit", "twitter": "Twitter" }, "showMore": "さらに表示", diff --git a/public/locales/pt-BR/translation.json b/public/locales/pt-BR/translation.json index 7d6d22c..6fce64a 100644 --- a/public/locales/pt-BR/translation.json +++ b/public/locales/pt-BR/translation.json @@ -41,6 +41,7 @@ "s3": "AWS S3", "slack": "Slack", "spectrum": "Spectrum", + "subreddit": "Subreddit", "twitter": "Twitter" }, "showMore": "Mostrar +", diff --git a/public/locales/zh-Hans/translation.json b/public/locales/zh-Hans/translation.json index e0626a5..1a54897 100644 --- a/public/locales/zh-Hans/translation.json +++ b/public/locales/zh-Hans/translation.json @@ -37,6 +37,7 @@ "s3": "AWS S3", "slack": "Slack", "spectrum": "Spectrum", + "subreddit": "Subreddit", "twitter": "推特" }, "showMore": "更多", diff --git a/public/locales/zh-Hant/translation.json b/public/locales/zh-Hant/translation.json index b95d236..7534b2a 100644 --- a/public/locales/zh-Hant/translation.json +++ b/public/locales/zh-Hant/translation.json @@ -37,6 +37,7 @@ "s3": "AWS S3", "slack": "Slack", "spectrum": "Spectrum", + "subreddit": "Subreddit", "twitter": "推特" }, "showMore": "更多", diff --git a/src/components/cards/index.tsx b/src/components/cards/index.tsx index ccdab36..9922072 100644 --- a/src/components/cards/index.tsx +++ b/src/components/cards/index.tsx @@ -24,6 +24,7 @@ import RubyGemsCard from './providers/RubyGems'; import S3Card from './providers/S3'; import SlackCard from './providers/Slack'; import SpectrumCard from './providers/Spectrum'; +import SubredditCard from './providers/Subreddit'; import TwitterCard from './providers/Twitter'; import VercelCard from './providers/Vercel'; @@ -53,6 +54,7 @@ const Index: React.FC<{ query: string }> = ({ query }) => { {/* */} + diff --git a/src/components/cards/providers/Subreddit.tsx b/src/components/cards/providers/Subreddit.tsx new file mode 100644 index 0000000..3988185 --- /dev/null +++ b/src/components/cards/providers/Subreddit.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { useTranslation } from 'react-i18next'; +import { FaReddit } from 'react-icons/fa'; + +import { Card, Repeater, DedicatedAvailability } from '../core'; + +const SubredditCard: React.FC<{ query: string }> = ({ name }) => { + const { t } = useTranslation(); + const lowerCase = name.toLowerCase(); + + const names = [name]; + const moreNames = [ + `get${lowerCase}`, + `${lowerCase}-team`, + ]; + + return ( + + + {(name) => ( + which is /api/services/reddit/[query].ts on GitHub + link={`https://reddit.com/r/${name}`} + prefix="reddit.com/r/" + icon={} + /> + )} + + + ); +}; \ No newline at end of file From 4c256c7c3b89601dcf90b21e073dbfe7baac6d54 Mon Sep 17 00:00:00 2001 From: Arnaud Lier Date: Sun, 6 Mar 2022 20:36:51 +0100 Subject: [PATCH 2/7] fix: export SubredditCard --- src/components/cards/providers/Subreddit.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/cards/providers/Subreddit.tsx b/src/components/cards/providers/Subreddit.tsx index 3988185..ff1b4f5 100644 --- a/src/components/cards/providers/Subreddit.tsx +++ b/src/components/cards/providers/Subreddit.tsx @@ -29,4 +29,6 @@ const SubredditCard: React.FC<{ query: string }> = ({ name }) => { ); -}; \ No newline at end of file +}; + +export default SubredditCard; From 8092ba09038d63b1fc5d7c752f6796ab80f30b74 Mon Sep 17 00:00:00 2001 From: Yasuaki Uechi Date: Wed, 9 Mar 2022 15:16:54 +0900 Subject: [PATCH 3/7] fix: type errors --- api/list/domain/[query].ts | 8 ++++---- api/services/appstore/[query].ts | 8 ++++---- api/services/archlinux/[query].ts | 8 ++++---- api/services/debian/[query].ts | 8 ++++---- api/services/dns/[query].ts | 8 ++++---- api/services/domain/[query].ts | 8 ++++---- api/services/existence/[query].ts | 4 ++-- api/services/gitlab/[query].ts | 8 ++++---- api/services/jsorg/[query].ts | 4 ++-- api/services/launchpad/[query].ts | 8 ++++---- api/services/npm-org/[query].ts | 8 ++++---- api/services/npm/[query].ts | 2 +- api/services/nta/[query].ts | 2 +- api/services/playstore/[query].ts | 8 ++++---- api/services/slack/[query].ts | 8 ++++---- api/services/spectrum/[query].ts | 8 ++++---- api/services/subreddit/[query].ts | 13 +++++-------- api/services/twitter/[query].ts | 8 ++++---- src/setupTests.ts | 8 ++++++-- src/util/analytics.ts | 2 +- 20 files changed, 70 insertions(+), 69 deletions(-) diff --git a/api/list/domain/[query].ts b/api/list/domain/[query].ts index 87f5de2..b4b9f35 100644 --- a/api/list/domain/[query].ts +++ b/api/list/domain/[query].ts @@ -1,11 +1,11 @@ -import { NowRequest, NowResponse } from '@vercel/node'; +import { VercelRequest, VercelResponse } from '@vercel/node'; import assert from 'assert'; import fetch from 'cross-fetch'; import { send, sendError } from '../../../util/http'; export default async function handler( - req: NowRequest, - res: NowResponse + req: VercelRequest, + res: VercelResponse ): Promise { const { query } = req.query; @@ -27,7 +27,7 @@ export default async function handler( } ).then((res) => res.json()); send(res, response); - } catch (err) { + } catch (err: any) { sendError(res, err); } } diff --git a/api/services/appstore/[query].ts b/api/services/appstore/[query].ts index 44f184b..b9a2f80 100644 --- a/api/services/appstore/[query].ts +++ b/api/services/appstore/[query].ts @@ -1,5 +1,5 @@ import { send, sendError, fetch } from '../../../util/http'; -import { NowRequest, NowResponse } from '@vercel/node'; +import { VercelRequest, VercelResponse } from '@vercel/node'; interface App { trackId: string; @@ -15,8 +15,8 @@ interface AppStoreResponse { } export default async function handler( - req: NowRequest, - res: NowResponse + req: VercelRequest, + res: VercelResponse ): Promise { const { query, country } = req.query; @@ -43,7 +43,7 @@ export default async function handler( viewURL: app.trackViewUrl, })); send(res, { result: apps }); - } catch (err) { + } catch (err: any) { sendError(res, err); } } diff --git a/api/services/archlinux/[query].ts b/api/services/archlinux/[query].ts index aa7759b..c9db448 100644 --- a/api/services/archlinux/[query].ts +++ b/api/services/archlinux/[query].ts @@ -1,9 +1,9 @@ import { send, sendError, fetch } from '../../../util/http'; -import { NowRequest, NowResponse } from '@vercel/node'; +import { VercelRequest, VercelResponse } from '@vercel/node'; export default async function handler( - req: NowRequest, - res: NowResponse + req: VercelRequest, + res: VercelResponse ): Promise { const { query } = req.query; @@ -22,7 +22,7 @@ export default async function handler( ).then((res) => res.text()); const availability = !/
{ const { query } = req.query; @@ -23,7 +23,7 @@ export default async function handler( const body = await response.text(); const availability = body.includes('No such package'); send(res, { availability }); - } catch (err) { + } catch (err: any) { sendError(res, err); } } diff --git a/api/services/dns/[query].ts b/api/services/dns/[query].ts index 32c7af8..03f3a54 100644 --- a/api/services/dns/[query].ts +++ b/api/services/dns/[query].ts @@ -1,6 +1,6 @@ import dns from 'dns'; import { send, sendError } from '../../../util/http'; -import { NowRequest, NowResponse } from '@vercel/node'; +import { VercelRequest, VercelResponse } from '@vercel/node'; function resolvePromise(hostname: string): Promise { return new Promise((resolve, reject) => { @@ -12,8 +12,8 @@ function resolvePromise(hostname: string): Promise { } export default async function handler( - req: NowRequest, - res: NowResponse + req: VercelRequest, + res: VercelResponse ): Promise { const { query } = req.query; @@ -25,7 +25,7 @@ export default async function handler( const response = await resolvePromise(query); const availability = response && response.length > 0 ? false : true; send(res, { availability }); - } catch (err) { + } catch (err: any) { if (err.code === 'ENODATA' || err.code === 'ENOTFOUND') { return send(res, { availability: true }); } diff --git a/api/services/domain/[query].ts b/api/services/domain/[query].ts index 59204db..6d078a8 100644 --- a/api/services/domain/[query].ts +++ b/api/services/domain/[query].ts @@ -1,11 +1,11 @@ -import { NowRequest, NowResponse } from '@vercel/node'; +import { VercelRequest, VercelResponse } from '@vercel/node'; import 'cross-fetch'; import whois from 'whois-json'; import { send, sendError } from '../../../util/http'; export default async function handler( - req: NowRequest, - res: NowResponse + req: VercelRequest, + res: VercelResponse ): Promise { const { query } = req.query; @@ -17,7 +17,7 @@ export default async function handler( const response = await whois(query, { follow: 3, verbose: true }); const availability = response[0].data.domainName ? false : true; send(res, { availability }); - } catch (err) { + } catch (err: any) { sendError(res, err); } } diff --git a/api/services/existence/[query].ts b/api/services/existence/[query].ts index 811753c..62ce2ac 100644 --- a/api/services/existence/[query].ts +++ b/api/services/existence/[query].ts @@ -20,10 +20,10 @@ export default async function handler( const response = await fetch(`https://${query}`); const availability = response.status === 404; send(res, { availability }); - } catch (err) { + } catch (err: any) { if ((err as any).code === 'ENOTFOUND') { return send(res, { availability: true }); } - sendError(res, err as any); + sendError(res, err); } } diff --git a/api/services/gitlab/[query].ts b/api/services/gitlab/[query].ts index 518b813..459349c 100644 --- a/api/services/gitlab/[query].ts +++ b/api/services/gitlab/[query].ts @@ -1,10 +1,10 @@ -import { NowRequest, NowResponse } from '@vercel/node'; +import { VercelRequest, VercelResponse } from '@vercel/node'; import nodeFetch from 'cross-fetch'; import { send, sendError } from '../../../util/http'; export default async function handler( - req: NowRequest, - res: NowResponse + req: VercelRequest, + res: VercelResponse ): Promise { const { query } = req.query; @@ -22,7 +22,7 @@ export default async function handler( }); const availability = response.status === 302; send(res, { availability }); - } catch (err) { + } catch (err: any) { sendError(res, err); } } diff --git a/api/services/jsorg/[query].ts b/api/services/jsorg/[query].ts index f9fa7c6..9ff0610 100644 --- a/api/services/jsorg/[query].ts +++ b/api/services/jsorg/[query].ts @@ -33,7 +33,7 @@ export default async function handler( } else { send(res, { availability: true }); } - } catch (err) { - sendError(res, err as any); + } catch (err: any) { + sendError(res, err); } } diff --git a/api/services/launchpad/[query].ts b/api/services/launchpad/[query].ts index 51c0a73..f9c440c 100644 --- a/api/services/launchpad/[query].ts +++ b/api/services/launchpad/[query].ts @@ -1,9 +1,9 @@ import { send, sendError, fetch } from '../../../util/http'; -import { NowRequest, NowResponse } from '@vercel/node'; +import { VercelRequest, VercelResponse } from '@vercel/node'; export default async function handler( - req: NowRequest, - res: NowResponse + req: VercelRequest, + res: VercelResponse ): Promise { const { query } = req.query; @@ -24,7 +24,7 @@ export default async function handler( ); const availability = response.status !== 200; send(res, { availability }); - } catch (err) { + } catch (err: any) { sendError(res, err); } } diff --git a/api/services/npm-org/[query].ts b/api/services/npm-org/[query].ts index 426de9d..08fc387 100644 --- a/api/services/npm-org/[query].ts +++ b/api/services/npm-org/[query].ts @@ -1,10 +1,10 @@ import npmName from 'npm-name'; import { send, sendError } from '../../../util/http'; -import { NowRequest, NowResponse } from '@vercel/node'; +import { VercelRequest, VercelResponse } from '@vercel/node'; export default async function handler( - req: NowRequest, - res: NowResponse + req: VercelRequest, + res: VercelResponse ): Promise { const { query } = req.query; @@ -15,7 +15,7 @@ export default async function handler( try { const availability = await npmName(`@${query}`); send(res, { availability }); - } catch (err) { + } catch (err: any) { if (err.code === 'ENOTFOUND') { return send(res, { availability: true }); } diff --git a/api/services/npm/[query].ts b/api/services/npm/[query].ts index 60f2088..2e9d66c 100644 --- a/api/services/npm/[query].ts +++ b/api/services/npm/[query].ts @@ -15,7 +15,7 @@ export default async function handler( try { const availability = await npmName(query); send(res, { availability }); - } catch (err) { + } catch (err: any) { sendError(res, err); } } diff --git a/api/services/nta/[query].ts b/api/services/nta/[query].ts index f8f5264..104c074 100644 --- a/api/services/nta/[query].ts +++ b/api/services/nta/[query].ts @@ -92,7 +92,7 @@ export default async function handler( })) .slice(0, 10) || [], }); - } catch (err) { + } catch (err: any) { sendError(res, err); } } diff --git a/api/services/playstore/[query].ts b/api/services/playstore/[query].ts index 445be83..33f6915 100644 --- a/api/services/playstore/[query].ts +++ b/api/services/playstore/[query].ts @@ -1,10 +1,10 @@ -import { NowRequest, NowResponse } from '@vercel/node'; +import { VercelRequest, VercelResponse } from '@vercel/node'; import 'cross-fetch'; import { fetch, send, sendError } from '../../../util/http'; export default async function handler( - req: NowRequest, - res: NowResponse + req: VercelRequest, + res: VercelResponse ): Promise { const { query } = req.query; @@ -34,7 +34,7 @@ export default async function handler( url: 'https://play.google.com' + entry[9][4][2], })); send(res, { result: apps.slice(0, 10) }); - } catch (err) { + } catch (err: any) { sendError(res, err); } } diff --git a/api/services/slack/[query].ts b/api/services/slack/[query].ts index 5599da5..3060ec1 100644 --- a/api/services/slack/[query].ts +++ b/api/services/slack/[query].ts @@ -1,9 +1,9 @@ import { send, sendError, fetch } from '../../../util/http'; -import { NowRequest, NowResponse } from '@vercel/node'; +import { VercelRequest, VercelResponse } from '@vercel/node'; export default async function handler( - req: NowRequest, - res: NowResponse + req: VercelRequest, + res: VercelResponse ): Promise { const { query } = req.query; @@ -21,7 +21,7 @@ export default async function handler( ); const availability = response.status !== 200; send(res, { availability }); - } catch (err) { + } catch (err: any) { sendError(res, err); } } diff --git a/api/services/spectrum/[query].ts b/api/services/spectrum/[query].ts index 2c19029..978caaf 100644 --- a/api/services/spectrum/[query].ts +++ b/api/services/spectrum/[query].ts @@ -1,9 +1,9 @@ import { send, sendError, fetch } from '../../../util/http'; -import { NowRequest, NowResponse } from '@vercel/node'; +import { VercelRequest, VercelResponse } from '@vercel/node'; export default async function handler( - req: NowRequest, - res: NowResponse + req: VercelRequest, + res: VercelResponse ): Promise { const { query } = req.query; @@ -25,7 +25,7 @@ export default async function handler( 'You may be trying to view something that is deleted' ); send(res, { availability }); - } catch (err) { + } catch (err: any) { sendError(res, err); } } diff --git a/api/services/subreddit/[query].ts b/api/services/subreddit/[query].ts index 706d6ab..1f37873 100644 --- a/api/services/subreddit/[query].ts +++ b/api/services/subreddit/[query].ts @@ -1,9 +1,9 @@ import { send, sendError, fetch } from '../../../util/http'; -import { NowRequest, NowResponse } from '@vercel/node'; +import { VercelRequest, VercelResponse } from '@vercel/node'; export default async function handler( - req: NowRequest, - res: NowResponse + req: VercelRequest, + res: VercelResponse ): Promise { const { query } = req.query; @@ -16,16 +16,13 @@ export default async function handler( } try { - const response = await fetch( - `https://reddit.com/r/${query}`, - 'GET' - ); + const response = await fetch(`https://reddit.com/r/${query}`, 'GET'); const body = await response.text(); const availability = body.includes( 'Sorry, there aren’t any communities on Reddit with that name.' ); send(res, { availability }); - } catch (err) { + } catch (err: any) { sendError(res, err); } } diff --git a/api/services/twitter/[query].ts b/api/services/twitter/[query].ts index 48fbbc9..0324319 100644 --- a/api/services/twitter/[query].ts +++ b/api/services/twitter/[query].ts @@ -1,9 +1,9 @@ -import { NowRequest, NowResponse } from '@vercel/node'; +import { VercelRequest, VercelResponse } from '@vercel/node'; import { fetch, send, sendError } from '../../../util/http'; export default async function handler( - req: NowRequest, - res: NowResponse + req: VercelRequest, + res: VercelResponse ): Promise { const { query } = req.query; @@ -22,7 +22,7 @@ export default async function handler( ).then((res) => res.json()); const availability = response.valid; send(res, { availability }); - } catch (err) { + } catch (err: any) { sendError(res, err); } } diff --git a/src/setupTests.ts b/src/setupTests.ts index 1f112c0..171bf6c 100644 --- a/src/setupTests.ts +++ b/src/setupTests.ts @@ -4,7 +4,8 @@ import '@testing-library/jest-dom/extend-expect'; // i18next import { join } from 'path'; import i18n from 'i18next'; -import Backend from 'i18next-node-fs-backend'; +import Backend from 'i18next-chained-backend'; +import NodeFs from 'i18next-node-fs-backend'; import LanguageDetector from 'i18next-browser-languagedetector'; import { initReactI18next } from 'react-i18next'; @@ -14,7 +15,10 @@ i18n .use(initReactI18next) .init({ backend: { - loadPath: join(__dirname, '../public/locales/{{lng}}/{{ns}}.json'), + backends: [NodeFs], + backendOptions: [ + { loadPath: join(__dirname, '../public/locales/{{lng}}/{{ns}}.json') }, + ], }, fallbackLng: 'en', ns: ['translation'], diff --git a/src/util/analytics.ts b/src/util/analytics.ts index c7423db..c14f93c 100644 --- a/src/util/analytics.ts +++ b/src/util/analytics.ts @@ -21,7 +21,7 @@ export function trackEvent({ if (isProduction) { try { umami && umami.trackEvent(value, type); - } catch (err) {} + } catch (err: any) {} } } From 4620d9498f3aebfa393447c8f2d83289970755d5 Mon Sep 17 00:00:00 2001 From: Arnaud Lier Date: Wed, 9 Mar 2022 17:18:42 +0100 Subject: [PATCH 4/7] fix: use `query` instead of `name` --- src/components/cards/providers/Subreddit.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/cards/providers/Subreddit.tsx b/src/components/cards/providers/Subreddit.tsx index ff1b4f5..5fa2f9b 100644 --- a/src/components/cards/providers/Subreddit.tsx +++ b/src/components/cards/providers/Subreddit.tsx @@ -4,11 +4,14 @@ import { FaReddit } from 'react-icons/fa'; import { Card, Repeater, DedicatedAvailability } from '../core'; -const SubredditCard: React.FC<{ query: string }> = ({ name }) => { +const SubredditCard: React.FC<{ query: string }> = ({ query }) => { const { t } = useTranslation(); - const lowerCase = name.toLowerCase(); + const normalizedQuery = normalize(query, { + allowUnderscore: false, + }); + const lowerCase = normalizedQuery.toLowerCase(); - const names = [name]; + const names = [normalizedQuery]; const moreNames = [ `get${lowerCase}`, `${lowerCase}-team`, From be4f30495396670303eae157a0c103d7eb32b3c1 Mon Sep 17 00:00:00 2001 From: Arnaud Lier Date: Wed, 9 Mar 2022 18:13:59 +0100 Subject: [PATCH 5/7] fix: translation key `subreddit` => `reddit` --- public/locales/de/translation.json | 2 +- public/locales/en/translation.json | 2 +- public/locales/fr/translation.json | 2 +- public/locales/ja/translation.json | 2 +- public/locales/pt-BR/translation.json | 2 +- public/locales/zh-Hans/translation.json | 2 +- public/locales/zh-Hant/translation.json | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/public/locales/de/translation.json b/public/locales/de/translation.json index 2b9d499..2b1fe60 100644 --- a/public/locales/de/translation.json +++ b/public/locales/de/translation.json @@ -37,7 +37,7 @@ "s3": "AWS S3", "slack": "Slack", "spectrum": "Spectrum", - "subreddit": "Subreddit", + "reddit": "Reddit", "twitter": "Twitter" }, "showMore": "Zeig mehr", diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json index cd4c6e9..158deb5 100644 --- a/public/locales/en/translation.json +++ b/public/locales/en/translation.json @@ -41,7 +41,7 @@ "s3": "AWS S3", "slack": "Slack", "spectrum": "Spectrum", - "subreddit": "Subreddit", + "reddit": "Reddit", "twitter": "Twitter" }, "showMore": "show more", diff --git a/public/locales/fr/translation.json b/public/locales/fr/translation.json index a8b17b0..0de6625 100644 --- a/public/locales/fr/translation.json +++ b/public/locales/fr/translation.json @@ -37,7 +37,7 @@ "s3": "AWS S3", "slack": "Slack", "spectrum": "Spectrum", - "subreddit": "Subreddit", + "reddit": "Reddit", "twitter": "Twitter" }, "showMore": "afficher plus", diff --git a/public/locales/ja/translation.json b/public/locales/ja/translation.json index bfd2e5e..6eb5145 100644 --- a/public/locales/ja/translation.json +++ b/public/locales/ja/translation.json @@ -37,7 +37,7 @@ "s3": "AWS S3", "slack": "Slack", "spectrum": "Spectrum", - "subreddit": "Subreddit", + "reddit": "Reddit", "twitter": "Twitter" }, "showMore": "さらに表示", diff --git a/public/locales/pt-BR/translation.json b/public/locales/pt-BR/translation.json index 6fce64a..d73654d 100644 --- a/public/locales/pt-BR/translation.json +++ b/public/locales/pt-BR/translation.json @@ -41,7 +41,7 @@ "s3": "AWS S3", "slack": "Slack", "spectrum": "Spectrum", - "subreddit": "Subreddit", + "reddit": "Reddit", "twitter": "Twitter" }, "showMore": "Mostrar +", diff --git a/public/locales/zh-Hans/translation.json b/public/locales/zh-Hans/translation.json index 1a54897..49528bf 100644 --- a/public/locales/zh-Hans/translation.json +++ b/public/locales/zh-Hans/translation.json @@ -37,7 +37,7 @@ "s3": "AWS S3", "slack": "Slack", "spectrum": "Spectrum", - "subreddit": "Subreddit", + "reddit": "Reddit", "twitter": "推特" }, "showMore": "更多", diff --git a/public/locales/zh-Hant/translation.json b/public/locales/zh-Hant/translation.json index 7534b2a..8a21dd5 100644 --- a/public/locales/zh-Hant/translation.json +++ b/public/locales/zh-Hant/translation.json @@ -37,7 +37,7 @@ "s3": "AWS S3", "slack": "Slack", "spectrum": "Spectrum", - "subreddit": "Subreddit", + "reddit": "Reddit", "twitter": "推特" }, "showMore": "更多", From 629a5351b39d82c8f4e9c5d5e0740122cf93dde3 Mon Sep 17 00:00:00 2001 From: Arnaud Lier Date: Wed, 9 Mar 2022 18:54:13 +0100 Subject: [PATCH 6/7] fix: import normalize --- src/components/cards/providers/Subreddit.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/cards/providers/Subreddit.tsx b/src/components/cards/providers/Subreddit.tsx index 5fa2f9b..fe6186b 100644 --- a/src/components/cards/providers/Subreddit.tsx +++ b/src/components/cards/providers/Subreddit.tsx @@ -1,6 +1,7 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; import { FaReddit } from 'react-icons/fa'; +import { normalize } from '../../../util/text'; import { Card, Repeater, DedicatedAvailability } from '../core'; From 9bc32ffd1616849311aeb923e4b11bd4b87e6231 Mon Sep 17 00:00:00 2001 From: Arnaud Lier Date: Wed, 9 Mar 2022 19:33:12 +0100 Subject: [PATCH 7/7] fix: api folder name, message and normalize rules --- api/services/{subreddit => reddit}/[query].ts | 0 src/components/cards/providers/Subreddit.tsx | 5 +++-- 2 files changed, 3 insertions(+), 2 deletions(-) rename api/services/{subreddit => reddit}/[query].ts (100%) diff --git a/api/services/subreddit/[query].ts b/api/services/reddit/[query].ts similarity index 100% rename from api/services/subreddit/[query].ts rename to api/services/reddit/[query].ts diff --git a/src/components/cards/providers/Subreddit.tsx b/src/components/cards/providers/Subreddit.tsx index fe6186b..f2b2f67 100644 --- a/src/components/cards/providers/Subreddit.tsx +++ b/src/components/cards/providers/Subreddit.tsx @@ -8,14 +8,14 @@ import { Card, Repeater, DedicatedAvailability } from '../core'; const SubredditCard: React.FC<{ query: string }> = ({ query }) => { const { t } = useTranslation(); const normalizedQuery = normalize(query, { - allowUnderscore: false, + allowUnderscore: true, }); const lowerCase = normalizedQuery.toLowerCase(); const names = [normalizedQuery]; const moreNames = [ `get${lowerCase}`, - `${lowerCase}-team`, + `${lowerCase}_team`, ]; return ( @@ -25,6 +25,7 @@ const SubredditCard: React.FC<{ query: string }> = ({ query }) => { which is /api/services/reddit/[query].ts on GitHub + message={`Go to reddit.com/r/${name}`} link={`https://reddit.com/r/${name}`} prefix="reddit.com/r/" icon={}