url-backward-compat

This commit is contained in:
Untone 2024-09-06 07:52:39 +03:00
parent d003df96f2
commit e03971193e
2 changed files with 9 additions and 7 deletions

View File

@ -1,6 +1,6 @@
import { RouteDefinition, RouteSectionProps, createAsync, useLocation } from '@solidjs/router' import { RouteDefinition, RouteSectionProps, createAsync, useLocation } from '@solidjs/router'
import { HttpStatusCode } from '@solidjs/start' import { HttpStatusCode } from '@solidjs/start'
import { ErrorBoundary, Show, Suspense, createEffect, createSignal, on, onMount } from 'solid-js' import { ErrorBoundary, Show, Suspense, createEffect, on, onMount } from 'solid-js'
import { FourOuFourView } from '~/components/Views/FourOuFour' import { FourOuFourView } from '~/components/Views/FourOuFour'
import { Loading } from '~/components/_shared/Loading' import { Loading } from '~/components/_shared/Loading'
import { gaIdentity } from '~/config' import { gaIdentity } from '~/config'
@ -28,9 +28,9 @@ export const route: RouteDefinition = {
}) })
} }
type ArticlePageProps = { article?: Shout; comments?: Reaction[]; votes?: Reaction[]; author?: Author } export type ArticlePageProps = { article?: Shout; comments?: Reaction[]; votes?: Reaction[]; author?: Author }
type SlugPageProps = { export type SlugPageProps = {
article?: Shout article?: Shout
comments?: Reaction[] comments?: Reaction[]
votes?: Reaction[] votes?: Reaction[]
@ -38,7 +38,7 @@ type SlugPageProps = {
topics: Topic[] topics: Topic[]
} }
export default (props: RouteSectionProps<SlugPageProps>) => { export default function ArticlePage(props: RouteSectionProps<SlugPageProps>) {
if (props.params.slug.startsWith('@')) { if (props.params.slug.startsWith('@')) {
console.debug('[routes] [slug]/[...tab] starts with @, render as author page') console.debug('[routes] [slug]/[...tab] starts with @, render as author page')
const patchedProps = { const patchedProps = {
@ -66,7 +66,6 @@ export default (props: RouteSectionProps<SlugPageProps>) => {
function ArticlePage(props: RouteSectionProps<ArticlePageProps>) { function ArticlePage(props: RouteSectionProps<ArticlePageProps>) {
const loc = useLocation() const loc = useLocation()
const { t } = useLocalize() const { t } = useLocalize()
const [scrollToComments, setScrollToComments] = createSignal<boolean>(false)
const data = createAsync(async () => props.data?.article || (await fetchShout(props.params.slug))) const data = createAsync(async () => props.data?.article || (await fetchShout(props.params.slug)))
onMount(async () => { onMount(async () => {
@ -114,10 +113,9 @@ export default (props: RouteSectionProps<SlugPageProps>) => {
headerTitle={data()?.title || ''} headerTitle={data()?.title || ''}
slug={data()?.slug} slug={data()?.slug}
cover={data()?.cover || ''} cover={data()?.cover || ''}
scrollToComments={(value) => setScrollToComments(value)}
> >
<ReactionsProvider> <ReactionsProvider>
<FullArticle article={data() as Shout} scrollToComments={scrollToComments()} /> <FullArticle article={data() as Shout} />
</ReactionsProvider> </ReactionsProvider>
</PageLayout> </PageLayout>
</Show> </Show>
@ -127,3 +125,4 @@ export default (props: RouteSectionProps<SlugPageProps>) => {
} }
return <ArticlePage {...props} /> return <ArticlePage {...props} />
} }

View File

@ -0,0 +1,3 @@
import ArticlePage from "~/routes/[slug]/[...tab]"
export default ArticlePage