diff --git a/komga-webui/src/locales/en.json b/komga-webui/src/locales/en.json index a591b804..9758d253 100644 --- a/komga-webui/src/locales/en.json +++ b/komga-webui/src/locales/en.json @@ -213,6 +213,7 @@ "on_deck": "On Deck", "recently_added_books": "Recently Added Books", "recently_added_series": "Recently Added Series", + "recently_released_books": "Recently Released Books", "recently_updated_series": "Recently Updated Series" }, "data_import": { diff --git a/komga-webui/src/services/komga-books.service.ts b/komga-webui/src/services/komga-books.service.ts index 416f394c..06766607 100644 --- a/komga-webui/src/services/komga-books.service.ts +++ b/komga-webui/src/services/komga-books.service.ts @@ -1,5 +1,6 @@ import {AxiosInstance} from 'axios' import {BookDto, BookImportBatchDto, BookMetadataUpdateDto, PageDto, ReadProgressUpdateDto} from '@/types/komga-books' +import {formatISO} from "date-fns"; const qs = require('qs') @@ -8,13 +9,13 @@ const API_BOOKS = '/api/v1/books' export default class KomgaBooksService { private http: AxiosInstance; - constructor (http: AxiosInstance) { + constructor(http: AxiosInstance) { this.http = http } - async getBooks (libraryId?: string, pageRequest?: PageRequest, search?: string, mediaStatus?: string[], readStatus?: string[]): Promise> { + async getBooks(libraryId?: string, pageRequest?: PageRequest, search?: string, mediaStatus?: string[], readStatus?: string[], releasedAfter?: Date): Promise> { try { - const params = { ...pageRequest } as any + const params = {...pageRequest} as any if (libraryId) { params.library_id = libraryId } @@ -27,9 +28,12 @@ export default class KomgaBooksService { if (readStatus) { params.read_status = readStatus } + if (releasedAfter) { + params.released_after = formatISO(releasedAfter, { representation: 'date' }) + } return (await this.http.get(API_BOOKS, { params: params, - paramsSerializer: params => qs.stringify(params, { indices: false }), + paramsSerializer: params => qs.stringify(params, {indices: false}), })).data } catch (e) { let msg = 'An error occurred while trying to retrieve books' @@ -40,9 +44,9 @@ export default class KomgaBooksService { } } - async getBooksOnDeck (libraryId?: string, pageRequest?: PageRequest): Promise> { + async getBooksOnDeck(libraryId?: string, pageRequest?: PageRequest): Promise> { try { - const params = { ...pageRequest } as any + const params = {...pageRequest} as any if (libraryId) { params.library_id = libraryId } @@ -58,7 +62,7 @@ export default class KomgaBooksService { } } - async getBook (bookId: string): Promise { + async getBook(bookId: string): Promise { try { return (await this.http.get(`${API_BOOKS}/${bookId}`)).data } catch (e) { @@ -70,7 +74,7 @@ export default class KomgaBooksService { } } - async getBookSiblingNext (bookId: string): Promise { + async getBookSiblingNext(bookId: string): Promise { try { return (await this.http.get(`${API_BOOKS}/${bookId}/next`)).data } catch (e) { @@ -82,7 +86,7 @@ export default class KomgaBooksService { } } - async getBookSiblingPrevious (bookId: string): Promise { + async getBookSiblingPrevious(bookId: string): Promise { try { return (await this.http.get(`${API_BOOKS}/${bookId}/previous`)).data } catch (e) { @@ -94,7 +98,7 @@ export default class KomgaBooksService { } } - async getBookPages (bookId: string): Promise { + async getBookPages(bookId: string): Promise { try { return (await this.http.get(`${API_BOOKS}/${bookId}/pages`)).data } catch (e) { @@ -106,7 +110,7 @@ export default class KomgaBooksService { } } - async getReadLists (bookId: string): Promise { + async getReadLists(bookId: string): Promise { try { return (await this.http.get(`${API_BOOKS}/${bookId}/readlists`)).data } catch (e) { @@ -118,7 +122,7 @@ export default class KomgaBooksService { } } - async analyzeBook (book: BookDto) { + async analyzeBook(book: BookDto) { try { await this.http.post(`${API_BOOKS}/${book.id}/analyze`) } catch (e) { @@ -130,7 +134,7 @@ export default class KomgaBooksService { } } - async refreshMetadata (book: BookDto) { + async refreshMetadata(book: BookDto) { try { await this.http.post(`${API_BOOKS}/${book.id}/metadata/refresh`) } catch (e) { @@ -142,7 +146,7 @@ export default class KomgaBooksService { } } - async updateMetadata (bookId: string, metadata: BookMetadataUpdateDto) { + async updateMetadata(bookId: string, metadata: BookMetadataUpdateDto) { try { await this.http.patch(`${API_BOOKS}/${bookId}/metadata`, metadata) } catch (e) { @@ -154,7 +158,7 @@ export default class KomgaBooksService { } } - async updateReadProgress (bookId: string, readProgress: ReadProgressUpdateDto) { + async updateReadProgress(bookId: string, readProgress: ReadProgressUpdateDto) { try { await this.http.patch(`${API_BOOKS}/${bookId}/read-progress`, readProgress) } catch (e) { @@ -166,7 +170,7 @@ export default class KomgaBooksService { } } - async deleteReadProgress (bookId: string) { + async deleteReadProgress(bookId: string) { try { await this.http.delete(`${API_BOOKS}/${bookId}/read-progress`) } catch (e) { diff --git a/komga-webui/src/views/Dashboard.vue b/komga-webui/src/views/Dashboard.vue index 8d441f91..28e6f178 100644 --- a/komga-webui/src/views/Dashboard.vue +++ b/komga-webui/src/views/Dashboard.vue @@ -78,6 +78,21 @@ + + + + +