Implement shopping lists screen (#129)
* Initialize shopping lists feature * Start shopping lists screen with Compose * Add icon to shopping list name * Add shopping lists to menu * Set max size for the list * Replace compose-adapter with accompanist * Remove unused fields from shopping lists response * Show list of shopping lists from BE * Hide shopping lists if Mealie is 0.5.6 * Add shopping list item click listener * Create material app theme for Compose * Use shorter names * Load shopping lists by pages and save to db * Make page handling logic match recipes * Add swipe to refresh to shopping lists * Extract SwipeToRefresh Composable * Make LazyPagingColumn generic * Show refresh only when mediator is refreshing * Do not refresh automatically * Allow controlling Activity state from modules * Implement navigating to shopping list screen * Move Compose libraries setup to a plugin * Implement loading full shopping list info * Move Storage classes to database module * Save shopping list items to DB * Use separate names for separate ids * Do only one DB version update * Use unique names for all columns * Display shopping list items * Move OperationUiState to ui module * Subscribe to shopping lists updates * Indicate progress with progress bar * Use strings from resources * Format shopping list item quantities * Hide unit/food/note/quantity if they are not set * Implement updating shopping list item checked state * Remove unnecessary null checks * Disable checkbox when it is being updated * Split shopping list screen into composables * Show items immediately if they are saved * Fix showing "list is empty" before the items * Show Snackbar when error happens * Reduce shopping list items paddings * Remove shopping lists when URL is changed * Add error/empty state handling to shopping lists * Fix empty error state * Fix tests compilation * Add margin between text and button * Add divider between checked and unchecked items * Move divider to the item * Refresh the shopping lists on authentication * Use retry when necessary * Remove excessive logging * Fix pages bounds check * Move FlowExtensionsTest * Update Compose version * Fix showing loading indicator for shopping lists * Add Russian translation * Fix SDK version lint check * Rename parameter to match interface * Add DB migration TODO * Get rid of DB migrations * Do not use pagination with shopping lists * Cleanup after the pagination removal * Load shopping list items * Remove shopping lists storage * Rethrow CancellationException in LoadingHelper * Add pull-to-refresh on shopping list screen * Extract LazyColumnWithLoadingState * Split refresh errors and loading state * Reuse LazyColumnWithLoadingState for shopping list items * Remove paging-compose dependency * Refresh shopping list items on authentication * Disable missing translation lint check * Update Compose and Kotlin versions * Fix order of checked items * Hide useless information from a shopping list item
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
# https://maven.google.com/web/index.html?q=com.android.tools.build#com.android.tools.build:gradle
|
||||
androidGradlePlugin = "7.4.2"
|
||||
# https://github.com/JetBrains/kotlin/releases
|
||||
kotlin = "1.7.20"
|
||||
kotlin = "1.8.22"
|
||||
# https://developer.android.com/jetpack/androidx/releases/navigation
|
||||
googleNavigation = "2.5.3"
|
||||
# https://dagger.dev/hilt/gradle-setup
|
||||
@@ -74,7 +74,7 @@ chucker = "3.5.2"
|
||||
# https://github.com/google/desugar_jdk_libs/blob/master/CHANGELOG.md
|
||||
desugar = "2.0.3"
|
||||
# https://github.com/google/ksp/releases
|
||||
kspPlugin = "1.7.20-1.0.7"
|
||||
kspPlugin = "1.8.22-1.0.11"
|
||||
# https://developer.android.com/jetpack/androidx/releases/sharetarget
|
||||
shareTarget = "1.2.0"
|
||||
# https://github.com/KasperskyLab/Kaspresso/releases
|
||||
@@ -83,18 +83,44 @@ kaspresso = "1.5.1"
|
||||
androidXTest = "1.5.0"
|
||||
# https://developer.android.com/jetpack/androidx/releases/test
|
||||
androidXTestOrchestrator = "1.4.2"
|
||||
# https://mvnrepository.com/artifact/androidx.compose/compose-bom
|
||||
composeBom = "2023.06.01"
|
||||
# https://developer.android.com/jetpack/androidx/releases/compose-kotlin
|
||||
composeKotlinCompilerExtension = "1.4.8"
|
||||
# https://google.github.io/accompanist/
|
||||
accompanistVersion = "0.30.1"
|
||||
# https://developer.android.com/jetpack/androidx/releases/compose-material
|
||||
materialCompose = "1.4.3"
|
||||
# https://composedestinations.rafaelcosta.xyz/setup
|
||||
composeDestinations = "1.8.42-beta"
|
||||
# https://mvnrepository.com/artifact/androidx.hilt/hilt-navigation-compose
|
||||
hiltNavigationCompose = "1.0.0"
|
||||
|
||||
[libraries]
|
||||
android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", version.ref = "androidGradlePlugin" }
|
||||
android-tools-desugar = { group = "com.android.tools", name = "desugar_jdk_libs", version.ref = "desugar" }
|
||||
android-material-material = { group = "com.google.android.material", name = "material", version.ref = "material" }
|
||||
|
||||
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" }
|
||||
androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3" }
|
||||
androidx-compose-ui-toolingPreview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
|
||||
androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
|
||||
androidx-compose-ui-testJunit = { group = "androidx.compose.ui", name = "ui-test-junit4" }
|
||||
androidx-compose-ui-testManifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }
|
||||
androidx-compose-runtime-livedata = { group = "androidx.compose.runtime", name = "runtime-livedata" }
|
||||
|
||||
androidx-compose-material = { group = "androidx.compose.material", name = "material", version.ref = "materialCompose" }
|
||||
|
||||
google-accompanist-themeadapter-material3 = { group = "com.google.accompanist", name = "accompanist-themeadapter-material3", version.ref = "accompanistVersion" }
|
||||
|
||||
google-dagger-hiltPlugin = { group = "com.google.dagger", name = "hilt-android-gradle-plugin", version.ref = "hilt" }
|
||||
google-dagger-hiltAndroid = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" }
|
||||
google-dagger-hiltCompiler = { group = "com.google.dagger", name = "hilt-compiler", version.ref = "hilt" }
|
||||
google-dagger-hiltAndroidCompiler = { group = "com.google.dagger", name = "hilt-android-compiler", version.ref = "hilt" }
|
||||
google-dagger-hiltAndroidTesting = { group = "com.google.dagger", name = "hilt-android-testing", version.ref = "hilt" }
|
||||
|
||||
androidx-hilt-navigationCompose = { group = "androidx.hilt", name = "hilt-navigation-compose", version.ref = "hiltNavigationCompose" }
|
||||
|
||||
google-protobuf-javalite = { group = "com.google.protobuf", name = "protobuf-javalite", version.ref = "protobuf" }
|
||||
google-protobuf-protoc = { group = "com.google.protobuf", name = "protoc", version.ref = "protobuf" }
|
||||
|
||||
@@ -126,6 +152,7 @@ androidx-paging-commonKtx = { group = "androidx.paging", name = "paging-common-k
|
||||
|
||||
androidx-lifecycle-livedataKtx = { group = "androidx.lifecycle", name = "lifecycle-livedata-ktx", version.ref = "lifecycle" }
|
||||
androidx-lifecycle-viewmodelKtx = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-ktx", version.ref = "lifecycle" }
|
||||
androidx-lifecycle-viewmodelCompose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "lifecycle" }
|
||||
|
||||
androidx-datastore-preferences = { group = "androidx.datastore", name = "datastore-preferences", version.ref = "datastore" }
|
||||
androidx-datastore-datastore = { group = "androidx.datastore", name = "datastore", version.ref = "datastore" }
|
||||
@@ -172,6 +199,9 @@ chuckerteam-chucker = { group = "com.github.chuckerteam.chucker", name = "librar
|
||||
|
||||
kaspersky-kaspresso = { group = "com.kaspersky.android-components", name = "kaspresso", version.ref = "kaspresso" }
|
||||
|
||||
composeDestinations-core = { group = "io.github.raamcosta.compose-destinations", name = "core", version.ref = "composeDestinations" }
|
||||
composeDestinations-ksp = { group = "io.github.raamcosta.compose-destinations", name = "ksp", version.ref = "composeDestinations" }
|
||||
|
||||
[plugins]
|
||||
sonarqube = { id = "org.sonarqube", version.ref = "sonarqube" }
|
||||
rootcoverage = { id = "nl.neotech.plugin.rootcoverage", version.ref = "rootCoverage" }
|
||||
|
||||
Reference in New Issue
Block a user