Skip to content

Commit 9cb51ac

Browse files
committed
Fix Learn sidebar
1 parent beaf0bf commit 9cb51ac

File tree

1 file changed

+112
-103
lines changed

1 file changed

+112
-103
lines changed

gatsby-node.js

Lines changed: 112 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -56,124 +56,133 @@ exports.createPages = async ({ graphql, actions }) => {
5656
let sideBardata = {}
5757
let pagesGroupedByFolder = {}
5858
const allPages = []
59-
60-
await Promise.all(edges.map(async ({ node }) => {
61-
const {
62-
frontmatter: { permalink, next, sidebarTitle },
63-
parent: { relativeDirectory, sourceInstanceName },
64-
} = node
65-
66-
if (sourceInstanceName !== "content") {
67-
return
68-
}
6959

70-
if (!pagesGroupedByFolder[relativeDirectory]) {
71-
pagesGroupedByFolder = {
72-
...pagesGroupedByFolder,
73-
[relativeDirectory]: [node],
60+
await Promise.all(
61+
edges.map(async ({ node }) => {
62+
const {
63+
frontmatter: { permalink, next, sidebarTitle },
64+
parent: { relativeDirectory, sourceInstanceName },
65+
} = node
66+
67+
if (sourceInstanceName !== "content") {
68+
return
7469
}
75-
} else {
76-
pagesGroupedByFolder = {
77-
...pagesGroupedByFolder,
78-
[relativeDirectory]: [...pagesGroupedByFolder[relativeDirectory], node],
70+
71+
if (!pagesGroupedByFolder[relativeDirectory]) {
72+
pagesGroupedByFolder = {
73+
...pagesGroupedByFolder,
74+
[relativeDirectory]: [node],
75+
}
76+
} else {
77+
pagesGroupedByFolder = {
78+
...pagesGroupedByFolder,
79+
[relativeDirectory]: [
80+
...pagesGroupedByFolder[relativeDirectory],
81+
node,
82+
],
83+
}
7984
}
80-
}
81-
allPages.push({
82-
permalink,
83-
relativeDirectory,
84-
sidebarTitle,
85-
nextPermalink: next,
86-
sourcePath: path.relative(__dirname, node.fileAbsolutePath),
85+
allPages.push({
86+
permalink,
87+
relativeDirectory,
88+
sidebarTitle,
89+
nextPermalink: next,
90+
sourcePath: path.relative(__dirname, node.fileAbsolutePath),
91+
})
8792
})
88-
}));
89-
90-
await Promise.all(Object.entries(pagesGroupedByFolder).map(async ([folder, pages]) => {
91-
let pagesByUrl = {}
92-
let previousPagesMap = {}
93-
let pagesByDate = pages.sort((a, b) => {
94-
const aDate = new Date(a.frontmatter.date || Date.now())
95-
const bDate = new Date(b.frontmatter.date || Date.now())
96-
if (aDate > bDate) {
97-
return -1;
98-
} else if (aDate < bDate) {
99-
return 1;
100-
}
101-
return 0;
102-
});
103-
104-
await Promise.all(
105-
pagesByDate.map(async page => {
106-
const {
107-
frontmatter: { permalink, next },
108-
} = page
109-
if (next) {
110-
previousPagesMap[next] = permalink
93+
)
94+
95+
await Promise.all(
96+
Object.entries(pagesGroupedByFolder).map(async ([folder, pages]) => {
97+
let pagesByUrl = {}
98+
let previousPagesMap = {}
99+
let pagesByDate = pages.sort((a, b) => {
100+
const aDate = new Date(a.frontmatter.date || Date.now())
101+
const bDate = new Date(b.frontmatter.date || Date.now())
102+
if (aDate > bDate) {
103+
return -1
104+
} else if (aDate < bDate) {
105+
return 1
111106
}
112-
pagesByUrl[permalink] = page
107+
return 0
113108
})
114-
)
115109

116-
let firstPage = null
110+
await Promise.all(
111+
pagesByDate.map(async page => {
112+
const {
113+
frontmatter: { permalink, next },
114+
} = page
115+
if (next) {
116+
previousPagesMap[next] = permalink
117+
}
118+
pagesByUrl[permalink] = page
119+
})
120+
)
117121

118-
await Promise.all(
119-
pagesByDate.map(async page => {
120-
const {
121-
frontmatter: { permalink },
122-
} = page
122+
let firstPage = null
123123

124-
if (!previousPagesMap[permalink] && !firstPage) {
125-
firstPage = page
126-
return
127-
}
128-
})
129-
)
124+
await Promise.all(
125+
pagesByDate.map(async page => {
126+
const {
127+
frontmatter: { permalink },
128+
} = page
130129

131-
if (!firstPage) {
132-
throw new Error(`First page not found in ${folder}`)
133-
}
130+
if (!previousPagesMap[permalink] && !firstPage) {
131+
firstPage = page
132+
return
133+
}
134+
})
135+
)
134136

135-
let categories = []
136-
let currentCategory = null
137+
if (!firstPage) {
138+
throw new Error(`First page not found in ${folder}`)
139+
}
137140

138-
let page = firstPage
139-
let i = 0
140-
while (page && i++ < 1000) {
141-
const {
142-
frontmatter,
143-
} = page
144-
const { definedCategory, next: nextPage } = frontmatter;
145-
let category = definedCategory || folder;
146-
if (!currentCategory || category !== currentCategory.name) {
147-
currentCategory && categories.push(currentCategory)
148-
currentCategory = {
149-
name: category,
150-
links: [],
141+
let categories = []
142+
let currentCategory = null
143+
144+
let page = firstPage
145+
let i = 0
146+
while (page && i++ < 1000) {
147+
const { frontmatter } = page
148+
const { definedCategory, next: definedNextPageUrl } = frontmatter
149+
let category = definedCategory || folder
150+
if (!currentCategory || category !== currentCategory.name) {
151+
currentCategory && categories.push(currentCategory)
152+
currentCategory = {
153+
name: category,
154+
links: [],
155+
}
156+
}
157+
currentCategory.links.push(page)
158+
if (definedNextPageUrl) {
159+
page = pagesByUrl[definedNextPageUrl]
160+
} else {
161+
page = pagesByDate[pagesByDate.indexOf(page) + 1]
162+
}
163+
if (currentCategory.links.includes(page)) {
164+
page = null
151165
}
152166
}
153-
currentCategory.links.push(page)
154-
if (nextPage) {
155-
page = pagesByUrl[nextPage]
156-
} else {
157-
page = pagesByDate[pagesByDate.indexOf(page) + 1];
158-
}
159-
}
160-
161-
categories.push(currentCategory)
162167

163-
sideBardata[folder] = categories
164-
}))
168+
categories.push(currentCategory)
165169

166-
167-
await Promise.all(allPages.map(async page => {
168-
createPage({
169-
path: `${page.permalink}`,
170-
component: docTemplate,
171-
context: {
172-
permalink: page.permalink,
173-
nextPermalink: page.nextPermalink,
174-
sideBarData: sideBardata[page.relativeDirectory],
175-
sourcePath: page.sourcePath,
176-
},
170+
sideBardata[folder] = categories
171+
})
172+
)
173+
174+
await Promise.all(
175+
allPages.map(async page => {
176+
createPage({
177+
path: `${page.permalink}`,
178+
component: docTemplate,
179+
context: {
180+
permalink: page.permalink,
181+
nextPermalink: page.nextPermalink,
182+
sideBarData: sideBardata[page.relativeDirectory],
183+
sourcePath: page.sourcePath,
184+
},
185+
})
177186
})
178-
}))
187+
)
179188
}

0 commit comments

Comments
 (0)