Skip to content

Commit 2f9d981

Browse files
authored
Fix old manual redirects (TanStack#170)
* Fix the redirect errors for the Table v7 docs * Remove the old virtual doc redirects from the router docs
1 parent 0e926c2 commit 2f9d981

6 files changed

Lines changed: 76 additions & 77 deletions

File tree

app/projects/table.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,37 @@ export function getBranch(argVersion?: string) {
2727

2828
return ['latest', latestVersion].includes(version) ? latestBranch : version
2929
}
30+
31+
// prettier-ignore
32+
export const reactTableV7List = [
33+
{from: 'docs/api/overview',to: 'docs/overview',},
34+
{from: 'docs/api/useColumnOrder',to: 'docs/api/features/column-ordering',},
35+
{from: 'docs/api/useExpanded',to: 'docs/api/features/expanding',},
36+
{from: 'docs/api/useFilters',to: 'docs/api/features/filters',},
37+
{from: 'docs/api/useGlobalFilter',to: 'docs/api/features/filters',},
38+
{from: 'docs/api/useGroupBy',to: 'docs/api/features/grouping',},
39+
{from: 'docs/api/usePagination',to: 'docs/api/features/pagination',},
40+
{from: 'docs/api/useResizeColumns',to: 'docs/api/features/column-sizing',},
41+
{from: 'docs/api/useRowSelect',to: 'docs/api/features/row-selection',},
42+
{from: 'docs/api/useSortBy',to: 'docs/api/features/sorting',},
43+
{from: 'docs/api/useTable',to: 'docs/guide/tables',},
44+
{from: 'docs/examples/basic',to: 'docs/framework/react/examples/basic',},
45+
{from: 'docs/examples/filtering',to: 'docs/framework/react/examples/filters',},
46+
{from: 'docs/examples/footers',to: 'docs/framework/react/examples/basic',},
47+
{from: 'docs/examples/grouping',to: 'docs/framework/react/examples/grouping',},
48+
{from: 'docs/examples/pagination-controlled',to: 'docs/framework/react/examples/pagination-controlled',},
49+
{from: 'docs/examples/pagination',to: 'docs/framework/react/examples/pagination',},
50+
{from: 'docs/examples/sorting',to: 'docs/framework/react/examples/sorting',},
51+
{from: 'docs/examples/row-selection',to: 'docs/framework/react/examples/row-selection',},
52+
{from: 'docs/examples/row-selection-with-pagination',to: 'docs/framework/react/examples/row-selection',},
53+
{from: 'docs/examples/expanding',to: 'docs/framework/react/examples/expanding',},
54+
{from: 'docs/examples/editable-data',to: 'docs/framework/react/examples/editable-data',},
55+
{from: 'docs/examples/column-ordering',to: 'docs/framework/react/examples/column-ordering',},
56+
{from: 'docs/examples/column-hiding',to: 'docs/framework/react/examples/column-visibility',},
57+
{from: 'docs/examples/column-resizing',to: 'docs/framework/react/examples/column-sizing',},
58+
{from: 'docs/installation',to: 'docs/installation',},
59+
{from: 'docs/overview',to: 'docs/introduction',},
60+
{from: 'docs/quick-start',to: 'docs/overview',},
61+
]
62+
63+
export const reactTableV7NotDocPagesList = [{ from: '', to: '' }]

app/routes/router.$.tsx

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,5 @@
11
import { redirect } from '@remix-run/node'
2-
import type { LoaderFunctionArgs } from '@remix-run/node'
3-
4-
export const loader = (context: LoaderFunctionArgs) => {
5-
handleRedirects(context)
62

3+
export const loader = () => {
74
return redirect('/router/latest')
85
}
9-
10-
function handleRedirects(context: LoaderFunctionArgs) {
11-
const url = new URL(context.request.url)
12-
// prettier-ignore
13-
const reactLocationV2List = [
14-
{from: 'docs/overview',to: 'docs/guide/introduction',},
15-
{from: 'docs/installation',to: 'docs/guide/installation',},
16-
{from: 'docs/api',to: 'docs/api/virtualizer',},
17-
{from: 'examples/fixed',to: 'docs/examples/react/fixed',},
18-
{from: 'examples/variable',to: 'docs/examples/react/variable',},
19-
{from: 'examples/dynamic',to: 'docs/examples/react/dynamic',},
20-
{from: 'examples/infinite-scroll',to: 'docs/examples/react/infinite-scroll',},
21-
{from: 'examples/padding',to: 'docs/examples/react/padding',},
22-
{from: 'examples/smooth-scroll',to: 'docs/examples/react/smooth-scroll',},
23-
{from: 'examples/sticky',to: 'docs/examples/react/sticky',},
24-
{from: '',to: '',},
25-
]
26-
27-
reactLocationV2List.forEach((item) => {
28-
if (url.pathname.startsWith(`/router/react-location/${item.from}`)) {
29-
throw redirect(`/router/v1/${item.to}?from=reactLocationV2`)
30-
}
31-
})
32-
}

app/routes/table.$.tsx

Lines changed: 1 addition & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,5 @@
11
import { redirect } from '@remix-run/node'
2-
import type { LoaderFunctionArgs } from '@remix-run/node'
3-
4-
export const loader = (context: LoaderFunctionArgs) => {
5-
handleRedirects(context)
62

3+
export const loader = () => {
74
return redirect('/table/latest')
85
}
9-
10-
function handleRedirects(context: LoaderFunctionArgs) {
11-
const url = new URL(context.request.url)
12-
// prettier-ignore
13-
const reactTableV7List = [
14-
{from: 'docs/api/overview',to: 'docs/guide/overview',},
15-
{from: 'docs/api/useColumnOrder',to: 'docs/api/features/column-ordering',},
16-
{from: 'docs/api/useExpanded',to: 'docs/api/features/expanding',},
17-
{from: 'docs/api/useFilters',to: 'docs/api/features/filters',},
18-
{from: 'docs/api/useGlobalFilter',to: 'docs/api/features/filters',},
19-
{from: 'docs/api/useGroupBy',to: 'docs/api/features/grouping',},
20-
{from: 'docs/api/usePagination',to: 'docs/api/features/pagination',},
21-
{from: 'docs/api/useResizeColumns',to: 'docs/api/features/column-sizing',},
22-
{from: 'docs/api/useRowSelect',to: 'docs/api/features/row-selection',},
23-
{from: 'docs/api/useSortBy',to: 'docs/api/features/sorting',},
24-
{from: 'docs/api/useTable',to: 'docs/guide/tables',},
25-
{from: 'docs/examples/basic',to: 'docs/examples/react/basic',},
26-
{from: 'docs/examples/filtering',to: 'docs/examples/react/filters',},
27-
{from: 'docs/examples/footers',to: 'docs/examples/react/basic',},
28-
{from: 'docs/examples/grouping',to: 'docs/examples/react/grouping',},
29-
{from: 'docs/examples/pagination',to: 'docs/examples/react/pagination',},
30-
{from: 'docs/examples/sorting',to: 'docs/examples/react/sorting',},
31-
{from: 'docs/examples/row-selection',to: 'docs/examples/react/row-selection',},
32-
{from: 'docs/examples/row-selection-with-pagination',to: 'docs/examples/react/row-selection',},
33-
{from: 'docs/examples/expanding',to: 'docs/examples/react/expanding',},
34-
{from: 'docs/examples/editable-data',to: 'docs/examples/react/editable-data',},
35-
{from: 'docs/examples/column-ordering',to: 'docs/examples/react/column-ordering',},
36-
{from: 'docs/examples/column-hiding',to: 'docs/examples/react/column-visibility',},
37-
{from: 'docs/examples/column-resizing',to: 'docs/examples/react/column-sizing',},
38-
{from: 'docs/examples/pagination-controlled',to: 'docs/examples/react/pagination-controlled',},
39-
{from: 'docs/examples/pagination-controlled',to: 'docs/examples/react/pagination-controlled',},
40-
{from: 'docs/installation',to: 'docs/guide/installation',},
41-
{from: 'docs/overview',to: 'docs/introduction',},
42-
{from: 'docs/quick-start',to: 'docs/guide/overview',},
43-
{from: '',to: '',},
44-
]
45-
46-
reactTableV7List.forEach((item) => {
47-
if (url.pathname.startsWith(`/table/v7/${item.from}`)) {
48-
throw redirect(`/table/v8/${item.to}?from=reactTableV7`)
49-
}
50-
})
51-
}

app/routes/table.$version.docs.$.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
11
import type { LoaderFunctionArgs, MetaFunction } from '@remix-run/node'
2-
import { repo, getBranch } from '~/projects/table'
2+
import { repo, getBranch, reactTableV7List } from '~/projects/table'
33
import { DefaultErrorBoundary } from '~/components/DefaultErrorBoundary'
44
import { seo } from '~/utils/seo'
55
import { useLoaderData, useParams } from '@remix-run/react'
66
import { loadDocs } from '~/utils/docs'
77
import { Doc } from '~/components/Doc'
8+
import { handleRedirects } from '~/utils/handleRedirects.server'
9+
10+
export const loader = (context: LoaderFunctionArgs) => {
11+
handleRedirects(
12+
reactTableV7List,
13+
context.request.url,
14+
'/table/v7',
15+
'/table/v8',
16+
'from=reactTableV7'
17+
)
818

9-
export const loader = async (context: LoaderFunctionArgs) => {
1019
const { '*': docsPath, version } = context.params
1120
const { url } = context.request
1221

app/routes/table.$version.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ import type { LoaderFunctionArgs } from '@remix-run/node'
88
export const loader = async (context: LoaderFunctionArgs) => {
99
const { version } = context.params
1010

11+
if (version === 'v7') {
12+
throw redirect('/table/v8?from=reactTableV7')
13+
}
14+
1115
const redirectUrl = context.request.url.replace(version!, 'latest')
1216

1317
if (!availableVersions.concat('latest').includes(version!)) {
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { redirect } from '@remix-run/node'
2+
3+
type RedirectItem = { from: string; to: string }
4+
5+
export function handleRedirects(
6+
redirectItems: RedirectItem[],
7+
urlFromRequest: string,
8+
urlFromPathStart: string,
9+
urlToPathStart: string,
10+
urlToQueryParams: string
11+
) {
12+
const url = new URL(urlFromRequest)
13+
redirectItems.forEach((item) => {
14+
if (url.pathname.startsWith(`${urlFromPathStart}/${item.from}`)) {
15+
/* console.log({
16+
urlTo: `${urlToPathStart}/${item.to}?${urlToQueryParams}`,
17+
urlFromRequest,
18+
itemFrom: item.from,
19+
urlFromPathStart,
20+
urlToPathStart,
21+
}) */
22+
throw redirect(`${urlToPathStart}/${item.to}?${urlToQueryParams}`)
23+
}
24+
})
25+
}

0 commit comments

Comments
 (0)