added resolvers, updated model, updated navbar

This commit is contained in:
lnn0q 2025-05-17 21:41:07 +03:00
parent a8375b99c2
commit 1d40d7e15f
23 changed files with 439 additions and 301 deletions

View file

@ -1,105 +1,21 @@
import { gql } from '@apollo/client';
import { Skeleton, Stack } from '@chakra-ui/react';
import { WorkingListQuery } from '@generated/types';
import { Stack } from '@chakra-ui/react';
import { createFileRoute } from '@tanstack/react-router';
import { useState } from 'react';
import { Pagination } from '../components/Pagination';
import { WorkingList } from '../components/WorkingList';
import { WorkingListSearch } from '../components/WorkingListSearch';
import { usePaginatedQuery } from '../hooks/usePaginatedQuery';
import { BookSearchList } from '../components/BookSearchList';
export const Route = createFileRoute('/')({
component: RouteComponent
});
function RouteComponent() {
const [workingSearchValue, setWorkingSearchValue] = useState<string>('');
const [workingsListPage, setWorkingsListPage] = useState<number>(1);
const [workingsListPageSize, setWorkingsListPageSize] = useState<number>(2);
const startIndex = (workingsListPage - 1) * workingsListPageSize;
const { data } = usePaginatedQuery<WorkingListQuery>({
query,
input: {
filter: {
terms: workingSearchValue,
offset: startIndex,
size: workingsListPageSize
}
}
});
return (
<Stack justifyContent="center" alignItems="center">
<Stack width="90%">
{data != null ? (
<>
<WorkingListSearch
value={workingSearchValue}
onSubmit={value => {
alert(value);
}}
onChange={value => setWorkingSearchValue(value)}
/>
<WorkingList
workingsList={data.workingMany.items.map(item => ({
...item,
chaptersTotal: item.chapters.total,
reviewsTotal: item.reviews.total
}))}
/>
<Pagination
total={data.workingMany.total}
page={workingsListPage}
setPage={setWorkingsListPage}
pageSize={workingsListPageSize}
/>
</>
) : (
<>
<Stack direction="row" justifyContent="center" alignItems="center" gap={2}>
<Skeleton height={10} width="80%" />
<Skeleton height={10} width="calc(20% - 6px)" />
</Stack>
<Skeleton height={20} />
<Skeleton height={20} />
<Skeleton height={20} />
</>
)}
<BookSearchList />
</Stack>
</Stack>
);
}
const query = gql`
query WorkingList($input: WorkingManyInput!) {
workingMany(input: $input) {
items {
id
type
title
description
author {
id
username
}
updatedAt
progressStatus
ratingTotal
reviewsTotal
book {
id
chaptersTotal
wordsTotal
}
}
total
}
}
`;
// const workingData1: WorkingCardProps = {
// id: '1',
// title: 'Worth the Candle',