diff --git a/src/components/library/LibraryMangaGrid.tsx b/src/components/library/LibraryMangaGrid.tsx index 93d47eb6..f733f0e8 100644 --- a/src/components/library/LibraryMangaGrid.tsx +++ b/src/components/library/LibraryMangaGrid.tsx @@ -70,6 +70,8 @@ const sortByTitle = (a: IMangaCard, b: IMangaCard): number => a.title.localeComp const sortByDateAdded = (a: IMangaCard, b: IMangaCard): number => a.inLibraryAt - b.inLibraryAt; +const sortByLastRead = (a: IMangaCard, b: IMangaCard): number => b.lastReadAt - a.lastReadAt; + const sortManga = ( manga: IMangaCard[], sort: NullAndUndefined, @@ -87,6 +89,9 @@ const sortManga = ( case 'sortToRead': result.sort(sortByUnread); break; + case 'sortLastRead': + result.sort(sortByLastRead); + break; default: break; } diff --git a/src/components/library/LibraryOptionsPanel.tsx b/src/components/library/LibraryOptionsPanel.tsx index a2ee0f24..d3e206ba 100644 --- a/src/components/library/LibraryOptionsPanel.tsx +++ b/src/components/library/LibraryOptionsPanel.tsx @@ -25,6 +25,7 @@ const SORT_OPTIONS: [LibrarySortMode, string][] = [ ['sortToRead', 'By Unread chapters'], ['sortAlph', 'Alphabetically'], ['sortDateAdded', 'Date Added'], + ['sortLastRead', 'Last Read'], ]; interface IProps { diff --git a/src/screens/Reader.tsx b/src/screens/Reader.tsx index f6173279..708f48bb 100644 --- a/src/screens/Reader.tsx +++ b/src/screens/Reader.tsx @@ -73,6 +73,7 @@ export default function Reader() { thumbnailUrl: '', genre: [], inLibraryAt: 0, + lastReadAt: 0, }); const [chapter, setChapter] = useState(initialChapter()); const [curPage, setCurPage] = useState(0); diff --git a/src/screens/SourceMangas.tsx b/src/screens/SourceMangas.tsx index eb05635e..7c70dc2d 100644 --- a/src/screens/SourceMangas.tsx +++ b/src/screens/SourceMangas.tsx @@ -205,6 +205,7 @@ export default function SourceMangas(props: { popular: boolean }) { inLibrary: it.inLibrary, genre: it.genre, inLibraryAt: it.inLibraryAt, + lastReadAt: it.lastReadAt, })), ]); setHasNextPage(data.hasNextPage); diff --git a/src/typings.ts b/src/typings.ts index 6054737b..96e2e182 100644 --- a/src/typings.ts +++ b/src/typings.ts @@ -99,6 +99,7 @@ export interface IMangaCard { inLibrary?: boolean; meta?: IMetadata; inLibraryAt: number; + lastReadAt: number; } export interface IManga { @@ -331,7 +332,7 @@ export type ChapterOptionsReducerAction = | { type: 'sortReverse' } | { type: 'showChapterNumber' }; -export type LibrarySortMode = 'sortToRead' | 'sortAlph' | 'sortDateAdded'; +export type LibrarySortMode = 'sortToRead' | 'sortAlph' | 'sortDateAdded' | 'sortLastRead'; enum GridLayout { Compact = 0,