Skip to content

Commit 6dd2d15

Browse files
authored
Merge pull request #12969 from ethereum/get-static-contributors-consolidation
Deprecate CrowdinContributors, GitHubContributors
2 parents 6649f02 + 453578b commit 6dd2d15

File tree

11 files changed

+88
-136
lines changed

11 files changed

+88
-136
lines changed

src/components/CrowdinContributors.tsx

Lines changed: 0 additions & 31 deletions
This file was deleted.

src/components/FileContributors.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ const Contributor = ({ contributor }: ContributorProps) => (
4646
)
4747

4848
export type FileContributorsProps = FlexProps & {
49-
editPath?: string
5049
contributors: FileContributor[]
5150
lastEdit: string
5251
}

src/components/GitHubContributors.tsx

Lines changed: 0 additions & 19 deletions
This file was deleted.

src/layouts/Docs.tsx

Lines changed: 7 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,11 @@ import { ButtonLink } from "@/components/Buttons"
2121
import CallToContribute from "@/components/CallToContribute"
2222
import Card from "@/components/Card"
2323
import Codeblock from "@/components/Codeblock"
24-
import CrowdinContributors from "@/components/CrowdinContributors"
2524
import DeveloperDocsLinks from "@/components/DeveloperDocsLinks"
2625
import DocsNav from "@/components/DocsNav"
2726
import Emoji from "@/components/Emoji"
2827
import FeedbackCard from "@/components/FeedbackCard"
29-
import GitHubContributors from "@/components/GitHubContributors"
28+
import FileContributors from "@/components/FileContributors"
3029
import GlossaryTooltip from "@/components/Glossary/GlossaryTooltip"
3130
import InfoBanner from "@/components/InfoBanner"
3231
import Link from "@/components/Link"
@@ -48,9 +47,6 @@ import YouTube from "@/components/YouTube"
4847

4948
import { getEditPath } from "@/lib/utils/editPath"
5049

