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 * SPDX-License-Identifier: GPL-3.0-only
*/ */
package ua.acclorite.book_story.domain.util package ua.acclorite.book_story.core
import android.graphics.Bitmap import android.graphics.Bitmap

View file

@ -4,7 +4,7 @@
* SPDX-License-Identifier: GPL-3.0-only * 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.content.Context
import android.os.Parcelable 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.Entity
import androidx.room.PrimaryKey import androidx.room.PrimaryKey
import ua.acclorite.book_story.domain.library.display.LibrarySortOrder import ua.acclorite.book_story.ui.library.model.LibrarySortOrder
@Entity @Entity
data class CategorySortEntity( data class CategorySortEntity(

View file

@ -7,7 +7,7 @@
package ua.acclorite.book_story.data.mapper.book package ua.acclorite.book_story.data.mapper.book
import ua.acclorite.book_story.data.local.dto.BookEntity 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 { interface BookMapper {
suspend fun toBookEntity(book: Book): BookEntity 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 androidx.core.net.toUri
import ua.acclorite.book_story.R 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.data.local.dto.BookEntity
import ua.acclorite.book_story.domain.library.book.Book import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.domain.ui.UIText
import javax.inject.Inject import javax.inject.Inject
class BookMapperImpl @Inject constructor() : BookMapper { class BookMapperImpl @Inject constructor() : BookMapper {

View file

@ -7,7 +7,7 @@
package ua.acclorite.book_story.data.mapper.category package ua.acclorite.book_story.data.mapper.category
import ua.acclorite.book_story.data.local.dto.CategoryEntity 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 { interface CategoryMapper {
suspend fun toCategoryEntity(category: Category): CategoryEntity suspend fun toCategoryEntity(category: Category): CategoryEntity

View file

@ -7,7 +7,7 @@
package ua.acclorite.book_story.data.mapper.category package ua.acclorite.book_story.data.mapper.category
import ua.acclorite.book_story.data.local.dto.CategoryEntity 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 import javax.inject.Inject
class CategoryMapperImpl @Inject constructor() : CategoryMapper { class CategoryMapperImpl @Inject constructor() : CategoryMapper {

View file

@ -7,7 +7,7 @@
package ua.acclorite.book_story.data.mapper.category_sort package ua.acclorite.book_story.data.mapper.category_sort
import ua.acclorite.book_story.data.local.dto.CategorySortEntity 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 { interface CategorySortMapper {
suspend fun toCategorySortEntity(categorySort: CategorySort): CategorySortEntity suspend fun toCategorySortEntity(categorySort: CategorySort): CategorySortEntity

View file

@ -7,7 +7,7 @@
package ua.acclorite.book_story.data.mapper.category_sort package ua.acclorite.book_story.data.mapper.category_sort
import ua.acclorite.book_story.data.local.dto.CategorySortEntity 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 import javax.inject.Inject
class CategorySortSortMapperImpl @Inject constructor() : CategorySortMapper { class CategorySortSortMapperImpl @Inject constructor() : CategorySortMapper {

View file

@ -4,10 +4,11 @@
* SPDX-License-Identifier: GPL-3.0-only * 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 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 @Immutable
sealed class NullableBook( sealed class NullableBook(

View file

@ -4,7 +4,7 @@
* SPDX-License-Identifier: GPL-3.0-only * 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.content.Context
import android.net.Uri 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 * @return null if the file is directory or failed
*/ */

View file

@ -4,7 +4,7 @@
* SPDX-License-Identifier: GPL-3.0-only * 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 import androidx.compose.runtime.Immutable

View file

@ -4,7 +4,7 @@
* SPDX-License-Identifier: GPL-3.0-only * 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.content.Context
import android.net.Uri import android.net.Uri

View file

@ -4,10 +4,11 @@
* SPDX-License-Identifier: GPL-3.0-only * 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 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 @Immutable
data class BookWithCover( data class BookWithCover(

View file

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

View file

@ -6,8 +6,8 @@
package ua.acclorite.book_story.data.parser 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.library.book.BookWithCover import ua.acclorite.book_story.data.model.library.BookWithCover
interface FileParser { interface FileParser {

View file

@ -7,13 +7,13 @@
package ua.acclorite.book_story.data.parser package ua.acclorite.book_story.data.parser
import android.util.Log 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.epub.EpubFileParser
import ua.acclorite.book_story.data.parser.fb2.Fb2FileParser 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.html.HtmlFileParser
import ua.acclorite.book_story.data.parser.pdf.PdfFileParser import ua.acclorite.book_story.data.parser.pdf.PdfFileParser
import ua.acclorite.book_story.data.parser.txt.TxtFileParser 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 import javax.inject.Inject
private const val FILE_PARSER = "File Parser" 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.StrongEmphasis
import org.commonmark.node.Text import org.commonmark.node.Text
import org.commonmark.parser.Parser 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 import javax.inject.Inject
class MarkdownParser @Inject constructor( class MarkdownParser @Inject constructor(

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.data.parser 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 import ua.acclorite.book_story.domain.reader.ReaderText
interface TextParser { interface TextParser {

View file

@ -9,12 +9,12 @@ package ua.acclorite.book_story.data.parser
import android.util.Log import android.util.Log
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext 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.epub.EpubTextParser
import ua.acclorite.book_story.data.parser.html.HtmlTextParser 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.pdf.PdfTextParser
import ua.acclorite.book_story.data.parser.txt.TxtTextParser import ua.acclorite.book_story.data.parser.txt.TxtTextParser
import ua.acclorite.book_story.data.parser.xml.XmlTextParser 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 ua.acclorite.book_story.domain.reader.ReaderText
import javax.inject.Inject import javax.inject.Inject

View file

@ -12,11 +12,11 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.jsoup.Jsoup import org.jsoup.Jsoup
import ua.acclorite.book_story.R 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.data.parser.FileParser
import ua.acclorite.book_story.domain.file.CachedFile import ua.acclorite.book_story.domain.library.Book
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 java.io.File import java.io.File
import java.util.zip.ZipFile import java.util.zip.ZipFile
import javax.inject.Inject import javax.inject.Inject

View file

@ -17,13 +17,13 @@ import kotlinx.coroutines.awaitAll
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import kotlinx.coroutines.yield import kotlinx.coroutines.yield
import org.jsoup.Jsoup 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.DocumentParser
import ua.acclorite.book_story.data.parser.TextParser 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.domain.reader.ReaderText
import ua.acclorite.book_story.presentation.core.constants.provideImageExtensions import ua.acclorite.book_story.presentation.common.constants.provideImageExtensions
import ua.acclorite.book_story.presentation.core.util.addAll import ua.acclorite.book_story.presentation.common.util.addAll
import ua.acclorite.book_story.presentation.core.util.containsVisibleText import ua.acclorite.book_story.presentation.common.util.containsVisibleText
import java.io.File import java.io.File
import java.util.concurrent.ConcurrentLinkedQueue import java.util.concurrent.ConcurrentLinkedQueue
import java.util.zip.ZipEntry 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.Jsoup
import org.jsoup.parser.Parser import org.jsoup.parser.Parser
import ua.acclorite.book_story.R 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.data.parser.FileParser
import ua.acclorite.book_story.domain.file.CachedFile import ua.acclorite.book_story.domain.library.Book
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 javax.inject.Inject import javax.inject.Inject
class Fb2FileParser @Inject constructor() : FileParser { 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.Jsoup
import org.jsoup.parser.Parser import org.jsoup.parser.Parser
import ua.acclorite.book_story.R 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.data.parser.FileParser
import ua.acclorite.book_story.domain.file.CachedFile import ua.acclorite.book_story.domain.library.Book
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 javax.inject.Inject import javax.inject.Inject
class HtmlFileParser @Inject constructor() : FileParser { class HtmlFileParser @Inject constructor() : FileParser {

View file

@ -10,9 +10,9 @@ import android.util.Log
import kotlinx.coroutines.yield import kotlinx.coroutines.yield
import org.jsoup.Jsoup import org.jsoup.Jsoup
import org.jsoup.parser.Parser 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.DocumentParser
import ua.acclorite.book_story.data.parser.TextParser 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.domain.reader.ReaderText
import javax.inject.Inject 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.android.PDFBoxResourceLoader
import com.tom_roush.pdfbox.pdmodel.PDDocument import com.tom_roush.pdfbox.pdmodel.PDDocument
import ua.acclorite.book_story.R 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.data.parser.FileParser
import ua.acclorite.book_story.domain.file.CachedFile import ua.acclorite.book_story.domain.library.Book
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 javax.inject.Inject import javax.inject.Inject
class PdfFileParser @Inject constructor( 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.pdmodel.PDDocument
import com.tom_roush.pdfbox.text.PDFTextStripper import com.tom_roush.pdfbox.text.PDFTextStripper
import kotlinx.coroutines.yield 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.MarkdownParser
import ua.acclorite.book_story.data.parser.TextParser 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.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 import javax.inject.Inject
private const val PDF_TAG = "PDF Parser" private const val PDF_TAG = "PDF Parser"

View file

@ -7,11 +7,11 @@
package ua.acclorite.book_story.data.parser.txt package ua.acclorite.book_story.data.parser.txt
import ua.acclorite.book_story.R 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.data.parser.FileParser
import ua.acclorite.book_story.domain.file.CachedFile import ua.acclorite.book_story.domain.library.Book
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 javax.inject.Inject import javax.inject.Inject
class TxtFileParser @Inject constructor() : FileParser { class TxtFileParser @Inject constructor() : FileParser {

View file

@ -10,11 +10,11 @@ import android.util.Log
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import kotlinx.coroutines.yield 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.MarkdownParser
import ua.acclorite.book_story.data.parser.TextParser 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.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 import javax.inject.Inject
private const val TXT_TAG = "TXT Parser" private const val TXT_TAG = "TXT Parser"

View file

@ -10,9 +10,9 @@ import android.util.Log
import kotlinx.coroutines.yield import kotlinx.coroutines.yield
import org.jsoup.Jsoup import org.jsoup.Jsoup
import org.jsoup.parser.Parser 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.DocumentParser
import ua.acclorite.book_story.data.parser.TextParser 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.domain.reader.ReaderText
import javax.inject.Inject import javax.inject.Inject

View file

@ -15,16 +15,16 @@ import android.util.Log
import androidx.core.net.toUri import androidx.core.net.toUri
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext 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.local.room.BookDao
import ua.acclorite.book_story.data.mapper.book.BookMapper 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.FileParser
import ua.acclorite.book_story.data.parser.TextParser import ua.acclorite.book_story.data.parser.TextParser
import ua.acclorite.book_story.domain.file.CachedFileCompat import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.domain.library.book.Book
import ua.acclorite.book_story.domain.library.book.BookWithCover
import ua.acclorite.book_story.domain.reader.ReaderText import ua.acclorite.book_story.domain.reader.ReaderText
import ua.acclorite.book_story.domain.repository.BookRepository import ua.acclorite.book_story.domain.repository.BookRepository
import ua.acclorite.book_story.domain.util.CoverImage
import java.io.BufferedOutputStream import java.io.BufferedOutputStream
import java.io.ByteArrayOutputStream import java.io.ByteArrayOutputStream
import java.io.File 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.local.room.BookDao
import ua.acclorite.book_story.data.mapper.category.CategoryMapper import ua.acclorite.book_story.data.mapper.category.CategoryMapper
import ua.acclorite.book_story.data.mapper.category_sort.CategorySortMapper 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
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 ua.acclorite.book_story.domain.repository.CategoryRepository
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton

View file

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

View file

@ -4,13 +4,13 @@
* SPDX-License-Identifier: GPL-3.0-only * 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.net.Uri
import android.os.Parcelable import android.os.Parcelable
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import kotlinx.parcelize.Parcelize import kotlinx.parcelize.Parcelize
import ua.acclorite.book_story.domain.ui.UIText import ua.acclorite.book_story.core.ui.UIText
@Parcelize @Parcelize
@Immutable @Immutable

View file

@ -4,7 +4,7 @@
* SPDX-License-Identifier: GPL-3.0-only * 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 androidx.compose.runtime.Immutable

View file

@ -4,10 +4,10 @@
* SPDX-License-Identifier: GPL-3.0-only * 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 androidx.compose.runtime.Immutable
import ua.acclorite.book_story.domain.library.display.LibrarySortOrder import ua.acclorite.book_story.ui.library.model.LibrarySortOrder
@Immutable @Immutable
data class CategorySort( data class CategorySort(

View file

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

View file

@ -6,10 +6,10 @@
package ua.acclorite.book_story.domain.repository package ua.acclorite.book_story.domain.repository
import ua.acclorite.book_story.domain.library.book.Book import ua.acclorite.book_story.core.CoverImage
import ua.acclorite.book_story.domain.library.book.BookWithCover 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.reader.ReaderText
import ua.acclorite.book_story.domain.util.CoverImage
interface BookRepository { interface BookRepository {

View file

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

View file

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

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.book 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.BookRepository
import ua.acclorite.book_story.domain.repository.HistoryRepository import ua.acclorite.book_story.domain.repository.HistoryRepository
import javax.inject.Inject import javax.inject.Inject

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.book 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.BookRepository
import javax.inject.Inject import javax.inject.Inject

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.book 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.BookRepository
import javax.inject.Inject import javax.inject.Inject

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.book 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.BookRepository
import javax.inject.Inject import javax.inject.Inject

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.book 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 ua.acclorite.book_story.domain.repository.BookRepository
import javax.inject.Inject import javax.inject.Inject

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.book 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.BookRepository
import javax.inject.Inject import javax.inject.Inject

View file

@ -6,9 +6,9 @@
package ua.acclorite.book_story.domain.use_case.book 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.repository.BookRepository
import ua.acclorite.book_story.domain.util.CoverImage
import javax.inject.Inject import javax.inject.Inject
class UpdateCoverImageOfBook @Inject constructor( class UpdateCoverImageOfBook @Inject constructor(

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.category 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 ua.acclorite.book_story.domain.repository.CategoryRepository
import javax.inject.Inject import javax.inject.Inject

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.category 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 ua.acclorite.book_story.domain.repository.CategoryRepository
import javax.inject.Inject import javax.inject.Inject

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.category 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 ua.acclorite.book_story.domain.repository.CategoryRepository
import javax.inject.Inject import javax.inject.Inject

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.category 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 ua.acclorite.book_story.domain.repository.CategoryRepository
import javax.inject.Inject import javax.inject.Inject

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.category 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 ua.acclorite.book_story.domain.repository.CategoryRepository
import javax.inject.Inject import javax.inject.Inject

View file

@ -6,7 +6,7 @@
package ua.acclorite.book_story.domain.use_case.category 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 ua.acclorite.book_story.domain.repository.CategoryRepository
import javax.inject.Inject 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.appcompat.app.AppCompatDelegate
import androidx.core.os.LocaleListCompat import androidx.core.os.LocaleListCompat
import ua.acclorite.book_story.domain.repository.DataStoreRepository 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 import javax.inject.Inject
class ChangeLanguage @Inject constructor( class ChangeLanguage @Inject constructor(

View file

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

View file

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

View file

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

View file

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

View file

@ -16,7 +16,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp 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 @Composable
fun AboutItem( fun AboutItem(

View file

@ -26,12 +26,12 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource 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.R
import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar import ua.acclorite.book_story.presentation.common.components.common.LazyColumnWithScrollbar
import ua.acclorite.book_story.presentation.core.constants.provideContributorsPage import ua.acclorite.book_story.presentation.common.constants.provideContributorsPage
import ua.acclorite.book_story.presentation.core.constants.provideIssuesPage import ua.acclorite.book_story.presentation.common.constants.provideIssuesPage
import ua.acclorite.book_story.presentation.core.constants.provideReleasesPage import ua.acclorite.book_story.presentation.common.constants.provideReleasesPage
import ua.acclorite.book_story.presentation.core.constants.provideSupportPage import ua.acclorite.book_story.presentation.common.constants.provideSupportPage
import ua.acclorite.book_story.presentation.core.constants.provideTranslationPage import ua.acclorite.book_story.presentation.common.constants.provideTranslationPage
import ua.acclorite.book_story.ui.about.AboutEvent import ua.acclorite.book_story.ui.about.AboutEvent
@Composable @Composable

View file

@ -14,7 +14,7 @@ import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R 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 import ua.acclorite.book_story.presentation.navigator.NavigatorBackIconButton
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)

View file

@ -4,7 +4,7 @@
* SPDX-License-Identifier: GPL-3.0-only * 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.DrawableRes
import androidx.annotation.StringRes import androidx.annotation.StringRes

View file

@ -4,10 +4,10 @@
* SPDX-License-Identifier: GPL-3.0-only * 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 androidx.compose.runtime.Immutable
import ua.acclorite.book_story.domain.ui.UIText import ua.acclorite.book_story.core.ui.UIText
@Immutable @Immutable
data class Credit( 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.runtime.Composable
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.library.book.Book import ua.acclorite.book_story.core.ui.UIText
import ua.acclorite.book_story.domain.ui.UIText import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.presentation.core.components.dialog.DialogWithTextField import ua.acclorite.book_story.presentation.common.components.dialog.DialogWithTextField
import ua.acclorite.book_story.ui.book_info.BookInfoEvent import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable @Composable

View file

@ -7,8 +7,8 @@
package ua.acclorite.book_story.presentation.book_info package ua.acclorite.book_story.presentation.book_info
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import ua.acclorite.book_story.domain.library.book.Book import ua.acclorite.book_story.core.BottomSheet
import ua.acclorite.book_story.domain.util.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.BookInfoEvent
import ua.acclorite.book_story.ui.book_info.BookInfoScreen 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.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.R
import ua.acclorite.book_story.domain.library.book.Book import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.presentation.core.components.modal_bottom_sheet.ModalBottomSheet import ua.acclorite.book_story.presentation.common.components.modal_bottom_sheet.ModalBottomSheet
import ua.acclorite.book_story.ui.book_info.BookInfoEvent import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable @Composable

View file

@ -24,7 +24,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp 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 @Composable
fun LazyItemScope.BookInfoChangeCoverBottomSheetItem( 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.foundation.lazy.LazyListState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import ua.acclorite.book_story.domain.library.book.Book import ua.acclorite.book_story.core.BottomSheet
import ua.acclorite.book_story.domain.library.category.Category import ua.acclorite.book_story.core.Dialog
import ua.acclorite.book_story.domain.util.BottomSheet import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.domain.util.Dialog 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.BookInfoEvent
@Composable @Composable

View file

@ -12,7 +12,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R 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 import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable @Composable

View file

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

View file

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

View file

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

View file

@ -7,9 +7,9 @@
package ua.acclorite.book_story.presentation.book_info package ua.acclorite.book_story.presentation.book_info
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import ua.acclorite.book_story.domain.library.book.Book import ua.acclorite.book_story.core.Dialog
import ua.acclorite.book_story.domain.library.category.Category import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.domain.util.Dialog 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.BookInfoEvent
import ua.acclorite.book_story.ui.book_info.BookInfoScreen 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.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp 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.presentation.core.components.common.LazyColumnWithScrollbar import ua.acclorite.book_story.presentation.common.components.common.LazyColumnWithScrollbar
import ua.acclorite.book_story.presentation.core.constants.providePrimaryScrollbar import ua.acclorite.book_story.presentation.common.constants.providePrimaryScrollbar
import ua.acclorite.book_story.ui.book_info.BookInfoEvent import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable @Composable

View file

@ -22,7 +22,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.unit.dp 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 @Composable
fun BookInfoLayoutActionsItem( fun BookInfoLayoutActionsItem(

View file

@ -18,7 +18,7 @@ import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
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 @Composable
fun BookInfoLayoutBackground(height: Dp, image: Uri) { 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.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.R
import ua.acclorite.book_story.domain.library.book.Book import ua.acclorite.book_story.domain.library.Book
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.core.util.calculateProgress import ua.acclorite.book_story.presentation.common.util.calculateProgress
@Composable @Composable
fun BookInfoLayoutButton( 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 androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.library.book.Book import ua.acclorite.book_story.domain.library.Book
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.core.util.noRippleClickable import ua.acclorite.book_story.presentation.common.util.noRippleClickable
import ua.acclorite.book_story.ui.book_info.BookInfoEvent import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable @Composable

View file

@ -15,7 +15,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp 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 import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable @Composable

View file

@ -20,9 +20,9 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource 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.R
import ua.acclorite.book_story.domain.library.book.Book import ua.acclorite.book_story.domain.library.Book
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.core.util.noRippleClickable import ua.acclorite.book_story.presentation.common.util.noRippleClickable
import ua.acclorite.book_story.ui.book_info.BookInfoEvent import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable @Composable

View file

@ -25,9 +25,9 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.res.stringResource 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.R
import ua.acclorite.book_story.domain.library.book.Book import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.presentation.core.components.common.AsyncCoverImage import ua.acclorite.book_story.presentation.common.components.common.AsyncCoverImage
import ua.acclorite.book_story.presentation.core.util.noRippleClickable import ua.acclorite.book_story.presentation.common.util.noRippleClickable
import ua.acclorite.book_story.ui.book_info.BookInfoEvent import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable @Composable

View file

@ -17,9 +17,9 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp 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.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.common.components.common.StyledText
import ua.acclorite.book_story.presentation.core.util.calculateProgress import ua.acclorite.book_story.presentation.common.util.calculateProgress
@OptIn(ExperimentalMaterial3ExpressiveApi::class) @OptIn(ExperimentalMaterial3ExpressiveApi::class)
@Composable @Composable

View file

@ -10,9 +10,9 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier 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.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.common.components.common.StyledText
import ua.acclorite.book_story.presentation.core.util.noRippleClickable import ua.acclorite.book_story.presentation.common.util.noRippleClickable
import ua.acclorite.book_story.ui.book_info.BookInfoEvent import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable @Composable

View file

@ -18,11 +18,11 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource 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.R
import ua.acclorite.book_story.domain.library.book.Book import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.domain.library.category.Category import ua.acclorite.book_story.domain.library.Category
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.core.components.dialog.CheckboxDialogItem import ua.acclorite.book_story.presentation.common.components.dialog.CheckboxDialogItem
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 import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable @Composable

View file

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

View file

@ -16,7 +16,7 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier 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 import ua.acclorite.book_story.ui.book_info.BookInfoEvent
@Composable @Composable

View file

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

View file

@ -15,11 +15,11 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.library.book.Book import ua.acclorite.book_story.domain.library.Book
import ua.acclorite.book_story.presentation.core.components.common.IconButton import ua.acclorite.book_story.presentation.common.components.common.IconButton
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.core.components.top_bar.TopAppBar import ua.acclorite.book_story.presentation.common.components.top_bar.TopAppBar
import ua.acclorite.book_story.presentation.core.components.top_bar.TopAppBarData import ua.acclorite.book_story.presentation.common.components.top_bar.TopAppBarData
import ua.acclorite.book_story.presentation.navigator.NavigatorBackIconButton import ua.acclorite.book_story.presentation.navigator.NavigatorBackIconButton
import ua.acclorite.book_story.ui.book_info.BookInfoEvent import ua.acclorite.book_story.ui.book_info.BookInfoEvent
import ua.acclorite.book_story.ui.theme.DefaultTransition 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.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.R
import ua.acclorite.book_story.domain.library.book.NullableBook import ua.acclorite.book_story.data.model.common.NullableBook
import ua.acclorite.book_story.domain.library.book.SelectableNullableBook import ua.acclorite.book_story.presentation.common.components.dialog.Dialog
import ua.acclorite.book_story.presentation.core.components.dialog.Dialog import ua.acclorite.book_story.presentation.common.components.progress_indicator.CircularProgressIndicator
import ua.acclorite.book_story.presentation.core.components.progress_indicator.CircularProgressIndicator import ua.acclorite.book_story.presentation.common.util.showToast
import ua.acclorite.book_story.presentation.core.util.showToast
import ua.acclorite.book_story.ui.browse.BrowseEvent import ua.acclorite.book_story.ui.browse.BrowseEvent
import ua.acclorite.book_story.ui.library.model.SelectableNullableBook
import java.util.UUID import java.util.UUID
@Composable @Composable

View file

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

View file

@ -7,7 +7,7 @@
package ua.acclorite.book_story.presentation.browse package ua.acclorite.book_story.presentation.browse
import androidx.compose.runtime.Composable 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.BrowseEvent
import ua.acclorite.book_story.ui.browse.BrowseScreen 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.material.pullrefresh.PullRefreshState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.FocusRequester
import ua.acclorite.book_story.domain.browse.display.BrowseLayout import ua.acclorite.book_story.core.BottomSheet
import ua.acclorite.book_story.domain.browse.file.SelectableFile import ua.acclorite.book_story.core.Dialog
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.ui.browse.BrowseEvent 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 import ua.acclorite.book_story.ui.main.MainEvent
@OptIn(ExperimentalMaterialApi::class) @OptIn(ExperimentalMaterialApi::class)

View file

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

View file

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

View file

@ -16,8 +16,8 @@ import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar import ua.acclorite.book_story.presentation.common.components.common.LazyColumnWithScrollbar
import ua.acclorite.book_story.presentation.core.components.modal_bottom_sheet.ModalBottomSheet 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.display.BrowseDisplaySubcategory
import ua.acclorite.book_story.presentation.settings.browse.filter.BrowseFilterSubcategory import ua.acclorite.book_story.presentation.settings.browse.filter.BrowseFilterSubcategory
import ua.acclorite.book_story.presentation.settings.browse.sort.BrowseSortSubcategory 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.runtime.Composable
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R 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 @Composable
fun BrowseFilterBottomSheetTabRow( 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.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.browse.file.SelectableFile import ua.acclorite.book_story.presentation.common.components.common.CircularCheckbox
import ua.acclorite.book_story.presentation.core.components.common.CircularCheckbox import ua.acclorite.book_story.presentation.common.components.common.StyledText
import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.ui.browse.model.SelectableFile
import ua.acclorite.book_story.ui.theme.DefaultTransition import ua.acclorite.book_story.ui.theme.DefaultTransition
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Date import java.util.Date
@ -40,10 +40,10 @@ import java.util.Locale
fun BrowseGridFileItem(file: SelectableFile, hasSelectedItems: Boolean) { fun BrowseGridFileItem(file: SelectableFile, hasSelectedItems: Boolean) {
val lastModified = rememberSaveable { val lastModified = rememberSaveable {
SimpleDateFormat("dd MMM yyyy", Locale.getDefault()) 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 { val fileSizeKB = rememberSaveable {
if (sizeBytes > 0) sizeBytes.toDouble() / 1024.0 else 0.0 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)) Spacer(modifier = Modifier.height(8.dp))
StyledText( StyledText(
text = file.data.name, text = file.name,
style = MaterialTheme.typography.bodyLarge.copy( style = MaterialTheme.typography.bodyLarge.copy(
color = MaterialTheme.colorScheme.onSurface, color = MaterialTheme.colorScheme.onSurface,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,

View file

@ -18,7 +18,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp 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 @Composable
fun BrowseGridItem( fun BrowseGridItem(

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