1
0
mirror of https://github.com/uetchy/namae.git synced 2025-07-02 06:20:02 +09:00

feat: subreddit card

This commit is contained in:
Arnaud Lier 2022-03-06 20:30:43 +01:00 committed by GitHub
parent 8fabfb9f3c
commit 659d7693f8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 72 additions and 0 deletions

View File

@ -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<void> {
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);
}
}

View File

@ -37,6 +37,7 @@
"s3": "AWS S3", "s3": "AWS S3",
"slack": "Slack", "slack": "Slack",
"spectrum": "Spectrum", "spectrum": "Spectrum",
"subreddit": "Subreddit",
"twitter": "Twitter" "twitter": "Twitter"
}, },
"showMore": "Zeig mehr", "showMore": "Zeig mehr",

View File

@ -41,6 +41,7 @@
"s3": "AWS S3", "s3": "AWS S3",
"slack": "Slack", "slack": "Slack",
"spectrum": "Spectrum", "spectrum": "Spectrum",
"subreddit": "Subreddit",
"twitter": "Twitter" "twitter": "Twitter"
}, },
"showMore": "show more", "showMore": "show more",

View File

@ -37,6 +37,7 @@
"s3": "AWS S3", "s3": "AWS S3",
"slack": "Slack", "slack": "Slack",
"spectrum": "Spectrum", "spectrum": "Spectrum",
"subreddit": "Subreddit",
"twitter": "Twitter" "twitter": "Twitter"
}, },
"showMore": "afficher plus", "showMore": "afficher plus",

View File

@ -37,6 +37,7 @@
"s3": "AWS S3", "s3": "AWS S3",
"slack": "Slack", "slack": "Slack",
"spectrum": "Spectrum", "spectrum": "Spectrum",
"subreddit": "Subreddit",
"twitter": "Twitter" "twitter": "Twitter"
}, },
"showMore": "さらに表示", "showMore": "さらに表示",

View File

@ -41,6 +41,7 @@
"s3": "AWS S3", "s3": "AWS S3",
"slack": "Slack", "slack": "Slack",
"spectrum": "Spectrum", "spectrum": "Spectrum",
"subreddit": "Subreddit",
"twitter": "Twitter" "twitter": "Twitter"
}, },
"showMore": "Mostrar +", "showMore": "Mostrar +",

View File

@ -37,6 +37,7 @@
"s3": "AWS S3", "s3": "AWS S3",
"slack": "Slack", "slack": "Slack",
"spectrum": "Spectrum", "spectrum": "Spectrum",
"subreddit": "Subreddit",
"twitter": "推特" "twitter": "推特"
}, },
"showMore": "更多", "showMore": "更多",

View File

@ -37,6 +37,7 @@
"s3": "AWS S3", "s3": "AWS S3",
"slack": "Slack", "slack": "Slack",
"spectrum": "Spectrum", "spectrum": "Spectrum",
"subreddit": "Subreddit",
"twitter": "推特" "twitter": "推特"
}, },
"showMore": "更多", "showMore": "更多",

View File

@ -24,6 +24,7 @@ import RubyGemsCard from './providers/RubyGems';
import S3Card from './providers/S3'; import S3Card from './providers/S3';
import SlackCard from './providers/Slack'; import SlackCard from './providers/Slack';
import SpectrumCard from './providers/Spectrum'; import SpectrumCard from './providers/Spectrum';
import SubredditCard from './providers/Subreddit';
import TwitterCard from './providers/Twitter'; import TwitterCard from './providers/Twitter';
import VercelCard from './providers/Vercel'; import VercelCard from './providers/Vercel';
@ -53,6 +54,7 @@ const Index: React.FC<{ query: string }> = ({ query }) => {
<SlackCard query={query} /> <SlackCard query={query} />
{/* <InstagramCard query={query} /> */} {/* <InstagramCard query={query} /> */}
<SpectrumCard query={query} /> <SpectrumCard query={query} />
<SubredditCard query={query} />
<S3Card query={query} /> <S3Card query={query} />
<FirebaseCard query={query} /> <FirebaseCard query={query} />
</Cards> </Cards>

View File

@ -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 (
<Card title={t('providers.reddit')}>
<Repeater items={names} moreItems={moreNames}>
{(name) => (
<DedicatedAvailability
name={name}
service="reddit" // route to http://namae.dev/api/services/reddit/<query> which is /api/services/reddit/[query].ts on GitHub
link={`https://reddit.com/r/${name}`}
prefix="reddit.com/r/"
icon={<FaReddit />}
/>
)}
</Repeater>
</Card>
);
};