Skip to content

Commit

Permalink
move useParams to app
Browse files Browse the repository at this point in the history
  • Loading branch information
ASafaeirad committed Aug 13, 2024
1 parent 0ee27ad commit a82d194
Show file tree
Hide file tree
Showing 22 changed files with 54 additions and 43 deletions.
44 changes: 25 additions & 19 deletions .storybook/preview.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@ import { MockedProvider } from '@apollo/client/testing';
import { Notifications } from '@mantine/notifications';
import { Decorator, Parameters, Preview } from '@storybook/react';
import {
ReactLocation,
Router,
RouterProvider,
createMemoryHistory,
} from '@tanstack/react-location';
createRootRoute,
createRouter,
} from '@tanstack/react-router';
import 'dayjs/locale/fa';
import React from 'react';
import { ThemeProvider } from '../libs/design';
Expand All @@ -25,22 +26,27 @@ const parameters: Parameters = {
const decorators: Decorator[] = [
(Story, { args }) => {
const router = args.router as any;
const { layout, ...routes } = args.router ?? ({} as any);
const Layout = layout ?? React.Fragment;
const location = new ReactLocation({
history: createMemoryHistory({ initialEntries: [router?.route ?? '/'] }),
});

return router ? (
<Router routes={[routes]} location={location}>
<Layout>
<Story />
</Layout>
</Router>
) : (
<Router routes={[]} location={location}>
<Story />
</Router>
const Layout = router?.layout ?? React.Fragment;
return (
<RouterProvider
router={createRouter({
context: {
getTitle: () => router.context?.getTitle() ?? '',
},
history: createMemoryHistory({
initialEntries: [router?.route ?? '/'],
}),
routeTree: createRootRoute({
component: () => (
<Layout>
<Story />
</Layout>
),
errorComponent: () => <Story />,
}),
})}
defaultComponent={() => <Story />}
></RouterProvider>
);
},
Story => (
Expand Down
12 changes: 10 additions & 2 deletions app/routes/dashboard/_layout/households/_layout/$householdId.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,16 @@
import { HouseholdDetail } from '@camp/pages/Households';
import { createFileRoute } from '@tanstack/react-router';
import { createFileRoute, useParams } from '@tanstack/react-router';

const HouseholdDetailPage = () => {
const id = useParams({
from: '/dashboard/_layout/households/_layout/$householdId',
select: params => params.householdId,
});

return <HouseholdDetail id={id} />;
};
export const Route = createFileRoute(
'/dashboard/_layout/households/_layout/$householdId',
)({
component: HouseholdDetail,
component: HouseholdDetailPage,
});
13 changes: 11 additions & 2 deletions app/routes/dashboard/_layout/projects/_layout/$projectId.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,19 @@
import { ProjectDetail } from '@camp/pages/Projects';
import { createFileRoute } from '@camp/router';
import { createFileRoute, useParams } from '@camp/router';

const ProjectDetailPage = () => {
const id = useParams({
from: '/dashboard/_layout/projects/_layout/$projectId',
select: params => params.projectId,
});

return <ProjectDetail id={id} />;
};

export const Route = createFileRoute(
'/dashboard/_layout/projects/_layout/$projectId',
)({
component: ProjectDetail,
component: ProjectDetailPage,
errorComponent: ({ error }) => <>Error: ${error.message}</>,
notFoundComponent: () => <>Not Found</>,
});
9 changes: 3 additions & 6 deletions libs/pages/Households/HouseholdDetail/HouseholdDetail.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import {
} from '@camp/domain';
import { ArrowUpIcon, CheckIcon, EditIcon, TrashIcon } from '@camp/icons';
import { errorMessages, messages } from '@camp/messages';
import { AppRoute, useNavigate, useParams } from '@camp/router';
import { AppRoute, useNavigate } from '@camp/router';
import { InformationBadge, SeverityBadge } from '@camp/shared-components';
import { tid } from '@camp/test';
import { isNull } from '@fullstacksjs/toolbox';
Expand Down Expand Up @@ -52,13 +52,10 @@ const resolver = createResolver<FormSchema>({
});

// eslint-disable-next-line max-lines-per-function
export const HouseholdDetail = () => {
export const HouseholdDetail = ({ id }: { id: string }) => {
const t = messages.householdDetail;
const tNotification = messages.notification.household;
const id = useParams({
from: '/dashboard/_layout/households/_layout/$householdId',
select: params => params.householdId,
});

const navigate = useNavigate();
const {
handleSubmit,
Expand Down
4 changes: 2 additions & 2 deletions libs/pages/Households/HouseholdsLayout.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ export default {
router: {
route: '/dashboard/households',
layout: DashboardLayout,
meta: {
breadcrumb: messages.households.title,
context: {
getTitle: () => messages.households.title,
},
},
},
Expand Down
6 changes: 1 addition & 5 deletions libs/pages/Projects/ProjectDetail/ProjectDetail.stories.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { projectMock } from '@camp/fixtures';
import { messages } from '@camp/messages';
import type { Meta, StoryObj } from '@storybook/react';

import { ProjectDetail } from './ProjectDetail';
Expand All @@ -8,10 +7,7 @@ export default {
component: ProjectDetail,
args: {
router: {
route: ':projectId',
meta: {
breadcrumb: messages.projectDetail.title,
},
route: '/dashboard/projects/123',
},
},
parameters: {
Expand Down
9 changes: 2 additions & 7 deletions libs/pages/Projects/ProjectDetail/ProjectDetail.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,15 @@ import {
Tabs,
} from '@camp/design';
import { errorMessages, messages } from '@camp/messages';
import { useParams } from '@camp/router';
import { isEmpty, isNull } from '@fullstacksjs/toolbox';
import { Text, Title } from '@mantine/core';

import { ProjectStatusBadge } from '../ProjectStatusBadge';
import { ProjectDocuments } from './_components/ProjectDocuments';
import { ProjectDetailIds as ids } from './ProjectDetail.ids';
import { ProjectDocuments } from './ProjectDocuments';

export const ProjectDetail = () => {
export const ProjectDetail = ({ id }: { id: string }) => {
const t = messages.projectDetail;
const id = useParams({
from: '/dashboard/_layout/projects/_layout/$projectId',
select: params => params.projectId,
});

const { data, loading, error } = useProjectQuery({
variables: { id },
Expand Down

0 comments on commit a82d194

Please sign in to comment.