From 8981c92df3e37441910b1ef6f04e0ebb0e3e08f3 Mon Sep 17 00:00:00 2001 From: Acclorite <140836141+Acclorite@users.noreply.github.com> Date: Tue, 11 Mar 2025 19:37:45 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9B=A0=EF=B8=8F=20Refactor=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Inspected and refactored code in various places --- app/proguard-rules.pro | 2 +- .../data/mapper/book/BookMapperImpl.kt | 4 ++-- .../book_story/data/parser/DocumentParser.kt | 2 +- .../data/parser/epub/EpubTextParser.kt | 22 ++++++++----------- .../data/repository/BookRepositoryImpl.kt | 5 +++-- .../repository/FileSystemRepositoryImpl.kt | 3 +-- .../book_story/domain/file/CachedFile.kt | 2 +- .../domain/file/CachedFileCompat.kt | 4 ++-- .../book_story/domain/navigator/Navigator.kt | 8 +++---- .../presentation/about/AboutBadges.kt | 3 +-- .../presentation/about/AboutLayout.kt | 13 +++++------ .../presentation/book_info/BookInfoContent.kt | 2 -- .../book_info/BookInfoDetailsBottomSheet.kt | 3 +-- .../presentation/book_info/BookInfoLayout.kt | 3 +-- .../book_info/BookInfoLayoutInfo.kt | 2 -- .../book_info/BookInfoScaffold.kt | 2 -- .../presentation/browse/BrowseGridItem.kt | 2 -- .../presentation/browse/BrowseGridLayout.kt | 3 +-- .../presentation/browse/BrowseListItem.kt | 2 -- .../presentation/browse/BrowseListLayout.kt | 3 +-- .../common/LazyColumnWithScrollbar.kt | 3 +-- .../common/LazyVerticalGridWithScrollbar.kt | 3 +-- .../components/modal_drawer/ModalDrawer.kt | 3 +-- .../components/settings/ChipsWithTitle.kt | 2 -- .../core/constants/AboutBadgeConstants.kt | 2 +- .../core/constants/CommonConstants.kt | 6 ++--- .../presentation/core/constants/Constants.kt | 9 -------- .../core/constants/CreditConstants.kt | 2 +- .../core/constants/FontConstants.kt | 3 +-- .../core/constants/HelpTipConstants.kt | 2 +- .../core/constants/LanguageConstants.kt | 2 +- .../core/constants/LinkConstants.kt | 10 ++++----- .../core/constants/ScrollbarConstants.kt | 4 ++-- .../constants/SupportedExtensionConstants.kt | 4 ++-- .../core/util/ModifierExtensions.kt | 2 -- .../presentation/credits/CreditItem.kt | 2 -- .../presentation/credits/CreditsLayout.kt | 3 +-- .../presentation/help/HelpLayout.kt | 5 ++--- .../presentation/history/HistoryLayout.kt | 3 +-- .../presentation/library/LibraryItem.kt | 2 -- .../presentation/library/LibraryLayout.kt | 3 +-- .../presentation/library/LibraryMoveDialog.kt | 2 +- .../presentation/licenses/LicensesItem.kt | 2 -- .../presentation/reader/ReaderBottomBar.kt | 9 ++++++-- .../reader/ReaderPerceptionExpander.kt | 10 +++++---- .../colors/components/ColorPresetOption.kt | 2 -- .../filter/components/BrowseFilterOption.kt | 3 +-- .../scan/components/BrowseScanOption.kt | 2 -- .../general/components/AppLanguageOption.kt | 3 +-- .../font/components/FontFamilyOption.kt | 5 ++--- .../reader/font/components/FontStyleOption.kt | 3 +-- .../font/components/FontThicknessOption.kt | 3 +-- .../HighlightedReadingThicknessOption.kt | 5 ++--- .../book_story/ui/about/AboutModel.kt | 6 ++--- .../book_story/ui/book_info/BookInfoModel.kt | 2 -- .../book_story/ui/book_info/BookInfoScreen.kt | 2 -- .../book_story/ui/book_info/BookInfoState.kt | 3 +-- .../book_story/ui/browse/BrowseModel.kt | 4 ++-- .../acclorite/book_story/ui/main/MainModel.kt | 7 +++--- .../acclorite/book_story/ui/main/MainState.kt | 5 ++--- .../book_story/ui/reader/ReaderModel.kt | 4 ++-- .../book_story/ui/reader/ReaderScreen.kt | 3 +-- .../book_story/ui/reader/ReaderState.kt | 3 +-- .../book_story/ui/settings/SettingsModel.kt | 7 +++--- .../book_story/ui/settings/SettingsState.kt | 3 +-- .../book_story/ui/start/StartScreen.kt | 5 +---- 66 files changed, 100 insertions(+), 168 deletions(-) delete mode 100644 app/src/main/java/ua/acclorite/book_story/presentation/core/constants/Constants.kt diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 07e3b415..f23f8925 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -44,5 +44,5 @@ -keepnames class ** -keepnames class org.xmlpull.** { *; } -keepclassmembernames class org.xmlpull.** { *; } --keepnames class kotlin.reflect.jvm.internal.impl.builtins.PrimitiveType { values(); } +#-keepnames class kotlin.reflect.jvm.internal.impl.builtins.PrimitiveType { values(); } -keepnames class * implements android.os.Parcelable { ** CREATOR; } \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/data/mapper/book/BookMapperImpl.kt b/app/src/main/java/ua/acclorite/book_story/data/mapper/book/BookMapperImpl.kt index 5f69251b..d94d3039 100644 --- a/app/src/main/java/ua/acclorite/book_story/data/mapper/book/BookMapperImpl.kt +++ b/app/src/main/java/ua/acclorite/book_story/data/mapper/book/BookMapperImpl.kt @@ -6,7 +6,7 @@ package ua.acclorite.book_story.data.mapper.book -import android.net.Uri +import androidx.core.net.toUri import ua.acclorite.book_story.R import ua.acclorite.book_story.data.local.dto.BookEntity import ua.acclorite.book_story.domain.library.book.Book @@ -43,7 +43,7 @@ class BookMapperImpl @Inject constructor() : BookMapper { filePath = bookEntity.filePath, lastOpened = null, category = bookEntity.category, - coverImage = if (bookEntity.image != null) Uri.parse(bookEntity.image) else null + coverImage = if (bookEntity.image != null) bookEntity.image.toUri() else null ) } } \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/data/parser/DocumentParser.kt b/app/src/main/java/ua/acclorite/book_story/data/parser/DocumentParser.kt index 13255e45..d2369470 100644 --- a/app/src/main/java/ua/acclorite/book_story/data/parser/DocumentParser.kt +++ b/app/src/main/java/ua/acclorite/book_story/data/parser/DocumentParser.kt @@ -42,7 +42,7 @@ class DocumentParser @Inject constructor( var chapterAdded = false document.selectFirst("body") - .run { if (this == null) document.body() else this } + .run { this ?: document.body() } .apply { // Remove manual line breaks from all

