first commit
Some checks failed
Build / run (push) Has been cancelled

This commit is contained in:
maher
2025-10-29 11:42:25 +01:00
commit 703f50a09d
4595 changed files with 385164 additions and 0 deletions

196
resources/client/site-routes.tsx Executable file
View File

@@ -0,0 +1,196 @@
import {RouteObject, useRoutes} from 'react-router-dom';
import React from 'react';
import {ChannelPage} from '@app/channels/channel-page';
import {TitlePage} from '@app/titles/pages/title-page/title-page';
import {SeasonPage} from '@app/seasons/season-page';
import {EpisodePage} from '@app/episodes/episode-page';
import {useSettings} from '@common/core/settings/use-settings';
import {WatchPage} from '@app/videos/watch-page/watch-page';
import {TitleVideosPage} from '@app/titles/pages/title-videos-page';
import {TitleImagesPage} from '@app/titles/pages/title-images-page';
import {PersonPage} from '@app/people/person-page/person-page';
import {TitleFullCreditsPage} from '@app/titles/pages/title-full-credits-page';
import {EpisodeFullCreditsPage} from '@app/episodes/epispde-full-credits-page';
import {NewsArticlePage} from '@app/news/news-article-page';
import {UserListsIndexPage} from '@app/user-lists/pages/user-lists-index-page/user-lists-index-page';
import {EditUserListPage} from '@app/user-lists/pages/edit-user-list-page';
import {CreateUserListPage} from '@app/user-lists/pages/create-user-list-page';
import {SitePageLayout} from '@app/site-page-layout';
import {UserProfilePage} from '@app/profile/user-profile-page';
import {AuthRoute} from '@common/auth/guards/auth-route';
import {ProfileListsPanel} from '@app/profile/panels/profile-lists-panel';
import {ProfileRatingsPanel} from '@app/profile/panels/profile-ratings-panel';
import {ProfileReviewsPanel} from '@app/profile/panels/profile-reviews-panel';
import {ProfileCommentsPanel} from '@app/profile/panels/profile-comments-panel';
import {ProfileFollowersPanel} from '@app/profile/panels/profile-followers-panel';
import {ProfileFollowedUsersPanel} from '@app/profile/panels/profile-followed-users-panel';
import {SearchPage} from '@app/search/search-page';
import {NotFoundPage} from '@common/ui/not-found-page/not-found-page';
const RouteConfig: RouteObject[] = [
{
index: true,
element: <HomepageChannelPage />,
},
{
path: 'search',
element: <SearchPage />,
},
{
path: 'search/:query',
element: <SearchPage />,
},
// Watch
{
path: 'watch/:videoId',
element: <WatchPage />,
},
// Titles
{
path: '/titles/:titleId/:titleSlug',
element: <TitlePage />,
},
{
path: '/titles/:titleId/:titleSlug/videos',
element: <TitleVideosPage />,
},
{
path: '/titles/:titleId/:titleSlug/images',
element: <TitleImagesPage />,
},
{
path: '/titles/:titleId/:titleSlug/full-credits',
element: <TitleFullCreditsPage />,
},
{
path: '/titles/:titleId/:titleSlug/season/:season',
element: <SeasonPage />,
},
{
path: '/titles/:titleId/:titleSlug/season/:season/episode/:episode',
element: <EpisodePage />,
},
{
path: '/titles/:titleId/:titleSlug/season/:season/episode/:episode/full-credits',
element: <EpisodeFullCreditsPage />,
},
// People
{
path: '/people/:personId',
element: <PersonPage />,
},
{
path: '/people/:personId/:personSlug',
element: <PersonPage />,
},
// News
{
path: '/news/:articleId',
element: <NewsArticlePage />,
},
// Profile page
{
path: 'user/:userId/:slug',
element: <UserProfilePage />,
children: [
{
index: true,
element: <ProfileListsPanel />,
},
{
path: 'lists',
element: <ProfileListsPanel />,
},
{
path: 'ratings',
element: <ProfileRatingsPanel />,
},
{
path: 'reviews',
element: <ProfileReviewsPanel />,
},
{
path: 'comments',
element: <ProfileCommentsPanel />,
},
{
path: 'followers',
element: <ProfileFollowersPanel />,
},
{
path: 'followed-users',
element: <ProfileFollowedUsersPanel />,
},
],
},
{
path: 'user/:userId/:slug/:tab',
element: <UserProfilePage />,
},
// User Lists
{
path: '/lists',
element: (
<AuthRoute>
<UserListsIndexPage />
</AuthRoute>
),
},
{
path: '/lists/new',
element: (
<AuthRoute>
<SitePageLayout>
<CreateUserListPage />
</SitePageLayout>
</AuthRoute>
),
},
{
path: '/lists/:slugOrId',
element: <ChannelPage type="list" />,
},
{
path: '/lists/:slugOrId/edit',
element: (
<SitePageLayout>
<EditUserListPage />
</SitePageLayout>
),
},
// Channels
{
path: ':slugOrId',
element: <ChannelPage />,
},
{
path: 'channel/:slugOrId',
element: <ChannelPage />,
},
{
path: ':slugOrId/:restriction',
element: <ChannelPage />,
},
{
path: 'channel/:slugOrId/:restriction',
element: <ChannelPage />,
},
{
path: '*',
element: <NotFoundPage />,
},
];
function HomepageChannelPage() {
const {homepage} = useSettings();
let slugOrId = 'homepage';
if (homepage?.type === 'channel' && homepage.value) {
slugOrId = homepage.value;
}
return <ChannelPage slugOrId={slugOrId} />;
}
export default function SiteRoutes() {
return useRoutes(RouteConfig);
}