diff --git a/src/components/ChapterCard.tsx b/src/components/ChapterCard.tsx index 3bed52ca..62fe3377 100644 --- a/src/components/ChapterCard.tsx +++ b/src/components/ChapterCard.tsx @@ -7,7 +7,6 @@ import React from 'react'; import { useTheme } from '@mui/material/styles'; -import makeStyles from '@mui/styles/makeStyles'; import Card from '@mui/material/Card'; import CardContent from '@mui/material/CardContent'; import IconButton from '@mui/material/IconButton'; @@ -19,43 +18,6 @@ import MenuItem from '@mui/material/MenuItem'; import BookmarkIcon from '@mui/icons-material/Bookmark'; import client from 'util/client'; -const useStyles = makeStyles((theme) => ({ - root: { - display: 'flex', - justifyContent: 'space-between', - alignItems: 'center', - padding: 16, - }, - bullet: { - display: 'inline-block', - margin: '0 2px', - transform: 'scale(0.8)', - }, - title: { - fontSize: 14, - }, - pos: { - marginBottom: 12, - }, - icon: { - width: theme.spacing(7), - height: theme.spacing(7), - flex: '0 0 auto', - marginRight: 16, - }, - card: { - margin: '10px', - '&:hover': { - backgroundColor: theme.palette.action.hover, - transition: 'background-color 100ms cubic-bezier(0.4, 0, 0.2, 1) 0ms', - }, - '&:active': { - backgroundColor: theme.palette.action.selected, - transition: 'background-color 100ms cubic-bezier(0.4, 0, 0.2, 1) 0ms', - }, - }, -})); - interface IProps{ chapter: IChapter triggerChaptersUpdate: () => void @@ -63,7 +25,6 @@ interface IProps{ } export default function ChapterCard(props: IProps) { - const classes = useStyles(); const theme = useTheme(); const { chapter, triggerChaptersUpdate, downloadStatusString } = props; @@ -84,6 +45,7 @@ export default function ChapterCard(props: IProps) { const formData = new FormData(); formData.append(key, value); + if (key === 'read') { formData.append('lastPageRead', '1'); } client.patch(`/api/v1/manga/${chapter.mangaId}/chapter/${chapter.index}`, formData) .then(() => triggerChaptersUpdate()); }; @@ -104,8 +66,25 @@ export default function ChapterCard(props: IProps) { return ( <>
  • - - + + sendChange('read', !chapter.read)}> - {`Mark as ${chapter.read && 'unread'} ${!chapter.read && 'read'}`} + {`Mark as ${chapter.read ? 'unread' : 'read'}`} sendChange('markPrevRead', true)}> Mark previous as Read diff --git a/src/screens/Manga.tsx b/src/screens/Manga.tsx index c8830e87..81dc3356 100644 --- a/src/screens/Manga.tsx +++ b/src/screens/Manga.tsx @@ -8,7 +8,7 @@ import React, { useEffect, useState, useContext } from 'react'; import { Theme } from '@mui/material/styles'; import makeStyles from '@mui/styles/makeStyles'; -import { useParams } from 'react-router-dom'; +import { Link, useParams } from 'react-router-dom'; import { Virtuoso } from 'react-virtuoso'; import ChapterCard from 'components/ChapterCard'; import MangaDetails from 'components/MangaDetails'; @@ -16,6 +16,8 @@ import NavbarContext from 'components/context/NavbarContext'; import client from 'util/client'; import LoadingPlaceholder from 'components/util/LoadingPlaceholder'; import makeToast from 'components/util/Toast'; +import { Fab } from '@mui/material'; +import PlayArrow from '@mui/icons-material/PlayArrow'; const useStyles = makeStyles((theme: Theme) => ({ root: { @@ -62,6 +64,7 @@ export default function Manga() { const [chapterUpdateTriggerer, setChapterUpdateTriggerer] = useState(0); const [fetchedOnline, setFetchedOnline] = useState(false); const [fetchedOffline, setFetchedOffline] = useState(false); + const [firstUnreadChapter, setFirstUnreadChapter] = useState(); const [, setWsClient] = useState(); const [{ queue }, setQueueState] = useState(initialQueue); @@ -129,6 +132,25 @@ export default function Manga() { }); }, [fetchedOnline, fetchedOffline, chapterUpdateTriggerer]); + useEffect(() => { + const a = [...chapters].reverse().find((chp) => !chp.read); + setFirstUnreadChapter(a); + }, [chapters]); + + const ResumeFab = () => (firstUnreadChapter === undefined ? null + : ( + + + {firstUnreadChapter.index === 1 ? 'Start' : 'Resume' } + + )); + return (
    - +
    ); } diff --git a/src/typings.d.ts b/src/typings.d.ts index 77aaeb9d..5913ed63 100644 --- a/src/typings.d.ts +++ b/src/typings.d.ts @@ -70,6 +70,7 @@ interface IChapter { read: boolean bookmarked: boolean lastPageRead: number + lastReadAt: number index: number fetchedAt: number chapterCount: number