, select("p").forEach { element -> diff --git a/app/src/main/java/ua/acclorite/book_story/data/parser/epub/EpubTextParser.kt b/app/src/main/java/ua/acclorite/book_story/data/parser/epub/EpubTextParser.kt index fc5c8309..ce373d44 100644 --- a/app/src/main/java/ua/acclorite/book_story/data/parser/epub/EpubTextParser.kt +++ b/app/src/main/java/ua/acclorite/book_story/data/parser/epub/EpubTextParser.kt @@ -8,8 +8,8 @@ package ua.acclorite.book_story.data.parser.epub -import android.net.Uri import android.util.Log +import androidx.core.net.toUri import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.async @@ -21,7 +21,6 @@ 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.Constants 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 @@ -62,7 +61,7 @@ class EpubTextParser @Inject constructor( val chapterEntries = zip.getChapterEntries(opfEntry) val imageEntries = zip.entries().toList().filter { - Constants.provideImageExtensions().any { format -> + provideImageExtensions().any { format -> it.name.endsWith(format, ignoreCase = true) } } @@ -108,7 +107,6 @@ class EpubTextParser @Inject constructor( * * @return Null if could not parse. */ - @OptIn(ExperimentalCoroutinesApi::class) private suspend fun ZipFile.parseEpub( chapterEntries: List, imageEntries: List, @@ -166,7 +164,9 @@ class EpubTextParser @Inject constructor( chapterTitleMap: Map? ) { // Getting all text - val content = zip.getInputStream(entry).bufferedReader().use { it.readText() } + val content = withContext(Dispatchers.IO) { + zip.getInputStream(entry) + }.bufferedReader().use { it.readText() } var readerText = documentParser.parseDocument( document = Jsoup.parse(content), zipFile = zip, @@ -227,7 +227,7 @@ class EpubTextParser @Inject constructor( val tocDocument = tocContent?.let { Jsoup.parse(it) } if (tocDocument == null) return null - var titleMap = mutableMapOf() + val titleMap = mutableMapOf() tocDocument.select("navPoint").forEach { navPoint -> val title = navPoint.selectFirst("navLabel > text")?.text() @@ -239,7 +239,7 @@ class EpubTextParser @Inject constructor( val source = navPoint.selectFirst("content")?.attr("src")?.trim() .let { source -> if (source.isNullOrBlank()) return@forEach - Uri.parse(source).path ?: source + source.toUri().path ?: source }.substringAfterLast(File.separator) val parent = navPoint.parent() @@ -250,7 +250,7 @@ class EpubTextParser @Inject constructor( val parentSource = parent.selectFirst("content")?.attr("src")?.trim() .let { parentSource -> if (parentSource.isNullOrBlank()) return@forEach - Uri.parse(parentSource).path ?: parentSource + parentSource.toUri().path ?: parentSource }.substringAfterLast(File.separator) if (parentSource == source) return@let null return@let parentSource @@ -294,11 +294,7 @@ class EpubTextParser @Inject constructor( * @return List of chapter entries in correct order (do not reorder). */ private fun ZipFile.getChapterEntries(opfEntry: ZipEntry?): List { - opfEntry.let { opfEntry -> - if (opfEntry == null) { - return@let - } - + opfEntry?.let { val opfContent = getInputStream(opfEntry).bufferedReader().use { it.readText() } diff --git a/app/src/main/java/ua/acclorite/book_story/data/repository/BookRepositoryImpl.kt b/app/src/main/java/ua/acclorite/book_story/data/repository/BookRepositoryImpl.kt index 9541f657..3ff92224 100644 --- a/app/src/main/java/ua/acclorite/book_story/data/repository/BookRepositoryImpl.kt +++ b/app/src/main/java/ua/acclorite/book_story/data/repository/BookRepositoryImpl.kt @@ -12,6 +12,7 @@ import android.graphics.BitmapFactory import android.net.Uri import android.provider.MediaStore import android.util.Log +import androidx.core.net.toUri import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import ua.acclorite.book_story.data.local.room.BookDao @@ -191,7 +192,7 @@ class BookRepositoryImpl @Inject constructor( listOf( bookMapper.toBookEntity( book.copy( - coverImage = if (entity.image != null) Uri.parse(entity.image) else null + coverImage = if (entity.image != null) entity.image.toUri() else null ) ) ) @@ -357,7 +358,7 @@ class BookRepositoryImpl @Inject constructor( val currentCover = try { MediaStore.Images.Media.getBitmap( application.contentResolver, - Uri.parse(book.image) + book.image.toUri() ) } catch (e: Exception) { Log.i(CAN_RESET_COVER, "Can reset cover image. (could not get current)") diff --git a/app/src/main/java/ua/acclorite/book_story/data/repository/FileSystemRepositoryImpl.kt b/app/src/main/java/ua/acclorite/book_story/data/repository/FileSystemRepositoryImpl.kt index 5e2afeb2..6a7b84bb 100644 --- a/app/src/main/java/ua/acclorite/book_story/data/repository/FileSystemRepositoryImpl.kt +++ b/app/src/main/java/ua/acclorite/book_story/data/repository/FileSystemRepositoryImpl.kt @@ -19,7 +19,6 @@ 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.ui.UIText -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideExtensions import java.util.UUID import javax.inject.Inject @@ -49,7 +48,7 @@ class FileSystemRepositoryImpl @Inject constructor( val existingPaths = database .searchBooks("") .map { it.filePath } - val supportedExtensions = Constants.provideExtensions() + val supportedExtensions = provideExtensions() /** * Verify that [CachedFile] is valid and can be shown correctly. diff --git a/app/src/main/java/ua/acclorite/book_story/domain/file/CachedFile.kt b/app/src/main/java/ua/acclorite/book_story/domain/file/CachedFile.kt index a584aece..a2475a2b 100644 --- a/app/src/main/java/ua/acclorite/book_story/domain/file/CachedFile.kt +++ b/app/src/main/java/ua/acclorite/book_story/domain/file/CachedFile.kt @@ -23,7 +23,7 @@ import java.util.UUID * Faster than [androidx.documentfile.provider.DocumentFile]. * Saves all it's variables after initialized. */ -@Suppress("unused") +@Suppress("unused", "MemberVisibilityCanBePrivate") @Immutable class CachedFile( private val context: Context, diff --git a/app/src/main/java/ua/acclorite/book_story/domain/file/CachedFileCompat.kt b/app/src/main/java/ua/acclorite/book_story/domain/file/CachedFileCompat.kt index 146a54d2..88373649 100644 --- a/app/src/main/java/ua/acclorite/book_story/domain/file/CachedFileCompat.kt +++ b/app/src/main/java/ua/acclorite/book_story/domain/file/CachedFileCompat.kt @@ -38,7 +38,7 @@ object CachedFileCompat { ): CachedFile? { val uri = try { val fullPathUri = DocumentFileCompat.fromFullPath(context, path)?.uri - if (fullPathUri == null) throw NullPointerException("Could not get URI from full path.") + ?: throw NullPointerException("Could not get URI from full path.") fullPathUri } catch (e: Exception) { @@ -49,7 +49,7 @@ object CachedFileCompat { context = context, fullPath = path )?.uri - if (parentUri == null) throw NullPointerException("Could not get parent URI.") + ?: throw NullPointerException("Could not get parent URI.") val storageId = DocumentFileCompat.getStorageId(context, path) if (storageId.isBlank()) throw NullPointerException("Could not get storageId.") diff --git a/app/src/main/java/ua/acclorite/book_story/domain/navigator/Navigator.kt b/app/src/main/java/ua/acclorite/book_story/domain/navigator/Navigator.kt index 06620f37..2d7dc94c 100644 --- a/app/src/main/java/ua/acclorite/book_story/domain/navigator/Navigator.kt +++ b/app/src/main/java/ua/acclorite/book_story/domain/navigator/Navigator.kt @@ -24,7 +24,7 @@ class Navigator @AssistedInject constructor( @Assisted private val initialScreen: Screen ) : ViewModel() { - val items = savedStateHandle.getStateFlow("items", mutableListOf(initialScreen)) + val items = savedStateHandle.getStateFlow("items", mutableListOf(initialScreen)) private fun StateFlow>.removeLast() { savedStateHandle["items"] = value.dropLast(1) } @@ -42,7 +42,7 @@ class Navigator @AssistedInject constructor( ) val lastEvent = savedStateHandle.getStateFlow("stack_event", StackEvent.Default) - private fun StateFlow.change(stackEvent: StackEvent) { + private fun changeStackEvent(stackEvent: StackEvent) { savedStateHandle["stack_event"] = stackEvent } @@ -55,7 +55,7 @@ class Navigator @AssistedInject constructor( if (lastItem.value::class == targetScreen::class) return if (!saveInBackStack) items.removeLast() - lastEvent.change( + changeStackEvent( if (popping) StackEvent.Pop else StackEvent.Default ) @@ -66,7 +66,7 @@ class Navigator @AssistedInject constructor( fun pop(popping: Boolean = true) { if (items.value.count() > 1) { - lastEvent.change( + changeStackEvent( if (popping) StackEvent.Pop else StackEvent.Default ) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutBadges.kt b/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutBadges.kt index ff98bd29..9a9d989f 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutBadges.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutBadges.kt @@ -18,7 +18,6 @@ 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.Constants import ua.acclorite.book_story.presentation.core.constants.provideAboutBadges import ua.acclorite.book_story.presentation.core.util.showToast import ua.acclorite.book_story.ui.about.AboutEvent @@ -39,7 +38,7 @@ fun AboutBadges( horizontalArrangement = Arrangement.spacedBy(13.dp) ) { items( - Constants.provideAboutBadges(), + provideAboutBadges(), key = { it.id } ) { badge -> AboutBadgeItem(badge = badge) { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutLayout.kt b/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutLayout.kt index f2711e7a..d723e9e0 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutLayout.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutLayout.kt @@ -15,7 +15,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyListState -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -28,7 +27,6 @@ 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.Constants 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 @@ -36,7 +34,6 @@ import ua.acclorite.book_story.presentation.core.constants.provideSupportPage import ua.acclorite.book_story.presentation.core.constants.provideTranslationPage import ua.acclorite.book_story.ui.about.AboutEvent -@OptIn(ExperimentalMaterial3Api::class) @Composable fun AboutLayout( paddingValues: PaddingValues, @@ -88,7 +85,7 @@ fun AboutLayout( ) { navigateToBrowserPage( AboutEvent.OnNavigateToBrowserPage( - page = Constants.provideReleasesPage(), + page = provideReleasesPage(), context = context ) ) @@ -102,7 +99,7 @@ fun AboutLayout( ) { navigateToBrowserPage( AboutEvent.OnNavigateToBrowserPage( - page = Constants.provideIssuesPage(), + page = provideIssuesPage(), context = context ) ) @@ -117,7 +114,7 @@ fun AboutLayout( ) { navigateToBrowserPage( AboutEvent.OnNavigateToBrowserPage( - page = Constants.provideContributorsPage(), + page = provideContributorsPage(), context = context ) ) @@ -149,7 +146,7 @@ fun AboutLayout( ) { navigateToBrowserPage( AboutEvent.OnNavigateToBrowserPage( - page = Constants.provideTranslationPage(), + page = provideTranslationPage(), context = context ) ) @@ -163,7 +160,7 @@ fun AboutLayout( ) { navigateToBrowserPage( AboutEvent.OnNavigateToBrowserPage( - page = Constants.provideSupportPage(), + page = provideSupportPage(), context = context ) ) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoContent.kt b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoContent.kt index 8014bc7f..20bf813a 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoContent.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoContent.kt @@ -7,14 +7,12 @@ package ua.acclorite.book_story.presentation.book_info import androidx.compose.foundation.lazy.LazyListState -import androidx.compose.material.ExperimentalMaterialApi 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.domain.util.Dialog import ua.acclorite.book_story.ui.book_info.BookInfoEvent -@OptIn(ExperimentalMaterialApi::class) @Composable fun BookInfoContent( book: Book, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoDetailsBottomSheet.kt b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoDetailsBottomSheet.kt index b0490d05..d533122b 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoDetailsBottomSheet.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoDetailsBottomSheet.kt @@ -22,7 +22,6 @@ 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.Constants import ua.acclorite.book_story.presentation.core.constants.provideExtensions import ua.acclorite.book_story.presentation.settings.components.SettingsSubcategoryTitle import ua.acclorite.book_story.ui.book_info.BookInfoEvent @@ -61,7 +60,7 @@ fun BookInfoDetailsBottomSheet( val fileExists = remember(cachedFile) { cachedFile.let { - it != null && it.canAccess() && !it.isDirectory && Constants.provideExtensions() + it != null && it.canAccess() && !it.isDirectory && provideExtensions() .any { ext -> it.name.endsWith(ext, ignoreCase = true) } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayout.kt b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayout.kt index a6565037..e513e5e6 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayout.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayout.kt @@ -19,7 +19,6 @@ 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.Constants import ua.acclorite.book_story.presentation.core.constants.providePrimaryScrollbar import ua.acclorite.book_story.ui.book_info.BookInfoEvent @@ -39,7 +38,7 @@ fun BookInfoLayout( LazyColumnWithScrollbar( modifier = Modifier.fillMaxSize(), state = listState, - scrollbarSettings = Constants.providePrimaryScrollbar(false), + scrollbarSettings = providePrimaryScrollbar(false), contentPadding = PaddingValues(bottom = 18.dp) ) { item { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutInfo.kt b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutInfo.kt index 026ef0c8..000c05cd 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutInfo.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutInfo.kt @@ -11,7 +11,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -19,7 +18,6 @@ import androidx.compose.ui.unit.dp import ua.acclorite.book_story.domain.library.book.Book import ua.acclorite.book_story.ui.book_info.BookInfoEvent -@OptIn(ExperimentalMaterial3ExpressiveApi::class) @Composable fun BookInfoLayoutInfo( book: Book, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoScaffold.kt b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoScaffold.kt index 00a6fec3..92901394 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoScaffold.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoScaffold.kt @@ -12,7 +12,6 @@ import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.navigationBars import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.lazy.LazyListState -import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable @@ -20,7 +19,6 @@ import androidx.compose.ui.Modifier import ua.acclorite.book_story.domain.library.book.Book import ua.acclorite.book_story.ui.book_info.BookInfoEvent -@OptIn(ExperimentalMaterialApi::class) @Composable fun BookInfoScaffold( book: Book, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseGridItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseGridItem.kt index 969da09c..9b00d653 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseGridItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseGridItem.kt @@ -6,7 +6,6 @@ package ua.acclorite.book_story.presentation.browse -import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.Column @@ -21,7 +20,6 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import ua.acclorite.book_story.domain.browse.file.SelectableFile -@OptIn(ExperimentalFoundationApi::class) @Composable fun BrowseGridItem( modifier: Modifier, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseGridLayout.kt b/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseGridLayout.kt index 8059b50c..d4141707 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseGridLayout.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseGridLayout.kt @@ -21,7 +21,6 @@ import ua.acclorite.book_story.domain.browse.file.GroupedFiles import ua.acclorite.book_story.domain.browse.file.SelectableFile import ua.acclorite.book_story.presentation.core.components.common.LazyVerticalGridWithScrollbar import ua.acclorite.book_story.presentation.core.components.common.header -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.providePrimaryScrollbar @Composable @@ -39,7 +38,7 @@ fun BrowseGridLayout( state = gridState, modifier = Modifier.fillMaxSize(), contentPadding = PaddingValues(horizontal = 8.dp), - scrollbarSettings = Constants.providePrimaryScrollbar(false) + scrollbarSettings = providePrimaryScrollbar(false) ) { groupedFiles.forEach { group -> stickyHeader { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseListItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseListItem.kt index 4a4e1b9d..7cd62800 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseListItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseListItem.kt @@ -6,7 +6,6 @@ package ua.acclorite.book_story.presentation.browse -import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.Row @@ -26,7 +25,6 @@ import ua.acclorite.book_story.domain.browse.file.SelectableFile import ua.acclorite.book_story.presentation.core.components.common.CircularCheckbox import ua.acclorite.book_story.ui.theme.FadeTransitionPreservingSpace -@OptIn(ExperimentalFoundationApi::class) @Composable fun BrowseListItem( modifier: Modifier, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseListLayout.kt b/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseListLayout.kt index b8c9a3ab..a82e1c51 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseListLayout.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseListLayout.kt @@ -19,7 +19,6 @@ import androidx.compose.ui.unit.dp import ua.acclorite.book_story.domain.browse.file.GroupedFiles import ua.acclorite.book_story.domain.browse.file.SelectableFile import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.providePrimaryScrollbar @Composable @@ -33,7 +32,7 @@ fun BrowseListLayout( state = listState, modifier = Modifier.fillMaxSize(), contentPadding = PaddingValues(horizontal = 8.dp), - scrollbarSettings = Constants.providePrimaryScrollbar(false) + scrollbarSettings = providePrimaryScrollbar(false) ) { groupedFiles.forEach { group -> stickyHeader { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/LazyColumnWithScrollbar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/LazyColumnWithScrollbar.kt index 0f40c5db..1faffd17 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/LazyColumnWithScrollbar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/LazyColumnWithScrollbar.kt @@ -20,7 +20,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import my.nanihadesuka.compose.InternalLazyColumnScrollbar import my.nanihadesuka.compose.ScrollbarSettings -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideSecondaryScrollbar @Composable @@ -28,7 +27,7 @@ fun LazyColumnWithScrollbar( modifier: Modifier = Modifier, parentModifier: Modifier = Modifier, state: LazyListState = rememberLazyListState(), - scrollbarSettings: ScrollbarSettings = Constants.provideSecondaryScrollbar(), + scrollbarSettings: ScrollbarSettings = provideSecondaryScrollbar(), enableScrollbar: Boolean = true, contentPadding: PaddingValues = PaddingValues(0.dp), verticalArrangement: Arrangement.Vertical = Arrangement.Top, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/LazyVerticalGridWithScrollbar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/LazyVerticalGridWithScrollbar.kt index 7b2c8ca2..c47fc47e 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/LazyVerticalGridWithScrollbar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/LazyVerticalGridWithScrollbar.kt @@ -21,7 +21,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import my.nanihadesuka.compose.InternalLazyVerticalGridScrollbar import my.nanihadesuka.compose.ScrollbarSettings -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideSecondaryScrollbar @Composable @@ -29,7 +28,7 @@ fun LazyVerticalGridWithScrollbar( modifier: Modifier = Modifier, columns: GridCells, state: LazyGridState = rememberLazyGridState(), - scrollbarSettings: ScrollbarSettings = Constants.provideSecondaryScrollbar(), + scrollbarSettings: ScrollbarSettings = provideSecondaryScrollbar(), enableScrollbar: Boolean = true, contentPadding: PaddingValues = PaddingValues(0.dp), verticalArrangement: Arrangement.Vertical = Arrangement.Top, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_drawer/ModalDrawer.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_drawer/ModalDrawer.kt index 911a18df..754309b3 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_drawer/ModalDrawer.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_drawer/ModalDrawer.kt @@ -41,7 +41,6 @@ import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.dp import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.providePrimaryScrollbar import ua.acclorite.book_story.presentation.core.util.noRippleClickable @@ -146,7 +145,7 @@ fun ModalDrawer( LazyColumnWithScrollbar( state = rememberLazyListState(startIndex), modifier = Modifier.fillMaxSize(), - scrollbarSettings = Constants.providePrimaryScrollbar(), + scrollbarSettings = providePrimaryScrollbar(), contentPadding = PaddingValues(vertical = 9.dp) ) { content() diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/ChipsWithTitle.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/ChipsWithTitle.kt index 8bec2e04..1715b286 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/ChipsWithTitle.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/ChipsWithTitle.kt @@ -8,7 +8,6 @@ package ua.acclorite.book_story.presentation.core.components.settings import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth @@ -26,7 +25,6 @@ import ua.acclorite.book_story.presentation.settings.components.SettingsSubcateg /** * Chips with title. Use list of [ButtonItem]s to display chips. */ -@OptIn(ExperimentalLayoutApi::class) @Composable fun ChipsWithTitle( modifier: Modifier = Modifier, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/AboutBadgeConstants.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/AboutBadgeConstants.kt index 5fbda384..30942c86 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/AboutBadgeConstants.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/AboutBadgeConstants.kt @@ -9,7 +9,7 @@ package ua.acclorite.book_story.presentation.core.constants import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.about.Badge -fun Constants.provideAboutBadges() = listOf( +fun provideAboutBadges() = listOf( Badge( id = "github", drawable = R.drawable.github, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/CommonConstants.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/CommonConstants.kt index d81ae9f9..6051d595 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/CommonConstants.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/CommonConstants.kt @@ -15,10 +15,10 @@ import ua.acclorite.book_story.domain.reader.ColorPreset import ua.acclorite.book_story.domain.ui.UIText // Main State -fun Constants.provideMainState() = "main_state" +fun provideMainState() = "main_state" // Empty Book -fun Constants.provideEmptyBook() = Book( +fun provideEmptyBook() = Book( id = -1, title = "", author = UIText.StringValue(""), @@ -33,7 +33,7 @@ fun Constants.provideEmptyBook() = Book( ) // Default Color Preset -fun Constants.provideDefaultColorPreset() = ColorPreset( +fun provideDefaultColorPreset() = ColorPreset( id = -1, name = null, backgroundColor = Color(0xFFFAF8FF), // Blue Light Surface (hardcoded) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/Constants.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/Constants.kt deleted file mode 100644 index c602a4f5..00000000 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/Constants.kt +++ /dev/null @@ -1,9 +0,0 @@ -/* - * 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.presentation.core.constants - -object Constants \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/CreditConstants.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/CreditConstants.kt index 8762bf1c..69097856 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/CreditConstants.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/CreditConstants.kt @@ -10,7 +10,7 @@ import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.about.Credit import ua.acclorite.book_story.domain.ui.UIText -fun Constants.provideCredits() = listOf( +fun provideCredits() = listOf( Credit( name = "Tachiyomi (Mihon)", source = "GitHub", diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/FontConstants.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/FontConstants.kt index 5c896ee5..e0dccba0 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/FontConstants.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/FontConstants.kt @@ -17,8 +17,7 @@ import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.reader.FontWithName import ua.acclorite.book_story.domain.ui.UIText -@OptIn(ExperimentalTextApi::class) -fun Constants.provideFonts(): List { +fun provideFonts(): List { return mutableListOf( FontWithName( "default", diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/HelpTipConstants.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/HelpTipConstants.kt index 2464f86f..6f90e8be 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/HelpTipConstants.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/HelpTipConstants.kt @@ -11,7 +11,7 @@ import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.help.HelpTip import ua.acclorite.book_story.presentation.help.HelpAnnotation -fun Constants.provideHelpTips() = listOf( +fun provideHelpTips() = listOf( HelpTip( title = R.string.help_title_how_to_add_books, description = { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/LanguageConstants.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/LanguageConstants.kt index bb3a7d15..496d8ab3 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/LanguageConstants.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/LanguageConstants.kt @@ -6,7 +6,7 @@ package ua.acclorite.book_story.presentation.core.constants -fun Constants.provideLanguages() = listOf( +fun provideLanguages() = listOf( Pair("en", "English"), Pair("uk", "Українська"), Pair("de", "Deutsch"), diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/LinkConstants.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/LinkConstants.kt index 727f201d..c7b66566 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/LinkConstants.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/LinkConstants.kt @@ -8,17 +8,17 @@ package ua.acclorite.book_story.presentation.core.constants -fun Constants.provideReleasesPage() = +fun provideReleasesPage() = "https://www.github.com/Acclorite/book-story/releases/latest" -fun Constants.provideIssuesPage() = +fun provideIssuesPage() = "https://www.github.com/Acclorite/book-story/issues" -fun Constants.provideContributorsPage() = +fun provideContributorsPage() = "https://github.com/Acclorite/book-story/graphs/contributors" -fun Constants.provideTranslationPage() = +fun provideTranslationPage() = "https://hosted.weblate.org/projects/book-story" -fun Constants.provideSupportPage() = +fun provideSupportPage() = "https://patreon.com/Acclorite" \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/ScrollbarConstants.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/ScrollbarConstants.kt index f9aecf81..1df9a01f 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/ScrollbarConstants.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/ScrollbarConstants.kt @@ -14,7 +14,7 @@ import my.nanihadesuka.compose.ScrollbarSelectionMode import my.nanihadesuka.compose.ScrollbarSettings @Composable -fun Constants.providePrimaryScrollbar(canSelect: Boolean = true) = ScrollbarSettings( +fun providePrimaryScrollbar(canSelect: Boolean = true) = ScrollbarSettings( thumbUnselectedColor = MaterialTheme.colorScheme.secondary, thumbSelectedColor = MaterialTheme.colorScheme.secondary.copy(0.8f), hideDelayMillis = 2000, @@ -25,7 +25,7 @@ fun Constants.providePrimaryScrollbar(canSelect: Boolean = true) = ScrollbarSett ) @Composable -fun Constants.provideSecondaryScrollbar() = ScrollbarSettings( +fun provideSecondaryScrollbar() = ScrollbarSettings( thumbUnselectedColor = MaterialTheme.colorScheme.onSurfaceVariant.copy(0.5f), hideDelayMillis = 500, durationAnimationMillis = 200, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/SupportedExtensionConstants.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/SupportedExtensionConstants.kt index 78e9f73c..6cf8101c 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/SupportedExtensionConstants.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/SupportedExtensionConstants.kt @@ -6,7 +6,7 @@ package ua.acclorite.book_story.presentation.core.constants -fun Constants.provideExtensions() = listOf( +fun provideExtensions() = listOf( ".epub", ".pdf", ".fb2", @@ -16,7 +16,7 @@ fun Constants.provideExtensions() = listOf( ".md" ) -fun Constants.provideImageExtensions() = listOf( +fun provideImageExtensions() = listOf( ".png", ".jpg", ".jpeg", diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/util/ModifierExtensions.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/util/ModifierExtensions.kt index cf3c0205..0b5a1e17 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/util/ModifierExtensions.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/util/ModifierExtensions.kt @@ -6,11 +6,9 @@ package ua.acclorite.book_story.presentation.core.util -import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.combinedClickable import androidx.compose.ui.Modifier -@OptIn(ExperimentalFoundationApi::class) fun Modifier.noRippleClickable( enabled: Boolean = true, onLongClick: (() -> Unit)? = null, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/credits/CreditItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/credits/CreditItem.kt index a9a1b285..4bbbc45a 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/credits/CreditItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/credits/CreditItem.kt @@ -10,7 +10,6 @@ import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth @@ -26,7 +25,6 @@ import androidx.compose.ui.unit.dp import ua.acclorite.book_story.domain.about.Credit import ua.acclorite.book_story.presentation.core.components.common.StyledText -@OptIn(ExperimentalLayoutApi::class) @Composable fun CreditItem( credit: Credit, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/credits/CreditsLayout.kt b/app/src/main/java/ua/acclorite/book_story/presentation/credits/CreditsLayout.kt index 93734507..c9c4ec53 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/credits/CreditsLayout.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/credits/CreditsLayout.kt @@ -15,7 +15,6 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideCredits import ua.acclorite.book_story.ui.about.AboutEvent @@ -33,7 +32,7 @@ fun CreditsLayout( state = listState ) { items( - Constants.provideCredits(), + provideCredits(), key = { it.name } ) { credit -> CreditItem(credit = credit) { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/help/HelpLayout.kt b/app/src/main/java/ua/acclorite/book_story/presentation/help/HelpLayout.kt index b60a4d54..5645406f 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/help/HelpLayout.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/help/HelpLayout.kt @@ -16,7 +16,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import ua.acclorite.book_story.domain.util.Position import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideHelpTips @Composable @@ -32,14 +31,14 @@ fun HelpLayout( contentPadding = PaddingValues(vertical = 16.dp) ) { itemsIndexed( - Constants.provideHelpTips(), + provideHelpTips(), key = { _, helpTip -> helpTip.title } ) { index, helpTip -> HelpItem( helpTip = helpTip, position = when (index) { 0 -> Position.TOP - Constants.provideHelpTips().lastIndex -> Position.BOTTOM + provideHelpTips().lastIndex -> Position.BOTTOM else -> Position.CENTER } ) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/history/HistoryLayout.kt b/app/src/main/java/ua/acclorite/book_story/presentation/history/HistoryLayout.kt index d073d642..49e2a64a 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/history/HistoryLayout.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/history/HistoryLayout.kt @@ -19,7 +19,6 @@ import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.history.GroupedHistory import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.providePrimaryScrollbar import ua.acclorite.book_story.presentation.core.util.LocalActivity import ua.acclorite.book_story.presentation.settings.components.SettingsSubcategoryTitle @@ -43,7 +42,7 @@ fun HistoryLayout( LazyColumnWithScrollbar( modifier = Modifier.fillMaxSize(), state = listState, - scrollbarSettings = Constants.providePrimaryScrollbar(false) + scrollbarSettings = providePrimaryScrollbar(false) ) { item { Spacer(modifier = Modifier.height(12.dp)) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryItem.kt index 608db3f9..5763ca84 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryItem.kt @@ -6,7 +6,6 @@ package ua.acclorite.book_story.presentation.library -import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.Box @@ -41,7 +40,6 @@ import ua.acclorite.book_story.presentation.core.components.common.AsyncCoverIma import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.core.util.calculateProgress -@OptIn(ExperimentalFoundationApi::class) @Composable fun LazyGridItemScope.LibraryItem( book: SelectableBook, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryLayout.kt b/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryLayout.kt index f4532beb..7ece00f7 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryLayout.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryLayout.kt @@ -14,7 +14,6 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import ua.acclorite.book_story.presentation.core.components.common.LazyVerticalGridWithScrollbar -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.providePrimaryScrollbar @Composable @@ -24,7 +23,7 @@ fun LibraryLayout( LazyVerticalGridWithScrollbar( columns = GridCells.Adaptive(120.dp), modifier = Modifier.fillMaxSize(), - scrollbarSettings = Constants.providePrimaryScrollbar(false), + scrollbarSettings = providePrimaryScrollbar(false), contentPadding = PaddingValues(8.dp) ) { items() diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryMoveDialog.kt b/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryMoveDialog.kt index 3f608c2e..cc5a5ad4 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryMoveDialog.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryMoveDialog.kt @@ -46,7 +46,7 @@ fun LibraryMoveDialog( } } } - var selectedCategory = remember { + val selectedCategory = remember { mutableStateOf(moveCategories.value[0]) } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/licenses/LicensesItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/licenses/LicensesItem.kt index 3ac1bd24..7af08d93 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/licenses/LicensesItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/licenses/LicensesItem.kt @@ -10,7 +10,6 @@ import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer @@ -32,7 +31,6 @@ import com.mikepenz.aboutlibraries.ui.compose.m3.util.author import ua.acclorite.book_story.R import ua.acclorite.book_story.presentation.core.components.common.StyledText -@OptIn(ExperimentalLayoutApi::class) @Composable fun LicensesItem( library: Library, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderBottomBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderBottomBar.kt index b95bc859..a586fc70 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderBottomBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderBottomBar.kt @@ -54,10 +54,15 @@ fun ReaderBottomBar( scroll: (ReaderEvent.OnScroll) -> Unit, changeProgress: (ReaderEvent.OnChangeProgress) -> Unit ) { - val arrowDirection = remember(checkpoint.index, listState.firstVisibleItemIndex) { + val firstVisibleItemIndex = remember { + derivedStateOf { + listState.firstVisibleItemIndex + } + } + val arrowDirection = remember(checkpoint.index, firstVisibleItemIndex) { derivedStateOf { val checkpointIndex = checkpoint.index - val index = listState.firstVisibleItemIndex + val index = firstVisibleItemIndex.value when { checkpointIndex > index -> Direction.END diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderPerceptionExpander.kt b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderPerceptionExpander.kt index 90fe3580..4e0fcbb3 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderPerceptionExpander.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderPerceptionExpander.kt @@ -14,10 +14,10 @@ import androidx.compose.material3.VerticalDivider import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.platform.LocalConfiguration +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.platform.LocalWindowInfo import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.coerceAtMost -import androidx.compose.ui.unit.dp @Composable fun ReaderPerceptionExpander( @@ -32,9 +32,11 @@ fun ReaderPerceptionExpander( .fillMaxSize() .padding( horizontal = perceptionExpanderPadding.coerceAtMost( - LocalConfiguration.current.screenWidthDp.run { + with(LocalDensity.current) { + LocalWindowInfo.current.containerSize.width.toDp() + }.run { this / 2f - (this * 0.1f) - }.dp + } ) ), horizontalArrangement = Arrangement.SpaceBetween diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/colors/components/ColorPresetOption.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/colors/components/ColorPresetOption.kt index aa1b79b9..df097968 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/colors/components/ColorPresetOption.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/colors/components/ColorPresetOption.kt @@ -11,7 +11,6 @@ import androidx.compose.animation.expandHorizontally import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.animation.shrinkHorizontally -import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable @@ -76,7 +75,6 @@ import ua.acclorite.book_story.ui.settings.SettingsModel import ua.acclorite.book_story.ui.theme.FadeTransitionPreservingSpace import ua.acclorite.book_story.ui.theme.Transitions -@OptIn(ExperimentalFoundationApi::class) @Composable fun ColorPresetOption(backgroundColor: Color) { val settingsModel = hiltViewModel() diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/browse/filter/components/BrowseFilterOption.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/browse/filter/components/BrowseFilterOption.kt index a4cf25e3..899b70c6 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/browse/filter/components/BrowseFilterOption.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/browse/filter/components/BrowseFilterOption.kt @@ -26,13 +26,12 @@ import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import ua.acclorite.book_story.presentation.core.components.common.StyledText -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideExtensions import ua.acclorite.book_story.ui.main.MainEvent import ua.acclorite.book_story.ui.main.MainModel fun LazyListScope.BrowseFilterOption() { - items(Constants.provideExtensions(), key = { it }) { + items(provideExtensions(), key = { it }) { val mainModel = hiltViewModel() val state = mainModel.state.collectAsStateWithLifecycle() diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/browse/scan/components/BrowseScanOption.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/browse/scan/components/BrowseScanOption.kt index ed7aab7e..121bdd0a 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/browse/scan/components/BrowseScanOption.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/browse/scan/components/BrowseScanOption.kt @@ -10,7 +10,6 @@ import android.content.Context import android.content.UriPermission import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts -import androidx.compose.animation.ExperimentalSharedTransitionApi import androidx.compose.animation.animateContentSize import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -48,7 +47,6 @@ import ua.acclorite.book_story.ui.settings.SettingsEvent import ua.acclorite.book_story.ui.settings.SettingsModel import ua.acclorite.book_story.ui.theme.dynamicListItemColor -@OptIn(ExperimentalSharedTransitionApi::class) @Composable fun BrowseScanOption() { val settingsModel = hiltViewModel() diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/general/components/AppLanguageOption.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/general/components/AppLanguageOption.kt index 565db015..a0bae19b 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/general/components/AppLanguageOption.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/general/components/AppLanguageOption.kt @@ -14,7 +14,6 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.ui.ButtonItem import ua.acclorite.book_story.presentation.core.components.settings.ChipsWithTitle -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideLanguages import ua.acclorite.book_story.ui.main.MainEvent import ua.acclorite.book_story.ui.main.MainModel @@ -26,7 +25,7 @@ fun AppLanguageOption() { ChipsWithTitle( title = stringResource(id = R.string.language_option), - chips = Constants.provideLanguages().sortedBy { it.second }.map { + chips = provideLanguages().sortedBy { it.second }.map { ButtonItem( it.first, it.second, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/font/components/FontFamilyOption.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/font/components/FontFamilyOption.kt index 56623158..a1f79ffe 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/font/components/FontFamilyOption.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/font/components/FontFamilyOption.kt @@ -15,7 +15,6 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.ui.ButtonItem import ua.acclorite.book_story.presentation.core.components.settings.ChipsWithTitle -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideFonts import ua.acclorite.book_story.ui.main.MainEvent import ua.acclorite.book_story.ui.main.MainModel @@ -26,7 +25,7 @@ fun FontFamilyOption() { val state = mainModel.state.collectAsStateWithLifecycle() val fontFamily = remember(state.value.fontFamily) { - Constants.provideFonts().run { + provideFonts().run { find { it.id == state.value.fontFamily } ?: get(0) @@ -35,7 +34,7 @@ fun FontFamilyOption() { ChipsWithTitle( title = stringResource(id = R.string.font_family_option), - chips = Constants.provideFonts() + chips = provideFonts() .map { ButtonItem( id = it.id, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/font/components/FontStyleOption.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/font/components/FontStyleOption.kt index 5004d7c1..04fe2e9f 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/font/components/FontStyleOption.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/font/components/FontStyleOption.kt @@ -16,7 +16,6 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.ui.ButtonItem import ua.acclorite.book_story.presentation.core.components.settings.SegmentedButtonWithTitle -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideFonts import ua.acclorite.book_story.ui.main.MainEvent import ua.acclorite.book_story.ui.main.MainModel @@ -27,7 +26,7 @@ fun FontStyleOption() { val state = mainModel.state.collectAsStateWithLifecycle() val fontFamily = remember(state.value.fontFamily) { - Constants.provideFonts().run { + provideFonts().run { find { it.id == state.value.fontFamily } ?: get(0) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/font/components/FontThicknessOption.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/font/components/FontThicknessOption.kt index dcba6c74..a2fcd26c 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/font/components/FontThicknessOption.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/font/components/FontThicknessOption.kt @@ -16,7 +16,6 @@ import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.reader.ReaderFontThickness import ua.acclorite.book_story.domain.ui.ButtonItem import ua.acclorite.book_story.presentation.core.components.settings.ChipsWithTitle -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideFonts import ua.acclorite.book_story.ui.main.MainEvent import ua.acclorite.book_story.ui.main.MainModel @@ -27,7 +26,7 @@ fun FontThicknessOption() { val state = mainModel.state.collectAsStateWithLifecycle() val fontFamily = remember(state.value.fontFamily) { - Constants.provideFonts().run { + provideFonts().run { find { it.id == state.value.fontFamily } ?: get(0) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/reading_speed/components/HighlightedReadingThicknessOption.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/reading_speed/components/HighlightedReadingThicknessOption.kt index f80d18e7..15e25084 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/reading_speed/components/HighlightedReadingThicknessOption.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/reading_speed/components/HighlightedReadingThicknessOption.kt @@ -23,9 +23,8 @@ fun HighlightedReadingThicknessOption() { ExpandingTransition(visible = state.value.highlightedReading) { SliderWithTitle( - value = state.value.highlightedReadingThickness.to( - " ${stringResource(R.string.highlighted_reading_level)}" - ), + value = state.value.highlightedReadingThickness + to " ${stringResource(R.string.highlighted_reading_level)}", fromValue = 1, toValue = 3, title = stringResource(id = R.string.highlighted_reading_thickness_option), diff --git a/app/src/main/java/ua/acclorite/book_story/ui/about/AboutModel.kt b/app/src/main/java/ua/acclorite/book_story/ui/about/AboutModel.kt index 3eeea548..d2be6c7b 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/about/AboutModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/about/AboutModel.kt @@ -7,13 +7,12 @@ package ua.acclorite.book_story.ui.about import android.content.Intent -import android.net.Uri import androidx.activity.ComponentActivity +import androidx.core.net.toUri import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.FlowPreview import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import ua.acclorite.book_story.R @@ -21,7 +20,6 @@ import ua.acclorite.book_story.presentation.core.util.launchActivity import ua.acclorite.book_story.presentation.core.util.showToast import javax.inject.Inject -@OptIn(FlowPreview::class) @HiltViewModel class AboutModel @Inject constructor() : ViewModel() { @@ -31,7 +29,7 @@ class AboutModel @Inject constructor() : ViewModel() { viewModelScope.launch { val intent = Intent( Intent.ACTION_VIEW, - Uri.parse(event.page) + event.page.toUri() ) intent.launchActivity(event.context as ComponentActivity) { diff --git a/app/src/main/java/ua/acclorite/book_story/ui/book_info/BookInfoModel.kt b/app/src/main/java/ua/acclorite/book_story/ui/book_info/BookInfoModel.kt index 2f7d2f01..00a10ce6 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/book_info/BookInfoModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/book_info/BookInfoModel.kt @@ -11,7 +11,6 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.FlowPreview import kotlinx.coroutines.Job import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.flow.MutableStateFlow @@ -35,7 +34,6 @@ import ua.acclorite.book_story.ui.history.HistoryScreen import ua.acclorite.book_story.ui.library.LibraryScreen import javax.inject.Inject -@OptIn(FlowPreview::class) @HiltViewModel class BookInfoModel @Inject constructor( private val getBookById: GetBookById, diff --git a/app/src/main/java/ua/acclorite/book_story/ui/book_info/BookInfoScreen.kt b/app/src/main/java/ua/acclorite/book_story/ui/book_info/BookInfoScreen.kt index ae91a5c1..1b055579 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/book_info/BookInfoScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/book_info/BookInfoScreen.kt @@ -10,7 +10,6 @@ import android.os.Parcelable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.LaunchedEffect @@ -44,7 +43,6 @@ data class BookInfoScreen(val bookId: Int) : Screen, Parcelable { val changePathChannel: Channel = Channel(Channel.CONFLATED) } - @OptIn(ExperimentalMaterialApi::class) @Composable override fun Content() { val navigator = LocalNavigator.current diff --git a/app/src/main/java/ua/acclorite/book_story/ui/book_info/BookInfoState.kt b/app/src/main/java/ua/acclorite/book_story/ui/book_info/BookInfoState.kt index 90a11b58..67aa774c 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/book_info/BookInfoState.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/book_info/BookInfoState.kt @@ -10,12 +10,11 @@ import androidx.compose.runtime.Immutable import ua.acclorite.book_story.domain.library.book.Book import ua.acclorite.book_story.domain.util.BottomSheet import ua.acclorite.book_story.domain.util.Dialog -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideEmptyBook @Immutable data class BookInfoState( - val book: Book = Constants.provideEmptyBook(), + val book: Book = provideEmptyBook(), val canResetCover: Boolean = false, diff --git a/app/src/main/java/ua/acclorite/book_story/ui/browse/BrowseModel.kt b/app/src/main/java/ua/acclorite/book_story/ui/browse/BrowseModel.kt index 7616b44d..a65bcd42 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/browse/BrowseModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/browse/BrowseModel.kt @@ -169,7 +169,7 @@ class BrowseModel @Inject constructor( viewModelScope.launch(Dispatchers.IO) { _state.update { it.copy( - files = it.files.map { it.copy(selected = false) }, + files = it.files.map { file -> file.copy(selected = false) }, hasSelectedItems = false ) } @@ -446,7 +446,7 @@ class BrowseModel @Inject constructor( return files .filterFiles() .sortedWith( - compareByWithOrder { + compareByWithOrder { when (sortOrder) { BrowseSortOrder.NAME -> { it.data.name.trim() diff --git a/app/src/main/java/ua/acclorite/book_story/ui/main/MainModel.kt b/app/src/main/java/ua/acclorite/book_story/ui/main/MainModel.kt index 79f917f0..0748dea7 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/main/MainModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/main/MainModel.kt @@ -37,7 +37,6 @@ import ua.acclorite.book_story.domain.use_case.data_store.ChangeLanguage import ua.acclorite.book_story.domain.use_case.data_store.GetAllSettings import ua.acclorite.book_story.domain.use_case.data_store.SetDatastore import ua.acclorite.book_story.domain.util.toHorizontalAlignment -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.DataStoreConstants import ua.acclorite.book_story.presentation.core.constants.provideFonts import ua.acclorite.book_story.presentation.core.constants.provideMainState @@ -62,7 +61,7 @@ class MainModel @Inject constructor( private val mainModelReady = MutableStateFlow(false) private val _state: MutableStateFlow = MutableStateFlow( - stateHandle[Constants.provideMainState()] ?: MainState() + stateHandle[provideMainState()] ?: MainState() ) val state = _state.asStateFlow() @@ -107,7 +106,7 @@ class MainModel @Inject constructor( value = event.value, updateState = { it.copy( - fontFamily = Constants.provideFonts().run { + fontFamily = provideFonts().run { find { font -> font.id == event.value }?.id ?: get(0).id @@ -605,7 +604,7 @@ class MainModel @Inject constructor( ) { withContext(Dispatchers.Main.immediate) { _state.update { - stateHandle[Constants.provideMainState()] = function(it) + stateHandle[provideMainState()] = function(it) function(it) } } diff --git a/app/src/main/java/ua/acclorite/book_story/ui/main/MainState.kt b/app/src/main/java/ua/acclorite/book_story/ui/main/MainState.kt index 48b14e46..acb32773 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/main/MainState.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/main/MainState.kt @@ -37,7 +37,6 @@ import ua.acclorite.book_story.domain.ui.toPureDark import ua.acclorite.book_story.domain.ui.toThemeContrast import ua.acclorite.book_story.domain.util.HorizontalAlignment import ua.acclorite.book_story.domain.util.toHorizontalAlignment -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.DataStoreConstants import ua.acclorite.book_story.presentation.core.constants.provideFonts import ua.acclorite.book_story.presentation.core.constants.provideLanguages @@ -57,7 +56,7 @@ data class MainState( // General Settings val language: String = provideDefaultValue { val locale = Locale.getDefault().language.take(2) - Constants.provideLanguages().any { locale == it.first }.run { + provideLanguages().any { locale == it.first }.run { if (this) locale else "en"// Default language. } @@ -71,7 +70,7 @@ data class MainState( val doublePressExit: Boolean = provideDefaultValue { false }, // Reader Settings - val fontFamily: String = provideDefaultValue { Constants.provideFonts()[0].id }, + val fontFamily: String = provideDefaultValue { provideFonts()[0].id }, val fontThickness: ReaderFontThickness = provideDefaultValue { ReaderFontThickness.NORMAL }, val isItalic: Boolean = provideDefaultValue { false }, val fontSize: Int = provideDefaultValue { 16 }, diff --git a/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderModel.kt b/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderModel.kt index 30d2a740..d2f59f75 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderModel.kt @@ -8,11 +8,11 @@ package ua.acclorite.book_story.ui.reader import android.app.SearchManager import android.content.Intent -import android.net.Uri import android.util.Log import androidx.activity.ComponentActivity import androidx.compose.foundation.lazy.LazyListState import androidx.compose.runtime.snapshotFlow +import androidx.core.net.toUri import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsControllerCompat @@ -396,7 +396,7 @@ class ReaderModel @Inject constructor( browserIntent.action = Intent.ACTION_VIEW val text = event.textToDefine.trim().replace(" ", "+") - browserIntent.data = Uri.parse("https://www.onelook.com/?w=$text") + browserIntent.data = "https://www.onelook.com/?w=$text".toUri() yield() diff --git a/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderScreen.kt b/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderScreen.kt index 9b733fe6..55d17cf4 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderScreen.kt @@ -48,7 +48,6 @@ import ua.acclorite.book_story.domain.navigator.Screen import ua.acclorite.book_story.domain.reader.ReaderColorEffects import ua.acclorite.book_story.domain.reader.ReaderProgressCount import ua.acclorite.book_story.domain.reader.ReaderTextAlignment -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideFonts import ua.acclorite.book_story.presentation.core.util.LocalActivity import ua.acclorite.book_story.presentation.core.util.calculateProgress @@ -118,7 +117,7 @@ data class ReaderScreen(val bookId: Int) : Screen, Parcelable { } val fontFamily = remember(mainState.value.fontFamily) { - Constants.provideFonts().run { + provideFonts().run { find { it.id == mainState.value.fontFamily } ?: get(0) diff --git a/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderState.kt b/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderState.kt index b97db561..9ada47a1 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderState.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderState.kt @@ -15,12 +15,11 @@ import ua.acclorite.book_story.domain.reader.ReaderText.Chapter import ua.acclorite.book_story.domain.ui.UIText import ua.acclorite.book_story.domain.util.BottomSheet import ua.acclorite.book_story.domain.util.Drawer -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideEmptyBook @Immutable data class ReaderState( - val book: Book = Constants.provideEmptyBook(), + val book: Book = provideEmptyBook(), val text: List = emptyList(), val listState: LazyListState = LazyListState(), diff --git a/app/src/main/java/ua/acclorite/book_story/ui/settings/SettingsModel.kt b/app/src/main/java/ua/acclorite/book_story/ui/settings/SettingsModel.kt index 3c952aad..246a15cf 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/settings/SettingsModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/settings/SettingsModel.kt @@ -28,7 +28,6 @@ import ua.acclorite.book_story.domain.use_case.color_preset.SelectColorPreset import ua.acclorite.book_story.domain.use_case.color_preset.UpdateColorPreset import ua.acclorite.book_story.domain.use_case.permission.GrantPersistableUriPermission import ua.acclorite.book_story.domain.use_case.permission.ReleasePersistableUriPermission -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideDefaultColorPreset import ua.acclorite.book_story.presentation.core.util.showToast import javax.inject.Inject @@ -65,7 +64,7 @@ class SettingsModel @Inject constructor( var colorPresets = getColorPresets.execute() if (colorPresets.isEmpty()) { - updateColorPreset.execute(Constants.provideDefaultColorPreset()) + updateColorPreset.execute(provideDefaultColorPreset()) getColorPresets.execute().first().select() colorPresets = getColorPresets.execute() } @@ -365,7 +364,7 @@ class SettingsModel @Inject constructor( addColorPresetJob = launch { yield() - val newColorPreset = Constants.provideDefaultColorPreset().copy( + val newColorPreset = provideDefaultColorPreset().copy( backgroundColor = event.backgroundColor, fontColor = event.fontColor ) @@ -483,7 +482,7 @@ class SettingsModel @Inject constructor( val selectedPreset = presets.firstOrNull { it.isSelected } if (selectedPreset == null) { - return Constants.provideDefaultColorPreset() + return provideDefaultColorPreset() } return selectedPreset diff --git a/app/src/main/java/ua/acclorite/book_story/ui/settings/SettingsState.kt b/app/src/main/java/ua/acclorite/book_story/ui/settings/SettingsState.kt index 3bf3b680..a1771ee8 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/settings/SettingsState.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/settings/SettingsState.kt @@ -9,13 +9,12 @@ package ua.acclorite.book_story.ui.settings import androidx.compose.foundation.lazy.LazyListState import androidx.compose.runtime.Immutable import ua.acclorite.book_story.domain.reader.ColorPreset -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideDefaultColorPreset @Immutable data class SettingsState( val colorPresets: List = emptyList(), - val selectedColorPreset: ColorPreset = Constants.provideDefaultColorPreset(), + val selectedColorPreset: ColorPreset = provideDefaultColorPreset(), val animateColorPreset: Boolean = false, val colorPresetListState: LazyListState = LazyListState() ) \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/ui/start/StartScreen.kt b/app/src/main/java/ua/acclorite/book_story/ui/start/StartScreen.kt index 854298f6..bc55042e 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/start/StartScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/start/StartScreen.kt @@ -8,7 +8,6 @@ package ua.acclorite.book_story.ui.start import android.annotation.SuppressLint import android.os.Parcelable -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf @@ -21,7 +20,6 @@ import kotlinx.parcelize.Parcelize import ua.acclorite.book_story.domain.navigator.Screen import ua.acclorite.book_story.domain.navigator.StackEvent import ua.acclorite.book_story.domain.ui.ButtonItem -import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideLanguages import ua.acclorite.book_story.presentation.core.util.LocalActivity import ua.acclorite.book_story.presentation.navigator.LocalNavigator @@ -50,7 +48,6 @@ object StartScreen : Screen, Parcelable { const val DONE = "done" @SuppressLint("InlinedApi") - @OptIn(ExperimentalMaterial3Api::class) @Composable override fun Content() { val navigator = LocalNavigator.current @@ -64,7 +61,7 @@ object StartScreen : Screen, Parcelable { val stackEvent = remember { mutableStateOf(StackEvent.Default) } val languages = remember(mainState.value.language) { - Constants.provideLanguages().sortedBy { it.second }.map { + provideLanguages().sortedBy { it.second }.map { ButtonItem( id = it.first, title = it.second,