From 2334e9c3ecfd8364af7b7ef999307fbae3c8bd8c Mon Sep 17 00:00:00 2001 From: Acclorite <140836141+Acclorite@users.noreply.github.com> Date: Fri, 20 Sep 2024 17:02:20 +0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=9B=A0=EF=B8=8F=20Add=20ParseText=20funct?= =?UTF-8?q?ion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Parses text --- .../data/repository/BookRepositoryImpl.kt | 11 +++++++++++ .../book_story/domain/repository/BookRepository.kt | 4 ++++ .../book_story/domain/use_case/ParseText.kt | 14 ++++++++++++++ 3 files changed, 29 insertions(+) create mode 100644 app/src/main/java/ua/acclorite/book_story/domain/use_case/ParseText.kt diff --git a/app/src/main/java/ua/acclorite/book_story/data/repository/BookRepositoryImpl.kt b/app/src/main/java/ua/acclorite/book_story/data/repository/BookRepositoryImpl.kt index 9955d031..005d0c91 100644 --- a/app/src/main/java/ua/acclorite/book_story/data/repository/BookRepositoryImpl.kt +++ b/app/src/main/java/ua/acclorite/book_story/data/repository/BookRepositoryImpl.kt @@ -28,6 +28,7 @@ import ua.acclorite.book_story.data.remote.dto.LatestReleaseInfo import ua.acclorite.book_story.domain.model.Book import ua.acclorite.book_story.domain.model.BookWithText import ua.acclorite.book_story.domain.model.BookWithTextAndCover +import ua.acclorite.book_story.domain.model.ChapterWithText import ua.acclorite.book_story.domain.model.ColorPreset import ua.acclorite.book_story.domain.model.History import ua.acclorite.book_story.domain.model.NullableBook @@ -699,6 +700,16 @@ class BookRepositoryImpl @Inject constructor( ) } + /** + * Parse text from given [file]. + * May give [Resource.Error] if something went wrong. + * + * @param file File to parse. Should be one of supported file formats. + */ + override suspend fun parseText(file: File): Resource> { + return textParser.parse(file) + } + /** * Insert history in database. */ diff --git a/app/src/main/java/ua/acclorite/book_story/domain/repository/BookRepository.kt b/app/src/main/java/ua/acclorite/book_story/domain/repository/BookRepository.kt index 1f799b81..c703106e 100644 --- a/app/src/main/java/ua/acclorite/book_story/domain/repository/BookRepository.kt +++ b/app/src/main/java/ua/acclorite/book_story/domain/repository/BookRepository.kt @@ -5,11 +5,13 @@ import ua.acclorite.book_story.data.remote.dto.LatestReleaseInfo import ua.acclorite.book_story.domain.model.Book import ua.acclorite.book_story.domain.model.BookWithText import ua.acclorite.book_story.domain.model.BookWithTextAndCover +import ua.acclorite.book_story.domain.model.ChapterWithText import ua.acclorite.book_story.domain.model.ColorPreset import ua.acclorite.book_story.domain.model.History import ua.acclorite.book_story.domain.model.NullableBook import ua.acclorite.book_story.domain.model.SelectableFile import ua.acclorite.book_story.domain.util.CoverImage +import ua.acclorite.book_story.domain.util.Resource import ua.acclorite.book_story.presentation.data.MainState import java.io.File @@ -77,6 +79,8 @@ interface BookRepository { suspend fun getBookFromFile( file: File ): NullableBook + + suspend fun parseText(file: File): Resource> /* - - - - - - - - - - - - - - - - - - - - - - */ diff --git a/app/src/main/java/ua/acclorite/book_story/domain/use_case/ParseText.kt b/app/src/main/java/ua/acclorite/book_story/domain/use_case/ParseText.kt new file mode 100644 index 00000000..38d9cad6 --- /dev/null +++ b/app/src/main/java/ua/acclorite/book_story/domain/use_case/ParseText.kt @@ -0,0 +1,14 @@ +package ua.acclorite.book_story.domain.use_case + +import ua.acclorite.book_story.domain.model.ChapterWithText +import ua.acclorite.book_story.domain.repository.BookRepository +import ua.acclorite.book_story.domain.util.Resource +import java.io.File +import javax.inject.Inject + +class ParseText @Inject constructor(private val repository: BookRepository) { + + suspend fun execute(file: File): Resource> { + return repository.parseText(file) + } +} \ No newline at end of file