refactor(domain): refactor domain layer

This commit is contained in:
Acclorite 2025-05-03 11:50:47 +03:00
parent 291ceb8de8
commit 7bb9990606
No known key found for this signature in database
GPG key ID: 6E54C611F6EE8593
405 changed files with 1040 additions and 1050 deletions

View file

@ -4,7 +4,7 @@
* SPDX-License-Identifier: GPL-3.0-only
*/
package ua.acclorite.book_story.domain.util
package ua.acclorite.book_story.core
import android.graphics.Bitmap

View file

@ -4,7 +4,7 @@
* SPDX-License-Identifier: GPL-3.0-only
*/
package ua.acclorite.book_story.domain.ui
package ua.acclorite.book_story.core.ui
import android.content.Context
import android.os.Parcelable

View file

@ -8,7 +8,7 @@ package ua.acclorite.book_story.data.local.dto
import androidx.room.Entity
import androidx.room.PrimaryKey
import ua.acclorite.book_story.domain.library.display.LibrarySortOrder
import ua.acclorite.book_story.ui.library.model.LibrarySortOrder
@Entity
data class CategorySortEntity(

View file

@ -7,7 +7,7 @@
package ua.acclorite.book_story.data.mapper.book
import ua.acclorite.book_story.data.local.dto.BookEntity
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.library.Book
interface BookMapper {
suspend fun toBookEntity(book: Book): BookEntity

View file

@ -8,9 +8,9 @@ package ua.acclorite.book_story.data.mapper.book
import androidx.core.net.toUri
import ua.acclorite.book_story.R
import ua.acclorite.book_story.core.ui.UIText
import ua.acclorite.book_story.data.local.dto.BookEntity
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.ui.UIText
import ua.acclorite.book_story.domain.library.Book
import javax.inject.Inject
class BookMapperImpl @Inject constructor() : BookMapper {

View file

@ -7,7 +7,7 @@
package ua.acclorite.book_story.data.mapper.category
import ua.acclorite.book_story.data.local.dto.CategoryEntity
import ua.acclorite.book_story.domain.library.category.Category
import ua.acclorite.book_story.domain.library.Category
interface CategoryMapper {
suspend fun toCategoryEntity(category: Category): CategoryEntity

View file

@ -7,7 +7,7 @@
package ua.acclorite.book_story.data.mapper.category
import ua.acclorite.book_story.data.local.dto.CategoryEntity
import ua.acclorite.book_story.domain.library.category.Category
import ua.acclorite.book_story.domain.library.Category
import javax.inject.Inject
class CategoryMapperImpl @Inject constructor() : CategoryMapper {

View file

@ -7,7 +7,7 @@
package ua.acclorite.book_story.data.mapper.category_sort
import ua.acclorite.book_story.data.local.dto.CategorySortEntity
import ua.acclorite.book_story.domain.library.category.CategorySort
import ua.acclorite.book_story.domain.library.CategorySort
interface CategorySortMapper {
suspend fun toCategorySortEntity(categorySort: CategorySort): CategorySortEntity

View file

@ -7,7 +7,7 @@
package ua.acclorite.book_story.data.mapper.category_sort
import ua.acclorite.book_story.data.local.dto.CategorySortEntity
import ua.acclorite.book_story.domain.library.category.CategorySort
import ua.acclorite.book_story.domain.library.CategorySort
import javax.inject.Inject
class CategorySortSortMapperImpl @Inject constructor() : CategorySortMapper {

View file

@ -4,10 +4,11 @@
* SPDX-License-Identifier: GPL-3.0-only
*/
package ua.acclorite.book_story.domain.library.book
package ua.acclorite.book_story.data.model.common
import androidx.compose.runtime.Immutable
import ua.acclorite.book_story.domain.ui.UIText
import ua.acclorite.book_story.core.ui.UIText
import ua.acclorite.book_story.data.model.library.BookWithCover
@Immutable
sealed class NullableBook(

View file

@ -4,7 +4,7 @@
* SPDX-License-Identifier: GPL-3.0-only
*/
package ua.acclorite.book_story.domain.file
package ua.acclorite.book_story.data.model.file
import android.content.Context
import android.net.Uri
@ -168,7 +168,7 @@ class CachedFile(
}
/**
* Copies the file to [context].cacheDir and provides [java.io.File].
* Copies the file to [context].cacheDir and provides [File].
*
* @return null if the file is directory or failed
*/

View file

@ -4,7 +4,7 @@
* SPDX-License-Identifier: GPL-3.0-only
*/
package ua.acclorite.book_story.domain.file
package ua.acclorite.book_story.data.model.file
import androidx.compose.runtime.Immutable

View file

@ -4,7 +4,7 @@
* SPDX-License-Identifier: GPL-3.0-only
*/
package ua.acclorite.book_story.domain.file
package ua.acclorite.book_story.data.model.file
import android.content.Context
import android.net.Uri

View file

@ -4,10 +4,11 @@
* SPDX-License-Identifier: GPL-3.0-only
*/
package ua.acclorite.book_story.domain.library.book
package ua.acclorite.book_story.data.model.library
import androidx.compose.runtime.Immutable
import ua.acclorite.book_story.domain.util.CoverImage
import ua.acclorite.book_story.core.CoverImage
import ua.acclorite.book_story.domain.library.Book
@Immutable
data class BookWithCover(

View file

@ -12,9 +12,9 @@ import androidx.compose.ui.graphics.asImageBitmap
import kotlinx.coroutines.yield
import org.jsoup.nodes.Document
import ua.acclorite.book_story.domain.reader.ReaderText
import ua.acclorite.book_story.presentation.core.util.clearAllMarkdown
import ua.acclorite.book_story.presentation.core.util.clearMarkdown
import ua.acclorite.book_story.presentation.core.util.containsVisibleText
import ua.acclorite.book_story.presentation.common.util.clearAllMarkdown
import ua.acclorite.book_story.presentation.common.util.clearMarkdown
import ua.acclorite.book_story.presentation.common.util.containsVisibleText
import java.io.File
import java.util.zip.ZipEntry
import java.util.zip.ZipFile

View file

@ -6,8 +6,8 @@
package ua.acclorite.book_story.data.parser
import ua.acclorite.book_story.domain.file.CachedFile
import ua.acclorite.book_story.domain.library.book.BookWithCover
import ua.acclorite.book_story.data.model.file.CachedFile
import ua.acclorite.book_story.data.model.library.BookWithCover
interface FileParser {

View file

@ -7,13 +7,13 @@
package ua.acclorite.book_story.data.parser
import android.util.Log
import ua.acclorite.book_story.data.model.file.CachedFile
import ua.acclorite.book_story.data.model.library.BookWithCover
import ua.acclorite.book_story.data.parser.epub.EpubFileParser
import ua.acclorite.book_story.data.parser.fb2.Fb2FileParser
import ua.acclorite.book_story.data.parser.html.HtmlFileParser
import ua.acclorite.book_story.data.parser.pdf.PdfFileParser
import ua.acclorite.book_story.data.parser.txt.TxtFileParser
import ua.acclorite.book_story.domain.file.CachedFile
import ua.acclorite.book_story.domain.library.book.BookWithCover
import javax.inject.Inject
private const val FILE_PARSER = "File Parser"

View file

@ -23,7 +23,7 @@ import org.commonmark.node.Node
import org.commonmark.node.StrongEmphasis
import org.commonmark.node.Text
import org.commonmark.parser.Parser
import ua.acclorite.book_story.presentation.core.util.clearMarkdown
import ua.acclorite.book_story.presentation.common.util.clearMarkdown
import javax.inject.Inject
class MarkdownParser @Inject constructor(

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.data.parser
import ua.acclorite.book_story.domain.file.CachedFile
import ua.acclorite.book_story.data.model.file.CachedFile
import ua.acclorite.book_story.domain.reader.ReaderText
interface TextParser {

View file

@ -9,12 +9,12 @@ package ua.acclorite.book_story.data.parser
import android.util.Log
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import ua.acclorite.book_story.data.model.file.CachedFile
import ua.acclorite.book_story.data.parser.epub.EpubTextParser
import ua.acclorite.book_story.data.parser.html.HtmlTextParser
import ua.acclorite.book_story.data.parser.pdf.PdfTextParser
import ua.acclorite.book_story.data.parser.txt.TxtTextParser
import ua.acclorite.book_story.data.parser.xml.XmlTextParser
import ua.acclorite.book_story.domain.file.CachedFile
import ua.acclorite.book_story.domain.reader.ReaderText
import javax.inject.Inject

View file

@ -12,11 +12,11 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.jsoup.Jsoup
import ua.acclorite.book_story.R
import ua.acclorite.book_story.core.ui.UIText
import ua.acclorite.book_story.data.model.file.CachedFile
import ua.acclorite.book_story.data.model.library.BookWithCover
import ua.acclorite.book_story.data.parser.FileParser
import ua.acclorite.book_story.domain.file.CachedFile
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.library.book.BookWithCover
import ua.acclorite.book_story.domain.ui.UIText
import ua.acclorite.book_story.domain.library.Book
import java.io.File
import java.util.zip.ZipFile
import javax.inject.Inject

View file

@ -17,13 +17,13 @@ import kotlinx.coroutines.awaitAll
import kotlinx.coroutines.withContext
import kotlinx.coroutines.yield
import org.jsoup.Jsoup
import ua.acclorite.book_story.data.model.file.CachedFile
import ua.acclorite.book_story.data.parser.DocumentParser
import ua.acclorite.book_story.data.parser.TextParser
import ua.acclorite.book_story.domain.file.CachedFile
import ua.acclorite.book_story.domain.reader.ReaderText
import ua.acclorite.book_story.presentation.core.constants.provideImageExtensions
import ua.acclorite.book_story.presentation.core.util.addAll
import ua.acclorite.book_story.presentation.core.util.containsVisibleText
import ua.acclorite.book_story.presentation.common.constants.provideImageExtensions
import ua.acclorite.book_story.presentation.common.util.addAll
import ua.acclorite.book_story.presentation.common.util.containsVisibleText
import java.io.File
import java.util.concurrent.ConcurrentLinkedQueue
import java.util.zip.ZipEntry

View file

@ -9,11 +9,11 @@ package ua.acclorite.book_story.data.parser.fb2
import org.jsoup.Jsoup
import org.jsoup.parser.Parser
import ua.acclorite.book_story.R
import ua.acclorite.book_story.core.ui.UIText
import ua.acclorite.book_story.data.model.file.CachedFile
import ua.acclorite.book_story.data.model.library.BookWithCover
import ua.acclorite.book_story.data.parser.FileParser
import ua.acclorite.book_story.domain.file.CachedFile
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.library.book.BookWithCover
import ua.acclorite.book_story.domain.ui.UIText
import ua.acclorite.book_story.domain.library.Book
import javax.inject.Inject
class Fb2FileParser @Inject constructor() : FileParser {

View file

@ -9,11 +9,11 @@ package ua.acclorite.book_story.data.parser.html
import org.jsoup.Jsoup
import org.jsoup.parser.Parser
import ua.acclorite.book_story.R
import ua.acclorite.book_story.core.ui.UIText
import ua.acclorite.book_story.data.model.file.CachedFile
import ua.acclorite.book_story.data.model.library.BookWithCover
import ua.acclorite.book_story.data.parser.FileParser
import ua.acclorite.book_story.domain.file.CachedFile
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.library.book.BookWithCover
import ua.acclorite.book_story.domain.ui.UIText
import ua.acclorite.book_story.domain.library.Book
import javax.inject.Inject
class HtmlFileParser @Inject constructor() : FileParser {

View file

@ -10,9 +10,9 @@ import android.util.Log
import kotlinx.coroutines.yield
import org.jsoup.Jsoup
import org.jsoup.parser.Parser
import ua.acclorite.book_story.data.model.file.CachedFile
import ua.acclorite.book_story.data.parser.DocumentParser
import ua.acclorite.book_story.data.parser.TextParser
import ua.acclorite.book_story.domain.file.CachedFile
import ua.acclorite.book_story.domain.reader.ReaderText
import javax.inject.Inject

View file

@ -10,11 +10,11 @@ import android.app.Application
import com.tom_roush.pdfbox.android.PDFBoxResourceLoader
import com.tom_roush.pdfbox.pdmodel.PDDocument
import ua.acclorite.book_story.R
import ua.acclorite.book_story.core.ui.UIText
import ua.acclorite.book_story.data.model.file.CachedFile
import ua.acclorite.book_story.data.model.library.BookWithCover
import ua.acclorite.book_story.data.parser.FileParser
import ua.acclorite.book_story.domain.file.CachedFile
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.library.book.BookWithCover
import ua.acclorite.book_story.domain.ui.UIText
import ua.acclorite.book_story.domain.library.Book
import javax.inject.Inject
class PdfFileParser @Inject constructor(

View file

@ -12,11 +12,11 @@ import com.tom_roush.pdfbox.android.PDFBoxResourceLoader
import com.tom_roush.pdfbox.pdmodel.PDDocument
import com.tom_roush.pdfbox.text.PDFTextStripper
import kotlinx.coroutines.yield
import ua.acclorite.book_story.data.model.file.CachedFile
import ua.acclorite.book_story.data.parser.MarkdownParser
import ua.acclorite.book_story.data.parser.TextParser
import ua.acclorite.book_story.domain.file.CachedFile
import ua.acclorite.book_story.domain.reader.ReaderText
import ua.acclorite.book_story.presentation.core.util.clearAllMarkdown
import ua.acclorite.book_story.presentation.common.util.clearAllMarkdown
import javax.inject.Inject
private const val PDF_TAG = "PDF Parser"

View file

@ -7,11 +7,11 @@
package ua.acclorite.book_story.data.parser.txt
import ua.acclorite.book_story.R
import ua.acclorite.book_story.core.ui.UIText
import ua.acclorite.book_story.data.model.file.CachedFile
import ua.acclorite.book_story.data.model.library.BookWithCover
import ua.acclorite.book_story.data.parser.FileParser
import ua.acclorite.book_story.domain.file.CachedFile
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.library.book.BookWithCover
import ua.acclorite.book_story.domain.ui.UIText
import ua.acclorite.book_story.domain.library.Book
import javax.inject.Inject
class TxtFileParser @Inject constructor() : FileParser {

View file

@ -10,11 +10,11 @@ import android.util.Log
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import kotlinx.coroutines.yield
import ua.acclorite.book_story.data.model.file.CachedFile
import ua.acclorite.book_story.data.parser.MarkdownParser
import ua.acclorite.book_story.data.parser.TextParser
import ua.acclorite.book_story.domain.file.CachedFile
import ua.acclorite.book_story.domain.reader.ReaderText
import ua.acclorite.book_story.presentation.core.util.clearAllMarkdown
import ua.acclorite.book_story.presentation.common.util.clearAllMarkdown
import javax.inject.Inject
private const val TXT_TAG = "TXT Parser"

View file

@ -10,9 +10,9 @@ import android.util.Log
import kotlinx.coroutines.yield
import org.jsoup.Jsoup
import org.jsoup.parser.Parser
import ua.acclorite.book_story.data.model.file.CachedFile
import ua.acclorite.book_story.data.parser.DocumentParser
import ua.acclorite.book_story.data.parser.TextParser
import ua.acclorite.book_story.domain.file.CachedFile
import ua.acclorite.book_story.domain.reader.ReaderText
import javax.inject.Inject

View file

@ -15,16 +15,16 @@ import android.util.Log
import androidx.core.net.toUri
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import ua.acclorite.book_story.core.CoverImage
import ua.acclorite.book_story.data.local.room.BookDao
import ua.acclorite.book_story.data.mapper.book.BookMapper
import ua.acclorite.book_story.data.model.file.CachedFileCompat
import ua.acclorite.book_story.data.model.library.BookWithCover
import ua.acclorite.book_story.data.parser.FileParser
import ua.acclorite.book_story.data.parser.TextParser
import ua.acclorite.book_story.domain.file.CachedFileCompat
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.library.book.BookWithCover
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.domain.reader.ReaderText
import ua.acclorite.book_story.domain.repository.BookRepository
import ua.acclorite.book_story.domain.util.CoverImage
import java.io.BufferedOutputStream
import java.io.ByteArrayOutputStream
import java.io.File

View file

@ -9,8 +9,8 @@ package ua.acclorite.book_story.data.repository
import ua.acclorite.book_story.data.local.room.BookDao
import ua.acclorite.book_story.data.mapper.category.CategoryMapper
import ua.acclorite.book_story.data.mapper.category_sort.CategorySortMapper
import ua.acclorite.book_story.domain.library.category.Category
import ua.acclorite.book_story.domain.library.category.CategorySort
import ua.acclorite.book_story.domain.library.Category
import ua.acclorite.book_story.domain.library.CategorySort
import ua.acclorite.book_story.domain.repository.CategoryRepository
import javax.inject.Inject
import javax.inject.Singleton

View file

@ -9,17 +9,17 @@ package ua.acclorite.book_story.data.repository
import android.app.Application
import android.util.Log
import ua.acclorite.book_story.R
import ua.acclorite.book_story.core.ui.UIText
import ua.acclorite.book_story.data.local.room.BookDao
import ua.acclorite.book_story.data.model.common.NullableBook
import ua.acclorite.book_story.data.model.common.NullableBook.NotNull
import ua.acclorite.book_story.data.model.common.NullableBook.Null
import ua.acclorite.book_story.data.model.file.CachedFile
import ua.acclorite.book_story.data.model.file.CachedFileCompat
import ua.acclorite.book_story.data.parser.FileParser
import ua.acclorite.book_story.domain.browse.file.SelectableFile
import ua.acclorite.book_story.domain.file.CachedFile
import ua.acclorite.book_story.domain.file.CachedFileCompat
import ua.acclorite.book_story.domain.library.book.NullableBook
import ua.acclorite.book_story.domain.library.book.NullableBook.NotNull
import ua.acclorite.book_story.domain.library.book.NullableBook.Null
import ua.acclorite.book_story.domain.file.File
import ua.acclorite.book_story.domain.repository.FileSystemRepository
import ua.acclorite.book_story.domain.ui.UIText
import ua.acclorite.book_story.presentation.core.constants.provideExtensions
import ua.acclorite.book_story.presentation.common.constants.provideExtensions
import java.util.UUID
import javax.inject.Inject
import javax.inject.Singleton
@ -42,7 +42,7 @@ class FileSystemRepositoryImpl @Inject constructor(
* Gets all matching files from device.
* Filters by [query] and sorts out not supported file formats and already added files.
*/
override suspend fun getFiles(query: String): List<SelectableFile> {
override suspend fun getFiles(query: String): List<File> {
Log.i(GET_FILES, "Getting files from device, query: \"$query\".")
val existingPaths = database
@ -74,21 +74,25 @@ class FileSystemRepositoryImpl @Inject constructor(
return true
}
fun CachedFile.getSelectableFilesFromStorage(): List<SelectableFile> {
val selectableFiles = mutableListOf<SelectableFile>()
fun CachedFile.getSelectableFilesFromStorage(): List<File> {
val files = mutableListOf<File>()
walk { file ->
if (!file.isValid()) return@walk
selectableFiles.add(
SelectableFile(
data = file,
selected = false
files.add(
File(
name = file.name,
uri = file.uri,
path = file.path,
size = file.size,
lastModified = file.lastModified,
isDirectory = file.isDirectory
)
)
}
return selectableFiles
return files
}
fun getAllStorages(): List<CachedFile> {
@ -119,7 +123,7 @@ class FileSystemRepositoryImpl @Inject constructor(
return try {
val storages = getAllStorages()
val files = mutableListOf<SelectableFile>()
val files = mutableListOf<File>()
for (storage in storages) {
files.addAll(storage.getSelectableFilesFromStorage())
@ -138,7 +142,19 @@ class FileSystemRepositoryImpl @Inject constructor(
/**
* Gets book from given file. If error happened, returns [NullableBook.Null].
*/
override suspend fun getBookFromFile(cachedFile: CachedFile): NullableBook {
override suspend fun getBookFromFile(file: File): NullableBook {
val cachedFile = CachedFileCompat.fromUri(
context = application,
uri = file.uri,
builder = CachedFileCompat.build(
name = file.name,
path = file.path,
size = file.size,
lastModified = file.lastModified,
isDirectory = file.isDirectory
)
)
val parsedBook = fileParser.parse(cachedFile)
if (parsedBook == null) {
Log.e(GET_BOOK_FROM_FILE, "Parsed file(${cachedFile.name}) is null.")

View file

@ -0,0 +1,20 @@
/*
* Book's Story free and open-source Material You eBook reader.
* Copyright (C) 2024-2025 Acclorite
* SPDX-License-Identifier: GPL-3.0-only
*/
package ua.acclorite.book_story.domain.file
import android.net.Uri
import androidx.compose.runtime.Immutable
@Immutable
data class File(
val name: String,
val uri: Uri,
val path: String,
val size: Long,
val lastModified: Long,
val isDirectory: Boolean
)

View file

@ -7,7 +7,7 @@
package ua.acclorite.book_story.domain.history
import androidx.compose.runtime.Immutable
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.library.Book
@Immutable
data class History(

View file

@ -4,13 +4,13 @@
* SPDX-License-Identifier: GPL-3.0-only
*/
package ua.acclorite.book_story.domain.library.book
package ua.acclorite.book_story.domain.library
import android.net.Uri
import android.os.Parcelable
import androidx.compose.runtime.Immutable
import kotlinx.parcelize.Parcelize
import ua.acclorite.book_story.domain.ui.UIText
import ua.acclorite.book_story.core.ui.UIText
@Parcelize
@Immutable

View file

@ -4,7 +4,7 @@
* SPDX-License-Identifier: GPL-3.0-only
*/
package ua.acclorite.book_story.domain.library.category
package ua.acclorite.book_story.domain.library
import androidx.compose.runtime.Immutable

View file

@ -4,10 +4,10 @@
* SPDX-License-Identifier: GPL-3.0-only
*/
package ua.acclorite.book_story.domain.library.category
package ua.acclorite.book_story.domain.library
import androidx.compose.runtime.Immutable
import ua.acclorite.book_story.domain.library.display.LibrarySortOrder
import ua.acclorite.book_story.ui.library.model.LibrarySortOrder
@Immutable
data class CategorySort(

View file

@ -8,7 +8,7 @@ package ua.acclorite.book_story.domain.reader
import androidx.compose.runtime.Immutable
import androidx.compose.ui.graphics.Color
import ua.acclorite.book_story.domain.util.Selected
import ua.acclorite.book_story.core.Selected
@Immutable
data class ColorPreset(

View file

@ -6,10 +6,10 @@
package ua.acclorite.book_story.domain.repository
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.library.book.BookWithCover
import ua.acclorite.book_story.core.CoverImage
import ua.acclorite.book_story.data.model.library.BookWithCover
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.domain.reader.ReaderText
import ua.acclorite.book_story.domain.util.CoverImage
interface BookRepository {

View file

@ -6,8 +6,8 @@
package ua.acclorite.book_story.domain.repository
import ua.acclorite.book_story.domain.library.category.Category
import ua.acclorite.book_story.domain.library.category.CategorySort
import ua.acclorite.book_story.domain.library.Category
import ua.acclorite.book_story.domain.library.CategorySort
interface CategoryRepository {

View file

@ -6,17 +6,16 @@
package ua.acclorite.book_story.domain.repository
import ua.acclorite.book_story.domain.browse.file.SelectableFile
import ua.acclorite.book_story.domain.file.CachedFile
import ua.acclorite.book_story.domain.library.book.NullableBook
import ua.acclorite.book_story.data.model.common.NullableBook
import ua.acclorite.book_story.domain.file.File
interface FileSystemRepository {
suspend fun getFiles(
query: String = ""
): List<SelectableFile>
): List<File>
suspend fun getBookFromFile(
cachedFile: CachedFile
file: File
): NullableBook
}

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.book
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.domain.repository.BookRepository
import ua.acclorite.book_story.domain.repository.HistoryRepository
import javax.inject.Inject

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.book
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.domain.repository.BookRepository
import javax.inject.Inject

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.book
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.domain.repository.BookRepository
import javax.inject.Inject

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.book
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.domain.repository.BookRepository
import javax.inject.Inject

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.book
import ua.acclorite.book_story.domain.library.book.BookWithCover
import ua.acclorite.book_story.data.model.library.BookWithCover
import ua.acclorite.book_story.domain.repository.BookRepository
import javax.inject.Inject

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.book
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.domain.repository.BookRepository
import javax.inject.Inject

View file

@ -6,9 +6,9 @@
package ua.acclorite.book_story.domain.use_case.book
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.core.CoverImage
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.domain.repository.BookRepository
import ua.acclorite.book_story.domain.util.CoverImage
import javax.inject.Inject
class UpdateCoverImageOfBook @Inject constructor(

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.category
import ua.acclorite.book_story.domain.library.category.Category
import ua.acclorite.book_story.domain.library.Category
import ua.acclorite.book_story.domain.repository.CategoryRepository
import javax.inject.Inject

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.category
import ua.acclorite.book_story.domain.library.category.Category
import ua.acclorite.book_story.domain.library.Category
import ua.acclorite.book_story.domain.repository.CategoryRepository
import javax.inject.Inject

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.category
import ua.acclorite.book_story.domain.library.category.CategorySort
import ua.acclorite.book_story.domain.library.CategorySort
import ua.acclorite.book_story.domain.repository.CategoryRepository
import javax.inject.Inject

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.category
import ua.acclorite.book_story.domain.library.category.Category
import ua.acclorite.book_story.domain.library.Category
import ua.acclorite.book_story.domain.repository.CategoryRepository
import javax.inject.Inject

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.category
import ua.acclorite.book_story.domain.library.category.Category
import ua.acclorite.book_story.domain.library.Category
import ua.acclorite.book_story.domain.repository.CategoryRepository
import javax.inject.Inject

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.category
import ua.acclorite.book_story.domain.library.category.CategorySort
import ua.acclorite.book_story.domain.library.CategorySort
import ua.acclorite.book_story.domain.repository.CategoryRepository
import javax.inject.Inject

View file

@ -9,7 +9,7 @@ package ua.acclorite.book_story.domain.use_case.data_store
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.os.LocaleListCompat
import ua.acclorite.book_story.domain.repository.DataStoreRepository
import ua.acclorite.book_story.presentation.core.constants.DataStoreConstants
import ua.acclorite.book_story.presentation.common.constants.DataStoreConstants
import javax.inject.Inject
class ChangeLanguage @Inject constructor(

View file

@ -6,8 +6,8 @@
package ua.acclorite.book_story.domain.use_case.file_system
import ua.acclorite.book_story.domain.file.CachedFile
import ua.acclorite.book_story.domain.library.book.NullableBook
import ua.acclorite.book_story.data.model.common.NullableBook
import ua.acclorite.book_story.domain.file.File
import ua.acclorite.book_story.domain.repository.FileSystemRepository
import javax.inject.Inject
@ -15,7 +15,7 @@ class GetBookFromFile @Inject constructor(
private val repository: FileSystemRepository
) {
suspend fun execute(cachedFile: CachedFile): NullableBook {
return repository.getBookFromFile(cachedFile)
suspend fun execute(file: File): NullableBook {
return repository.getBookFromFile(file)
}
}

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.file_system
import ua.acclorite.book_story.domain.browse.file.SelectableFile
import ua.acclorite.book_story.domain.file.File
import ua.acclorite.book_story.domain.repository.FileSystemRepository
import javax.inject.Inject
@ -14,7 +14,7 @@ class GetFiles @Inject constructor(
private val repository: FileSystemRepository
) {
suspend fun execute(query: String): List<SelectableFile> {
suspend fun execute(query: String): List<File> {
return repository.getFiles(query)
}
}

View file

@ -11,8 +11,8 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.domain.about.Badge
import ua.acclorite.book_story.presentation.core.components.common.IconButton
import ua.acclorite.book_story.presentation.about.model.Badge
import ua.acclorite.book_story.presentation.common.components.common.IconButton
@Composable
fun AboutBadgeItem(

View file

@ -18,8 +18,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.core.constants.provideAboutBadges
import ua.acclorite.book_story.presentation.core.util.showToast
import ua.acclorite.book_story.presentation.common.constants.provideAboutBadges
import ua.acclorite.book_story.presentation.common.util.showToast
import ua.acclorite.book_story.ui.about.AboutEvent
@Composable

View file

@ -16,7 +16,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import ua.acclorite.book_story.presentation.core.components.common.StyledText
import ua.acclorite.book_story.presentation.common.components.common.StyledText
@Composable
fun AboutItem(

View file

@ -26,12 +26,12 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar
import ua.acclorite.book_story.presentation.core.constants.provideContributorsPage
import ua.acclorite.book_story.presentation.core.constants.provideIssuesPage
import ua.acclorite.book_story.presentation.core.constants.provideReleasesPage
import ua.acclorite.book_story.presentation.core.constants.provideSupportPage
import ua.acclorite.book_story.presentation.core.constants.provideTranslationPage
import ua.acclorite.book_story.presentation.common.components.common.LazyColumnWithScrollbar
import ua.acclorite.book_story.presentation.common.constants.provideContributorsPage
import ua.acclorite.book_story.presentation.common.constants.provideIssuesPage
import ua.acclorite.book_story.presentation.common.constants.provideReleasesPage
import ua.acclorite.book_story.presentation.common.constants.provideSupportPage
import ua.acclorite.book_story.presentation.common.constants.provideTranslationPage
import ua.acclorite.book_story.ui.about.AboutEvent
@Composable

View file

@ -14,7 +14,7 @@ import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.core.components.common.StyledText
import ua.acclorite.book_story.presentation.common.components.common.StyledText
import ua.acclorite.book_story.presentation.navigator.NavigatorBackIconButton
@OptIn(ExperimentalMaterial3Api::class)

View file

@ -4,7 +4,7 @@
* SPDX-License-Identifier: GPL-3.0-only
*/
package ua.acclorite.book_story.domain.about
package ua.acclorite.book_story.presentation.about.model
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes

View file

@ -4,10 +4,10 @@
* SPDX-License-Identifier: GPL-3.0-only
*/
package ua.acclorite.book_story.domain.about
package ua.acclorite.book_story.presentation.about.model
import androidx.compose.runtime.Immutable
import ua.acclorite.book_story.domain.ui.UIText
import ua.acclorite.book_story.core.ui.UIText
@Immutable
data class Credit(

View file

@ -9,9 +9,9 @@ package ua.acclorite.book_story.presentation.book_info
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.ui.UIText
import ua.acclorite.book_story.presentation.core.components.dialog.DialogWithTextField
import ua.acclorite.book_story.core.ui.UIText
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.presentation.common.components.dialog.DialogWithTextField
import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable

View file

@ -7,8 +7,8 @@
package ua.acclorite.book_story.presentation.book_info
import androidx.compose.runtime.Composable
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.util.BottomSheet
import ua.acclorite.book_story.core.BottomSheet
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.ui.book_info.BookInfoEvent
import ua.acclorite.book_story.ui.book_info.BookInfoScreen

View file

@ -24,8 +24,8 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.presentation.core.components.modal_bottom_sheet.ModalBottomSheet
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.presentation.common.components.modal_bottom_sheet.ModalBottomSheet
import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable

View file

@ -24,7 +24,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import ua.acclorite.book_story.presentation.core.components.common.StyledText
import ua.acclorite.book_story.presentation.common.components.common.StyledText
@Composable
fun LazyItemScope.BookInfoChangeCoverBottomSheetItem(

View file

@ -8,10 +8,10 @@ package ua.acclorite.book_story.presentation.book_info
import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.runtime.Composable
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.library.category.Category
import ua.acclorite.book_story.domain.util.BottomSheet
import ua.acclorite.book_story.domain.util.Dialog
import ua.acclorite.book_story.core.BottomSheet
import ua.acclorite.book_story.core.Dialog
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.domain.library.Category
import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable

View file

@ -12,7 +12,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.core.components.dialog.Dialog
import ua.acclorite.book_story.presentation.common.components.dialog.Dialog
import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable

View file

@ -8,8 +8,8 @@ package ua.acclorite.book_story.presentation.book_info
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.presentation.core.components.dialog.DialogWithTextField
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.presentation.common.components.dialog.DialogWithTextField
import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable

View file

@ -18,11 +18,11 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.file.CachedFileCompat
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar
import ua.acclorite.book_story.presentation.core.components.modal_bottom_sheet.ModalBottomSheet
import ua.acclorite.book_story.presentation.core.constants.provideExtensions
import ua.acclorite.book_story.data.model.file.CachedFileCompat
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.presentation.common.components.common.LazyColumnWithScrollbar
import ua.acclorite.book_story.presentation.common.components.modal_bottom_sheet.ModalBottomSheet
import ua.acclorite.book_story.presentation.common.constants.provideExtensions
import ua.acclorite.book_story.presentation.settings.components.SettingsSubcategoryTitle
import ua.acclorite.book_story.ui.book_info.BookInfoEvent
import java.text.SimpleDateFormat

View file

@ -22,8 +22,8 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.core.components.common.IconButton
import ua.acclorite.book_story.presentation.core.components.common.StyledText
import ua.acclorite.book_story.presentation.common.components.common.IconButton
import ua.acclorite.book_story.presentation.common.components.common.StyledText
@Composable
fun BookInfoDetailsBottomSheetItem(

View file

@ -7,9 +7,9 @@
package ua.acclorite.book_story.presentation.book_info
import androidx.compose.runtime.Composable
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.library.category.Category
import ua.acclorite.book_story.domain.util.Dialog
import ua.acclorite.book_story.core.Dialog
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.domain.library.Category
import ua.acclorite.book_story.ui.book_info.BookInfoEvent
import ua.acclorite.book_story.ui.book_info.BookInfoScreen

View file

@ -17,9 +17,9 @@ import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar
import ua.acclorite.book_story.presentation.core.constants.providePrimaryScrollbar
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.presentation.common.components.common.LazyColumnWithScrollbar
import ua.acclorite.book_story.presentation.common.constants.providePrimaryScrollbar
import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable

View file

@ -22,7 +22,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.presentation.core.components.common.StyledText
import ua.acclorite.book_story.presentation.common.components.common.StyledText
@Composable
fun BookInfoLayoutActionsItem(

View file

@ -18,7 +18,7 @@ import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.presentation.core.components.common.AsyncCoverImage
import ua.acclorite.book_story.presentation.common.components.common.AsyncCoverImage
@Composable
fun BookInfoLayoutBackground(height: Dp, image: Uri) {

View file

@ -15,9 +15,9 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.presentation.core.components.common.StyledText
import ua.acclorite.book_story.presentation.core.util.calculateProgress
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.presentation.common.components.common.StyledText
import ua.acclorite.book_story.presentation.common.util.calculateProgress
@Composable
fun BookInfoLayoutButton(

View file

@ -39,9 +39,9 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.presentation.core.components.common.StyledText
import ua.acclorite.book_story.presentation.core.util.noRippleClickable
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.presentation.common.components.common.StyledText
import ua.acclorite.book_story.presentation.common.util.noRippleClickable
import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable

View file

@ -15,7 +15,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable

View file

@ -20,9 +20,9 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.presentation.core.components.common.StyledText
import ua.acclorite.book_story.presentation.core.util.noRippleClickable
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.presentation.common.components.common.StyledText
import ua.acclorite.book_story.presentation.common.util.noRippleClickable
import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable

View file

@ -25,9 +25,9 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.presentation.core.components.common.AsyncCoverImage
import ua.acclorite.book_story.presentation.core.util.noRippleClickable
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.presentation.common.components.common.AsyncCoverImage
import ua.acclorite.book_story.presentation.common.util.noRippleClickable
import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable

View file

@ -17,9 +17,9 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.presentation.core.components.common.StyledText
import ua.acclorite.book_story.presentation.core.util.calculateProgress
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.presentation.common.components.common.StyledText
import ua.acclorite.book_story.presentation.common.util.calculateProgress
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
@Composable

View file

@ -10,9 +10,9 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.presentation.core.components.common.StyledText
import ua.acclorite.book_story.presentation.core.util.noRippleClickable
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.presentation.common.components.common.StyledText
import ua.acclorite.book_story.presentation.common.util.noRippleClickable
import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable

View file

@ -18,11 +18,11 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.library.category.Category
import ua.acclorite.book_story.presentation.core.components.common.StyledText
import ua.acclorite.book_story.presentation.core.components.dialog.CheckboxDialogItem
import ua.acclorite.book_story.presentation.core.components.dialog.Dialog
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.domain.library.Category
import ua.acclorite.book_story.presentation.common.components.common.StyledText
import ua.acclorite.book_story.presentation.common.components.dialog.CheckboxDialogItem
import ua.acclorite.book_story.presentation.common.components.dialog.Dialog
import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable

View file

@ -8,8 +8,8 @@ package ua.acclorite.book_story.presentation.book_info
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.presentation.core.components.dialog.DialogWithTextField
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.presentation.common.components.dialog.DialogWithTextField
import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable

View file

@ -16,7 +16,7 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable

View file

@ -8,8 +8,8 @@ package ua.acclorite.book_story.presentation.book_info
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.presentation.core.components.dialog.DialogWithTextField
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.presentation.common.components.dialog.DialogWithTextField
import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable

View file

@ -15,11 +15,11 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.remember
import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.presentation.core.components.common.IconButton
import ua.acclorite.book_story.presentation.core.components.common.StyledText
import ua.acclorite.book_story.presentation.core.components.top_bar.TopAppBar
import ua.acclorite.book_story.presentation.core.components.top_bar.TopAppBarData
import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.presentation.common.components.common.IconButton
import ua.acclorite.book_story.presentation.common.components.common.StyledText
import ua.acclorite.book_story.presentation.common.components.top_bar.TopAppBar
import ua.acclorite.book_story.presentation.common.components.top_bar.TopAppBarData
import ua.acclorite.book_story.presentation.navigator.NavigatorBackIconButton
import ua.acclorite.book_story.ui.book_info.BookInfoEvent
import ua.acclorite.book_story.ui.theme.DefaultTransition

View file

@ -20,12 +20,12 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.library.book.NullableBook
import ua.acclorite.book_story.domain.library.book.SelectableNullableBook
import ua.acclorite.book_story.presentation.core.components.dialog.Dialog
import ua.acclorite.book_story.presentation.core.components.progress_indicator.CircularProgressIndicator
import ua.acclorite.book_story.presentation.core.util.showToast
import ua.acclorite.book_story.data.model.common.NullableBook
import ua.acclorite.book_story.presentation.common.components.dialog.Dialog
import ua.acclorite.book_story.presentation.common.components.progress_indicator.CircularProgressIndicator
import ua.acclorite.book_story.presentation.common.util.showToast
import ua.acclorite.book_story.ui.browse.BrowseEvent
import ua.acclorite.book_story.ui.library.model.SelectableNullableBook
import java.util.UUID
@Composable

View file

@ -24,10 +24,10 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.library.book.NullableBook
import ua.acclorite.book_story.domain.library.book.SelectableNullableBook
import ua.acclorite.book_story.presentation.core.components.common.CircularCheckbox
import ua.acclorite.book_story.presentation.core.components.common.StyledText
import ua.acclorite.book_story.data.model.common.NullableBook
import ua.acclorite.book_story.presentation.common.components.common.CircularCheckbox
import ua.acclorite.book_story.presentation.common.components.common.StyledText
import ua.acclorite.book_story.ui.library.model.SelectableNullableBook
@Composable
fun BrowseAddDialogItem(result: SelectableNullableBook, onClick: (Boolean) -> Unit) {

View file

@ -7,7 +7,7 @@
package ua.acclorite.book_story.presentation.browse
import androidx.compose.runtime.Composable
import ua.acclorite.book_story.domain.util.BottomSheet
import ua.acclorite.book_story.core.BottomSheet
import ua.acclorite.book_story.ui.browse.BrowseEvent
import ua.acclorite.book_story.ui.browse.BrowseScreen

View file

@ -12,12 +12,12 @@ import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.pullrefresh.PullRefreshState
import androidx.compose.runtime.Composable
import androidx.compose.ui.focus.FocusRequester
import ua.acclorite.book_story.domain.browse.display.BrowseLayout
import ua.acclorite.book_story.domain.browse.file.SelectableFile
import ua.acclorite.book_story.domain.library.book.SelectableNullableBook
import ua.acclorite.book_story.domain.util.BottomSheet
import ua.acclorite.book_story.domain.util.Dialog
import ua.acclorite.book_story.core.BottomSheet
import ua.acclorite.book_story.core.Dialog
import ua.acclorite.book_story.ui.browse.BrowseEvent
import ua.acclorite.book_story.ui.browse.model.BrowseLayout
import ua.acclorite.book_story.ui.browse.model.SelectableFile
import ua.acclorite.book_story.ui.library.model.SelectableNullableBook
import ua.acclorite.book_story.ui.main.MainEvent
@OptIn(ExperimentalMaterialApi::class)

View file

@ -7,10 +7,10 @@
package ua.acclorite.book_story.presentation.browse
import androidx.compose.runtime.Composable
import ua.acclorite.book_story.domain.library.book.SelectableNullableBook
import ua.acclorite.book_story.domain.util.Dialog
import ua.acclorite.book_story.core.Dialog
import ua.acclorite.book_story.ui.browse.BrowseEvent
import ua.acclorite.book_story.ui.browse.BrowseScreen
import ua.acclorite.book_story.ui.library.model.SelectableNullableBook
@Composable
fun BrowseDialog(

View file

@ -13,8 +13,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility
import ua.acclorite.book_story.presentation.core.components.placeholder.EmptyPlaceholder
import ua.acclorite.book_story.presentation.common.components.common.AnimatedVisibility
import ua.acclorite.book_story.presentation.common.components.placeholder.EmptyPlaceholder
import ua.acclorite.book_story.ui.theme.Transitions
@Composable

View file

@ -16,8 +16,8 @@ import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import kotlinx.coroutines.launch
import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar
import ua.acclorite.book_story.presentation.core.components.modal_bottom_sheet.ModalBottomSheet
import ua.acclorite.book_story.presentation.common.components.common.LazyColumnWithScrollbar
import ua.acclorite.book_story.presentation.common.components.modal_bottom_sheet.ModalBottomSheet
import ua.acclorite.book_story.presentation.settings.browse.display.BrowseDisplaySubcategory
import ua.acclorite.book_story.presentation.settings.browse.filter.BrowseFilterSubcategory
import ua.acclorite.book_story.presentation.settings.browse.sort.BrowseSortSubcategory

View file

@ -9,7 +9,7 @@ package ua.acclorite.book_story.presentation.browse
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.core.components.modal_bottom_sheet.ModalBottomSheetTabRow
import ua.acclorite.book_story.presentation.common.components.modal_bottom_sheet.ModalBottomSheetTabRow
@Composable
fun BrowseFilterBottomSheetTabRow(

View file

@ -28,9 +28,9 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.browse.file.SelectableFile
import ua.acclorite.book_story.presentation.core.components.common.CircularCheckbox
import ua.acclorite.book_story.presentation.core.components.common.StyledText
import ua.acclorite.book_story.presentation.common.components.common.CircularCheckbox
import ua.acclorite.book_story.presentation.common.components.common.StyledText
import ua.acclorite.book_story.ui.browse.model.SelectableFile
import ua.acclorite.book_story.ui.theme.DefaultTransition
import java.text.SimpleDateFormat
import java.util.Date
@ -40,10 +40,10 @@ import java.util.Locale
fun BrowseGridFileItem(file: SelectableFile, hasSelectedItems: Boolean) {
val lastModified = rememberSaveable {
SimpleDateFormat("dd MMM yyyy", Locale.getDefault())
.format(Date(file.data.lastModified))
.format(Date(file.lastModified))
}
val sizeBytes = rememberSaveable { file.data.size }
val sizeBytes = rememberSaveable { file.size }
val fileSizeKB = rememberSaveable {
if (sizeBytes > 0) sizeBytes.toDouble() / 1024.0 else 0.0
}
@ -94,7 +94,7 @@ fun BrowseGridFileItem(file: SelectableFile, hasSelectedItems: Boolean) {
Spacer(modifier = Modifier.height(8.dp))
StyledText(
text = file.data.name,
text = file.name,
style = MaterialTheme.typography.bodyLarge.copy(
color = MaterialTheme.colorScheme.onSurface,
textAlign = TextAlign.Center,

View file

@ -18,7 +18,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.domain.browse.file.SelectableFile
import ua.acclorite.book_story.ui.browse.model.SelectableFile
@Composable
fun BrowseGridItem(

Some files were not shown because too many files have changed in this diff Show more