51-
// Utils
52-
import { DEFAULT_LOCALE } from "@/lib/constants"
53-
5450
const Page = (props: ChildOnlyProp & Pick<FlexProps, "dir">) => (
5551
<Flex
5652
direction="column"
@@ -202,9 +198,8 @@ type DocsLayoutProps = Pick<
202198
| "slug"
203199
| "tocItems"
204200
| "lastUpdatedDate"
205-
| "crowdinContributors"
201+
| "contributors"
206202
| "contentNotTranslated"
207-
| "gitContributors"
208203
> &
209204
Required<Pick<MdPageContent, "lastUpdatedDate">> &
210205
ChildOnlyProp & {
@@ -217,20 +212,13 @@ export const DocsLayout = ({
217212
slug,
218213
tocItems,
219214
lastUpdatedDate,
220-
crowdinContributors,
215+
contributors,
221216
contentNotTranslated,
222-
gitContributors,
223217
}: DocsLayoutProps) => {
224218
const isPageIncomplete = !!frontmatter.incomplete
225219
const { asPath: relativePath } = useRouter()
226220
const absoluteEditPath = getEditPath(relativePath)
227221

228-
const gitHubLastEdit = gitContributors[0]?.date
229-
const intlLastEdit = gitHubLastEdit || lastUpdatedDate
230-
231-
const useGitHubContributors =
232-
frontmatter.lang === DEFAULT_LOCALE || crowdinContributors.length === 0
233-
234222
return (
235223
<Page>
236224
<SideNavMobile path={relativePath} />
@@ -243,18 +231,10 @@ export const DocsLayout = ({
243231
<SideNav path={relativePath} />
244232
<Content>
245233
<H1 id="top">{frontmatter.title}</H1>
246-
{useGitHubContributors ? (
247-
<GitHubContributors
248-
lastUpdatedDate={lastUpdatedDate}
249-
contributors={gitContributors}
250-
/>
251-
) : (
252-
<CrowdinContributors
253-
relativePath={relativePath}
254-
lastUpdatedDate={intlLastEdit}
255-
contributors={crowdinContributors}
256-
/>
257-
)}
234+
<FileContributors
235+
contributors={contributors}
236+
lastEdit={lastUpdatedDate}
237+
/>
258238
<TableOfContents
259239
slug={slug}
260240
editPath={absoluteEditPath}

src/layouts/Tutorial.tsx

Lines changed: 8 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,17 @@ import {
1212
useToken,
1313
} from "@chakra-ui/react"
1414

15-
import type { ChildOnlyProp, TranslationKey } from "@/lib/types"
15+
import type { ChildOnlyProp } from "@/lib/types"
1616
import type { MdPageContent, TutorialFrontmatter } from "@/lib/interfaces"
1717

1818
import { ButtonLink } from "@/components/Buttons"
1919
import CallToContribute from "@/components/CallToContribute"
2020
import Card from "@/components/Card"
2121
import Codeblock from "@/components/Codeblock"
22-
import CrowdinContributors from "@/components/CrowdinContributors"
2322
import Emoji from "@/components/Emoji"
2423
import EnvWarningBanner from "@/components/EnvWarningBanner"
2524
import FeedbackCard from "@/components/FeedbackCard"
26-
import GitHubContributors from "@/components/GitHubContributors"
25+
import FileContributors from "@/components/FileContributors"
2726
import GlossaryTooltip from "@/components/Glossary/GlossaryTooltip"
2827
import InfoBanner from "@/components/InfoBanner"
2928
import MainArticle from "@/components/MainArticle"
@@ -41,8 +40,6 @@ import YouTube from "@/components/YouTube"
4140

4241
import { getEditPath } from "@/lib/utils/editPath"
4342

44-
import { DEFAULT_LOCALE } from "@/lib/constants"
45-
4643
type ContentContainerProps = Pick<BoxProps, "children" | "dir">
4744

4845
const ContentContainer = (props: ContentContainerProps) => {
@@ -157,13 +154,7 @@ export const tutorialsComponents = {
157154
YouTube,
158155
}
159156
type TutorialLayoutProps = ChildOnlyProp &
160-
Pick<
161-
MdPageContent,
162-
| "tocItems"
163-
| "crowdinContributors"
164-
| "contentNotTranslated"
165-
| "gitContributors"
166-
> &
157+
Pick<MdPageContent, "tocItems" | "contributors" | "contentNotTranslated"> &
167158
Required<Pick<MdPageContent, "lastUpdatedDate">> & {
168159
frontmatter: TutorialFrontmatter
169160
timeToRead: number
@@ -175,19 +166,13 @@ export const TutorialLayout = ({
175166
tocItems,
176167
timeToRead,
177168
lastUpdatedDate,
178-
crowdinContributors,
169+
contributors,
179170
contentNotTranslated,
180-
gitContributors,
181171
}: TutorialLayoutProps) => {
182172
const { asPath: relativePath } = useRouter()
183173
const absoluteEditPath = getEditPath(relativePath)
184174

185175
const borderColor = useToken("colors", "border")
186-
const gitHubLastEdit = gitContributors[0]?.date
187-
const intlLastEdit = gitHubLastEdit || lastUpdatedDate
188-
189-
const useGitHubContributors =
190-
frontmatter.lang === DEFAULT_LOCALE || crowdinContributors.length === 0
191176

192177
return (
193178
<>
@@ -209,18 +194,10 @@ export const TutorialLayout = ({
209194
pt={8}
210195
/>
211196
{children}
212-
{useGitHubContributors ? (
213-
<GitHubContributors
214-
contributors={gitContributors}
215-
lastUpdatedDate={lastUpdatedDate}
216-
/>
217-
) : (
218-
<CrowdinContributors
219-
relativePath={relativePath}
220-
lastUpdatedDate={intlLastEdit}
221-
contributors={crowdinContributors}
222-
/>
223-
)}
197+
<FileContributors
198+
contributors={contributors}
199+
lastEdit={lastUpdatedDate}
200+
/>
224201
<FeedbackCard />
225202
</ContentContainer>
226203
{tocItems && (

src/lib/interfaces.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,7 @@ export interface MdPageContent {
107107
tocItems: ToCItem[]
108108
lastUpdatedDate?: string
109109
contentNotTranslated: boolean
110-
crowdinContributors: CrowdinContributor[]
111-
gitContributors: FileContributor[]
110+
contributors: FileContributor[]
112111
}
113112

114113
// Local environment framework

src/lib/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ export type FileContributor = {
374374
login: string
375375
avatar_url: string
376376
html_url: string
377-
date: string
377+
date?: string
378378
}
379379

380380
type FilePath = string

src/lib/utils/contributors.ts

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import { join } from "path"
2+
3+
import type { CommitHistory, FileContributor, Lang, Layout } from "@/lib/types"
4+
5+
import { DEFAULT_LOCALE } from "@/lib/constants"
6+
7+
import {
8+
convertToFileContributorFromCrowdin,
9+
getCrowdinContributors,
10+
} from "./crowdin"
11+
import { getLastModifiedDate } from "./gh"
12+
13+
import { fetchAndCacheGitContributors } from "@/lib/api/fetchGitHistory"
14+
15+
export const getFileContributorInfo = async (
16+
mdDir: string,
17+
mdPath: string,
18+
slug: string,
19+
locale: string,
20+
fileLang: string,
21+
layout: Layout,
22+
cache: CommitHistory
23+
) => {
24+
const gitContributors = await fetchAndCacheGitContributors(
25+
join("/", mdDir, "index.md"),
26+
cache
27+
)
28+
29+
const latestCommitDate = getLastModifiedDate(slug, locale!)
30+
const gitHubLastEdit = gitContributors[0]?.date
31+
const lastUpdatedDate = gitHubLastEdit || latestCommitDate
32+
33+
const crowdinContributors = ["docs", "tutorial"].includes(layout)
34+
? convertToFileContributorFromCrowdin(
35+
getCrowdinContributors(mdPath, locale as Lang)
36+
)
37+
: []
38+
39+
const useGitHubContributors: boolean =
40+
fileLang === DEFAULT_LOCALE || crowdinContributors.length === 0
41+
42+
const contributors: FileContributor[] = useGitHubContributors
43+
? gitContributors
44+
: crowdinContributors
45+
46+
return { contributors, lastUpdatedDate }
47+
}

src/lib/utils/crowdin.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { CrowdinContributor, Lang } from "@/lib/types"
1+
import type { CrowdinContributor, FileContributor, Lang } from "@/lib/types"
22

33
import translators from "@/data/crowdin/combined-translators.json"
44
import fileIds from "@/data/crowdin/file-ids.json"
@@ -22,3 +22,12 @@ export const getCrowdinContributors = (
2222
const data = translators.filter(({ lang }) => lang === locale)[0]?.data ?? []
2323
return data.filter(({ fileId }) => +fileId === _fileId)[0]?.contributors ?? []
2424
}
25+
26+
export const convertToFileContributorFromCrowdin = (
27+
contributors: CrowdinContributor[]
28+
): FileContributor[] =>
29+
contributors.map(({ username, avatarUrl }) => ({
30+
login: username,
31+
avatar_url: avatarUrl,
32+
html_url: `https://crowdin.com/profile/${username}`,
33+
}))

src/lib/utils/md.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -335,10 +335,7 @@ export const getContentBySlug = (slug: string) => {
335335
const fileContents = fs.readFileSync(fullPath, "utf8")
336336
const { data, content } = matter(fileContents)
337337
const frontmatter = data as Frontmatter
338-
const items: Omit<
339-
MdPageContent,
340-
"tocItems" | "crowdinContributors" | "gitContributors"
341-
> = {
338+
const items: Omit<MdPageContent, "tocItems" | "contributors"> = {
342339
slug,
343340
content,
344341
frontmatter,

0 commit comments

Comments
 (0)