Skip to content

Commit

Permalink
作品一覧回り
Browse files Browse the repository at this point in the history
  • Loading branch information
a01sa01to committed Mar 24, 2024
1 parent ea8c60f commit c98ec8d
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 13 deletions.
14 changes: 8 additions & 6 deletions workspaces/admin/src/pages/BookListPage/index.tsx
Expand Up @@ -21,6 +21,8 @@ import { useFormik } from 'formik';
import { useId, useMemo, useState } from 'react';
import { create } from 'zustand';

import type { GetBookResponse } from '@wsh-2024/schema/src/api/books/GetBookResponse';

import { useBookList } from '../../features/books/hooks/useBookList';
import { isContains } from '../../lib/filter/isContains';

Expand Down Expand Up @@ -49,7 +51,7 @@ type BookModalState =
}
| {
mode: typeof BookModalMode.Detail;
params: { bookId: string };
params: { book: GetBookResponse };
}
| {
mode: typeof BookModalMode.Create;
Expand All @@ -59,7 +61,7 @@ type BookModalState =
type BookModalAction = {
close: () => void;
openCreate: () => void;
openDetail: (bookId: string) => void;
openDetail: (book: GetBookResponse) => void;
};

export const BookListPage: React.FC = () => {
Expand Down Expand Up @@ -119,8 +121,8 @@ export const BookListPage: React.FC = () => {
openCreate() {
set({ mode: BookModalMode.Create, params: {} });
},
openDetail(bookId) {
set({ mode: BookModalMode.Detail, params: { bookId } });
openDetail(book) {
set({ mode: BookModalMode.Detail, params: { book } });
},
},
}));
Expand Down Expand Up @@ -218,7 +220,7 @@ export const BookListPage: React.FC = () => {
{filteredBookList.map((book) => (
<Tr key={book.id}>
<Td textAlign="center" verticalAlign="middle">
<Button colorScheme="teal" onClick={() => modalState.openDetail(book.id)} variant="solid">
<Button colorScheme="teal" onClick={() => modalState.openDetail(book)} variant="solid">
詳細
</Button>
</Td>
Expand All @@ -243,7 +245,7 @@ export const BookListPage: React.FC = () => {
</Stack>

{modalState.mode === BookModalMode.Detail ? (
<BookDetailModal isOpen bookId={modalState.params.bookId} onClose={() => modalState.close()} />
<BookDetailModal isOpen book={modalState.params.book} onClose={() => modalState.close()} />
) : null}
{modalState.mode === BookModalMode.Create ? <CreateBookModal isOpen onClose={() => modalState.close()} /> : null}
</>
Expand Down
Expand Up @@ -19,21 +19,22 @@ import {
import { Link } from '@tanstack/react-router';
import { useToggle } from '@uidotdev/usehooks';

import { useBook } from '../../../../features/books/hooks/useBook';
import type { GetBookResponse } from '@wsh-2024/schema/src/api/books/GetBookResponse';

import { useEpisodeList } from '../../../../features/episodes/hooks/useEpisodeList';

import { BookDetailContent } from './BookDetailContent';
import { BookEditContent } from './BookEditContent';

type Props = {
bookId: string;
book: GetBookResponse;
isOpen: boolean;
onClose: () => void;
};

export const BookDetailModal: React.FC<Props> = ({ bookId, isOpen, onClose }) => {
const { data: episodeList } = useEpisodeList({ bookId });
const { data: book } = useBook({ bookId });
export const BookDetailModal: React.FC<Props> = ({ book, isOpen, onClose }) => {
const { data: episodeList } = useEpisodeList({ bookId: book.id });
// const { data: book } = useBook({ bookId });

const [isEdit, toggleIEdit] = useToggle(false);

Expand Down Expand Up @@ -75,7 +76,7 @@ export const BookDetailModal: React.FC<Props> = ({ bookId, isOpen, onClose }) =>
as={Link}
colorScheme="teal"
role="button"
to={`/admin/books/${bookId}/episodes/${episode.id}`}
to={`/admin/books/${book.id}/episodes/${episode.id}`}
variant="solid"
>
編集
Expand Down Expand Up @@ -107,7 +108,7 @@ export const BookDetailModal: React.FC<Props> = ({ bookId, isOpen, onClose }) =>
colorScheme="teal"
mt={4}
role="button"
to={`/admin/books/${bookId}/episodes/new`}
to={`/admin/books/${book.id}/episodes/new`}
variant="solid"
>
エピソードを追加
Expand Down
8 changes: 8 additions & 0 deletions workspaces/schema/src/api/books/GetBookListResponse.ts
Expand Up @@ -25,7 +25,15 @@ export const GetBookListResponseSchema = createSelectSchema(book)
}),
episodes: createSelectSchema(episode)
.pick({
chapter: true,
description: true,
id: true,
name: true,
})
.extend({
image: createSelectSchema(image).pick({
id: true,
}),
})
.array(),
image: createSelectSchema(image).pick({
Expand Down

0 comments on commit c98ec8d

Please sign in to comment.