From 2f9431f6e6a2750a0f4e6327c046020f19c910f4 Mon Sep 17 00:00:00 2001 From: Atte149 Date: Mon, 15 Jun 2026 21:41:04 +0300 Subject: [PATCH] Phase 4b: remote use cases (FetchLibraries, FetchBooks, SearchBooks) --- .../use_case/remote/FetchBooksUseCase.kt | 20 +++++++++++++++++ .../use_case/remote/FetchLibrariesUseCase.kt | 19 ++++++++++++++++ .../use_case/remote/SearchBooksUseCase.kt | 22 +++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 app/src/main/java/org/dueattendant149/bookshelf/domain/use_case/remote/FetchBooksUseCase.kt create mode 100644 app/src/main/java/org/dueattendant149/bookshelf/domain/use_case/remote/FetchLibrariesUseCase.kt create mode 100644 app/src/main/java/org/dueattendant149/bookshelf/domain/use_case/remote/SearchBooksUseCase.kt diff --git a/app/src/main/java/org/dueattendant149/bookshelf/domain/use_case/remote/FetchBooksUseCase.kt b/app/src/main/java/org/dueattendant149/bookshelf/domain/use_case/remote/FetchBooksUseCase.kt new file mode 100644 index 00000000..87117a02 --- /dev/null +++ b/app/src/main/java/org/dueattendant149/bookshelf/domain/use_case/remote/FetchBooksUseCase.kt @@ -0,0 +1,20 @@ +/* + * Book's Story — free and open-source Material You eBook reader. + * Copyright (C) 2024-2026 Acclorite + * SPDX-License-Identifier: GPL-3.0-only + */ + +package org.dueattendant149.bookshelf.domain.use_case.remote + +import org.dueattendant149.bookshelf.domain.model.library.Book +import org.dueattendant149.bookshelf.domain.repository.RemoteLibraryRepository +import javax.inject.Inject + +class FetchBooksUseCase + @Inject + constructor( + private val repository: RemoteLibraryRepository, + ) { + suspend operator fun invoke(libraryId: String): Result> = + repository.getBooks(libraryId) + } diff --git a/app/src/main/java/org/dueattendant149/bookshelf/domain/use_case/remote/FetchLibrariesUseCase.kt b/app/src/main/java/org/dueattendant149/bookshelf/domain/use_case/remote/FetchLibrariesUseCase.kt new file mode 100644 index 00000000..bd828cfc --- /dev/null +++ b/app/src/main/java/org/dueattendant149/bookshelf/domain/use_case/remote/FetchLibrariesUseCase.kt @@ -0,0 +1,19 @@ +/* + * Book's Story — free and open-source Material You eBook reader. + * Copyright (C) 2024-2026 Acclorite + * SPDX-License-Identifier: GPL-3.0-only + */ + +package org.dueattendant149.bookshelf.domain.use_case.remote + +import org.dueattendant149.bookshelf.domain.model.remote.RemoteLibrary +import org.dueattendant149.bookshelf.domain.repository.RemoteLibraryRepository +import javax.inject.Inject + +class FetchLibrariesUseCase + @Inject + constructor( + private val repository: RemoteLibraryRepository, + ) { + suspend operator fun invoke(): Result> = repository.getLibraries() + } diff --git a/app/src/main/java/org/dueattendant149/bookshelf/domain/use_case/remote/SearchBooksUseCase.kt b/app/src/main/java/org/dueattendant149/bookshelf/domain/use_case/remote/SearchBooksUseCase.kt new file mode 100644 index 00000000..145592ac --- /dev/null +++ b/app/src/main/java/org/dueattendant149/bookshelf/domain/use_case/remote/SearchBooksUseCase.kt @@ -0,0 +1,22 @@ +/* + * Book's Story — free and open-source Material You eBook reader. + * Copyright (C) 2024-2026 Acclorite + * SPDX-License-Identifier: GPL-3.0-only + */ + +package org.dueattendant149.bookshelf.domain.use_case.remote + +import org.dueattendant149.bookshelf.domain.model.library.Book +import org.dueattendant149.bookshelf.domain.repository.RemoteLibraryRepository +import javax.inject.Inject + +class SearchBooksUseCase + @Inject + constructor( + private val repository: RemoteLibraryRepository, + ) { + suspend operator fun invoke( + libraryId: String, + query: String, + ): Result> = repository.searchLibrary(libraryId, query) + }