diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
new file mode 100644
index 000000000..c990bdfc9
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -0,0 +1,38 @@
+name: Bug report
+description: Report a reproducible problem with Roller Coasters
+title: "[Bug]: "
+labels:
+ - Bug
+body:
+ - type: textarea
+ id: problem
+ attributes:
+ label: Problem
+ description: What happened, and what did you expect instead?
+ validations:
+ required: true
+ - type: textarea
+ id: steps
+ attributes:
+ label: Reproduction steps
+ description: List the smallest set of steps needed to reproduce the issue.
+ placeholder: |
+ 1. Clone the repository
+ 2. Run ...
+ 3. See ...
+ validations:
+ required: true
+ - type: textarea
+ id: environment
+ attributes:
+ label: Environment
+ description: Include Android Studio, JDK, Gradle, device/emulator, and OS details when relevant.
+ validations:
+ required: false
+ - type: textarea
+ id: context
+ attributes:
+ label: Additional context
+ description: Add logs, screenshots, or links that help explain the problem.
+ validations:
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 000000000..0086358db
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1 @@
+blank_issues_enabled: true
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml
new file mode 100644
index 000000000..52d135886
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -0,0 +1,34 @@
+name: Feature request
+description: Suggest an improvement for Roller Coasters
+title: "[Feature]: "
+labels:
+ - Enhancement
+body:
+ - type: textarea
+ id: motivation
+ attributes:
+ label: Motivation
+ description: What problem would this solve for the app or codebase?
+ validations:
+ required: true
+ - type: textarea
+ id: proposal
+ attributes:
+ label: Proposal
+ description: Describe the change you would like to see.
+ validations:
+ required: true
+ - type: textarea
+ id: alternatives
+ attributes:
+ label: Alternatives considered
+ description: List any simpler or more focused alternatives you considered.
+ validations:
+ required: false
+ - type: textarea
+ id: scope
+ attributes:
+ label: Scope notes
+ description: Call out any maintenance, architecture, or migration trade-offs.
+ validations:
+ required: false
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 000000000..bc88f2a98
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,13 @@
+## Summary
+
+- Briefly describe the change.
+
+## Verification
+
+- [ ] Ran relevant local checks
+- [ ] Added or updated tests where needed
+- [ ] Updated screenshots or snapshots for intentional UI changes
+
+## Notes
+
+- Add any follow-up context, screenshots, or trade-offs here.
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 44fa0bb8e..097bddb83 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,62 +1,92 @@
-name: CI
+name: Android CI
on:
+ push:
+ branches: [ "develop" ]
pull_request:
+ workflow_dispatch:
+ schedule:
+ - cron: "0 3 * * *"
+
+permissions:
+ contents: read
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
jobs:
build:
- name: Build
+ name: Build & Validate
runs-on: ubuntu-latest
+ timeout-minutes: 60
steps:
- - uses: actions/checkout@v4
- - uses: gradle/actions/wrapper-validation@v3
- - uses: actions/setup-java@v4
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- distribution: 'temurin'
- java-version: '17'
- - uses: gradle/actions/setup-gradle@v3
- - name: Cache Gradle
- uses: actions/cache@v4
+ fetch-depth: 0
+
+ - name: Validate Gradle Wrapper
+ uses: gradle/actions/wrapper-validation@v3
+
+ - name: Set up JDK 21
+ uses: actions/setup-java@v4
with:
- path: |
- ~/.gradle/caches
- ~/.gradle/wrapper
- key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
- restore-keys: |
- gradle-${{ runner.os }}-
+ distribution: temurin
+ java-version: "21"
+
+ - name: Setup Gradle
+ uses: gradle/actions/setup-gradle@v4
+
+ - name: Make gradlew executable
+ run: chmod +x gradlew
+
- name: Setup local.properties with Maps API Key
run: |
echo "sdk.dir=$ANDROID_SDK_ROOT" > local.properties
echo "MAPS_API_KEY=${{ secrets.MAPS_API_KEY }}" >> local.properties
- - name: Assemble Debug
- run: ./gradlew assembleDebug --stacktrace --no-daemon
- jvm-tests:
- name: JVM Tests
- runs-on: ubuntu-latest
- needs: build
+ - name: Check Module Boundaries
+ run: ./gradlew --no-daemon --stacktrace checkModuleDependencyBoundaries
- steps:
- - uses: actions/checkout@v4
- - uses: gradle/actions/wrapper-validation@v3
- - uses: actions/setup-java@v4
- with:
- distribution: 'temurin'
- java-version: '17'
- - uses: gradle/actions/setup-gradle@v3
- - name: Cache Gradle
- uses: actions/cache@v4
+ - name: Run Static Analysis
+ run: ./gradlew --no-daemon --stacktrace detekt lintDebug
+
+ - name: Run Unit Tests
+ run: ./gradlew --no-daemon --stacktrace test -PexcludeSnapshotTests=true
+
+ - name: Verify Paparazzi Snapshots
+ run: ./gradlew --no-daemon --stacktrace --no-parallel verifyPaparazziDebug
+
+ - name: Generate Kover Coverage
+ run: ./gradlew --no-daemon --stacktrace koverXmlReport koverVerify -PexcludeSnapshotTests=true
+
+ - name: Build Debug APK
+ run: ./gradlew --no-daemon --stacktrace assembleDebug
+
+ - name: Upload Reports
+ if: always()
+ uses: actions/upload-artifact@v4
with:
+ name: android-ci-reports
path: |
- ~/.gradle/caches
- ~/.gradle/wrapper
- key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
- restore-keys: |
- gradle-${{ runner.os }}-
- - name: Setup local.properties with Maps API Key
- run: |
- echo "sdk.dir=$ANDROID_SDK_ROOT" > local.properties
- echo "MAPS_API_KEY=${{ secrets.MAPS_API_KEY }}" >> local.properties
- - name: Run JVM Tests
- run: ./gradlew testDebugUnitTest --stacktrace --no-daemon
+ **/build/reports/**
+ **/build/test-results/**
+ if-no-files-found: ignore
+
+ - name: Job Summary
+ if: always()
+ uses: actions/github-script@v7
+ with:
+ script: |
+ await core.summary
+ .addHeading("Android CI Summary")
+ .addList([
+ "Static analysis: detekt + lintDebug",
+ "Unit tests: test",
+ "Snapshot tests: verifyPaparazziDebug",
+ "Coverage: koverXmlReport + koverVerify",
+ "Build: assembleDebug",
+ ])
+ .write();
diff --git a/.java-version b/.java-version
new file mode 100644
index 000000000..aabe6ec39
--- /dev/null
+++ b/.java-version
@@ -0,0 +1 @@
+21
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 000000000..e852c455d
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,29 @@
+# Code of Conduct
+
+## Our Pledge
+
+We want this project to be a welcoming, respectful place for everyone who wants
+to learn from or improve Roller Coasters.
+
+## Expected Behavior
+
+- Be respectful and constructive.
+- Assume good intent, especially when discussing architecture preferences.
+- Keep feedback focused on the code, documentation, and project goals.
+- Make room for maintainers to prioritize work according to the project's scope.
+
+## Unacceptable Behavior
+
+- Harassment, insults, or discriminatory language.
+- Personal attacks or repeated unwelcome attention.
+- Publishing private information without permission.
+- Derailing issues or pull requests with unrelated arguments.
+
+## Enforcement
+
+Maintainers may edit, hide, or remove comments, issues, pull requests, or other
+contributions that do not follow this code of conduct. Repeated or severe
+violations may result in being blocked from participating in the project.
+
+Report concerns by opening a private security advisory or contacting the
+maintainer through the public profile links.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 000000000..24bbce35a
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,39 @@
+# Contributing
+
+Thanks for helping improve Roller Coasters.
+
+## Workflow
+
+1. Fork the repository.
+2. Create a focused branch from `dev`.
+3. Keep changes small enough to review.
+4. Run the relevant checks before opening a pull request.
+5. Open a pull request using the template and describe the behavior change.
+
+## Local Checks
+
+Run the narrowest check that covers your change. Use JDK 21 or newer. For broad changes, run:
+
+```bash
+./gradlew checkModuleDependencyBoundaries detekt lintDebug test \
+ -PexcludeSnapshotTests=true \
+ verifyPaparazziDebug koverXmlReport koverVerify assembleDebug
+```
+
+Run Paparazzi with `--no-parallel` if a local Gradle configuration enables parallel execution:
+
+```bash
+./gradlew --no-parallel verifyPaparazziDebug
+```
+
+## Pull Requests
+
+Pull requests should include:
+
+- What changed.
+- Why the change is needed.
+- How it was verified.
+- Screenshots or recordings for visible UI changes.
+
+Please keep unrelated formatting, generated files, and IDE metadata out of the
+pull request unless they are required for the change.
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 000000000..c202cb73f
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025 Pablo Costa Tirado
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index 0f1174efc..5e3bcbbb2 100644
--- a/README.md
+++ b/README.md
@@ -1,106 +1,197 @@
# Roller Coasters
+[](https://github.com/Sottti/RollerCoasters/actions/workflows/ci.yml)






-[](https://opensource.org/licenses/MIT)
+[](LICENSE)
-## Overview
+Modern Kotlin Android playground for exploring roller coaster discovery with Jetpack Compose, Hilt,
+Ktor, Room/Paging, Google Maps, Paparazzi, and a modular MVVM/Clean Architecture setup.
-Roller Coasters is a personal playground where I experiment with modern Android development
-practices, libraries, and tools. It is a space to try new APIs, patterns, and approachesβespecially
-around Jetpack Composeβwithout the constraints of production code.
+## Disclaimer
-The project is under active development and the codebase is not yet stable or nearly finished.
+This repository is a personal playground for trying modern Android APIs, libraries, architecture
+patterns, and tooling without the constraints of production code. It is intentionally under active
+development, so implementation details and module boundaries may change as the experiment evolves.
-## βοΈ Tech Stack & Architecture
+## Overview
-This template is built using modern Android development practices and libraries:
+Roller Coasters is an Android app for browsing, filtering, saving, and inspecting roller coaster
+data. The app uses a layered multi-module setup to explore how a real product codebase can keep UI,
+domain logic, data access, dependency injection, and shared tooling separated while still feeling
+fast to iterate on.
-* **Language:** 100% [Kotlin](https://kotlinlang.org/)
-* **UI:** [Jetpack Compose](https://developer.android.com/jetpack/compose) for declarative UI.
- * **Theming:** [Material 3](https://m3.material.io/) (Material You) with dynamic color support.
- * **Navigation:
- ** [Compose Navigation 3](https://developer.android.com/guide/navigation/navigation-3) for
- screen transitions.
-* **Architecture:** Follows Google's official "Guide to app architecture",
- combining [MVVM](https://developer.android.com/jetpack/guide) (Model-View-ViewModel) with
- principles from Clean Architecture.
- * **UI Layer:** State-driven UI using `ViewModel`, `State`, and `Actions`. ViewModels follow
- a [declarative approach](https://proandroiddev.com/loading-initial-data-in-launchedeffect-vs-viewmodel-f1747c20ce62).
- * **Domain Layer:** (Optional) UseCases encapsulate specific business logic (e.g.,
- `GetFavoriteCoastersUseCase`).
- * **Data Layer:** `Repository` pattern providing a single source of truth.
-* **Asynchronicity:
- ** [Kotlin Coroutines](https://kotlinlang.org/docs/coroutines-overview.html) & [Flows](https://developer.android.com/kotlin/flow)
- for managing background tasks and data streams.
-* **Dependency Injection:** [Hilt](https://dagger.dev/hilt/) for managing dependencies throughout
- the app.
-* **Networking:** [Ktor Client](https://ktor.io/docs/client-overview.html) for REST API
- communication.
-* **Serialization:** [Kotlinx.serialization](https://github.com/Kotlin/kotlinx.serialization) for
- JSON parsing.
-* **Testing:**
- * **Unit Tests:** [JUnit 4](https://junit.org/junit4/) & [Mockk](https://mockk.io/)
- * **Screenshot Tests:** [Paparazzi](https://github.com/cashapp/paparazzi)
- * **UI Tests:** [Compose Test Rules](https://developer.android.com/jetpack/compose/testing)
-
-## π± App Features
-
-* **Explore Feed:** View roller coasters, filterable by various criteria (specs, materials, etc.).
-* **Favorites:** Mark and view your favorite roller coasters.
-* **Details Screen:** See detailed information and images for each coaster.
-* **Settings:**
- * Customize theme (Light/Dark/System)
- * Enable/disable dynamic color
- * Adjust color contrast
- * Change language (English, Spanish and Galician)
- * Select measurement system (Metric/Imperial).
-* **Modern UI:**
- * Dynamic Theming (Material You).
- * Support for multiple languages.
- * Edge-to-edge display.
- * Predictive back navigation.
-* **About Screen:** Information about the project/developer.
-
-## π· Screenshots
-
-### π‘ Light Theme
-
-
-
-
-
-
-
+## Screenshots
-### π Dark Theme
+### Light Theme
-
-
-
-
+
+
+
+
-## π Project Structure
+### Dark Theme
-This project follows a standard multi-module setup, which is highly recommended for separation of
-concerns and build speed.
+
+
+
+
+
+
-## π Planned Features or Improvements
+## Features
-* **Search:** Find roller coasters by name.
-* **Parks:** Add information about amusement parks.
-* **Enhanced Discovery:** More filtering options (manufacturer, park, etc.).
-* **Robustness:** Improved error handling and empty state displays.
-* **UI/UX:** Add animations; improve support for large screens and foldables.
-* **Navigation:** Migrate fully to Jetpack Compose Navigation 3 (if not already done).
+This app uses modern libraries and tools from the Android ecosystem:
-## π License
+* **Tech Stack:** 100% [Kotlin](https://kotlinlang.org/)
+* **UI:** [Jetpack Compose](https://developer.android.com/jetpack/compose) for declarative UI.
+ * **Theming:** [Material 3](https://m3.material.io/) with dynamic color and contrast support.
+ * **Navigation:** [Compose Navigation 3](https://developer.android.com/guide/navigation/navigation-3)
+ for screen transitions.
+* **Architecture:** Follows Google's official "Guide to app architecture".
+ * [MVVM](https://developer.android.com/jetpack/guide) (Model-View-ViewModel).
+ * **UI Layer:** State-driven UI with `ViewModel`, `State`, and `Actions`.
+ * **Domain Layer:** Use cases and canonical models for app behavior.
+ * **Data Layer:** Repository pattern backed by local and remote data sources.
+* **Asynchronous work:** [Kotlin Coroutines](https://kotlinlang.org/docs/coroutines-overview.html)
+ & [Flows](https://developer.android.com/kotlin/flow) for background work and reactive streams.
+* **Dependency Injection:** [Hilt](https://dagger.dev/hilt/) for managing dependencies.
+* **Networking:** [Ktor Client](https://ktor.io/docs/client-create-and-configure.html) for REST API
+ communication.
+* **Persistence:** [Room](https://developer.android.com/training/data-storage/room) and
+ [DataStore](https://developer.android.com/topic/libraries/architecture/datastore) for local data.
+* **Maps:** [Maps Compose](https://github.com/googlemaps/android-maps-compose) for coaster location
+ UI.
+* **Serialization:** [Kotlinx.serialization](https://github.com/Kotlin/kotlinx.serialization) for
+ JSON parsing.
+* **Testing and quality:**
+ * **Unit Tests:** [JUnit 4](https://junit.org/junit4/) & [Mockk](https://mockk.io/)
+ * **Screenshot Tests:** [Paparazzi](https://github.com/cashapp/paparazzi)
+ * **Static Analysis:** Detekt, Compose rules, Android Lint, and Kover coverage checks.
+
+### Running the test suites
+
+Execute the following Gradle tasks from the project root to run the automated checks locally:
+
+> Run Gradle with JDK 21 or newer.
+
+| Suite | Command | Description |
+|--------------------------|------------------------------------------------------------|--------------------------------------------------|
+| Module boundaries | `./gradlew checkModuleDependencyBoundaries` | Validates high-level Gradle module dependencies. |
+| Static analysis | `./gradlew detekt lintDebug` | Runs Detekt and Android Lint. |
+| Local/unit tests | `./gradlew test -PexcludeSnapshotTests=true` | Executes JVM tests while excluding snapshots. |
+| Screenshot tests | `./gradlew --no-parallel verifyPaparazziDebug` | Verifies committed Paparazzi goldens. |
+| Coverage | `./gradlew koverXmlReport koverVerify -PexcludeSnapshotTests=true` | Generates and verifies Kover coverage. |
+| Debug build | `./gradlew assembleDebug` | Builds the debug APK. |
+
+> Map previews and runtime map features expect `MAPS_API_KEY` in `local.properties` or CI secrets.
+
+### Additional Highlights
+
+* **Roller coaster discovery:** Explore, search, and detail screens are split into independent
+ presentation modules backed by shared domain and data contracts.
+* **Design-system playground:** Reusable Compose components, typography, colors, shapes, cards,
+ dialogs, maps, images, and preview fixtures live under `presentation:design-system`.
+* **Localized settings:** Theme, dynamic color, contrast, language, and measurement-system settings
+ are modeled through dedicated domain/data modules.
+* **Snapshot tooling:** Paparazzi helpers provide consistent device, theme, and preview parameters
+ across screen and component screenshots.
+* **Edge-to-edge ready:** Compose screens are built around modern Android system-bar and inset
+ behavior.
+* **Dependency hygiene:** Version catalog, Dependabot, Gradle Versions Plugin, Detekt, Lint, Kover,
+ and CI checks keep the playground current while still catching regressions.
+
+### Incoming Features
+
+* **Parks:** Add richer amusement-park data and park-oriented discovery.
+* **Enhanced discovery:** Expand filtering by manufacturer, location, ride type, and park.
+* **Robustness:** Continue improving error handling, empty states, and offline behavior.
+* **Large screens:** Explore adaptive layouts for tablets, foldables, and landscape devices.
+* **Motion:** Add purposeful transitions and animations where they clarify navigation or state
+ changes.
+
+## Architecture (MVVM + Clean)
+
+Roller Coasters uses a state-driven MVVM (Model-View-ViewModel) architecture combined with
+principles from Clean Architecture.
+
+* **UI (Compose):** Observes `State` from the `ViewModel` and sends `Actions` back to it.
+* **ViewModel:** Handles presentation logic, consumes actions, calls use cases or repositories, and
+ exposes a single state stream for the UI.
+* **UseCases (Domain Layer):** Encapsulate focused pieces of app behavior and keep feature logic
+ reusable.
+* **Repository (Data Layer):** Acts as the single source of truth and hides local/remote data
+ details from the UI and domain layers.
+
+## Project Structure
+
+The repository is laid out as a layered, multi-module Gradle project. Each directory below maps to a
+distinct slice of the architecture so features can evolve independently while keeping dependencies
+explicit.
+
+```text
+βββ app/ # Android entry point and app-level configuration
+βββ data/ # Repository implementations, remote clients, sync, and persistence
+βββ domain/ # Business rules, app models, use cases, fixtures, and locale logic
+βββ di/ # Centralized Hilt bindings that wire modules together
+βββ presentation/ # Compose UI, app shell, navigation, previews, and design system
+βββ utils/ # Cross-cutting helpers for lifecycle, dates, and time
+βββ buildSrc/ # Gradle convention helpers and module constants
+βββ gradle/, *.gradle.kts # Build logic, settings, and version configuration
+```
+
+### Module Overview
+
+Every Gradle module has a single responsibility. Use the list below to find the code you need:
+
+* **Application shell**
+ * `app`: Hosts the `Application`, splash activity, and app-level configuration.
+ * `presentation:app-shell`: Owns the bottom-bar shell and top-level screen composition.
+* **Presentation layer**
+ * `presentation:explore`, `presentation:favourites`, `presentation:search`,
+ `presentation:roller-coaster-details`, `presentation:settings`, and `presentation:about-me`:
+ Feature-specific Compose screens.
+ * `presentation:design-system:*`: Shared Compose foundations, reusable components, previews,
+ maps, images, and component-specific snapshot tests.
+ * `presentation:navigation` and `presentation:navigation-external`: Navigation contracts and
+ app-facing navigation integration.
+ * `presentation:paparazzi`, `presentation:previews`, `presentation:fixtures`,
+ `presentation:format`, `presentation:string-provider`, `presentation:top-bars`, and
+ `presentation:utils`: Shared UI tooling, resources, and formatting helpers.
+* **Domain layer**
+ * `domain:model`, `domain:roller-coasters`, `domain:settings`, `domain:system-features`,
+ `domain:locales`, and `domain:fixtures`: Canonical models, use cases, and test fixtures.
+* **Data layer**
+ * `data:roller-coasters`: Room cache, remote API mapping, sync scheduling, and repository
+ implementation for coaster data.
+ * `data:network`: Ktor client configuration and API result handling.
+ * `data:settings`: Persistence for user preferences and configuration toggles.
+ * `data:system-features`: Abstractions over device and system capabilities.
+* **Dependency injection**
+ * `di`: Shared Hilt modules and component wiring consumed across the app.
+* **Shared utilities**
+ * `utils:lifecycle` and `utils:time-dates`: Lifecycle-aware coroutine helpers and date/time
+ utilities.
+
+## Contributing
+
+This is a personal playground, but focused improvements, bug reports, and ideas are welcome.
+
+See [CONTRIBUTING.md](CONTRIBUTING.md) for the contribution workflow and pull request expectations.
+
+## License
This project is licensed under the [MIT License](https://opensource.org/licenses/MIT) - see
the [LICENSE](LICENSE) file for details.
+
+## Contact
+
+If you feel like saying hi, have any comments, suggestions or
+questions, [open an issue](https://github.com/Sottti/RollerCoasters/issues?q=sort%3Aupdated-desc+is%3Aissue+is%3Aopen)
+or say [hi on X](https://x.com/Sotttti).
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 927e76489..6a059bdd7 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -1,11 +1,12 @@
-import com.sottti.roller.coasters.buildSrc.module
+import org.gradle.api.Project
+import java.util.Properties
+
+private val mapsApiKeyProperty = "MAPS_API_KEY"
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.hilt)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.ksp)
- alias(libs.plugins.secrets)
}
android {
@@ -19,6 +20,7 @@ android {
applicationId = "com.sottti.roller.coasters"
versionCode = 1
versionName = "1.0"
+ manifestPlaceholders[mapsApiKeyProperty] = project.mapsApiKey()
}
buildTypes {
@@ -40,10 +42,27 @@ dependencies {
implementation(libs.hilt.work)
implementation(libs.splashscreen)
implementation(libs.work.runtime)
- implementation(project(module.di))
- implementation(project(module.domain.systemFeatures))
- implementation(project(module.domain.rollerCoasters))
- implementation(project(module.domain.settings))
- implementation(project(module.presentation.home))
+ implementation(projects.di)
+ implementation(projects.domain.systemFeatures)
+ implementation(projects.domain.rollerCoasters)
+ implementation(projects.domain.settings)
+ implementation(projects.presentation.appShell)
ksp(libs.hilt.compiler)
}
+
+private fun Project.mapsApiKey(): String =
+ providers.gradleProperty(mapsApiKeyProperty)
+ .orElse(providers.environmentVariable(mapsApiKeyProperty))
+ .orElse(providers.provider { localProperties().getProperty(mapsApiKeyProperty).orEmpty() })
+ .get()
+
+private fun Project.localProperties(): Properties {
+ val properties = Properties()
+ val localPropertiesFile = rootProject.file("local.properties")
+
+ if (localPropertiesFile.isFile) {
+ localPropertiesFile.inputStream().use(properties::load)
+ }
+
+ return properties
+}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index df60e0506..a380c43b7 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -33,11 +33,18 @@
android:name="autoStoreLocales"
android:value="true" />
+
+
+
-
-
+ android:value="${MAPS_API_KEY}" />
diff --git a/app/src/main/kotlin/com/sottti/roller/coasters/app/SplashScreenActivity.kt b/app/src/main/kotlin/com/sottti/roller/coasters/app/SplashScreenActivity.kt
index 687a4f3ed..f43401039 100644
--- a/app/src/main/kotlin/com/sottti/roller/coasters/app/SplashScreenActivity.kt
+++ b/app/src/main/kotlin/com/sottti/roller/coasters/app/SplashScreenActivity.kt
@@ -8,7 +8,7 @@ import androidx.lifecycle.lifecycleScope
import com.sottti.roller.coasters.domain.roller.coasters.usecase.ScheduleRollerCoastersSync
import com.sottti.roller.coasters.domain.settings.usecase.theme.ApplyStoredAppTheme
import com.sottti.roller.coasters.domain.system.features.SystemFeatures
-import com.sottti.roller.coasters.presentation.home.ui.startHomeActivity
+import com.sottti.roller.coasters.presentation.app.shell.ui.startAppShellActivity
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import javax.inject.Inject
@@ -36,7 +36,7 @@ internal class SplashScreenActivity : ComponentActivity() {
scheduleRollerCoastersSync()
- startHomeActivity(context = this)
+ startAppShellActivity(context = this)
finish()
}
diff --git a/build.gradle.kts b/build.gradle.kts
index ec9794f45..5aeebf34f 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,5 +1,12 @@
import com.android.build.api.dsl.ApplicationExtension
import com.android.build.api.dsl.LibraryExtension
+import dev.detekt.gradle.Detekt
+import dev.detekt.gradle.DetektCreateBaselineTask
+import org.gradle.accessors.dm.LibrariesForLibs
+import org.gradle.api.artifacts.ProjectDependency
+import org.gradle.api.tasks.testing.Test
+import org.gradle.jvm.toolchain.JavaLanguageVersion
+import org.gradle.jvm.toolchain.JavaToolchainService
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
@@ -7,18 +14,114 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.android.library) apply false
+ alias(libs.plugins.detekt) apply true
alias(libs.plugins.gradle.versions) apply true
alias(libs.plugins.hilt) apply false
- alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.kotlin.compose) apply false
alias(libs.plugins.kotlin.jvm) apply false
alias(libs.plugins.kotlin.ksp) apply false
alias(libs.plugins.kotlin.serialization) apply false
+ alias(libs.plugins.kover) apply true
alias(libs.plugins.paparazzi) apply false
- alias(libs.plugins.secrets) apply false
+}
+
+tasks.register("cleanPaparazziSnapshots") {
+ group = "verification"
+ description = "Deletes all Paparazzi snapshot images across the project."
+ delete(fileTree(rootDir) { include("**/src/test/snapshots/images/**") })
+}
+
+private val excludeSnapshotTestsProperty = "excludeSnapshotTests"
+private val snapshotTestPattern = "**/*SnapshotTest.class"
+
+val libraries = the()
+
+val checkModuleDependencyBoundaries = tasks.register("checkModuleDependencyBoundaries") {
+ group = "verification"
+ description = "Checks direct project dependencies follow the configured module boundary rules."
+
+ doLast {
+ val dependencyViolations = allprojects
+ .flatMap { project ->
+ project.configurations.flatMap { configuration ->
+ configuration.dependencies
+ .withType(ProjectDependency::class.java)
+ .filter { dependency -> dependency.path != project.path }
+ .map { dependency ->
+ ProjectDependencyEdge(
+ configuration = configuration.name,
+ source = project.path,
+ target = dependency.path,
+ )
+ }
+ }
+ }
+ .flatMap { dependency -> dependency.boundaryViolations() }
+
+ val pluginViolations = allprojects
+ .filter { project -> project.path in pureKotlinModules }
+ .flatMap { project -> project.pureKotlinModuleViolations() }
+
+ val violations = (dependencyViolations + pluginViolations)
+ .distinct()
+ .sorted()
+
+ if (violations.isNotEmpty()) {
+ throw GradleException(
+ buildString {
+ appendLine("Module dependency boundary violations found:")
+ violations.forEach { violation -> appendLine("- $violation") }
+ },
+ )
+ }
+ }
}
subprojects {
+ apply(plugin = "dev.detekt")
+
+ dependencies {
+ "detektPlugins"(libraries.detekt.compose)
+ "detektPlugins"(libraries.detekt.formatting)
+ }
+
+ detekt {
+ toolVersion = libraries.versions.detekt.get()
+ config.setFrom(files("$rootDir/detekt.yml"))
+ buildUponDefaultConfig = true
+ autoCorrect = false
+ parallel = true
+ baselineFile("detekt-baseline.xml")?.let { baseline = it }
+ }
+
+ tasks.withType().configureEach {
+ jvmTarget.set("21")
+ ignoreFailures = false
+ exclude("**/StateInViewModelWhileSubscribed.kt")
+ reports {
+ html.required.set(true)
+ checkstyle.required.set(true)
+ sarif.required.set(false)
+ markdown.required.set(false)
+ }
+ }
+
+ tasks.withType().configureEach {
+ jvmTarget.set("21")
+ exclude("**/StateInViewModelWhileSubscribed.kt")
+ }
+
+ val excludeSnapshotTests = providers.gradleProperty(excludeSnapshotTestsProperty)
+ .map(String::toBoolean)
+ .orElse(false)
+
+ tasks.withType().configureEach {
+ if (excludeSnapshotTests.get()) {
+ exclude(snapshotTestPattern)
+ failOnNoDiscoveredTests.set(false)
+ }
+ }
+
afterEvaluate {
when {
plugins.hasPlugin("com.android.application") -> {
@@ -29,17 +132,14 @@ subprojects {
}
}
- plugins.withId("org.jetbrains.kotlin.android") {
- extensions.configure {
- explicitApi()
- jvmToolchain(17)
- compilerOptions {
- jvmTarget.set(JvmTarget.JVM_17)
- freeCompilerArgs.add("-Xwhen-guards")
- freeCompilerArgs.add("-Xcontext-parameters")
- freeCompilerArgs.add("-Xannotation-default-target=param-property")
- }
- }
+ plugins.withId("com.android.application") { configureKotlinAndroid() }
+
+ plugins.withId("com.android.library") { configureKotlinAndroid() }
+
+ plugins.withId("app.cash.paparazzi") { configurePaparazziTests() }
+
+ tasks.matching { it.name == "check" }.configureEach {
+ dependsOn(checkModuleDependencyBoundaries)
}
plugins.withId("org.jetbrains.kotlin.jvm") {
@@ -53,6 +153,120 @@ subprojects {
}
}
+private data class ProjectDependencyEdge(
+ val configuration: String,
+ val source: String,
+ val target: String,
+)
+
+private val dependencyFreeModules = setOf(
+ ":domain:locales",
+ ":domain:model",
+ ":domain:system-features",
+ ":presentation:navigation",
+ ":presentation:previews",
+ ":presentation:string-provider",
+)
+
+private val pureKotlinModules = setOf(
+ ":domain:fixtures",
+ ":domain:locales",
+ ":domain:model",
+ ":domain:roller-coasters",
+ ":domain:settings",
+ ":domain:system-features",
+ ":presentation:navigation",
+ ":presentation:paparazzi",
+ ":utils:time-dates",
+)
+
+private val pureKotlinForbiddenPluginIds = mapOf(
+ "com.android.application" to "Android application",
+ "com.android.library" to "Android library",
+ "com.google.dagger.hilt.android" to "Hilt Android",
+)
+
+private val presentationSupportModules = setOf(
+ ":presentation:fixtures",
+ ":presentation:paparazzi",
+ ":presentation:previews",
+)
+
+private fun ProjectDependencyEdge.boundaryViolations(): List = buildList {
+ if (source in dependencyFreeModules) {
+ add("$source must not declare project dependencies, but $configuration depends on $target.")
+ }
+
+ if (target == ":app") {
+ add("$source must not depend on :app via $configuration.")
+ }
+
+ if (source.startsWith(":domain:") && !target.startsWith(":domain:")) {
+ add("$source is a domain module and may only depend on domain modules, but $configuration depends on $target.")
+ }
+
+ if (source.startsWith(":data:") && !target.isAllowedDataDependency()) {
+ add("$source is a data module and may only depend on data, domain, or utils modules, but $configuration depends on $target.")
+ }
+
+ if (source.startsWith(":presentation:") && target.isForbiddenPresentationDependency()) {
+ add("$source is a presentation module and must not depend on data, di, or app modules, but $configuration depends on $target.")
+ }
+
+ if (source.startsWith(":presentation:design-system:") && target.isForbiddenDesignSystemDependency()) {
+ add("$source is a design-system module and must not depend on $target via $configuration.")
+ }
+
+ if (source.isNonPresentationLayer() && target in presentationSupportModules) {
+ add("$source must not depend on presentation support module $target via $configuration.")
+ }
+
+ if (source == ":di" && !target.isAllowedDiDependency()) {
+ add("$source may only depend on data or domain modules, but $configuration depends on $target.")
+ }
+}
+
+private fun Project.pureKotlinModuleViolations(): List = buildList {
+ if (!plugins.hasPlugin("org.jetbrains.kotlin.jvm")) {
+ add("$path is configured as a pure Kotlin module and must apply the Kotlin JVM plugin.")
+ }
+
+ pureKotlinForbiddenPluginIds
+ .filter { (pluginId, _) -> plugins.hasPlugin(pluginId) }
+ .forEach { (pluginId, description) ->
+ add("$path is configured as a pure Kotlin module and must not apply the $description plugin ($pluginId).")
+ }
+}
+
+private fun String.isAllowedDataDependency() =
+ startsWith(":data:") || startsWith(":domain:") || startsWith(":utils:")
+
+private fun String.isForbiddenPresentationDependency() =
+ startsWith(":data:") || this == ":di" || this == ":app"
+
+private fun String.isForbiddenDesignSystemDependency() =
+ this == ":presentation:app-shell" ||
+ startsWith(":data:") ||
+ this == ":di" ||
+ this == ":app"
+
+private fun String.isNonPresentationLayer() =
+ startsWith(":domain:") || startsWith(":data:") || this == ":di" || this == ":app"
+
+private fun String.isAllowedDiDependency() =
+ startsWith(":data:") || startsWith(":domain:")
+
+private fun Project.configurePaparazziTests() {
+ val javaToolchains = extensions.getByType()
+ tasks.withType().configureEach {
+ javaLauncher.set(
+ javaToolchains.launcherFor {
+ languageVersion.set(JavaLanguageVersion.of(21))
+ },
+ )
+ }
+}
+
private fun ApplicationExtension.androidApplicationConfig() {
compileSdk = compileSdk()
@@ -61,6 +275,14 @@ private fun ApplicationExtension.androidApplicationConfig() {
targetSdk = targetSdk()
}
+ lint {
+ baselineFile("lint-baseline.xml")?.let { baseline = it }
+ abortOnError = true
+ checkReleaseBuilds = false
+ xmlReport = true
+ htmlReport = true
+ }
+
compileOptions {
sourceCompatibility = javaVersion()
targetCompatibility = javaVersion()
@@ -71,7 +293,13 @@ private fun Project.androidLibraryConfig() {
extensions.configure {
compileSdk = compileSdk()
defaultConfig { minSdk = minSdk() }
- lint { targetSdk = targetSdk() }
+ lint {
+ targetSdk = targetSdk()
+ baselineFile("lint-baseline.xml")?.let { baseline = it }
+ abortOnError = true
+ xmlReport = true
+ htmlReport = true
+ }
compileOptions {
sourceCompatibility = javaVersion()
@@ -80,6 +308,21 @@ private fun Project.androidLibraryConfig() {
}
}
+private fun Project.configureKotlinAndroid() {
+ extensions.configure {
+ explicitApi()
+ jvmToolchain(17)
+ compilerOptions {
+ jvmTarget.set(JvmTarget.JVM_17)
+ freeCompilerArgs.add("-Xcontext-parameters")
+ freeCompilerArgs.add("-Xannotation-default-target=param-property")
+ }
+ }
+}
+
+private fun Project.baselineFile(path: String) =
+ file(path).takeIf { it.exists() }
+
private fun compileSdk() = libs.versions.compileSdk.get().toInt()
private fun javaVersion() = JavaVersion.VERSION_17
private fun minSdk() = libs.versions.minSdk.get().toInt()
diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts
deleted file mode 100644
index bc0172f0f..000000000
--- a/buildSrc/build.gradle.kts
+++ /dev/null
@@ -1,3 +0,0 @@
-plugins {
- `kotlin-dsl`
-}
diff --git a/buildSrc/settings.gradle.kts b/buildSrc/settings.gradle.kts
deleted file mode 100644
index ad8ea6b6e..000000000
--- a/buildSrc/settings.gradle.kts
+++ /dev/null
@@ -1,19 +0,0 @@
-rootProject.name = "buildSrc"
-
-pluginManagement {
- repositories {
- google()
- mavenCentral()
- gradlePluginPortal()
- }
-}
-
-@Suppress("UnstableApiUsage")
-dependencyResolutionManagement {
- repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
- repositories {
- google()
- mavenCentral()
- gradlePluginPortal()
- }
-}
diff --git a/buildSrc/src/main/kotlin/com/sottti/roller/coasters/buildSrc/Modules.kt b/buildSrc/src/main/kotlin/com/sottti/roller/coasters/buildSrc/Modules.kt
deleted file mode 100644
index 0585a3d41..000000000
--- a/buildSrc/src/main/kotlin/com/sottti/roller/coasters/buildSrc/Modules.kt
+++ /dev/null
@@ -1,72 +0,0 @@
-@file:Suppress("ClassName", "ConstPropertyName")
-
-package com.sottti.roller.coasters.buildSrc
-
-object module {
- object presentation {
- const val aboutMe = ":presentation:about-me"
- const val explore = ":presentation:explore"
- const val favourites = ":presentation:favourites"
- const val fixtures = ":presentation:fixtures"
- const val format = ":presentation:format"
- const val home = ":presentation:home"
- const val navigation = ":presentation:navigation"
- const val navigationExternal = ":presentation:navigation-external"
- const val paparazzi = ":presentation:paparazzi"
- const val previews = ":presentation:previews"
- const val rollerCoasterDetails = ":presentation:roller-coaster-details"
- const val search = ":presentation:search"
- const val settings = ":presentation:settings"
- const val stringProvider = ":presentation:string-provider"
- const val topBars = ":presentation:top-bars"
- const val utils = ":presentation:utils"
-
- object designSystem {
- const val cardGrid = ":presentation:design-system:card-grid"
- const val chip = ":presentation:design-system:chip"
- const val colors = ":presentation:design-system:colors"
- const val dialogs = ":presentation:design-system:dialogs"
- const val dimensions = ":presentation:design-system:dimensions"
- const val empty = ":presentation:design-system:empty"
- const val error = ":presentation:design-system:error"
- const val heroImage = ":presentation:design-system:hero-image"
- const val iconResources = ":presentation:design-system:icon-resources"
- const val icons = ":presentation:design-system:icons"
- const val illustrations = ":presentation:design-system:illustrations"
- const val images = ":presentation:design-system:images"
- const val informative = ":presentation::design-system:informative"
- const val map = ":presentation:design-system:map"
- const val progressIndicators = ":presentation:design-system:progress-indicators"
- const val rollerCoasterCard = ":presentation:design-system:roller-coaster-card"
- const val searchBar = ":presentation:design-system:search-bar"
- const val shapes = ":presentation:design-system:shapes"
- const val switch = ":presentation:design-system:switch"
- const val text = ":presentation:design-system:text"
- const val themes = ":presentation:design-system:themes"
- const val typography = ":presentation:design-system:typography"
- }
- }
-
- object domain {
- const val systemFeatures = ":domain:system-features"
- const val fixtures = ":domain:fixtures"
- const val locales = ":domain:locales"
- const val model = ":domain:model"
- const val rollerCoasters = ":domain:roller-coasters"
- const val settings = ":domain:settings"
- }
-
- object data {
- const val systemFeatures = ":data:system-features"
- const val network = ":data:network"
- const val rollerCoasters = ":data:roller-coasters"
- const val settings = ":data:settings"
- }
-
- object utils {
- const val lifecycle = ":utils:lifecycle"
- const val timeDates = ":utils:time-dates"
- }
-
- const val di = ":di"
-}
diff --git a/data/network/build.gradle.kts b/data/network/build.gradle.kts
index e00ca43fc..6d5cab569 100644
--- a/data/network/build.gradle.kts
+++ b/data/network/build.gradle.kts
@@ -1,6 +1,5 @@
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.ksp)
alias(libs.plugins.kotlin.serialization)
}
diff --git a/data/network/detekt-baseline.xml b/data/network/detekt-baseline.xml
new file mode 100644
index 000000000..f228b591e
--- /dev/null
+++ b/data/network/detekt-baseline.xml
@@ -0,0 +1,8 @@
+
+
+
+
+ TooGenericExceptionCaught:SafeApiCall.kt:exception: Exception
+ TooGenericExceptionThrown:SafeApiCallTest.kt:SafeApiCallTest$throw RuntimeException(unexpectedErrorMessage)
+
+
diff --git a/data/network/src/main/kotlin/com/sottti/roller/coasters/data/network/HttpClient.kt b/data/network/src/main/kotlin/com/sottti/roller/coasters/data/network/HttpClient.kt
index 0dbbf2ce2..29d0cba32 100644
--- a/data/network/src/main/kotlin/com/sottti/roller/coasters/data/network/HttpClient.kt
+++ b/data/network/src/main/kotlin/com/sottti/roller/coasters/data/network/HttpClient.kt
@@ -1,6 +1,7 @@
package com.sottti.roller.coasters.data.network
import io.ktor.client.HttpClient
+import io.ktor.client.engine.HttpClientEngine
import io.ktor.client.engine.cio.CIO
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
import io.ktor.client.plugins.logging.ANDROID
@@ -10,8 +11,12 @@ import io.ktor.client.plugins.logging.Logging
import io.ktor.serialization.kotlinx.json.json
import kotlinx.serialization.json.Json
-internal fun createHttpClient() =
- HttpClient(CIO) {
+internal fun createHttpClient(
+ engine: HttpClientEngine = CIO.create(),
+) =
+ HttpClient(engine) {
+ expectSuccess = true
+
install(ContentNegotiation) {
json(
Json {
diff --git a/data/network/src/main/kotlin/com/sottti/roller/coasters/data/network/SafeApiCall.kt b/data/network/src/main/kotlin/com/sottti/roller/coasters/data/network/SafeApiCall.kt
index a7cceaf21..f2f91cf52 100644
--- a/data/network/src/main/kotlin/com/sottti/roller/coasters/data/network/SafeApiCall.kt
+++ b/data/network/src/main/kotlin/com/sottti/roller/coasters/data/network/SafeApiCall.kt
@@ -6,14 +6,17 @@ import com.github.michaelbull.result.Result
import com.sottti.roller.coasters.data.network.model.ExceptionApiModel
import com.sottti.roller.coasters.data.network.model.ExceptionApiModel.ClientError
import com.sottti.roller.coasters.data.network.model.ExceptionApiModel.NoInternet
+import com.sottti.roller.coasters.data.network.model.ExceptionApiModel.RedirectError
import com.sottti.roller.coasters.data.network.model.ExceptionApiModel.ServerError
import com.sottti.roller.coasters.data.network.model.ExceptionApiModel.Timeout
import com.sottti.roller.coasters.data.network.model.ExceptionApiModel.Unknown
import io.ktor.client.network.sockets.SocketTimeoutException
import io.ktor.client.plugins.ClientRequestException
+import io.ktor.client.plugins.RedirectResponseException
import io.ktor.client.plugins.ServerResponseException
import io.ktor.client.statement.bodyAsText
import java.net.UnknownHostException
+import kotlin.coroutines.cancellation.CancellationException
public suspend fun safeApiCall(
apiCall: suspend () -> T,
@@ -24,15 +27,20 @@ public suspend fun safeApiCall(
} catch (exception: SocketTimeoutException) {
Err(Timeout(exception.message ?: TIMEOUT_ERROR_MESSAGE))
} catch (exception: ClientRequestException) { // 4xx errors
+ val errorBody = exception.response.bodyAsText()
Err(
ClientError(
message = exception.message,
code = exception.response.status.value,
- errorBody = exception.response.bodyAsText(),
+ errorBody = errorBody,
),
)
} catch (exception: ServerResponseException) { // 5xx errors
Err(ServerError(message = exception.message, code = exception.response.status.value))
+} catch (exception: RedirectResponseException) { // 3xx errors
+ Err(RedirectError(message = exception.message, code = exception.response.status.value))
+} catch (exception: CancellationException) {
+ throw exception
} catch (exception: Exception) {
Err(Unknown(exception.message ?: UNKNOWN_ERROR_MESSAGE))
}
diff --git a/data/network/src/main/kotlin/com/sottti/roller/coasters/data/network/model/ExceptionApiModel.kt b/data/network/src/main/kotlin/com/sottti/roller/coasters/data/network/model/ExceptionApiModel.kt
index bdf0a638f..50c2afd14 100644
--- a/data/network/src/main/kotlin/com/sottti/roller/coasters/data/network/model/ExceptionApiModel.kt
+++ b/data/network/src/main/kotlin/com/sottti/roller/coasters/data/network/model/ExceptionApiModel.kt
@@ -14,6 +14,11 @@ public sealed class ExceptionApiModel(
val errorBody: String?,
) : ExceptionApiModel(message)
+ public data class RedirectError(
+ override val message: String,
+ val code: Int,
+ ) : ExceptionApiModel(message)
+
public data class ServerError(
override val message: String,
val code: Int,
diff --git a/data/network/src/test/kotlin/com/sottti/roller/coasters/data/network/SafeApiCallTest.kt b/data/network/src/test/kotlin/com/sottti/roller/coasters/data/network/SafeApiCallTest.kt
index 76550386e..c25ea466d 100644
--- a/data/network/src/test/kotlin/com/sottti/roller/coasters/data/network/SafeApiCallTest.kt
+++ b/data/network/src/test/kotlin/com/sottti/roller/coasters/data/network/SafeApiCallTest.kt
@@ -5,11 +5,16 @@ import com.github.michaelbull.result.get
import com.github.michaelbull.result.getError
import com.google.common.truth.Truth.assertThat
import com.sottti.roller.coasters.data.network.model.ExceptionApiModel
+import io.ktor.client.engine.mock.MockEngine
+import io.ktor.client.engine.mock.respondError
import io.ktor.client.network.sockets.SocketTimeoutException
+import io.ktor.http.HttpHeaders
import io.ktor.http.HttpStatusCode
+import io.ktor.http.headersOf
import kotlinx.coroutines.runBlocking
import org.junit.Test
import java.net.UnknownHostException
+import kotlin.coroutines.cancellation.CancellationException
internal class SafeApiCallTest {
@@ -64,6 +69,26 @@ internal class SafeApiCallTest {
}
}
+ @Test
+ fun `production client returns server error when server returns 5xx`() = runBlocking {
+ val mockClient = createHttpClient(
+ MockEngine {
+ respondError(
+ status = HttpStatusCode.InternalServerError,
+ content = "Internal Server Error",
+ )
+ }
+ )
+
+ val result = mockClient.fetchWithSafeApiCall()
+
+ val error = result.getError()
+ assertThat(error).isInstanceOf(ExceptionApiModel.ServerError::class.java)
+ with(error as ExceptionApiModel.ServerError) {
+ assertThat(code).isEqualTo(500)
+ }
+ }
+
@Test
fun `returns client error when client request exception occurs`() = runBlocking {
val content = "Resource not found"
@@ -84,4 +109,55 @@ internal class SafeApiCallTest {
assertThat(message).contains("404")
}
}
+
+ @Test
+ fun `production client returns client error when server returns 4xx`() = runBlocking {
+ val content = "Resource not found"
+ val mockClient = createHttpClient(
+ MockEngine {
+ respondError(
+ status = HttpStatusCode.NotFound,
+ content = content,
+ )
+ }
+ )
+
+ val result = mockClient.fetchWithSafeApiCall()
+
+ val error = result.getError()
+ assertThat(error).isInstanceOf(ExceptionApiModel.ClientError::class.java)
+ with(error as ExceptionApiModel.ClientError) {
+ assertThat(code).isEqualTo(404)
+ assertThat(errorBody).isEqualTo(content)
+ }
+ }
+
+ @Test
+ fun `returns redirect error when redirect response exception occurs`() = runBlocking {
+ val mockEngine = mockEngineForResponse(
+ content = "",
+ headers = headersOf(HttpHeaders.Location, "https://example.com/redirected"),
+ status = HttpStatusCode.MovedPermanently,
+ )
+ val mockClient = createMockClient(
+ engine = mockEngine,
+ followRedirects = false,
+ )
+
+ val result = mockClient.fetchWithSafeApiCall()
+
+ val error = result.getError()
+ assertThat(error).isInstanceOf(ExceptionApiModel.RedirectError::class.java)
+ with(error as ExceptionApiModel.RedirectError) {
+ assertThat(code).isEqualTo(301)
+ assertThat(message).contains("301")
+ }
+ }
+
+ @Test(expected = CancellationException::class)
+ fun `rethrows cancellation exception`() {
+ runBlocking {
+ safeApiCall { throw CancellationException("Job cancelled") }
+ }
+ }
}
diff --git a/data/network/src/test/kotlin/com/sottti/roller/coasters/data/network/SafeApiCallTestHelpers.kt b/data/network/src/test/kotlin/com/sottti/roller/coasters/data/network/SafeApiCallTestHelpers.kt
index 0735ab341..019d852f4 100644
--- a/data/network/src/test/kotlin/com/sottti/roller/coasters/data/network/SafeApiCallTestHelpers.kt
+++ b/data/network/src/test/kotlin/com/sottti/roller/coasters/data/network/SafeApiCallTestHelpers.kt
@@ -6,23 +6,28 @@ import io.ktor.client.HttpClient
import io.ktor.client.engine.mock.MockEngine
import io.ktor.client.engine.mock.respond
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
+import io.ktor.http.Headers
import io.ktor.http.HttpStatusCode
import io.ktor.serialization.kotlinx.json.json
internal fun createMockClient(
engine: MockEngine,
+ followRedirects: Boolean = true,
): HttpClient = HttpClient(engine) {
install(ContentNegotiation) { json() }
expectSuccess = true
+ this.followRedirects = followRedirects
}
internal fun mockEngineForResponse(
status: HttpStatusCode,
content: String,
+ headers: Headers = Headers.Empty,
): MockEngine =
MockEngine { request ->
respond(
content = content,
+ headers = headers,
status = status,
)
}
diff --git a/data/roller-coasters/build.gradle.kts b/data/roller-coasters/build.gradle.kts
index fd474b882..c938da913 100644
--- a/data/roller-coasters/build.gradle.kts
+++ b/data/roller-coasters/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.ksp)
alias(libs.plugins.kotlin.serialization)
}
@@ -19,10 +16,10 @@ dependencies {
implementation(libs.room)
implementation(libs.room.paging)
implementation(libs.work.runtime)
- implementation(project(module.data.network))
- implementation(project(module.domain.fixtures))
- implementation(project(module.domain.rollerCoasters))
- implementation(project(module.utils.timeDates))
+ implementation(projects.data.network)
+ implementation(projects.domain.fixtures)
+ implementation(projects.domain.rollerCoasters)
+ implementation(projects.utils.timeDates)
ksp(libs.hilt.compiler)
ksp(libs.room.compiler)
diff --git a/data/roller-coasters/detekt-baseline.xml b/data/roller-coasters/detekt-baseline.xml
new file mode 100644
index 000000000..b1bbe68ec
--- /dev/null
+++ b/data/roller-coasters/detekt-baseline.xml
@@ -0,0 +1,22 @@
+
+
+
+
+ CyclomaticComplexMethod:RollerCoastersApiMapper.kt:private fun RollerCoasterStatsApiModel.isMultiTrack: Boolean
+ Filename:StatsRoomModel.kt:com.sottti.roller.coasters.data.roller.coasters.datasources.local.model.StatsRoomModel.kt
+ Indentation:RollerCoastersApiMapper.kt:
+ Indentation:RollerCoastersRoomQueriesMapperTest.kt:RollerCoastersRoomQueriesMapperTest$
+ MatchingDeclarationName:StatsRoomModel.kt:RideRoomModel
+ MultiLineIfElse:PictureSerializer.kt:PictureSerializer$Json.decodeFromJsonElement(PictureApiModel.serializer(), element)
+ MultiLineIfElse:PictureSerializer.kt:PictureSerializer$null
+ MultiLineIfElse:RollerCoastersRemoteDataSource.kt:RollerCoastersRemoteDataSource$Err(error ?: Exception("Error syncing roller coasters"))
+ MultiLineIfElse:RollerCoastersRemoteDataSource.kt:RollerCoastersRemoteDataSource$Ok(Unit)
+ NoConsecutiveBlankLines:RollerCoastersRemoteDataSourceTest.kt:RollerCoastersRemoteDataSourceTest$
+ ReturnCount:CoordinatesSerializer.kt:CoordinatesSerializer$override fun deserialize: CoordinatesApiModel?
+ StatementWrapping:RollerCoastersRemoteDataSource.kt:RollerCoastersRemoteDataSource$;
+ StatementWrapping:RollerCoastersRemoteDataSource.kt:RollerCoastersRemoteDataSource$successfulCalls++; it
+ TooGenericExceptionCaught:FilteredRollerCoastersPagingSource.kt:FilteredRollerCoastersPagingSource$e: Exception
+ TooManyFunctions:RollerCoastersDao.kt:RollerCoastersDao
+ Wrapping:RollerCoastersRemoteDataSource.kt:RollerCoastersRemoteDataSource$(
+
+
diff --git a/data/roller-coasters/src/main/kotlin/com/sottti/roller/coasters/data/roller/coasters/datasources/local/paging/FilteredRollerCoastersPagingSource.kt b/data/roller-coasters/src/main/kotlin/com/sottti/roller/coasters/data/roller/coasters/datasources/local/paging/FilteredRollerCoastersPagingSource.kt
index 76b730012..3d213f301 100644
--- a/data/roller-coasters/src/main/kotlin/com/sottti/roller/coasters/data/roller/coasters/datasources/local/paging/FilteredRollerCoastersPagingSource.kt
+++ b/data/roller-coasters/src/main/kotlin/com/sottti/roller/coasters/data/roller/coasters/datasources/local/paging/FilteredRollerCoastersPagingSource.kt
@@ -9,6 +9,7 @@ import com.sottti.roller.coasters.domain.roller.coasters.model.RollerCoaster
import com.sottti.roller.coasters.domain.roller.coasters.model.SortByFilter
import com.sottti.roller.coasters.domain.roller.coasters.model.TypeFilter
import com.sottti.roller.coasters.domain.settings.model.measurementSystem.ResolvedMeasurementSystem
+import kotlin.coroutines.cancellation.CancellationException
internal class FilteredRollerCoastersPagingSource(
private val dao: RollerCoastersDao,
@@ -45,6 +46,8 @@ internal class FilteredRollerCoastersPagingSource(
prevKey = if (page == 0) null else page - 1,
nextKey = if (rollerCoasters.size < pageSize) null else page + 1,
)
+ } catch (e: CancellationException) {
+ throw e
} catch (e: Exception) {
LoadResult.Error(e)
}
diff --git a/data/roller-coasters/src/main/kotlin/com/sottti/roller/coasters/data/roller/coasters/datasources/remote/RollerCoastersRemoteDataSource.kt b/data/roller-coasters/src/main/kotlin/com/sottti/roller/coasters/data/roller/coasters/datasources/remote/RollerCoastersRemoteDataSource.kt
index 54e1ad590..8e019714e 100644
--- a/data/roller-coasters/src/main/kotlin/com/sottti/roller/coasters/data/roller/coasters/datasources/remote/RollerCoastersRemoteDataSource.kt
+++ b/data/roller-coasters/src/main/kotlin/com/sottti/roller/coasters/data/roller/coasters/datasources/remote/RollerCoastersRemoteDataSource.kt
@@ -3,8 +3,8 @@ package com.sottti.roller.coasters.data.roller.coasters.datasources.remote
import com.github.michaelbull.result.Err
import com.github.michaelbull.result.Ok
import com.github.michaelbull.result.mapBoth
-import com.github.michaelbull.result.onFailure
-import com.github.michaelbull.result.onSuccess
+import com.github.michaelbull.result.onErr
+import com.github.michaelbull.result.onOk
import com.sottti.roller.coasters.data.roller.coasters.datasources.remote.api.RollerCoastersApiCalls
import com.sottti.roller.coasters.data.roller.coasters.datasources.remote.mapper.toApiModel
import com.sottti.roller.coasters.data.roller.coasters.datasources.remote.mapper.toDomain
@@ -79,8 +79,8 @@ internal class RollerCoastersRemoteDataSource @Inject constructor(
val result = api.getRollerCoasters(offset = offset, limit = limit)
mutex.withLock {
result
- .onSuccess { successfulCalls++ }
- .onFailure { exceptionApi -> error = exceptionApi }
+ .onOk { successfulCalls++ }
+ .onErr { exceptionApi -> error = exceptionApi }
}
result.mapBoth(
success = { page ->
diff --git a/data/roller-coasters/src/main/kotlin/com/sottti/roller/coasters/data/roller/coasters/repository/RollerCoastersRepositoryImpl.kt b/data/roller-coasters/src/main/kotlin/com/sottti/roller/coasters/data/roller/coasters/repository/RollerCoastersRepositoryImpl.kt
index c010ab0dd..e8e26965c 100644
--- a/data/roller-coasters/src/main/kotlin/com/sottti/roller/coasters/data/roller/coasters/repository/RollerCoastersRepositoryImpl.kt
+++ b/data/roller-coasters/src/main/kotlin/com/sottti/roller/coasters/data/roller/coasters/repository/RollerCoastersRepositoryImpl.kt
@@ -1,7 +1,7 @@
package com.sottti.roller.coasters.data.roller.coasters.repository
import androidx.paging.PagingData
-import com.github.michaelbull.result.onSuccess
+import com.github.michaelbull.result.onOk
import com.sottti.roller.coasters.data.roller.coasters.datasources.local.RollerCoastersLocalDataSource
import com.sottti.roller.coasters.data.roller.coasters.datasources.remote.RollerCoastersRemoteDataSource
import com.sottti.roller.coasters.data.roller.coasters.sync.RollerCoasterSyncScheduler
@@ -45,7 +45,7 @@ internal class RollerCoastersRepositoryImpl @Inject constructor(
if (rollerCoaster == null) {
remoteDataSource
.getRollerCoaster(id, measurementSystem)
- .onSuccess { localDataSource.storeRollerCoaster(it) }
+ .onOk { localDataSource.storeRollerCoaster(it) }
}
}.filterNotNull()
@@ -83,5 +83,5 @@ internal class RollerCoastersRepositoryImpl @Inject constructor(
): Result> =
remoteDataSource
.searchRollerCoasters(query = query, measurementSystem = measurementSystem)
- .onSuccess { rollerCoasters -> localDataSource.storeRollerCoasters(rollerCoasters) }
+ .onOk { rollerCoasters -> localDataSource.storeRollerCoasters(rollerCoasters) }
}
diff --git a/data/roller-coasters/src/test/kotlin/com/sottti/roller/coasters/data/roller/coasters/datasources/local/converters/ListConvertersTest.kt b/data/roller-coasters/src/test/kotlin/com/sottti/roller/coasters/data/roller/coasters/datasources/local/converters/ListConvertersTest.kt
index 43bf0e5c9..2328a26db 100644
--- a/data/roller-coasters/src/test/kotlin/com/sottti/roller/coasters/data/roller/coasters/datasources/local/converters/ListConvertersTest.kt
+++ b/data/roller-coasters/src/test/kotlin/com/sottti/roller/coasters/data/roller/coasters/datasources/local/converters/ListConvertersTest.kt
@@ -1,7 +1,7 @@
package com.sottti.roller.coasters.data.roller.coasters.datasources.local.converters
import com.google.common.truth.Truth.assertThat
-import kotlin.test.Test
+import org.junit.Test
internal class ListConvertersTest {
diff --git a/data/roller-coasters/src/test/kotlin/com/sottti/roller/coasters/data/roller/coasters/datasources/local/paging/RollerCoastersPagingSourceTest.kt b/data/roller-coasters/src/test/kotlin/com/sottti/roller/coasters/data/roller/coasters/datasources/local/paging/RollerCoastersPagingSourceTest.kt
index 5f73b47b2..0509c417a 100644
--- a/data/roller-coasters/src/test/kotlin/com/sottti/roller/coasters/data/roller/coasters/datasources/local/paging/RollerCoastersPagingSourceTest.kt
+++ b/data/roller-coasters/src/test/kotlin/com/sottti/roller/coasters/data/roller/coasters/datasources/local/paging/RollerCoastersPagingSourceTest.kt
@@ -22,6 +22,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.runBlocking
import org.junit.Before
import org.junit.Test
+import kotlin.coroutines.cancellation.CancellationException
@OptIn(ExperimentalCoroutinesApi::class)
internal class RollerCoastersPagingSourceTest {
@@ -117,6 +118,20 @@ internal class RollerCoastersPagingSourceTest {
assertThat(error.throwable.message).isEqualTo("DB Error")
}
+ @Test(expected = CancellationException::class)
+ fun `load - rethrows cancellation exceptions`() = runBlocking {
+ coEvery { dao.getPagedRollerCoasters(any()) } throws CancellationException("cancelled")
+
+ val params = PagingSource.LoadParams.Refresh(
+ key = 0,
+ loadSize = 2,
+ placeholdersEnabled = false,
+ )
+
+ pagingSource.load(params)
+ Unit
+ }
+
@Test
fun `getRefreshKey - should return null when anchorPosition is null`() {
val state = PagingState(
diff --git a/data/settings/build.gradle.kts b/data/settings/build.gradle.kts
index 428dba0dc..655043647 100644
--- a/data/settings/build.gradle.kts
+++ b/data/settings/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.ksp)
}
@@ -17,10 +14,10 @@ dependencies {
implementation(libs.appcompat)
implementation(libs.datastore.preferences)
implementation(libs.hilt)
- implementation(project(module.domain.locales))
- implementation(project(module.domain.settings))
- implementation(project(module.domain.systemFeatures))
- implementation(project(module.utils.lifecycle))
+ implementation(projects.domain.locales)
+ implementation(projects.domain.settings)
+ implementation(projects.domain.systemFeatures)
+ implementation(projects.utils.lifecycle)
ksp(libs.hilt.compiler)
androidTestImplementation(libs.junit.ext)
diff --git a/data/settings/detekt-baseline.xml b/data/settings/detekt-baseline.xml
new file mode 100644
index 000000000..547b65577
--- /dev/null
+++ b/data/settings/detekt-baseline.xml
@@ -0,0 +1,9 @@
+
+
+
+
+ NoConsecutiveBlankLines:SettingsLocalDataSource.kt:SettingsLocalDataSource$
+ TooManyFunctions:SettingsLocalDataSource.kt:SettingsLocalDataSource
+ TooManyFunctions:SettingsRepositoryImpl.kt:SettingsRepositoryImpl : SettingsRepository
+
+
diff --git a/data/settings/src/main/kotlin/com/sottti/roller/coasters/data/settings/mapper/ThemeDataMapper.kt b/data/settings/src/main/kotlin/com/sottti/roller/coasters/data/settings/mapper/ThemeDataMapper.kt
index ae32ed161..281e31495 100644
--- a/data/settings/src/main/kotlin/com/sottti/roller/coasters/data/settings/mapper/ThemeDataMapper.kt
+++ b/data/settings/src/main/kotlin/com/sottti/roller/coasters/data/settings/mapper/ThemeDataMapper.kt
@@ -35,7 +35,7 @@ internal fun AppTheme.toUiModeManagerNightMode() =
when (this) {
AppTheme.DarkAppTheme -> UiModeManager.MODE_NIGHT_YES
AppTheme.LightAppTheme -> UiModeManager.MODE_NIGHT_NO
- AppTheme.System -> UiModeManager.MODE_NIGHT_AUTO
+ AppTheme.System -> UiModeManager.MODE_NIGHT_CUSTOM
}
internal fun AppTheme.toAppCompatDelegateNightMode() =
diff --git a/data/system-features/build.gradle.kts b/data/system-features/build.gradle.kts
index 9d4c0f8cb..273175e43 100644
--- a/data/system-features/build.gradle.kts
+++ b/data/system-features/build.gradle.kts
@@ -1,9 +1,6 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.hilt)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.ksp)
}
@@ -13,6 +10,6 @@ android {
dependencies {
implementation(libs.hilt)
- implementation(project(module.domain.systemFeatures))
+ implementation(projects.domain.systemFeatures)
ksp(libs.hilt.compiler)
}
diff --git a/detekt.yml b/detekt.yml
index c780e656f..5370b0b8d 100644
--- a/detekt.yml
+++ b/detekt.yml
@@ -1,5 +1,120 @@
naming:
+ active: true
FunctionNaming:
active: true
- ignoreAnnotated:
- - Composable
+ functionPattern: '^[a-z][a-zA-Z0-9]*'
+ ignoreAnnotated: [ 'Composable' ]
+ TopLevelPropertyNaming:
+ active: true
+ constantPattern: '[A-Z][A-Z0-9_]*'
+ propertyPattern: '[a-z][A-Za-z0-9]*'
+ privatePropertyPattern: '(_)?[a-z][A-Za-z0-9]*'
+ ignoreAnnotated: [ 'Composable' ]
+
+complexity:
+ active: true
+ LongMethod:
+ active: true
+ allowedLines: 60
+ LongParameterList:
+ active: true
+ allowedFunctionParameters: 10
+ ignoreDefaultParameters: true
+ TooManyFunctions:
+ active: true
+ allowedFunctionsPerFile: 30
+ ignoreDeprecated: true
+ ignorePrivate: true
+ ignoreAnnotatedFunctions: [ 'Composable' ]
+
+style:
+ active: true
+ MagicNumber:
+ active: true
+ ignoreNumbers: [ '-1', '0', '1', '2', '4', '8', '12', '16', '24', '32', '64' ]
+ ignoreAnnotated: [ 'Preview', 'Composable' ]
+ MaxLineLength:
+ active: true
+ maxLineLength: 120
+ UnusedPrivateFunction:
+ active: true
+ ignoreAnnotated: [ 'Preview' ]
+ UnusedPrivateProperty:
+ active: true
+ UnusedParameter:
+ active: true
+
+comments:
+ active: true
+
+Compose:
+ active: true
+ ComposableNaming:
+ active: true
+ CompositionLocalAllowlist:
+ active: false
+ CompositionLocalNaming:
+ active: true
+ RememberContentMissing:
+ active: true
+ RememberMissing:
+ active: true
+ ModifierMissing:
+ active: false
+ ModifierNotUsedAtRoot:
+ active: false
+ ModifierWithoutDefault:
+ active: false
+ ViewModelInjection:
+ active: false
+
+potential-bugs:
+ active: true
+ NullableToStringCall:
+ active: true
+ ImplicitDefaultLocale:
+ active: true
+ UnreachableCatchBlock:
+ active: true
+ UnsafeCast:
+ active: true
+ InvalidRange:
+ active: true
+
+exceptions:
+ active: true
+
+ktlint:
+ active: true
+ BackingPropertyNaming:
+ active: false
+ Indentation:
+ active: true
+ BlankLineBetweenWhenConditions:
+ active: false
+ ClassSignature:
+ active: false
+ FinalNewline:
+ active: true
+ FunctionSignature:
+ active: false
+ FunctionExpressionBody:
+ active: false
+ ImportOrdering:
+ active: false
+ MaximumLineLength:
+ active: false
+ NoTrailingSpaces:
+ active: true
+ TrailingCommaOnCallSite:
+ active: false
+ TrailingCommaOnDeclarationSite:
+ active: false
+
+empty-blocks:
+ active: true
+
+performance:
+ active: true
+ SpreadOperator:
+ active: true
diff --git a/di/build.gradle.kts b/di/build.gradle.kts
index fc73bc94c..f9356ed51 100644
--- a/di/build.gradle.kts
+++ b/di/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.ksp)
}
@@ -11,12 +8,12 @@ android {
}
dependencies {
- implementation(project(module.domain.rollerCoasters))
+ implementation(projects.domain.rollerCoasters)
implementation(libs.hilt)
- implementation(project(module.data.systemFeatures))
- implementation(project(module.data.rollerCoasters))
- implementation(project(module.data.settings))
- implementation(project(module.domain.systemFeatures))
- implementation(project(module.domain.settings))
+ implementation(projects.data.systemFeatures)
+ implementation(projects.data.rollerCoasters)
+ implementation(projects.data.settings)
+ implementation(projects.domain.systemFeatures)
+ implementation(projects.domain.settings)
ksp(libs.hilt.compiler)
}
diff --git a/domain/fixtures/build.gradle.kts b/domain/fixtures/build.gradle.kts
index 9ad7a9edd..fe518f324 100644
--- a/domain/fixtures/build.gradle.kts
+++ b/domain/fixtures/build.gradle.kts
@@ -1,9 +1,7 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.kotlin.jvm)
}
dependencies {
- implementation(project(module.domain.rollerCoasters))
+ implementation(projects.domain.rollerCoasters)
}
diff --git a/domain/fixtures/detekt-baseline.xml b/domain/fixtures/detekt-baseline.xml
new file mode 100644
index 000000000..5a45f21eb
--- /dev/null
+++ b/domain/fixtures/detekt-baseline.xml
@@ -0,0 +1,7 @@
+
+
+
+
+ Indentation:RollerCoasterConstantsFixtures.kt:
+
+
diff --git a/domain/roller-coasters/build.gradle.kts b/domain/roller-coasters/build.gradle.kts
index 1b4b0caea..c78c4421e 100644
--- a/domain/roller-coasters/build.gradle.kts
+++ b/domain/roller-coasters/build.gradle.kts
@@ -1,13 +1,11 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.kotlin.jvm)
}
dependencies {
api(libs.result)
- api(project(module.domain.model))
- api(project(module.domain.settings))
+ api(projects.domain.model)
+ api(projects.domain.settings)
implementation(libs.javax.inject)
implementation(libs.kotlin.coroutines.core)
implementation(libs.paging.common)
@@ -19,5 +17,5 @@ dependencies {
testImplementation(libs.paging.common)
testImplementation(libs.paging.testing)
testImplementation(libs.truth)
- testImplementation(project(module.domain.fixtures))
+ testImplementation(projects.domain.fixtures)
}
diff --git a/domain/settings/build.gradle.kts b/domain/settings/build.gradle.kts
index b90b96161..dc946e731 100644
--- a/domain/settings/build.gradle.kts
+++ b/domain/settings/build.gradle.kts
@@ -1,5 +1,3 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.kotlin.jvm)
}
@@ -8,8 +6,8 @@ dependencies {
implementation(libs.annotations)
implementation(libs.javax.inject)
implementation(libs.kotlin.coroutines.core)
- implementation(project(module.domain.systemFeatures))
- implementation(project(module.domain.locales))
+ implementation(projects.domain.systemFeatures)
+ implementation(projects.domain.locales)
testImplementation(libs.junit)
testImplementation(libs.kotlin.coroutines.test)
diff --git a/domain/settings/detekt-baseline.xml b/domain/settings/detekt-baseline.xml
new file mode 100644
index 000000000..0cab39940
--- /dev/null
+++ b/domain/settings/detekt-baseline.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ Filename:ResolvedMeasurementSystemMapperTest.kt:com.sottti.roller.coasters.domain.settings.mapper.ResolvedMeasurementSystemMapperTest.kt
+ Indentation:GetResolvedColorContrast.kt:GetResolvedColorContrast$
+ Indentation:ObserveResolvedColorContrast.kt:ObserveResolvedColorContrast$
+ MatchingDeclarationName:ResolvedMeasurementSystemMapperTest.kt:MeasurementSystemMapperTest
+ NoConsecutiveBlankLines:GetResolvedColorContrastTest.kt:GetResolvedColorContrastTest$
+ TooManyFunctions:SettingsRepository.kt:SettingsRepository
+
+
diff --git a/domain/settings/src/test/kotlin/com/sottti/roller/coasters/domain/settings/usecase/colorContrast/ObserveResolvedColorContrastTest.kt b/domain/settings/src/test/kotlin/com/sottti/roller/coasters/domain/settings/usecase/colorContrast/ObserveResolvedColorContrastTest.kt
index c078b6d78..58ced2624 100644
--- a/domain/settings/src/test/kotlin/com/sottti/roller/coasters/domain/settings/usecase/colorContrast/ObserveResolvedColorContrastTest.kt
+++ b/domain/settings/src/test/kotlin/com/sottti/roller/coasters/domain/settings/usecase/colorContrast/ObserveResolvedColorContrastTest.kt
@@ -8,7 +8,6 @@ import com.sottti.roller.coasters.domain.settings.model.colorContrast.AppColorCo
import com.sottti.roller.coasters.domain.settings.model.colorContrast.ResolvedColorContrast
import com.sottti.roller.coasters.domain.settings.model.colorContrast.SystemColorContrast
import com.sottti.roller.coasters.domain.settings.repository.SettingsRepository
-import io.mockk.coEvery
import io.mockk.every
import io.mockk.mockk
import kotlinx.coroutines.flow.flowOf
@@ -25,6 +24,9 @@ internal class ObserveResolvedColorContrastTest {
@Before
fun setUp() {
settingsRepository = mockk()
+ every {
+ settingsRepository.observeSystemColorContrast()
+ } returns flowOf(SystemColorContrast.StandardContrast)
observeResolvedColorContrast = ObserveResolvedColorContrast(settingsRepository)
}
@@ -52,9 +54,9 @@ internal class ObserveResolvedColorContrastTest {
@Test
fun `emits resolved high contrast when system high contrast is observed`() = runTest {
every { settingsRepository.observeAppColorContrast() } returns flowOf(System)
- coEvery {
- settingsRepository.getSystemColorContrast()
- } returns SystemColorContrast.HighContrast
+ every {
+ settingsRepository.observeSystemColorContrast()
+ } returns flowOf(SystemColorContrast.HighContrast)
val emissions = observeResolvedColorContrast().toList()
assertThat(emissions).containsExactly(ResolvedColorContrast.HighContrast)
}
@@ -62,9 +64,9 @@ internal class ObserveResolvedColorContrastTest {
@Test
fun `emits resolved low contrast when system low contrast is observed`() = runTest {
every { settingsRepository.observeAppColorContrast() } returns flowOf(System)
- coEvery {
- settingsRepository.getSystemColorContrast()
- } returns SystemColorContrast.LowContrast
+ every {
+ settingsRepository.observeSystemColorContrast()
+ } returns flowOf(SystemColorContrast.LowContrast)
val emissions = observeResolvedColorContrast().toList()
assertThat(emissions).containsExactly(ResolvedColorContrast.LowContrast)
}
@@ -72,9 +74,9 @@ internal class ObserveResolvedColorContrastTest {
@Test
fun `emits resolved medium contrast when system medium contrast is observed`() = runTest {
every { settingsRepository.observeAppColorContrast() } returns flowOf(System)
- coEvery {
- settingsRepository.getSystemColorContrast()
- } returns SystemColorContrast.MediumContrast
+ every {
+ settingsRepository.observeSystemColorContrast()
+ } returns flowOf(SystemColorContrast.MediumContrast)
val emissions = observeResolvedColorContrast().toList()
assertThat(emissions).containsExactly(ResolvedColorContrast.MediumContrast)
}
@@ -82,9 +84,9 @@ internal class ObserveResolvedColorContrastTest {
@Test
fun `emits resolved standard contrast when system standard contrast is observed`() = runTest {
every { settingsRepository.observeAppColorContrast() } returns flowOf(System)
- coEvery {
- settingsRepository.getSystemColorContrast()
- } returns SystemColorContrast.StandardContrast
+ every {
+ settingsRepository.observeSystemColorContrast()
+ } returns flowOf(SystemColorContrast.StandardContrast)
val emissions = observeResolvedColorContrast().toList()
assertThat(emissions).containsExactly(ResolvedColorContrast.StandardContrast)
}
@@ -94,9 +96,9 @@ internal class ObserveResolvedColorContrastTest {
every {
settingsRepository.observeAppColorContrast()
} returns flowOf(HighContrast, System)
- coEvery {
- settingsRepository.getSystemColorContrast()
- } returns SystemColorContrast.MediumContrast
+ every {
+ settingsRepository.observeSystemColorContrast()
+ } returns flowOf(SystemColorContrast.MediumContrast, SystemColorContrast.MediumContrast)
val emissions = observeResolvedColorContrast().toList()
assertThat(emissions).containsExactly(
ResolvedColorContrast.HighContrast,
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 44265d655..c2fc707d2 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,43 +1,45 @@
[versions]
-agp = "8.13.0"
-annotations = "1.9.1"
+agp = "9.2.1"
+annotations = "1.10.0"
appcompat = "1.7.1"
-browser = "1.9.0"
-coil = "3.3.0"
-compileSdk = "36"
-compose-bom = "2025.10.00"
-compose-maps = "6.12.1"
-compose-navigation2 = "2.9.5"
-compose-navigation3 = "1.0.0-beta01"
-core = "1.17.0"
-coroutines = "1.10.2"
-datastore-preferences = "1.1.7"
-gradle-versions = "0.53.0"
-hilt = "2.57.2"
+browser = "1.10.0"
+coil = "3.4.0"
+compileSdk = "37"
+compose-bom = "2026.05.02"
+compose-maps = "8.3.0"
+compose-navigation2 = "2.9.8"
+compose-navigation3 = "1.1.2"
+composeRules = "0.5.9"
+core = "1.19.0"
+coroutines = "1.11.0"
+datastore-preferences = "1.2.1"
+detekt = "2.0.0-alpha.3"
+gradle-versions = "0.54.0"
+hilt = "2.59.2"
hilt-navigation-compose = "1.3.0"
hilt-work = "1.3.0"
javax-inject = "1"
junit = "4.13.2"
junit-ext = "1.3.0"
-kotlin = "2.2.20"
-kotlin-ksp = "2.2.20-2.0.3"
-kotlinSerialization = "1.9.0"
-ktor = "3.3.1"
-lifecycle = "2.9.4"
-material = "1.13.0"
+kotlin = "2.3.21"
+kotlin-ksp = "2.3.9"
+kotlinSerialization = "1.11.0"
+kover = "0.9.8"
+ktor = "3.5.0"
+lifecycle = "2.10.0"
+material = "1.14.0"
minSdk = "26"
-mockk = "1.14.6"
-paging = "3.3.6"
-paparazzi = "2.0.0-alpha02"
-result = "2.1.0"
-room = "2.8.2"
-secrets = "2.0.1"
-splashscreen = "1.2.0-rc01"
+mockk = "1.14.11"
+paging = "3.5.0"
+paparazzi = "2.0.0-alpha05"
+result = "2.3.1"
+room = "2.8.4"
+splashscreen = "1.2.0"
targetSdk = "36"
test-runner = "1.7.0"
truth = "1.4.5"
turbine = "1.2.1"
-work = "2.10.5"
+work = "2.11.2"
[libraries]
annotations = { group = "androidx.annotation", name = "annotation", version.ref = "annotations" }
@@ -53,13 +55,17 @@ compose-navigation2 = { group = "androidx.navigation", name = "navigation-compos
compose-navigation3-runtime = { group = "androidx.navigation3", name = "navigation3-runtime", version.ref = "compose-navigation3" }
compose-navigation3-ui = { group = "androidx.navigation3", name = "navigation3-ui", version.ref = "compose-navigation3" }
compose-runtime = { group = "androidx.compose.runtime", name = "runtime" }
+compose-runtime-saveable = { group = "androidx.compose.runtime", name = "runtime-saveable" }
compose-ui = { group = "androidx.compose.ui", name = "ui" }
compose-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" }
compose-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }
compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
+compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
compose-window-size = { group = "androidx.compose.material3", name = "material3-window-size-class" }
core = { group = "androidx.core", name = "core-ktx", version.ref = "core" }
datastore-preferences = { group = "androidx.datastore", name = "datastore-preferences", version.ref = "datastore-preferences" }
+detekt-compose = { group = "io.nlopez.compose.rules", name = "detekt", version.ref = "composeRules" }
+detekt-formatting = { group = "dev.detekt", name = "detekt-rules-ktlint-wrapper", version.ref = "detekt" }
hilt = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" }
hilt-compiler = { group = "com.google.dagger", name = "hilt-compiler", version.ref = "hilt" }
hilt-navigation-compose = { group = "androidx.hilt", name = "hilt-navigation-compose", version.ref = "hilt-navigation-compose" }
@@ -100,12 +106,12 @@ work-runtime = { group = "androidx.work", name = "work-runtime-ktx", version.ref
[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
android-library = { id = "com.android.library", version.ref = "agp" }
+detekt = { id = "dev.detekt", version.ref = "detekt" }
gradle-versions = { id = "com.github.ben-manes.versions", version.ref = "gradle-versions" }
hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }
-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
kotlin-ksp = { id = "com.google.devtools.ksp", version.ref = "kotlin-ksp" }
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
+kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" }
paparazzi = { id = "app.cash.paparazzi", version.ref = "paparazzi" }
-secrets = { id = "com.google.android.libraries.mapsplatform.secrets-gradle-plugin", version.ref = "secrets" }
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 1b33c55ba..b1b8ef56b 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index a3f9a9a09..e74c8700b 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,9 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-rc-1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-all.zip
networkTimeout=10000
+retries=0
+retryBackOffMs=500
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index 23d15a936..b9bb139f7 100755
--- a/gradlew
+++ b/gradlew
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# Copyright Β© 2015-2021 the original authors.
+# Copyright Β© 2015 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -57,7 +57,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
-# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
@@ -114,7 +114,6 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;;
esac
-CLASSPATH="\\\"\\\""
# Determine the Java command to use to start the JVM.
@@ -172,7 +171,6 @@ fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
- CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
@@ -212,7 +210,6 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
- -classpath "$CLASSPATH" \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
diff --git a/gradlew.bat b/gradlew.bat
index 5eed7ee84..aa5f10b06 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -23,8 +23,8 @@
@rem
@rem ##########################################################################
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
+@rem Set local scope for the variables, and ensure extensions are enabled
+setlocal EnableExtensions
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@@ -51,7 +51,7 @@ echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
-goto fail
+"%COMSPEC%" /c exit 1
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
@@ -65,30 +65,18 @@ echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
-goto fail
+"%COMSPEC%" /c exit 1
:execute
@rem Setup the command line
-set CLASSPATH=
@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
+@rem endlocal doesn't take effect until after the line is parsed and variables are expanded
+@rem which allows us to clear the local environment before executing the java command
+endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel
-:end
-@rem End local scope for the variables with windows NT shell
-if %ERRORLEVEL% equ 0 goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-set EXIT_CODE=%ERRORLEVEL%
-if %EXIT_CODE% equ 0 set EXIT_CODE=1
-if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
-exit /b %EXIT_CODE%
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
+:exitWithErrorLevel
+@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts
+"%COMSPEC%" /c exit %ERRORLEVEL%
diff --git a/presentation/about-me/build.gradle.kts b/presentation/about-me/build.gradle.kts
index fdfbf288c..9132351e5 100644
--- a/presentation/about-me/build.gradle.kts
+++ b/presentation/about-me/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.kotlin.ksp)
alias(libs.plugins.paparazzi)
@@ -15,29 +12,30 @@ android {
dependencies {
implementation(libs.compose.foundation)
implementation(libs.compose.material)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(libs.hilt)
implementation(libs.hilt.navigation.compose)
implementation(platform(libs.compose.bom))
- implementation(project(module.presentation.designSystem.cardGrid))
- implementation(project(module.presentation.designSystem.colors))
- implementation(project(module.presentation.designSystem.dimensions))
- implementation(project(module.presentation.designSystem.heroImage))
- implementation(project(module.presentation.designSystem.icons))
- implementation(project(module.presentation.designSystem.images))
- implementation(project(module.presentation.designSystem.shapes))
- implementation(project(module.presentation.designSystem.text))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.format))
- implementation(project(module.presentation.navigationExternal))
- implementation(project(module.presentation.previews))
- implementation(project(module.presentation.topBars))
- implementation(project(module.presentation.utils))
+ implementation(projects.presentation.designSystem.cardGrid)
+ implementation(projects.presentation.designSystem.colors)
+ implementation(projects.presentation.designSystem.dimensions)
+ implementation(projects.presentation.designSystem.heroImage)
+ implementation(projects.presentation.designSystem.icons)
+ implementation(projects.presentation.designSystem.images)
+ implementation(projects.presentation.designSystem.shapes)
+ implementation(projects.presentation.designSystem.text)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.format)
+ implementation(projects.presentation.navigationExternal)
+ implementation(projects.presentation.previews)
+ implementation(projects.presentation.topBars)
+ implementation(projects.presentation.utils)
ksp(libs.hilt.compiler)
testImplementation(libs.junit)
testImplementation(libs.kotlin.coroutines.test)
testImplementation(libs.mockk)
testImplementation(libs.truth)
- testImplementation(project(module.presentation.paparazzi))
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/about-me/detekt-baseline.xml b/presentation/about-me/detekt-baseline.xml
new file mode 100644
index 000000000..dbf8ad515
--- /dev/null
+++ b/presentation/about-me/detekt-baseline.xml
@@ -0,0 +1,10 @@
+
+
+
+
+ Indentation:AboutMeUiContent.kt:
+ MagicNumber:AboutMeState.kt:Topics$3
+ NoEmptyFirstLineInMethodBlock:AboutMeViewModelTest.kt:AboutMeViewModelTest$
+ ParameterNaming:AboutMeUi.kt:onListCreated: @Composable (LazyListState, TopAppBarScrollBehavior) -> Unit
+
+
diff --git a/presentation/about-me/src/main/kotlin/com/sottti/roller/coasters/presentation/about/me/ui/AboutMeUiContent.kt b/presentation/about-me/src/main/kotlin/com/sottti/roller/coasters/presentation/about/me/ui/AboutMeUiContent.kt
index 435a48787..dec546f4c 100644
--- a/presentation/about-me/src/main/kotlin/com/sottti/roller/coasters/presentation/about/me/ui/AboutMeUiContent.kt
+++ b/presentation/about-me/src/main/kotlin/com/sottti/roller/coasters/presentation/about/me/ui/AboutMeUiContent.kt
@@ -52,6 +52,7 @@ import com.sottti.roller.coasters.presentation.design.system.text.Text
import com.sottti.roller.coasters.presentation.top.bars.ui.MainTopBar
import com.sottti.roller.coasters.presentation.utils.Spacer
import com.sottti.roller.coasters.presentation.utils.override
+import com.sottti.roller.coasters.presentation.utils.plus
@Composable
@OptIn(ExperimentalMaterial3Api::class)
diff --git a/presentation/about-me/src/main/res/values-es-rES/strings.xml b/presentation/about-me/src/main/res/values-es-rES/strings.xml
index 891af9a13..6220645f2 100644
--- a/presentation/about-me/src/main/res/values-es-rES/strings.xml
+++ b/presentation/about-me/src/main/res/values-es-rES/strings.xml
@@ -26,6 +26,4 @@
PortuguΓ©s
El espaΓ±ol es mi lengua materna. El espaΓ±ol y el gallego son las lenguas oficiales en Galicia, donde nacΓ. AprendΓ ambos desde joven y los estudiΓ© durante toda mi etapa escolar.
EspaΓ±ol
- Ha ocurrido un error. Lo solucionaremos lo antes posible.
-
diff --git a/presentation/about-me/src/main/res/values-gl/strings.xml b/presentation/about-me/src/main/res/values-gl/strings.xml
index 3778437d4..0e973802c 100644
--- a/presentation/about-me/src/main/res/values-gl/strings.xml
+++ b/presentation/about-me/src/main/res/values-gl/strings.xml
@@ -26,5 +26,4 @@
PortuguΓ©s
O espaΓ±ol Γ© a miΓ±a lingua nai. O espaΓ±ol e o galego son as linguas oficiais en Galicia, onde nacΓn. AprendΓn ambos dende novo e estudeinos durante toda a miΓ±a etapa escolar.
EspaΓ±ol
- Produciuse un erro. ArranxarΓ©molo canto antes.
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[0].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[0].png
index fc36f2bdb..92fd99eea 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[0].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[10].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[10].png
index 062ef3703..452a5d152 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[10].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[10].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[11].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[11].png
index 49514588d..3224838e9 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[11].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[11].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[12].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[12].png
index d88d38367..e0769eb72 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[12].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[12].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[13].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[13].png
index 0f73b0c4a..a47c2e4ad 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[13].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[13].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[14].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[14].png
index a3fc9361d..3f820d8c4 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[14].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[14].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[15].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[15].png
index e5a3c70cd..d40572861 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[15].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[15].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[16].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[16].png
index a145b7979..442322ac0 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[16].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[16].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[17].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[17].png
index 4fa955266..bca4f42ba 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[17].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[17].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[18].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[18].png
index 4bb822d63..8cfe08733 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[18].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[18].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[19].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[19].png
index 3f9656db1..416522ec7 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[19].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[19].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[1].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[1].png
index 293a4bc85..7c7130893 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[1].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[20].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[20].png
index cf9c23085..f26af906e 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[20].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[20].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[21].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[21].png
index 694277ba0..677d77a89 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[21].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[21].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[22].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[22].png
index d826d3801..4f434fd85 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[22].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[22].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[23].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[23].png
index 6bb720b15..7bc63c772 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[23].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[23].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[24].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[24].png
index 01806d6f9..09a9ddc31 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[24].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[24].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[25].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[25].png
index 48a15e009..a528c994e 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[25].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[25].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[2].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[2].png
index 570d964f1..438a085a8 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[2].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[2].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[3].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[3].png
index b47c432f7..b3963b003 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[3].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[3].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[4].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[4].png
index 8932d52a7..d8ad0b91e 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[4].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[4].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[5].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[5].png
index 7620ee748..840de57e4 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[5].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[5].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[6].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[6].png
index a5b52f71f..860375a40 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[6].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[6].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[7].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[7].png
index 25ef87ab3..db6c3ecd8 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[7].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[7].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[8].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[8].png
index be0bf5fba..c616c9abc 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[8].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[8].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[9].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[9].png
index 4b34b2871..421a8119d 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[9].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiBottomSheetContentSnapshotTest_snapshotTest[9].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiSnapshotTest_snapshotTest[0].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiSnapshotTest_snapshotTest[0].png
index a0e1c8569..48a75750c 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiSnapshotTest_snapshotTest[0].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiSnapshotTest_snapshotTest[1].png b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiSnapshotTest_snapshotTest[1].png
index 70b5db29b..8a4fb0652 100644
Binary files a/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiSnapshotTest_snapshotTest[1].png and b/presentation/about-me/src/test/snapshots/images/com.sottti.roller.coasters.presentation.about.me.ui_AboutMeUiSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/app-shell/build.gradle.kts b/presentation/app-shell/build.gradle.kts
new file mode 100644
index 000000000..70865b8d6
--- /dev/null
+++ b/presentation/app-shell/build.gradle.kts
@@ -0,0 +1,35 @@
+plugins {
+ alias(libs.plugins.android.library)
+ alias(libs.plugins.hilt)
+ alias(libs.plugins.kotlin.compose)
+ alias(libs.plugins.kotlin.ksp)
+ alias(libs.plugins.paparazzi)
+}
+
+android {
+ namespace = "com.sottti.roller.coasters.presentation.app.shell"
+}
+
+dependencies {
+ implementation(libs.appcompat)
+ implementation(libs.compose.material)
+ implementation(libs.compose.navigation2)
+ implementation(libs.hilt)
+ implementation(libs.hilt.navigation.compose)
+ implementation(platform(libs.compose.bom))
+ implementation(projects.domain.settings)
+ implementation(projects.presentation.aboutMe)
+ implementation(projects.presentation.designSystem.icons)
+ implementation(projects.presentation.designSystem.text)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.explore)
+ implementation(projects.presentation.favourites)
+ implementation(projects.presentation.navigation)
+ implementation(projects.presentation.previews)
+ implementation(projects.presentation.rollerCoasterDetails)
+ implementation(projects.presentation.search)
+ implementation(projects.presentation.settings)
+ implementation(projects.presentation.utils)
+ ksp(libs.hilt.compiler)
+ testImplementation(projects.presentation.paparazzi)
+}
diff --git a/presentation/app-shell/detekt-baseline.xml b/presentation/app-shell/detekt-baseline.xml
new file mode 100644
index 000000000..7af920d2e
--- /dev/null
+++ b/presentation/app-shell/detekt-baseline.xml
@@ -0,0 +1,8 @@
+
+
+
+
+ LambdaParameterInRestartableEffect:AppShellUiNavigationBar.kt:onAction: (AppShellActions) -> Unit
+ MutableParams:AppShellUiNavigationBar.kt:scrollToTopCallbacks: MutableMap<NavigationDestination, () -> Unit>
+
+
diff --git a/presentation/home/src/main/AndroidManifest.xml b/presentation/app-shell/src/main/AndroidManifest.xml
similarity index 88%
rename from presentation/home/src/main/AndroidManifest.xml
rename to presentation/app-shell/src/main/AndroidManifest.xml
index e1a30aefa..6a1d0a261 100644
--- a/presentation/home/src/main/AndroidManifest.xml
+++ b/presentation/app-shell/src/main/AndroidManifest.xml
@@ -3,7 +3,7 @@
Icons.Explore.filled
@@ -46,7 +46,7 @@ private fun explore(
destination = NavigationDestination.Explore,
)
-private fun search() = HomeNavigationBarItemState(
+private fun search() = AppShellNavigationBarItemState(
labelResId = R.string.navigation_bar_item_label_search,
icon = Icons.Search.outlined,
destination = NavigationDestination.Search,
@@ -54,7 +54,7 @@ private fun search() = HomeNavigationBarItemState(
private fun favourites(
selectedItem: NavigationDestination,
-) = HomeNavigationBarItemState(
+) = AppShellNavigationBarItemState(
labelResId = R.string.navigation_bar_item_label_favourites,
icon = when (selectedItem) {
NavigationDestination.Favourites -> Icons.Star.filled
@@ -65,7 +65,7 @@ private fun favourites(
private fun aboutMe(
selectedItem: NavigationDestination,
-) = HomeNavigationBarItemState(
+) = AppShellNavigationBarItemState(
labelResId = R.string.navigation_bar_item_label_about_me,
icon = when (selectedItem) {
NavigationDestination.AboutMe -> Icons.AccountCircle.filled
diff --git a/presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/data/HomeMapper.kt b/presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/data/AppShellMapper.kt
similarity index 89%
rename from presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/data/HomeMapper.kt
rename to presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/data/AppShellMapper.kt
index 8fed70073..6a8ff6fe4 100644
--- a/presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/data/HomeMapper.kt
+++ b/presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/data/AppShellMapper.kt
@@ -1,4 +1,4 @@
-package com.sottti.roller.coasters.presentation.home.data
+package com.sottti.roller.coasters.presentation.app.shell.data
import com.sottti.roller.coasters.domain.settings.model.colorContrast.ResolvedColorContrast
import com.sottti.roller.coasters.presentation.design.system.colors.color.ColorContrast
diff --git a/presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/data/HomeReducer.kt b/presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/data/AppShellReducer.kt
similarity index 57%
rename from presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/data/HomeReducer.kt
rename to presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/data/AppShellReducer.kt
index ebe9b386e..822ac4032 100644
--- a/presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/data/HomeReducer.kt
+++ b/presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/data/AppShellReducer.kt
@@ -1,19 +1,19 @@
-package com.sottti.roller.coasters.presentation.home.data
+package com.sottti.roller.coasters.presentation.app.shell.data
import com.sottti.roller.coasters.domain.settings.model.colorContrast.ResolvedColorContrast
import com.sottti.roller.coasters.domain.settings.model.dynamicColor.ResolvedDynamicColor
import com.sottti.roller.coasters.domain.settings.model.theme.ResolvedTheme
-import com.sottti.roller.coasters.presentation.home.model.HomeActions
-import com.sottti.roller.coasters.presentation.home.model.HomeActions.DestinationSelected
-import com.sottti.roller.coasters.presentation.home.model.HomeActions.NoOp
-import com.sottti.roller.coasters.presentation.home.model.HomeState
+import com.sottti.roller.coasters.presentation.app.shell.model.AppShellActions
+import com.sottti.roller.coasters.presentation.app.shell.model.AppShellActions.DestinationSelected
+import com.sottti.roller.coasters.presentation.app.shell.model.AppShellActions.NoOp
+import com.sottti.roller.coasters.presentation.app.shell.model.AppShellState
-internal fun HomeState.reduce(
+internal fun AppShellState.reduce(
resolvedColorContrast: ResolvedColorContrast,
resolvedDynamicColor: ResolvedDynamicColor,
resolvedTheme: ResolvedTheme,
- stateMutationAction: HomeActions,
-): HomeState = copy(
+ stateMutationAction: AppShellActions,
+): AppShellState = copy(
colorContrast = resolvedColorContrast,
dynamicColor = resolvedDynamicColor,
theme = resolvedTheme,
diff --git a/presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/data/HomeViewModel.kt b/presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/data/AppShellViewModel.kt
similarity index 76%
rename from presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/data/HomeViewModel.kt
rename to presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/data/AppShellViewModel.kt
index 582879e52..47d4316ec 100644
--- a/presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/data/HomeViewModel.kt
+++ b/presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/data/AppShellViewModel.kt
@@ -1,4 +1,4 @@
-package com.sottti.roller.coasters.presentation.home.data
+package com.sottti.roller.coasters.presentation.app.shell.data
import androidx.lifecycle.ViewModel
import com.sottti.roller.coasters.domain.settings.model.colorContrast.ResolvedColorContrast
@@ -8,9 +8,9 @@ import com.sottti.roller.coasters.domain.settings.usecase.colorContrast.ObserveR
import com.sottti.roller.coasters.domain.settings.usecase.dynamicColor.ObserveResolvedDynamicColor
import com.sottti.roller.coasters.domain.settings.usecase.theme.GetSystemTheme
import com.sottti.roller.coasters.domain.settings.usecase.theme.ObserveResolvedTheme
-import com.sottti.roller.coasters.presentation.home.model.HomeActions
-import com.sottti.roller.coasters.presentation.home.model.HomeActions.NoOp
-import com.sottti.roller.coasters.presentation.home.model.HomeState
+import com.sottti.roller.coasters.presentation.app.shell.model.AppShellActions
+import com.sottti.roller.coasters.presentation.app.shell.model.AppShellActions.NoOp
+import com.sottti.roller.coasters.presentation.app.shell.model.AppShellState
import com.sottti.roller.coasters.presentation.utils.stateInWhileSubscribed
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableSharedFlow
@@ -22,7 +22,7 @@ import kotlinx.coroutines.flow.scan
import javax.inject.Inject
@HiltViewModel
-internal class HomeViewModel @Inject constructor(
+internal class AppShellViewModel @Inject constructor(
getSystemThemeTheme: GetSystemTheme,
observeResolvedColorContrast: ObserveResolvedColorContrast,
observeResolvedDynamicColor: ObserveResolvedDynamicColor,
@@ -31,8 +31,8 @@ internal class HomeViewModel @Inject constructor(
val initialState = initialState(getSystemThemeTheme())
- private val actions = MutableSharedFlow(extraBufferCapacity = 64)
- val state: StateFlow = combine(
+ private val actions = MutableSharedFlow(extraBufferCapacity = 64)
+ val state: StateFlow = combine(
flow = observeResolvedColorContrast(),
flow2 = observeResolvedDynamicColor(),
flow3 = observeResolvedTheme(),
@@ -48,16 +48,16 @@ internal class HomeViewModel @Inject constructor(
.drop(1)
.stateInWhileSubscribed(initialValue = initialState)
- internal val onAction: (HomeActions) -> Unit = ::processAction
- private fun processAction(action: HomeActions) = actions.tryEmit(action)
+ internal val onAction: (AppShellActions) -> Unit = ::processAction
+ private fun processAction(action: AppShellActions) = actions.tryEmit(action)
private val reducer: (
resolvedColorContrast: ResolvedColorContrast,
resolvedDynamicColor: ResolvedDynamicColor,
resolvedTheme: ResolvedTheme,
- stateMutationAction: HomeActions,
- ) -> (HomeState) -> HomeState =
+ stateMutationAction: AppShellActions,
+ ) -> (AppShellState) -> AppShellState =
{ resolvedColorContrast, resolvedDynamicColor, resolvedTheme, stateMutationAction ->
- { previous: HomeState ->
+ { previous: AppShellState ->
previous.reduce(
resolvedColorContrast = resolvedColorContrast,
resolvedDynamicColor = resolvedDynamicColor,
diff --git a/presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/model/HomeActions.kt b/presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/model/AppShellActions.kt
similarity index 59%
rename from presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/model/HomeActions.kt
rename to presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/model/AppShellActions.kt
index 7b9890f31..88f2c0756 100644
--- a/presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/model/HomeActions.kt
+++ b/presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/model/AppShellActions.kt
@@ -1,15 +1,15 @@
-package com.sottti.roller.coasters.presentation.home.model
+package com.sottti.roller.coasters.presentation.app.shell.model
import androidx.compose.runtime.Immutable
import com.sottti.roller.coasters.presentation.navigation.NavigationDestination
@Immutable
-internal sealed interface HomeActions {
+internal sealed interface AppShellActions {
@Immutable
data class DestinationSelected(
val destination: NavigationDestination,
- ) : HomeActions
+ ) : AppShellActions
@Immutable
- data object NoOp : HomeActions
+ data object NoOp : AppShellActions
}
diff --git a/presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/model/HomeState.kt b/presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/model/AppShellState.kt
similarity index 72%
rename from presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/model/HomeState.kt
rename to presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/model/AppShellState.kt
index ef1f2d48e..929b4d6a2 100644
--- a/presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/model/HomeState.kt
+++ b/presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/model/AppShellState.kt
@@ -1,4 +1,4 @@
-package com.sottti.roller.coasters.presentation.home.model
+package com.sottti.roller.coasters.presentation.app.shell.model
import androidx.annotation.StringRes
import androidx.compose.runtime.Immutable
@@ -9,21 +9,21 @@ import com.sottti.roller.coasters.presentation.design.system.icons.model.IconSta
import com.sottti.roller.coasters.presentation.navigation.NavigationDestination
@Immutable
-internal data class HomeState(
+internal data class AppShellState(
val colorContrast: ResolvedColorContrast,
val dynamicColor: ResolvedDynamicColor,
val theme: ResolvedTheme,
- val navigationBarItems: HomeNavigationBarState,
+ val navigationBarItems: AppShellNavigationBarState,
)
@Immutable
-internal data class HomeNavigationBarState(
- val items: List,
+internal data class AppShellNavigationBarState(
+ val items: List,
val selectedItem: NavigationDestination,
)
@Immutable
-internal data class HomeNavigationBarItemState(
+internal data class AppShellNavigationBarItemState(
@StringRes val labelResId: Int,
val destination: NavigationDestination,
val icon: IconState,
diff --git a/presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/ui/HomeActivity.kt b/presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/ui/AppShellActivity.kt
similarity index 67%
rename from presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/ui/HomeActivity.kt
rename to presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/ui/AppShellActivity.kt
index 3ff223c2b..dbcb5614a 100644
--- a/presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/ui/HomeActivity.kt
+++ b/presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/ui/AppShellActivity.kt
@@ -1,4 +1,4 @@
-package com.sottti.roller.coasters.presentation.home.ui
+package com.sottti.roller.coasters.presentation.app.shell.ui
import android.content.Context
import android.content.Intent
@@ -9,15 +9,15 @@ import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.sottti.roller.coasters.domain.settings.model.theme.ResolvedTheme
+import com.sottti.roller.coasters.presentation.app.shell.data.AppShellViewModel
+import com.sottti.roller.coasters.presentation.app.shell.data.toColorContrast
import com.sottti.roller.coasters.presentation.design.system.themes.RollerCoastersTheme
-import com.sottti.roller.coasters.presentation.home.data.HomeViewModel
-import com.sottti.roller.coasters.presentation.home.data.toColorContrast
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
-internal open class HomeActivity : AppCompatActivity() {
+internal open class AppShellActivity : AppCompatActivity() {
- private val viewModel: HomeViewModel by viewModels()
+ private val viewModel: AppShellViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
@@ -29,13 +29,13 @@ internal open class HomeActivity : AppCompatActivity() {
useDynamicColor = state.dynamicColor.enabled,
useDarkTheme = state.theme == ResolvedTheme.DarkResolvedTheme,
) {
- HomeUi(state = state, onAction = viewModel.onAction)
+ AppShellUi(state = state, onAction = viewModel.onAction)
}
}
}
}
}
-public fun startHomeActivity(context: Context) {
- context.startActivity(Intent(context, HomeActivity::class.java))
+public fun startAppShellActivity(context: Context) {
+ context.startActivity(Intent(context, AppShellActivity::class.java))
}
diff --git a/presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/ui/HomeUi.kt b/presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/ui/AppShellUi.kt
similarity index 77%
rename from presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/ui/HomeUi.kt
rename to presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/ui/AppShellUi.kt
index 5993a2446..fb0cc416b 100644
--- a/presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/ui/HomeUi.kt
+++ b/presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/ui/AppShellUi.kt
@@ -1,30 +1,29 @@
-package com.sottti.roller.coasters.presentation.home.ui
+package com.sottti.roller.coasters.presentation.app.shell.ui
import androidx.compose.runtime.Composable
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
-import com.sottti.roller.coasters.presentation.home.model.HomeActions
-import com.sottti.roller.coasters.presentation.home.model.HomeState
-import com.sottti.roller.coasters.presentation.navigation.NavigationDestination.Home
+import com.sottti.roller.coasters.presentation.app.shell.model.AppShellActions
+import com.sottti.roller.coasters.presentation.app.shell.model.AppShellState
+import com.sottti.roller.coasters.presentation.navigation.NavigationDestination.AppShell
import com.sottti.roller.coasters.presentation.navigation.NavigationDestination.RollerCoasterDetails
import com.sottti.roller.coasters.presentation.navigation.NavigationDestination.Settings
import com.sottti.roller.coasters.presentation.roller.coaster.details.ui.RollerCoasterDetailsUi
import com.sottti.roller.coasters.presentation.settings.ui.SettingsUi
@Composable
-internal fun HomeUi(
- state: HomeState,
- onAction: (HomeActions) -> Unit,
-
- ) {
+internal fun AppShellUi(
+ state: AppShellState,
+ onAction: (AppShellActions) -> Unit,
+) {
val rootNavController = rememberNavController()
NavHost(
navController = rootNavController,
- startDestination = Home,
+ startDestination = AppShell,
) {
- composable {
+ composable {
NavigationBar(
onAction = onAction,
onNavigateToRollerCoaster = { rollerCoasterId ->
diff --git a/presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/ui/HomeUiBottomBar.kt b/presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/ui/AppShellUiBottomBar.kt
similarity index 70%
rename from presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/ui/HomeUiBottomBar.kt
rename to presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/ui/AppShellUiBottomBar.kt
index 6a5950b5c..41ce9ff65 100644
--- a/presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/ui/HomeUiBottomBar.kt
+++ b/presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/ui/AppShellUiBottomBar.kt
@@ -1,4 +1,4 @@
-package com.sottti.roller.coasters.presentation.home.ui
+package com.sottti.roller.coasters.presentation.app.shell.ui
import androidx.compose.material3.NavigationBar
import androidx.compose.material3.NavigationBarItem
@@ -6,15 +6,15 @@ import androidx.compose.runtime.Composable
import com.sottti.roller.coasters.presentation.design.system.icons.ui.icon.Icon
import com.sottti.roller.coasters.presentation.design.system.text.Text
import com.sottti.roller.coasters.presentation.design.system.themes.RollerCoastersTheme
-import com.sottti.roller.coasters.presentation.home.data.navigationBarItems
-import com.sottti.roller.coasters.presentation.home.model.HomeNavigationBarItemState
-import com.sottti.roller.coasters.presentation.home.model.HomeNavigationBarState
+import com.sottti.roller.coasters.presentation.app.shell.data.navigationBarItems
+import com.sottti.roller.coasters.presentation.app.shell.model.AppShellNavigationBarItemState
+import com.sottti.roller.coasters.presentation.app.shell.model.AppShellNavigationBarState
import com.sottti.roller.coasters.presentation.previews.RollerCoastersPreview
@Composable
internal fun BottomBar(
- navigationBarItems: HomeNavigationBarState,
- onNavigationBarItemClick: (item: HomeNavigationBarItemState) -> Unit,
+ navigationBarItems: AppShellNavigationBarState,
+ onNavigationBarItemClick: (item: AppShellNavigationBarItemState) -> Unit,
) {
NavigationBar {
navigationBarItems.items.forEach { item ->
diff --git a/presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/ui/HomeUiNavigationBar.kt b/presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/ui/AppShellUiNavigationBar.kt
similarity index 87%
rename from presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/ui/HomeUiNavigationBar.kt
rename to presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/ui/AppShellUiNavigationBar.kt
index fe6308afb..beccf3039 100644
--- a/presentation/home/src/main/kotlin/com/sottti/roller/coasters/presentation/home/ui/HomeUiNavigationBar.kt
+++ b/presentation/app-shell/src/main/kotlin/com/sottti/roller/coasters/presentation/app/shell/ui/AppShellUiNavigationBar.kt
@@ -1,4 +1,4 @@
-package com.sottti.roller.coasters.presentation.home.ui
+package com.sottti.roller.coasters.presentation.app.shell.ui
import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.PaddingValues
@@ -21,13 +21,13 @@ import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController
+import com.sottti.roller.coasters.presentation.app.shell.model.AppShellActions
+import com.sottti.roller.coasters.presentation.app.shell.model.AppShellActions.DestinationSelected
+import com.sottti.roller.coasters.presentation.app.shell.model.AppShellNavigationBarItemState
+import com.sottti.roller.coasters.presentation.app.shell.model.AppShellState
import com.sottti.roller.coasters.presentation.about.me.ui.AboutMeUi
import com.sottti.roller.coasters.presentation.explore.ui.ExploreUi
import com.sottti.roller.coasters.presentation.favourites.ui.FavouritesUi
-import com.sottti.roller.coasters.presentation.home.model.HomeActions
-import com.sottti.roller.coasters.presentation.home.model.HomeActions.DestinationSelected
-import com.sottti.roller.coasters.presentation.home.model.HomeNavigationBarItemState
-import com.sottti.roller.coasters.presentation.home.model.HomeState
import com.sottti.roller.coasters.presentation.navigation.NavigationDestination
import com.sottti.roller.coasters.presentation.navigation.NavigationDestination.AboutMe
import com.sottti.roller.coasters.presentation.navigation.NavigationDestination.Explore
@@ -39,10 +39,10 @@ import com.sottti.roller.coasters.presentation.search.ui.SearchUi
@Composable
@OptIn(ExperimentalMaterial3Api::class)
internal fun NavigationBar(
- onAction: (HomeActions) -> Unit,
+ onAction: (AppShellActions) -> Unit,
onNavigateToRollerCoaster: (Int) -> Unit,
onNavigateToSettings: () -> Unit,
- state: HomeState,
+ state: AppShellState,
) {
val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true)
var bottomSheetContent by remember {
@@ -74,21 +74,21 @@ internal fun NavigationBar(
bottomBar = {
BottomBar(
navigationBarItems = state.navigationBarItems,
- onNavigationBarItemClick = { homeNavigationBarItem ->
- val destination = homeNavigationBarItem.destination
+ onNavigationBarItemClick = { appShellNavigationBarItem ->
+ val destination = appShellNavigationBarItem.destination
when (selectedTab) {
destination -> scrollToTopCallbacks[destination]?.invoke()
else -> {
selectedTab = destination
onAction(DestinationSelected(destination))
- navController.navigateTo(homeNavigationBarItem)
+ navController.navigateTo(appShellNavigationBarItem)
}
}
},
)
},
) { padding ->
- HomeNavHost(
+ AppShellNavHost(
navController = navController,
onNavigateToRollerCoaster = onNavigateToRollerCoaster,
onNavigateToSettings = onNavigateToSettings,
@@ -109,7 +109,7 @@ internal fun NavigationBar(
}
@Composable
-private fun HomeNavHost(
+private fun AppShellNavHost(
navController: NavHostController,
startDestination: Explore,
padding: PaddingValues,
@@ -159,9 +159,9 @@ private fun HomeNavHost(
}
private fun NavHostController.navigateTo(
- homeNavigationBarItemState: HomeNavigationBarItemState,
+ appShellNavigationBarItemState: AppShellNavigationBarItemState,
) {
- navigate(homeNavigationBarItemState.destination) {
+ navigate(appShellNavigationBarItemState.destination) {
popUpTo(graph.startDestinationId) { saveState = true }
launchSingleTop = true
restoreState = true
diff --git a/presentation/home/src/main/res/values-es-rES/strings.xml b/presentation/app-shell/src/main/res/values-es-rES/strings.xml
similarity index 100%
rename from presentation/home/src/main/res/values-es-rES/strings.xml
rename to presentation/app-shell/src/main/res/values-es-rES/strings.xml
diff --git a/presentation/home/src/main/res/values-gl/strings.xml b/presentation/app-shell/src/main/res/values-gl/strings.xml
similarity index 100%
rename from presentation/home/src/main/res/values-gl/strings.xml
rename to presentation/app-shell/src/main/res/values-gl/strings.xml
diff --git a/presentation/home/src/main/res/values/strings.xml b/presentation/app-shell/src/main/res/values/strings.xml
similarity index 100%
rename from presentation/home/src/main/res/values/strings.xml
rename to presentation/app-shell/src/main/res/values/strings.xml
diff --git a/presentation/home/src/test/kotlin/com/sottti/roller/coasters/presentation/home/ui/HomeUiBottomBarUiSnapshotTest.kt b/presentation/app-shell/src/test/kotlin/com/sottti/roller/coasters/presentation/app/shell/ui/AppShellUiBottomBarUiSnapshotTest.kt
similarity index 87%
rename from presentation/home/src/test/kotlin/com/sottti/roller/coasters/presentation/home/ui/HomeUiBottomBarUiSnapshotTest.kt
rename to presentation/app-shell/src/test/kotlin/com/sottti/roller/coasters/presentation/app/shell/ui/AppShellUiBottomBarUiSnapshotTest.kt
index 8b03e65be..6cb50bfd9 100644
--- a/presentation/home/src/test/kotlin/com/sottti/roller/coasters/presentation/home/ui/HomeUiBottomBarUiSnapshotTest.kt
+++ b/presentation/app-shell/src/test/kotlin/com/sottti/roller/coasters/presentation/app/shell/ui/AppShellUiBottomBarUiSnapshotTest.kt
@@ -1,4 +1,4 @@
-package com.sottti.roller.coasters.presentation.home.ui
+package com.sottti.roller.coasters.presentation.app.shell.ui
import com.android.ide.common.rendering.api.SessionParams
import com.android.resources.NightMode
@@ -10,7 +10,7 @@ import org.junit.runner.RunWith
import org.junit.runners.Parameterized
@RunWith(Parameterized::class)
-internal class HomeUiBottomBarUiSnapshotTest(
+internal class AppShellUiBottomBarUiSnapshotTest(
nightMode: NightMode,
) {
diff --git a/presentation/app-shell/src/test/snapshots/images/com.sottti.roller.coasters.presentation.app.shell.ui_AppShellUiBottomBarUiSnapshotTest_snapshotTest[0].png b/presentation/app-shell/src/test/snapshots/images/com.sottti.roller.coasters.presentation.app.shell.ui_AppShellUiBottomBarUiSnapshotTest_snapshotTest[0].png
new file mode 100644
index 000000000..587d5d747
Binary files /dev/null and b/presentation/app-shell/src/test/snapshots/images/com.sottti.roller.coasters.presentation.app.shell.ui_AppShellUiBottomBarUiSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/app-shell/src/test/snapshots/images/com.sottti.roller.coasters.presentation.app.shell.ui_AppShellUiBottomBarUiSnapshotTest_snapshotTest[1].png b/presentation/app-shell/src/test/snapshots/images/com.sottti.roller.coasters.presentation.app.shell.ui_AppShellUiBottomBarUiSnapshotTest_snapshotTest[1].png
new file mode 100644
index 000000000..776a1385c
Binary files /dev/null and b/presentation/app-shell/src/test/snapshots/images/com.sottti.roller.coasters.presentation.app.shell.ui_AppShellUiBottomBarUiSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/design-system/card-grid/build.gradle.kts b/presentation/design-system/card-grid/build.gradle.kts
index d10178bdf..ca17c8b6f 100644
--- a/presentation/design-system/card-grid/build.gradle.kts
+++ b/presentation/design-system/card-grid/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.paparazzi)
}
@@ -20,14 +17,15 @@ dependencies {
debugImplementation(libs.compose.ui.test.manifest)
implementation(libs.compose.material)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(platform(libs.compose.bom))
- implementation(project(module.presentation.designSystem.colors))
- implementation(project(module.presentation.designSystem.dimensions))
- implementation(project(module.presentation.designSystem.icons))
- implementation(project(module.presentation.designSystem.shapes))
- implementation(project(module.presentation.designSystem.text))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.previews))
- testImplementation(project(module.presentation.paparazzi))
+ implementation(projects.presentation.designSystem.colors)
+ implementation(projects.presentation.designSystem.dimensions)
+ implementation(projects.presentation.designSystem.icons)
+ implementation(projects.presentation.designSystem.shapes)
+ implementation(projects.presentation.designSystem.text)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.previews)
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/design-system/card-grid/detekt-baseline.xml b/presentation/design-system/card-grid/detekt-baseline.xml
new file mode 100644
index 000000000..0890c6de5
--- /dev/null
+++ b/presentation/design-system/card-grid/detekt-baseline.xml
@@ -0,0 +1,8 @@
+
+
+
+
+ LambdaParameterEventTrailing:CardGrid.kt:onClick: (() -> Unit)
+ LambdaParameterEventTrailing:CardGrid.kt:onClick: ((Int) -> Unit)
+
+
diff --git a/presentation/design-system/card-grid/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.card.grid_MonoGridSnapshotTest_snapshotTest[0].png b/presentation/design-system/card-grid/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.card.grid_MonoGridSnapshotTest_snapshotTest[0].png
index 66fcaf2b2..02b5559c0 100644
Binary files a/presentation/design-system/card-grid/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.card.grid_MonoGridSnapshotTest_snapshotTest[0].png and b/presentation/design-system/card-grid/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.card.grid_MonoGridSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/design-system/card-grid/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.card.grid_MonoGridSnapshotTest_snapshotTest[1].png b/presentation/design-system/card-grid/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.card.grid_MonoGridSnapshotTest_snapshotTest[1].png
index 724c3eba2..d2854db18 100644
Binary files a/presentation/design-system/card-grid/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.card.grid_MonoGridSnapshotTest_snapshotTest[1].png and b/presentation/design-system/card-grid/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.card.grid_MonoGridSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/design-system/card-grid/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.card.grid_QuadCardGridSnapshotTest_snapshotTest[0].png b/presentation/design-system/card-grid/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.card.grid_QuadCardGridSnapshotTest_snapshotTest[0].png
index 20c85b4d7..e9902ddc0 100644
Binary files a/presentation/design-system/card-grid/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.card.grid_QuadCardGridSnapshotTest_snapshotTest[0].png and b/presentation/design-system/card-grid/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.card.grid_QuadCardGridSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/design-system/card-grid/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.card.grid_QuadCardGridSnapshotTest_snapshotTest[1].png b/presentation/design-system/card-grid/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.card.grid_QuadCardGridSnapshotTest_snapshotTest[1].png
index 4c8962d2d..94e3461d2 100644
Binary files a/presentation/design-system/card-grid/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.card.grid_QuadCardGridSnapshotTest_snapshotTest[1].png and b/presentation/design-system/card-grid/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.card.grid_QuadCardGridSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/design-system/chip/build.gradle.kts b/presentation/design-system/chip/build.gradle.kts
index cbe448e69..f34a14117 100644
--- a/presentation/design-system/chip/build.gradle.kts
+++ b/presentation/design-system/chip/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.paparazzi)
}
@@ -12,12 +9,13 @@ android {
}
dependencies {
- api(project(module.presentation.designSystem.icons))
+ api(projects.presentation.designSystem.icons)
implementation(libs.compose.material)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(platform(libs.compose.bom))
- implementation(project(module.presentation.designSystem.text))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.previews))
- testImplementation(project(module.presentation.paparazzi))
+ implementation(projects.presentation.designSystem.text)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.previews)
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[0].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[0].png
index 1d51dafce..b91f19df4 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[0].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[10].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[10].png
index 234363145..0025bede0 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[10].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[10].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[11].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[11].png
index e4e03818d..f7a0aaa1d 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[11].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[11].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[12].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[12].png
index 15ca37612..4c09ee4ae 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[12].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[12].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[13].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[13].png
index eab2defce..6e3119b94 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[13].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[13].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[14].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[14].png
index aeec258a6..f25173816 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[14].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[14].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[15].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[15].png
index 39469c15a..58be1cdda 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[15].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[15].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[16].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[16].png
index 98939ae52..5b1372208 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[16].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[16].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[17].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[17].png
index 569c603f5..5685b1e69 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[17].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[17].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[18].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[18].png
index 04193e132..db6761d30 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[18].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[18].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[19].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[19].png
index 6c0e91a04..ff4d9612c 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[19].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[19].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[1].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[1].png
index be10cd6c8..124dc7a82 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[1].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[20].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[20].png
index 55948fec9..fde693380 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[20].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[20].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[21].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[21].png
index 87be58f6d..55088f1bc 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[21].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[21].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[22].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[22].png
index 73add9d51..a1d1ffac7 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[22].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[22].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[23].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[23].png
index 0738b3fe0..24664d4f2 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[23].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[23].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[24].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[24].png
index 39c4dcfd1..e01293efa 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[24].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[24].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[25].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[25].png
index 80c336a9f..5e8b53782 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[25].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[25].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[26].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[26].png
index 0e468e7c8..26abac41a 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[26].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[26].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[27].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[27].png
index b7d7527ce..6b6a63142 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[27].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[27].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[28].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[28].png
index f3351909a..7691a5e0c 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[28].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[28].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[29].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[29].png
index 4b00f2164..4c9e8800e 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[29].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[29].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[2].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[2].png
index 19f5d7668..7c182a062 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[2].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[2].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[30].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[30].png
index c8f331f2f..9f487fbed 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[30].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[30].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[31].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[31].png
index 514b080f5..7240d7045 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[31].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[31].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[32].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[32].png
index a7118caab..09d3e61c3 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[32].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[32].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[33].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[33].png
index adabe5390..7a31d6543 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[33].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[33].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[34].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[34].png
index 34f33e1c0..c643f1aab 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[34].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[34].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[35].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[35].png
index 0692b5b80..8a087cd34 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[35].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[35].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[36].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[36].png
index 63a748a44..2f02f662f 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[36].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[36].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[37].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[37].png
index f9ab27bc2..95347ad47 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[37].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[37].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[38].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[38].png
index dd866d89a..8d3f38158 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[38].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[38].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[39].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[39].png
index 40520e1ab..fffb5b2d1 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[39].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[39].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[3].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[3].png
index 85379ff53..69d0fcca6 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[3].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[3].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[40].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[40].png
index f3351909a..7691a5e0c 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[40].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[40].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[41].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[41].png
index 4b00f2164..4c9e8800e 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[41].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[41].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[42].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[42].png
index c8f331f2f..9f487fbed 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[42].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[42].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[43].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[43].png
index 514b080f5..7240d7045 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[43].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[43].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[44].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[44].png
index c2d60a2d2..5dc7f6d5d 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[44].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[44].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[45].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[45].png
index 9ac4e22e8..fa7042970 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[45].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[45].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[46].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[46].png
index 56c998270..88c764e72 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[46].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[46].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[47].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[47].png
index 300e26a6c..6dfc9bd74 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[47].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[47].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[4].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[4].png
index 98939ae52..5b1372208 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[4].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[4].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[5].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[5].png
index 569c603f5..5685b1e69 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[5].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[5].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[6].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[6].png
index 04193e132..db6761d30 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[6].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[6].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[7].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[7].png
index 6c0e91a04..ff4d9612c 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[7].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[7].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[8].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[8].png
index 32809699e..d6ddf94b5 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[8].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[8].png differ
diff --git a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[9].png b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[9].png
index f50e8a388..4eb080e4e 100644
Binary files a/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[9].png and b/presentation/design-system/chip/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.chip_ChipSnapshotTest_snapshotTest[9].png differ
diff --git a/presentation/design-system/colors/build.gradle.kts b/presentation/design-system/colors/build.gradle.kts
index 71385e846..9133cf9d4 100644
--- a/presentation/design-system/colors/build.gradle.kts
+++ b/presentation/design-system/colors/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
}
@@ -11,7 +8,7 @@ android {
}
dependencies {
- api(project(module.domain.locales))
+ api(projects.domain.locales)
implementation(libs.compose.material)
implementation(libs.compose.runtime)
implementation(libs.compose.ui)
diff --git a/presentation/design-system/colors/detekt-baseline.xml b/presentation/design-system/colors/detekt-baseline.xml
new file mode 100644
index 000000000..520cff64d
--- /dev/null
+++ b/presentation/design-system/colors/detekt-baseline.xml
@@ -0,0 +1,31 @@
+
+
+
+
+ Filename:ResolvedColorContrastMappersTest.kt:com.sottti.roller.coasters.presentation.design.system.colors.mapper.ResolvedColorContrastMappersTest.kt
+ MatchingDeclarationName:ResolvedColorContrastMappersTest.kt:ColorContrastMappersTest
+ NoConsecutiveBlankLines:ColorSchemesMapper.kt:
+ NoConsecutiveBlankLines:ExternalNavigationPrimaryColor.kt:
+ NoEmptyFirstLineInMethodBlock:ExternalNavigationPrimaryColor.kt:
+ TopLevelPropertyNaming:LocalColors.kt:internal val LocalColors = staticCompositionLocalOf<ColorScheme> { error("No colors provided. Make sure to wrap your composables in a custom theme.") }
+ TopLevelPropertyNaming:LocalOpacities.kt:internal val LocalOpacities = staticCompositionLocalOf<Opacities> { error("No opacities provided. Make sure to wrap your composables in a custom theme.") }
+ TopLevelPropertyNaming:SocialNetworkColors.kt:private val ANDROID_DEVELOPERS_PRIMARY_COLOR_DARK: Color = Color(0xFF000000)
+ TopLevelPropertyNaming:SocialNetworkColors.kt:private val ANDROID_DEVELOPERS_PRIMARY_COLOR_LIGHT: Color = Color(0xFFFFFFFF)
+ TopLevelPropertyNaming:SocialNetworkColors.kt:private val DRIBBBLE_PRIMARY_COLOR_DARK: Color = Color(0xFF000000)
+ TopLevelPropertyNaming:SocialNetworkColors.kt:private val DRIBBBLE_PRIMARY_COLOR_LIGHT: Color = Color(0xFFFFFFFF)
+ TopLevelPropertyNaming:SocialNetworkColors.kt:private val FALLBACK_COLOR_DARK: Color = Color(0xFF000000)
+ TopLevelPropertyNaming:SocialNetworkColors.kt:private val FALLBACK_COLOR_LIGHT: Color = Color(0xFFFFFFFF)
+ TopLevelPropertyNaming:SocialNetworkColors.kt:private val GITHUB_PRIMARY_COLOR_DARK: Color = Color(0xFF020409)
+ TopLevelPropertyNaming:SocialNetworkColors.kt:private val GITHUB_PRIMARY_COLOR_LIGHT: Color = Color(0xFFF6F8FA)
+ TopLevelPropertyNaming:SocialNetworkColors.kt:private val INSTAGRAM_PRIMARY_COLOR_DARK: Color = Color(0xFF000000)
+ TopLevelPropertyNaming:SocialNetworkColors.kt:private val INSTAGRAM_PRIMARY_COLOR_LIGHT: Color = Color(0xFFFFFFFF)
+ TopLevelPropertyNaming:SocialNetworkColors.kt:private val LINKED_IN_PRIMARY_COLOR_DARK: Color = Color(0xFF1E2226)
+ TopLevelPropertyNaming:SocialNetworkColors.kt:private val LINKED_IN_PRIMARY_COLOR_LIGHT: Color = Color(0xFFFFFFFF)
+ TopLevelPropertyNaming:SocialNetworkColors.kt:private val MEDIUM_PRIMARY_COLOR_DARK: Color = Color(0xFFFFFFFF)
+ TopLevelPropertyNaming:SocialNetworkColors.kt:private val MEDIUM_PRIMARY_COLOR_LIGHT: Color = Color(0xFFFFFFFF)
+ TopLevelPropertyNaming:SocialNetworkColors.kt:private val STACK_OVERFLOW_PRIMARY_COLOR_DARK: Color = Color(0xFF252627)
+ TopLevelPropertyNaming:SocialNetworkColors.kt:private val STACK_OVERFLOW_PRIMARY_COLOR_LIGHT: Color = Color(0xFFFFFFFF)
+ TopLevelPropertyNaming:SocialNetworkColors.kt:private val X_PRIMARY_COLOR_DARK: Color = Color(0xFF000000)
+ TopLevelPropertyNaming:SocialNetworkColors.kt:private val X_PRIMARY_COLOR_LIGHT: Color = Color(0xFFFFFFFF)
+
+
diff --git a/presentation/design-system/colors/src/main/kotlin/com/sottti/roller/coasters/presentation/design/system/colors/color/ColorFactory.kt b/presentation/design-system/colors/src/main/kotlin/com/sottti/roller/coasters/presentation/design/system/colors/color/ColorFactory.kt
index d38a652b7..60a10fe0a 100644
--- a/presentation/design-system/colors/src/main/kotlin/com/sottti/roller/coasters/presentation/design/system/colors/color/ColorFactory.kt
+++ b/presentation/design-system/colors/src/main/kotlin/com/sottti/roller/coasters/presentation/design/system/colors/color/ColorFactory.kt
@@ -1,5 +1,7 @@
package com.sottti.roller.coasters.presentation.design.system.colors.color
+import android.os.Build
+import androidx.annotation.ChecksSdkIntAtLeast
import androidx.compose.material3.ColorScheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.ReadOnlyComposable
@@ -14,7 +16,11 @@ public fun colors(
useDarkTheme: Boolean,
useDynamicColor: Boolean = false,
): ColorScheme = when {
- useDynamicColor -> dynamicColorScheme(useDarkTheme)
+ useDynamicColor && isDynamicColorAvailable() -> dynamicColorScheme(useDarkTheme)
useDarkTheme -> colorContrast.darkColorScheme()
else -> colorContrast.lightColorScheme()
}
+
+@ChecksSdkIntAtLeast(api = Build.VERSION_CODES.S)
+private fun isDynamicColorAvailable(): Boolean =
+ Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
diff --git a/presentation/design-system/dialogs/build.gradle.kts b/presentation/design-system/dialogs/build.gradle.kts
index f8b70690e..ea0470f2c 100644
--- a/presentation/design-system/dialogs/build.gradle.kts
+++ b/presentation/design-system/dialogs/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.paparazzi)
}
@@ -12,14 +9,15 @@ android {
}
dependencies {
- api(project(module.presentation.designSystem.icons))
+ api(projects.presentation.designSystem.icons)
implementation(libs.compose.material)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(platform(libs.compose.bom))
- implementation(project(module.presentation.designSystem.shapes))
- implementation(project(module.presentation.designSystem.text))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.fixtures))
- implementation(project(module.presentation.previews))
- testImplementation(project(module.presentation.paparazzi))
+ implementation(projects.presentation.designSystem.shapes)
+ implementation(projects.presentation.designSystem.text)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.fixtures)
+ implementation(projects.presentation.previews)
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/design-system/dialogs/detekt-baseline.xml b/presentation/design-system/dialogs/detekt-baseline.xml
new file mode 100644
index 000000000..e769e2cd2
--- /dev/null
+++ b/presentation/design-system/dialogs/detekt-baseline.xml
@@ -0,0 +1,7 @@
+
+
+
+
+ ParameterNaming:DialogWithRadioButtons.kt:onOptionSelected: (DialogRadioButtonOption) -> Unit
+
+
diff --git a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[0].png b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[0].png
index 3fe87956a..9607d0d5f 100644
Binary files a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[0].png and b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[1].png b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[1].png
index 72c11c460..f3a38df68 100644
Binary files a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[1].png and b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[2].png b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[2].png
index 03b8f2848..6c83d48a6 100644
Binary files a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[2].png and b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[2].png differ
diff --git a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[3].png b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[3].png
index 3aae387ef..56290ef3a 100644
Binary files a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[3].png and b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[3].png differ
diff --git a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[4].png b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[4].png
index 959c6bcdb..ae24847ef 100644
Binary files a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[4].png and b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[4].png differ
diff --git a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[5].png b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[5].png
index f7a1fa49e..9063b3520 100644
Binary files a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[5].png and b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[5].png differ
diff --git a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[6].png b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[6].png
index 4f9aa3da8..ce23b4eff 100644
Binary files a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[6].png and b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[6].png differ
diff --git a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[7].png b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[7].png
index 6fed2e620..44aa090d9 100644
Binary files a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[7].png and b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.informative_DialogInformativeSnapshotTest_snapshotTest[7].png differ
diff --git a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.radioButtons_DialogWithRadioButtonsSnapshotTest_snapshotTest[0].png b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.radioButtons_DialogWithRadioButtonsSnapshotTest_snapshotTest[0].png
index 5960ee8c9..ea87a8828 100644
Binary files a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.radioButtons_DialogWithRadioButtonsSnapshotTest_snapshotTest[0].png and b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.radioButtons_DialogWithRadioButtonsSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.radioButtons_DialogWithRadioButtonsSnapshotTest_snapshotTest[1].png b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.radioButtons_DialogWithRadioButtonsSnapshotTest_snapshotTest[1].png
index 0982d22b2..ec691da05 100644
Binary files a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.radioButtons_DialogWithRadioButtonsSnapshotTest_snapshotTest[1].png and b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.radioButtons_DialogWithRadioButtonsSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.radioButtons_DialogWithRadioButtonsSnapshotTest_snapshotTest[2].png b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.radioButtons_DialogWithRadioButtonsSnapshotTest_snapshotTest[2].png
index 44cf138b1..cdbf8ae51 100644
Binary files a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.radioButtons_DialogWithRadioButtonsSnapshotTest_snapshotTest[2].png and b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.radioButtons_DialogWithRadioButtonsSnapshotTest_snapshotTest[2].png differ
diff --git a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.radioButtons_DialogWithRadioButtonsSnapshotTest_snapshotTest[3].png b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.radioButtons_DialogWithRadioButtonsSnapshotTest_snapshotTest[3].png
index c858b5903..0ad40c893 100644
Binary files a/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.radioButtons_DialogWithRadioButtonsSnapshotTest_snapshotTest[3].png and b/presentation/design-system/dialogs/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.dialogs.radioButtons_DialogWithRadioButtonsSnapshotTest_snapshotTest[3].png differ
diff --git a/presentation/design-system/dimensions/build.gradle.kts b/presentation/design-system/dimensions/build.gradle.kts
index be7abc9dc..4fc139cde 100644
--- a/presentation/design-system/dimensions/build.gradle.kts
+++ b/presentation/design-system/dimensions/build.gradle.kts
@@ -1,6 +1,5 @@
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
}
diff --git a/presentation/design-system/dimensions/detekt-baseline.xml b/presentation/design-system/dimensions/detekt-baseline.xml
new file mode 100644
index 000000000..8278cd7c9
--- /dev/null
+++ b/presentation/design-system/dimensions/detekt-baseline.xml
@@ -0,0 +1,7 @@
+
+
+
+
+ TopLevelPropertyNaming:LocalDimensions.kt:internal val LocalDimensions = staticCompositionLocalOf<Dimensions> { error("No dimensions provided. Make sure to wrap your composables in a custom theme.") }
+
+
diff --git a/presentation/design-system/empty/build.gradle.kts b/presentation/design-system/empty/build.gradle.kts
index d74d0896d..65ee69f31 100644
--- a/presentation/design-system/empty/build.gradle.kts
+++ b/presentation/design-system/empty/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.paparazzi)
}
@@ -12,16 +9,17 @@ android {
}
dependencies {
- api(project(module.presentation.designSystem.illustrations))
+ api(projects.presentation.designSystem.illustrations)
implementation(libs.compose.foundation)
implementation(libs.compose.material)
implementation(libs.compose.ui)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(platform(libs.compose.bom))
- implementation(project(module.presentation.designSystem.colors))
- implementation(project(module.presentation.designSystem.informative))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.fixtures))
- implementation(project(module.presentation.previews))
- testImplementation(project(module.presentation.paparazzi))
+ implementation(projects.presentation.designSystem.colors)
+ implementation(projects.presentation.designSystem.informative)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.fixtures)
+ implementation(projects.presentation.previews)
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/design-system/empty/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.empty_EmptySnapshotTest_snapshotTest[0].png b/presentation/design-system/empty/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.empty_EmptySnapshotTest_snapshotTest[0].png
index 1376f4c39..9a1b1a30f 100644
Binary files a/presentation/design-system/empty/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.empty_EmptySnapshotTest_snapshotTest[0].png and b/presentation/design-system/empty/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.empty_EmptySnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/design-system/empty/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.empty_EmptySnapshotTest_snapshotTest[1].png b/presentation/design-system/empty/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.empty_EmptySnapshotTest_snapshotTest[1].png
index 23be9f045..58ff7241e 100644
Binary files a/presentation/design-system/empty/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.empty_EmptySnapshotTest_snapshotTest[1].png and b/presentation/design-system/empty/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.empty_EmptySnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/design-system/empty/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.empty_EmptySnapshotTest_snapshotTest[2].png b/presentation/design-system/empty/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.empty_EmptySnapshotTest_snapshotTest[2].png
index 41c345960..607df3c23 100644
Binary files a/presentation/design-system/empty/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.empty_EmptySnapshotTest_snapshotTest[2].png and b/presentation/design-system/empty/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.empty_EmptySnapshotTest_snapshotTest[2].png differ
diff --git a/presentation/design-system/empty/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.empty_EmptySnapshotTest_snapshotTest[3].png b/presentation/design-system/empty/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.empty_EmptySnapshotTest_snapshotTest[3].png
index 5c73a1b0a..f6f1dd7a7 100644
Binary files a/presentation/design-system/empty/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.empty_EmptySnapshotTest_snapshotTest[3].png and b/presentation/design-system/empty/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.empty_EmptySnapshotTest_snapshotTest[3].png differ
diff --git a/presentation/design-system/error/build.gradle.kts b/presentation/design-system/error/build.gradle.kts
index bbd32c132..2492e7e90 100644
--- a/presentation/design-system/error/build.gradle.kts
+++ b/presentation/design-system/error/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.paparazzi)
}
@@ -12,16 +9,17 @@ android {
}
dependencies {
- api(project(module.presentation.designSystem.illustrations))
+ api(projects.presentation.designSystem.illustrations)
implementation(libs.compose.foundation)
implementation(libs.compose.material)
implementation(libs.compose.ui)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(platform(libs.compose.bom))
- implementation(project(module.presentation.designSystem.colors))
- implementation(project(module.presentation.designSystem.informative))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.fixtures))
- implementation(project(module.presentation.previews))
- testImplementation(project(module.presentation.paparazzi))
+ implementation(projects.presentation.designSystem.colors)
+ implementation(projects.presentation.designSystem.informative)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.fixtures)
+ implementation(projects.presentation.previews)
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/design-system/error/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.error_ErrorSnapshotTest_snapshotTest[0].png b/presentation/design-system/error/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.error_ErrorSnapshotTest_snapshotTest[0].png
index 9bd9857c3..5d20dab3d 100644
Binary files a/presentation/design-system/error/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.error_ErrorSnapshotTest_snapshotTest[0].png and b/presentation/design-system/error/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.error_ErrorSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/design-system/error/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.error_ErrorSnapshotTest_snapshotTest[1].png b/presentation/design-system/error/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.error_ErrorSnapshotTest_snapshotTest[1].png
index b3fa33d4a..70626e543 100644
Binary files a/presentation/design-system/error/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.error_ErrorSnapshotTest_snapshotTest[1].png and b/presentation/design-system/error/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.error_ErrorSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/design-system/error/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.error_ErrorSnapshotTest_snapshotTest[2].png b/presentation/design-system/error/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.error_ErrorSnapshotTest_snapshotTest[2].png
index 0d1d09792..6a6192785 100644
Binary files a/presentation/design-system/error/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.error_ErrorSnapshotTest_snapshotTest[2].png and b/presentation/design-system/error/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.error_ErrorSnapshotTest_snapshotTest[2].png differ
diff --git a/presentation/design-system/error/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.error_ErrorSnapshotTest_snapshotTest[3].png b/presentation/design-system/error/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.error_ErrorSnapshotTest_snapshotTest[3].png
index 6c2d28ad4..72c3617b0 100644
Binary files a/presentation/design-system/error/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.error_ErrorSnapshotTest_snapshotTest[3].png and b/presentation/design-system/error/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.error_ErrorSnapshotTest_snapshotTest[3].png differ
diff --git a/presentation/design-system/hero-image/build.gradle.kts b/presentation/design-system/hero-image/build.gradle.kts
index d554e9ce9..af764f535 100644
--- a/presentation/design-system/hero-image/build.gradle.kts
+++ b/presentation/design-system/hero-image/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.paparazzi)
}
@@ -12,13 +9,14 @@ android {
}
dependencies {
- api(project(module.presentation.designSystem.images))
+ api(projects.presentation.designSystem.images)
implementation(libs.compose.material)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(platform(libs.compose.bom))
- implementation(project(module.presentation.designSystem.dimensions))
- implementation(project(module.presentation.designSystem.shapes))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.previews))
- testImplementation(project(module.presentation.paparazzi))
+ implementation(projects.presentation.designSystem.dimensions)
+ implementation(projects.presentation.designSystem.shapes)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.previews)
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/design-system/hero-image/detekt-baseline.xml b/presentation/design-system/hero-image/detekt-baseline.xml
new file mode 100644
index 000000000..854b15562
--- /dev/null
+++ b/presentation/design-system/hero-image/detekt-baseline.xml
@@ -0,0 +1,9 @@
+
+
+
+
+ Filename:HeroImageStateProvider.kt:com.sottti.roller.coasters.presentation.design.system.hero.image.HeroImageStateProvider.kt
+ MatchingDeclarationName:HeroImageStateProvider.kt:ProfilePictureStateProvider : PreviewParameterProvider
+ NoConsecutiveBlankLines:HeroImage.kt:
+
+
diff --git a/presentation/design-system/hero-image/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.hero.image_HeroImageSnapshotTest_snapshotTest[0].png b/presentation/design-system/hero-image/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.hero.image_HeroImageSnapshotTest_snapshotTest[0].png
index 4fad2c041..1fabb4c70 100644
Binary files a/presentation/design-system/hero-image/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.hero.image_HeroImageSnapshotTest_snapshotTest[0].png and b/presentation/design-system/hero-image/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.hero.image_HeroImageSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/design-system/hero-image/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.hero.image_HeroImageSnapshotTest_snapshotTest[1].png b/presentation/design-system/hero-image/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.hero.image_HeroImageSnapshotTest_snapshotTest[1].png
index e9374921d..7a8c24ce3 100644
Binary files a/presentation/design-system/hero-image/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.hero.image_HeroImageSnapshotTest_snapshotTest[1].png and b/presentation/design-system/hero-image/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.hero.image_HeroImageSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/design-system/icon-resources/build.gradle.kts b/presentation/design-system/icon-resources/build.gradle.kts
index d6e08cbae..0f8a78250 100644
--- a/presentation/design-system/icon-resources/build.gradle.kts
+++ b/presentation/design-system/icon-resources/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
}
android {
@@ -10,6 +7,6 @@ android {
}
dependencies {
- implementation(project(module.presentation.designSystem.colors))
+ implementation(projects.presentation.designSystem.colors)
implementation(libs.appcompat)
}
diff --git a/presentation/design-system/icon-resources/detekt-baseline.xml b/presentation/design-system/icon-resources/detekt-baseline.xml
new file mode 100644
index 000000000..dbac6fa12
--- /dev/null
+++ b/presentation/design-system/icon-resources/detekt-baseline.xml
@@ -0,0 +1,7 @@
+
+
+
+
+ Filename:IconResourcesR.kt:com.sottti.roller.coasters.presentation.design.system.icon.resources.IconResourcesR.kt
+
+
diff --git a/presentation/design-system/icons/build.gradle.kts b/presentation/design-system/icons/build.gradle.kts
index 8dcf0745d..0b126a6a3 100644
--- a/presentation/design-system/icons/build.gradle.kts
+++ b/presentation/design-system/icons/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.paparazzi)
}
@@ -13,16 +10,17 @@ android {
dependencies {
implementation(libs.compose.material)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(libs.material)
implementation(platform(libs.compose.bom))
- implementation(project(module.presentation.designSystem.colors))
- implementation(project(module.presentation.designSystem.dimensions))
- implementation(project(module.presentation.designSystem.iconResources))
- implementation(project(module.presentation.designSystem.shapes))
- implementation(project(module.presentation.designSystem.text))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.previews))
- implementation(project(module.presentation.utils))
- testImplementation(project(module.presentation.paparazzi))
+ implementation(projects.presentation.designSystem.colors)
+ implementation(projects.presentation.designSystem.dimensions)
+ implementation(projects.presentation.designSystem.iconResources)
+ implementation(projects.presentation.designSystem.shapes)
+ implementation(projects.presentation.designSystem.text)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.previews)
+ implementation(projects.presentation.utils)
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.circledIcon_CircledIconSnapshotTest_snapshotOnBackgroundTest[0].png b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.circledIcon_CircledIconSnapshotTest_snapshotOnBackgroundTest[0].png
index a02e7871a..bc6c45ca9 100644
Binary files a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.circledIcon_CircledIconSnapshotTest_snapshotOnBackgroundTest[0].png and b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.circledIcon_CircledIconSnapshotTest_snapshotOnBackgroundTest[0].png differ
diff --git a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.circledIcon_CircledIconSnapshotTest_snapshotOnBackgroundTest[1].png b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.circledIcon_CircledIconSnapshotTest_snapshotOnBackgroundTest[1].png
index c349047ac..cfe0960d3 100644
Binary files a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.circledIcon_CircledIconSnapshotTest_snapshotOnBackgroundTest[1].png and b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.circledIcon_CircledIconSnapshotTest_snapshotOnBackgroundTest[1].png differ
diff --git a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.circledIcon_CircledIconSnapshotTest_snapshotOnSurfaceTest[0].png b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.circledIcon_CircledIconSnapshotTest_snapshotOnSurfaceTest[0].png
index eb4aa9d3a..967bcb813 100644
Binary files a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.circledIcon_CircledIconSnapshotTest_snapshotOnSurfaceTest[0].png and b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.circledIcon_CircledIconSnapshotTest_snapshotOnSurfaceTest[0].png differ
diff --git a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.circledIcon_CircledIconSnapshotTest_snapshotOnSurfaceTest[1].png b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.circledIcon_CircledIconSnapshotTest_snapshotOnSurfaceTest[1].png
index c1785d195..c4e7dd26b 100644
Binary files a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.circledIcon_CircledIconSnapshotTest_snapshotOnSurfaceTest[1].png and b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.circledIcon_CircledIconSnapshotTest_snapshotOnSurfaceTest[1].png differ
diff --git a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[0].png b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[0].png
index 4688668f1..e952ac4c6 100644
Binary files a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[0].png and b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[1].png b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[1].png
index ec20b2a6b..548877d29 100644
Binary files a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[1].png and b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[2].png b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[2].png
index 35881a9f4..84ec1606f 100644
Binary files a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[2].png and b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[2].png differ
diff --git a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[3].png b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[3].png
index d782ce1e2..97cddd6aa 100644
Binary files a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[3].png and b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[3].png differ
diff --git a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[4].png b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[4].png
index 4688668f1..e952ac4c6 100644
Binary files a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[4].png and b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[4].png differ
diff --git a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[5].png b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[5].png
index ec20b2a6b..548877d29 100644
Binary files a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[5].png and b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[5].png differ
diff --git a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[6].png b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[6].png
index 35881a9f4..84ec1606f 100644
Binary files a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[6].png and b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[6].png differ
diff --git a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[7].png b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[7].png
index d782ce1e2..97cddd6aa 100644
Binary files a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[7].png and b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.icon_IconSnapshotTest_snapshotTest[7].png differ
diff --git a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.pilledIcon_PilledIconSnapshotTest_snapshotTest[0].png b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.pilledIcon_PilledIconSnapshotTest_snapshotTest[0].png
index 3556c0e45..8af832ea1 100644
Binary files a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.pilledIcon_PilledIconSnapshotTest_snapshotTest[0].png and b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.pilledIcon_PilledIconSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.pilledIcon_PilledIconSnapshotTest_snapshotTest[1].png b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.pilledIcon_PilledIconSnapshotTest_snapshotTest[1].png
index 0a665a3af..d3e9852df 100644
Binary files a/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.pilledIcon_PilledIconSnapshotTest_snapshotTest[1].png and b/presentation/design-system/icons/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.icons.pilledIcon_PilledIconSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/design-system/illustrations/build.gradle.kts b/presentation/design-system/illustrations/build.gradle.kts
index ec3ea906b..181952478 100644
--- a/presentation/design-system/illustrations/build.gradle.kts
+++ b/presentation/design-system/illustrations/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.paparazzi)
}
@@ -13,11 +10,12 @@ android {
dependencies {
implementation(libs.compose.material)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(libs.material)
implementation(platform(libs.compose.bom))
- implementation(project(module.presentation.designSystem.dimensions))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.previews))
- testImplementation(project(module.presentation.paparazzi))
+ implementation(projects.presentation.designSystem.dimensions)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.previews)
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/design-system/illustrations/detekt-baseline.xml b/presentation/design-system/illustrations/detekt-baseline.xml
new file mode 100644
index 000000000..dc08ff0d0
--- /dev/null
+++ b/presentation/design-system/illustrations/detekt-baseline.xml
@@ -0,0 +1,9 @@
+
+
+
+
+ Filename:IllustrationsUiStateProvider.kt:com.sottti.roller.coasters.presentation.design.system.illustrations.ui.default.IllustrationsUiStateProvider.kt
+ MatchingDeclarationName:IllustrationsUiStateProvider.kt:IllustrationUiStateProvider : PreviewParameterProvider
+ Wrapping:Illustration.kt:->
+
+
diff --git a/presentation/design-system/illustrations/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.illustrations_CircledIllustrationSnapshotTest_snapshotTest[0].png b/presentation/design-system/illustrations/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.illustrations_CircledIllustrationSnapshotTest_snapshotTest[0].png
index 9adb8a0f7..14ca7b668 100644
Binary files a/presentation/design-system/illustrations/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.illustrations_CircledIllustrationSnapshotTest_snapshotTest[0].png and b/presentation/design-system/illustrations/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.illustrations_CircledIllustrationSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/design-system/illustrations/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.illustrations_CircledIllustrationSnapshotTest_snapshotTest[1].png b/presentation/design-system/illustrations/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.illustrations_CircledIllustrationSnapshotTest_snapshotTest[1].png
index 9783a6cd5..025c6adfb 100644
Binary files a/presentation/design-system/illustrations/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.illustrations_CircledIllustrationSnapshotTest_snapshotTest[1].png and b/presentation/design-system/illustrations/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.illustrations_CircledIllustrationSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/design-system/images/build.gradle.kts b/presentation/design-system/images/build.gradle.kts
index 9c30904d1..97598f1b1 100644
--- a/presentation/design-system/images/build.gradle.kts
+++ b/presentation/design-system/images/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.paparazzi)
}
@@ -12,18 +9,19 @@ android {
}
dependencies {
- api(project(module.domain.model))
+ api(projects.domain.model)
implementation(libs.annotations)
implementation(libs.coil.compose)
implementation(libs.coil.network.ktor3)
implementation(libs.compose.foundation)
implementation(libs.compose.material)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(platform(libs.compose.bom))
- implementation(project(module.presentation.designSystem.progressIndicators))
- implementation(project(module.presentation.designSystem.shapes))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.fixtures))
- implementation(project(module.presentation.previews))
- testImplementation(project(module.presentation.paparazzi))
+ implementation(projects.presentation.designSystem.progressIndicators)
+ implementation(projects.presentation.designSystem.shapes)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.fixtures)
+ implementation(projects.presentation.previews)
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/design-system/images/detekt-baseline.xml b/presentation/design-system/images/detekt-baseline.xml
new file mode 100644
index 000000000..4151b21db
--- /dev/null
+++ b/presentation/design-system/images/detekt-baseline.xml
@@ -0,0 +1,7 @@
+
+
+
+
+ NoBlankLineBeforeRbrace:ImagesSnapshotTest.kt:ImagesSnapshotTest.Companion$
+
+
diff --git a/presentation/design-system/images/src/main/kotlin/com/sottti/roller/coasters/presentation/design/system/images/network/NetworkImage.kt b/presentation/design-system/images/src/main/kotlin/com/sottti/roller/coasters/presentation/design/system/images/network/NetworkImage.kt
index 60d716407..0c9280b63 100644
--- a/presentation/design-system/images/src/main/kotlin/com/sottti/roller/coasters/presentation/design/system/images/network/NetworkImage.kt
+++ b/presentation/design-system/images/src/main/kotlin/com/sottti/roller/coasters/presentation/design/system/images/network/NetworkImage.kt
@@ -13,6 +13,7 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalInspectionMode
+import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import coil3.compose.AsyncImagePainter
@@ -35,9 +36,6 @@ public fun NetworkImage(
foreverLoading: Boolean = false,
) {
val isPreview = LocalInspectionMode.current
- val model = if (isPreview) R.drawable.dragon_khan_hero_image else imageRequest(url)
- val painter = rememberAsyncImagePainter(model)
- val painterState by painter.state.collectAsStateWithLifecycle()
val cornerRadius = when {
roundedCorners -> shapes.roundedCorner.medium
else -> RoundedCornerShape(ZeroCornerSize)
@@ -47,22 +45,55 @@ public fun NetworkImage(
val imageModifier = Modifier.matchParentSize()
when {
- foreverLoading || painterState is AsyncImagePainter.State.Loading ->
+ foreverLoading ->
ProgressIndicator(modifier = imageModifier)
- painterState is AsyncImagePainter.State.Success ->
+ isPreview ->
Image(
- painter = painter,
+ painter = painterResource(R.drawable.dragon_khan_hero_image),
contentDescription = contentDescription,
contentScale = ContentScale.Crop,
modifier = imageModifier,
)
- else -> Box(modifier = imageModifier)
+ else -> AsyncNetworkImage(
+ contentDescription = contentDescription,
+ modifier = imageModifier,
+ url = url,
+ )
}
}
}
+@Composable
+private fun AsyncNetworkImage(
+ url: ImageUrl,
+ contentDescription: String,
+ modifier: Modifier,
+) {
+ val painter = rememberNetworkImagePainter(url)
+ val painterState by painter.state.collectAsStateWithLifecycle()
+
+ when {
+ painterState is AsyncImagePainter.State.Loading ->
+ ProgressIndicator(modifier = modifier)
+
+ painterState is AsyncImagePainter.State.Success ->
+ Image(
+ painter = painter,
+ contentDescription = contentDescription,
+ contentScale = ContentScale.Crop,
+ modifier = modifier,
+ )
+
+ else -> Box(modifier = modifier)
+ }
+}
+
+@Composable
+private fun rememberNetworkImagePainter(url: ImageUrl): AsyncImagePainter =
+ rememberAsyncImagePainter(imageRequest(url))
+
@Composable
private fun imageRequest(url: ImageUrl): ImageRequest {
val context = LocalContext.current
diff --git a/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.local_ImagesSnapshotTest_snapshotTest[0].png b/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.local_ImagesSnapshotTest_snapshotTest[0].png
new file mode 100644
index 000000000..da6d1b926
Binary files /dev/null and b/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.local_ImagesSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.local_ImagesSnapshotTest_snapshotTest[1].png b/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.local_ImagesSnapshotTest_snapshotTest[1].png
new file mode 100644
index 000000000..27bf4412e
Binary files /dev/null and b/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.local_ImagesSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.local_ImagesSnapshotTest_snapshotTest[2].png b/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.local_ImagesSnapshotTest_snapshotTest[2].png
new file mode 100644
index 000000000..d7b991f76
Binary files /dev/null and b/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.local_ImagesSnapshotTest_snapshotTest[2].png differ
diff --git a/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.local_ImagesSnapshotTest_snapshotTest[3].png b/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.local_ImagesSnapshotTest_snapshotTest[3].png
new file mode 100644
index 000000000..496af58d8
Binary files /dev/null and b/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.local_ImagesSnapshotTest_snapshotTest[3].png differ
diff --git a/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.network_NetworkImagesSnapshotTest_snapshotTest[0].png b/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.network_NetworkImagesSnapshotTest_snapshotTest[0].png
new file mode 100644
index 000000000..7d586ea1c
Binary files /dev/null and b/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.network_NetworkImagesSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.network_NetworkImagesSnapshotTest_snapshotTest[1].png b/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.network_NetworkImagesSnapshotTest_snapshotTest[1].png
new file mode 100644
index 000000000..0c0ba1cbf
Binary files /dev/null and b/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.network_NetworkImagesSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.network_NetworkImagesSnapshotTest_snapshotTest[2].png b/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.network_NetworkImagesSnapshotTest_snapshotTest[2].png
new file mode 100644
index 000000000..7d586ea1c
Binary files /dev/null and b/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.network_NetworkImagesSnapshotTest_snapshotTest[2].png differ
diff --git a/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.network_NetworkImagesSnapshotTest_snapshotTest[3].png b/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.network_NetworkImagesSnapshotTest_snapshotTest[3].png
new file mode 100644
index 000000000..a975b37e8
Binary files /dev/null and b/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.network_NetworkImagesSnapshotTest_snapshotTest[3].png differ
diff --git a/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.network_NetworkImagesSnapshotTest_snapshotTest[4].png b/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.network_NetworkImagesSnapshotTest_snapshotTest[4].png
new file mode 100644
index 000000000..b80c89ed5
Binary files /dev/null and b/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.network_NetworkImagesSnapshotTest_snapshotTest[4].png differ
diff --git a/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.network_NetworkImagesSnapshotTest_snapshotTest[5].png b/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.network_NetworkImagesSnapshotTest_snapshotTest[5].png
new file mode 100644
index 000000000..a975b37e8
Binary files /dev/null and b/presentation/design-system/images/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images.network_NetworkImagesSnapshotTest_snapshotTest[5].png differ
diff --git a/presentation/design-system/informative/build.gradle.kts b/presentation/design-system/informative/build.gradle.kts
index 7cbdf2b5b..c6edbfa4d 100644
--- a/presentation/design-system/informative/build.gradle.kts
+++ b/presentation/design-system/informative/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.paparazzi)
}
@@ -12,19 +9,20 @@ android {
}
dependencies {
- api(project(module.presentation.designSystem.illustrations))
+ api(projects.presentation.designSystem.illustrations)
implementation(libs.compose.foundation)
implementation(libs.compose.material)
implementation(libs.compose.runtime)
implementation(libs.compose.ui)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(platform(libs.compose.bom))
- implementation(project(module.presentation.designSystem.colors))
- implementation(project(module.presentation.designSystem.dimensions))
- implementation(project(module.presentation.designSystem.text))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.fixtures))
- implementation(project(module.presentation.previews))
- implementation(project(module.presentation.utils))
- testImplementation(project(module.presentation.paparazzi))
+ implementation(projects.presentation.designSystem.colors)
+ implementation(projects.presentation.designSystem.dimensions)
+ implementation(projects.presentation.designSystem.text)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.fixtures)
+ implementation(projects.presentation.previews)
+ implementation(projects.presentation.utils)
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/design-system/informative/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.informative_InformativeSnapshotTest_snapshotTest[0].png b/presentation/design-system/informative/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.informative_InformativeSnapshotTest_snapshotTest[0].png
index a3aaef3ef..b86f6ba3a 100644
Binary files a/presentation/design-system/informative/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.informative_InformativeSnapshotTest_snapshotTest[0].png and b/presentation/design-system/informative/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.informative_InformativeSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/design-system/informative/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.informative_InformativeSnapshotTest_snapshotTest[1].png b/presentation/design-system/informative/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.informative_InformativeSnapshotTest_snapshotTest[1].png
index 6c42cdd57..ae397fa58 100644
Binary files a/presentation/design-system/informative/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.informative_InformativeSnapshotTest_snapshotTest[1].png and b/presentation/design-system/informative/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.informative_InformativeSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/design-system/informative/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.informative_InformativeSnapshotTest_snapshotTest[2].png b/presentation/design-system/informative/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.informative_InformativeSnapshotTest_snapshotTest[2].png
index 41c345960..607df3c23 100644
Binary files a/presentation/design-system/informative/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.informative_InformativeSnapshotTest_snapshotTest[2].png and b/presentation/design-system/informative/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.informative_InformativeSnapshotTest_snapshotTest[2].png differ
diff --git a/presentation/design-system/informative/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.informative_InformativeSnapshotTest_snapshotTest[3].png b/presentation/design-system/informative/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.informative_InformativeSnapshotTest_snapshotTest[3].png
index 5c73a1b0a..f6f1dd7a7 100644
Binary files a/presentation/design-system/informative/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.informative_InformativeSnapshotTest_snapshotTest[3].png and b/presentation/design-system/informative/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.informative_InformativeSnapshotTest_snapshotTest[3].png differ
diff --git a/presentation/design-system/map/build.gradle.kts b/presentation/design-system/map/build.gradle.kts
index e23cde802..2665758be 100644
--- a/presentation/design-system/map/build.gradle.kts
+++ b/presentation/design-system/map/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.paparazzi)
}
@@ -14,11 +11,12 @@ android {
dependencies {
implementation(libs.compose.foundation)
implementation(libs.compose.maps)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(platform(libs.compose.bom))
- implementation(project(module.domain.fixtures))
- implementation(project(module.presentation.designSystem.images))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.previews))
- testImplementation(project(module.presentation.paparazzi))
+ implementation(projects.domain.fixtures)
+ implementation(projects.presentation.designSystem.images)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.previews)
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/design-system/map/detekt-baseline.xml b/presentation/design-system/map/detekt-baseline.xml
new file mode 100644
index 000000000..68ff4fd36
--- /dev/null
+++ b/presentation/design-system/map/detekt-baseline.xml
@@ -0,0 +1,8 @@
+
+
+
+
+ CommentWrapping:Map.kt:/* target = */
+ CommentWrapping:Map.kt:/* zoom = */
+
+
diff --git a/presentation/design-system/map/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images_MapSnapshotTest_snapshotTest[0].png b/presentation/design-system/map/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images_MapSnapshotTest_snapshotTest[0].png
index 3656db347..da6d1b926 100644
Binary files a/presentation/design-system/map/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images_MapSnapshotTest_snapshotTest[0].png and b/presentation/design-system/map/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images_MapSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/design-system/map/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images_MapSnapshotTest_snapshotTest[1].png b/presentation/design-system/map/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images_MapSnapshotTest_snapshotTest[1].png
index 902a1a7a5..27bf4412e 100644
Binary files a/presentation/design-system/map/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images_MapSnapshotTest_snapshotTest[1].png and b/presentation/design-system/map/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.images_MapSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/design-system/playground/build.gradle.kts b/presentation/design-system/playground/build.gradle.kts
index c81bcea34..c37f377dd 100644
--- a/presentation/design-system/playground/build.gradle.kts
+++ b/presentation/design-system/playground/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
}
@@ -12,12 +9,13 @@ android {
dependencies {
implementation(libs.compose.material)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(platform(libs.compose.bom))
- implementation(project(module.presentation.designSystem.colors))
- implementation(project(module.presentation.designSystem.dimensions))
- implementation(project(module.presentation.designSystem.shapes))
- implementation(project(module.presentation.designSystem.text))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.previews))
+ implementation(projects.presentation.designSystem.colors)
+ implementation(projects.presentation.designSystem.dimensions)
+ implementation(projects.presentation.designSystem.shapes)
+ implementation(projects.presentation.designSystem.text)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.previews)
}
diff --git a/presentation/design-system/playground/detekt-baseline.xml b/presentation/design-system/playground/detekt-baseline.xml
new file mode 100644
index 000000000..062c6c0a5
--- /dev/null
+++ b/presentation/design-system/playground/detekt-baseline.xml
@@ -0,0 +1,30 @@
+
+
+
+
+ ArgumentListWrapping:Animations.kt:( Modifier .alpha(alpha = alpha.value) .clickable { onClick() })
+ ArgumentListWrapping:Animations.kt:( modifier = Modifier.align(Alignment.Center), text = "Colours", color = Color.Black, )
+ CommentSpacing:CustomModifiers.kt://) : Modifier.Node() {
+ CommentSpacing:CustomModifiers.kt://) : ModifierNodeElement<PulsateNode>() {
+ CommentSpacing:CustomModifiers.kt://private class PulsateNode(
+ CommentSpacing:CustomModifiers.kt://private data class PulsateElement(
+ CommentSpacing:CustomModifiers.kt://private fun Modifier.pulsate(enabled: Boolean = true) = this.then(PulsateElement(enabled))
+ CommentSpacing:CustomModifiers.kt://}
+ ComposableNaming:ElevationAndShadows.kt:@Composable @Preview( widthDp = 1200, heightDp = 600, ) private fun cardElevationAnimation
+ ForEachOnRange:CustomLayout.kt:1..10
+ ForEachOnRange:Intrinsics.kt:1..10
+ MultipleEmitters:CoutingRecompositions.kt:@Composable private fun A
+ MultipleEmitters:CoutingRecompositions.kt:@Composable private fun RecompositionDemonstrator
+ MutableStateAutoboxing:CoutingRecompositions.kt:mutableStateOf(0)
+ MutableStateAutoboxing:Random.kt:mutableStateOf(0)
+ NoConsecutiveBlankLines:CustomLayout.kt:
+ NoConsecutiveBlankLines:ElevationAndShadows.kt:
+ NoConsecutiveBlankLines:Text.kt:
+ NoEmptyFile:CustomModifiers.kt:com.sottti.roller.coasters.presentation.design.system.playground.CustomModifiers.kt
+ NoEmptyFirstLineInMethodBlock:ElevationAndShadows.kt:
+ NoMultipleSpaces:CoutingRecompositions.kt:
+ SpacingAroundParens:Animations.kt:(
+ UnnecessaryParenthesesBeforeTrailingLambda:Text.kt:()
+ Wrapping:Animations.kt:(
+
+
diff --git a/presentation/design-system/playground/src/main/kotlin/com/sottti/roller/coasters/presentation/design/system/playground/CustomLayout.kt b/presentation/design-system/playground/src/main/kotlin/com/sottti/roller/coasters/presentation/design/system/playground/CustomLayout.kt
index 35ba548fa..fc2f8469c 100644
--- a/presentation/design-system/playground/src/main/kotlin/com/sottti/roller/coasters/presentation/design/system/playground/CustomLayout.kt
+++ b/presentation/design-system/playground/src/main/kotlin/com/sottti/roller/coasters/presentation/design/system/playground/CustomLayout.kt
@@ -112,7 +112,7 @@ private fun SpecialBox() {
}
public fun Modifier.centerInParent0(): Modifier =
- this then layout { measurable, constraints ->
+ layout { measurable, constraints ->
val maxWidthAllowedByParent = constraints.maxWidth
val maxHeightAllowedByTheParent = constraints.maxHeight
val placeable = measurable.measure(constraints)
@@ -129,7 +129,7 @@ public fun Modifier.paddingModifier(
end: Dp = 0.dp,
bottom: Dp = 0.dp,
): Modifier {
- return this then layout { measurable, constraints ->
+ return layout { measurable, constraints ->
val horizontal = (start + end).roundToPx()
val vertical = (top + bottom).roundToPx()
val placeable = measurable.measure(
@@ -147,21 +147,19 @@ public fun Modifier.paddingModifier(
}
public fun Modifier.centerInParent(): Modifier =
- this.then(
- layout { measurable, constraints ->
- val parentWidth = constraints.maxWidth
- val parentHeight = constraints.maxHeight
+ layout { measurable, constraints ->
+ val parentWidth = constraints.maxWidth
+ val parentHeight = constraints.maxHeight
- val placeable = measurable.measure(constraints)
+ val placeable = measurable.measure(constraints)
- check(placeable[FirstBaseline] != AlignmentLine.Unspecified)
+ check(placeable[FirstBaseline] != AlignmentLine.Unspecified)
- val x = (parentWidth - placeable.width) / 2
- val y = (parentHeight - placeable.height) / 2
+ val x = (parentWidth - placeable.width) / 2
+ val y = (parentHeight - placeable.height) / 2
- layout(placeable.width, placeable.height) {
- placeable.placeRelative(x, y)
- }
+ layout(placeable.width, placeable.height) {
+ placeable.placeRelative(x, y)
}
- )
+ }
diff --git a/presentation/design-system/progress-indicators/build.gradle.kts b/presentation/design-system/progress-indicators/build.gradle.kts
index d19cc0728..cbe89928c 100644
--- a/presentation/design-system/progress-indicators/build.gradle.kts
+++ b/presentation/design-system/progress-indicators/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.paparazzi)
}
@@ -13,10 +10,11 @@ android {
dependencies {
implementation(libs.compose.material)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(platform(libs.compose.bom))
- implementation(project(module.presentation.designSystem.dimensions))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.previews))
- testImplementation(project(module.presentation.paparazzi))
+ implementation(projects.presentation.designSystem.dimensions)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.previews)
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/design-system/progress-indicators/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.progress.indicators_ProgressIndicatorSnapshotTest_snapshotTest[0].png b/presentation/design-system/progress-indicators/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.progress.indicators_ProgressIndicatorSnapshotTest_snapshotTest[0].png
index 1b6f242d4..66558bbba 100644
Binary files a/presentation/design-system/progress-indicators/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.progress.indicators_ProgressIndicatorSnapshotTest_snapshotTest[0].png and b/presentation/design-system/progress-indicators/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.progress.indicators_ProgressIndicatorSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/design-system/progress-indicators/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.progress.indicators_ProgressIndicatorSnapshotTest_snapshotTest[1].png b/presentation/design-system/progress-indicators/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.progress.indicators_ProgressIndicatorSnapshotTest_snapshotTest[1].png
index ff2b4df74..3d01a4c0d 100644
Binary files a/presentation/design-system/progress-indicators/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.progress.indicators_ProgressIndicatorSnapshotTest_snapshotTest[1].png and b/presentation/design-system/progress-indicators/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.progress.indicators_ProgressIndicatorSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/design-system/progress-indicators/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.progress.indicators_ProgressIndicatorSnapshotTest_snapshotTest[2].png b/presentation/design-system/progress-indicators/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.progress.indicators_ProgressIndicatorSnapshotTest_snapshotTest[2].png
index 117c4788a..27b91d15c 100644
Binary files a/presentation/design-system/progress-indicators/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.progress.indicators_ProgressIndicatorSnapshotTest_snapshotTest[2].png and b/presentation/design-system/progress-indicators/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.progress.indicators_ProgressIndicatorSnapshotTest_snapshotTest[2].png differ
diff --git a/presentation/design-system/progress-indicators/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.progress.indicators_ProgressIndicatorSnapshotTest_snapshotTest[3].png b/presentation/design-system/progress-indicators/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.progress.indicators_ProgressIndicatorSnapshotTest_snapshotTest[3].png
index 267737458..7bc65b2d3 100644
Binary files a/presentation/design-system/progress-indicators/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.progress.indicators_ProgressIndicatorSnapshotTest_snapshotTest[3].png and b/presentation/design-system/progress-indicators/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.progress.indicators_ProgressIndicatorSnapshotTest_snapshotTest[3].png differ
diff --git a/presentation/design-system/roller-coaster-card/build.gradle.kts b/presentation/design-system/roller-coaster-card/build.gradle.kts
index ecf36e14e..af022648b 100644
--- a/presentation/design-system/roller-coaster-card/build.gradle.kts
+++ b/presentation/design-system/roller-coaster-card/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.paparazzi)
}
@@ -13,16 +10,17 @@ android {
dependencies {
implementation(libs.compose.material)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(platform(libs.compose.bom))
- implementation(project(module.presentation.designSystem.colors))
- implementation(project(module.presentation.designSystem.dimensions))
- implementation(project(module.presentation.designSystem.images))
- implementation(project(module.presentation.designSystem.shapes))
- implementation(project(module.presentation.designSystem.text))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.fixtures))
- implementation(project(module.presentation.previews))
- implementation(project(module.presentation.utils))
- testImplementation(project(module.presentation.paparazzi))
+ implementation(projects.presentation.designSystem.colors)
+ implementation(projects.presentation.designSystem.dimensions)
+ implementation(projects.presentation.designSystem.images)
+ implementation(projects.presentation.designSystem.shapes)
+ implementation(projects.presentation.designSystem.text)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.fixtures)
+ implementation(projects.presentation.previews)
+ implementation(projects.presentation.utils)
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/design-system/roller-coaster-card/detekt-baseline.xml b/presentation/design-system/roller-coaster-card/detekt-baseline.xml
new file mode 100644
index 000000000..fa21f859a
--- /dev/null
+++ b/presentation/design-system/roller-coaster-card/detekt-baseline.xml
@@ -0,0 +1,7 @@
+
+
+
+
+ NoBlankLineBeforeRbrace:RollerCoasterCardLargeStateProvider.kt:RollerCoasterCardLargeStateProvider$
+
+
diff --git a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.large_RollerCoasterCardLargeSnapshotTest_snapshotTest[0].png b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.large_RollerCoasterCardLargeSnapshotTest_snapshotTest[0].png
index eb0bce550..a3e70aaa7 100644
Binary files a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.large_RollerCoasterCardLargeSnapshotTest_snapshotTest[0].png and b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.large_RollerCoasterCardLargeSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.large_RollerCoasterCardLargeSnapshotTest_snapshotTest[1].png b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.large_RollerCoasterCardLargeSnapshotTest_snapshotTest[1].png
index a885f9acd..97d269803 100644
Binary files a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.large_RollerCoasterCardLargeSnapshotTest_snapshotTest[1].png and b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.large_RollerCoasterCardLargeSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.large_RollerCoasterCardLargeSnapshotTest_snapshotTest[2].png b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.large_RollerCoasterCardLargeSnapshotTest_snapshotTest[2].png
index 6cd8832fd..a3e70aaa7 100644
Binary files a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.large_RollerCoasterCardLargeSnapshotTest_snapshotTest[2].png and b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.large_RollerCoasterCardLargeSnapshotTest_snapshotTest[2].png differ
diff --git a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.large_RollerCoasterCardLargeSnapshotTest_snapshotTest[3].png b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.large_RollerCoasterCardLargeSnapshotTest_snapshotTest[3].png
index cb48c1900..dad6b64da 100644
Binary files a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.large_RollerCoasterCardLargeSnapshotTest_snapshotTest[3].png and b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.large_RollerCoasterCardLargeSnapshotTest_snapshotTest[3].png differ
diff --git a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[0].png b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[0].png
index 47a9d0ede..028b90f92 100644
Binary files a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[0].png and b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[1].png b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[1].png
index 63c616d8c..8d244565e 100644
Binary files a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[1].png and b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[2].png b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[2].png
index 17c233806..cb14ac6d9 100644
Binary files a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[2].png and b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[2].png differ
diff --git a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[3].png b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[3].png
index 24e41a914..efc4c72c7 100644
Binary files a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[3].png and b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[3].png differ
diff --git a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[4].png b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[4].png
index b3e8ec555..a16214049 100644
Binary files a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[4].png and b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[4].png differ
diff --git a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[5].png b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[5].png
index 1fbfba05d..646c6474f 100644
Binary files a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[5].png and b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[5].png differ
diff --git a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[6].png b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[6].png
index 17c233806..cb14ac6d9 100644
Binary files a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[6].png and b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[6].png differ
diff --git a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[7].png b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[7].png
index 24e41a914..efc4c72c7 100644
Binary files a/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[7].png and b/presentation/design-system/roller-coaster-card/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.small_RollerCoasterCardSmallSnapshotTest_snapshotTest[7].png differ
diff --git a/presentation/design-system/search-bar/build.gradle.kts b/presentation/design-system/search-bar/build.gradle.kts
index 97fc813ee..99679cb7b 100644
--- a/presentation/design-system/search-bar/build.gradle.kts
+++ b/presentation/design-system/search-bar/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.paparazzi)
}
@@ -13,15 +10,16 @@ android {
dependencies {
implementation(libs.compose.material)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(platform(libs.compose.bom))
- implementation(project(module.domain.fixtures))
- implementation(project(module.presentation.designSystem.dimensions))
- implementation(project(module.presentation.designSystem.icons))
- implementation(project(module.presentation.designSystem.progressIndicators))
- implementation(project(module.presentation.designSystem.shapes))
- implementation(project(module.presentation.designSystem.text))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.previews))
- testImplementation(project(module.presentation.paparazzi))
+ implementation(projects.domain.fixtures)
+ implementation(projects.presentation.designSystem.dimensions)
+ implementation(projects.presentation.designSystem.icons)
+ implementation(projects.presentation.designSystem.progressIndicators)
+ implementation(projects.presentation.designSystem.shapes)
+ implementation(projects.presentation.designSystem.text)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.previews)
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/design-system/search-bar/detekt-baseline.xml b/presentation/design-system/search-bar/detekt-baseline.xml
new file mode 100644
index 000000000..170181dc2
--- /dev/null
+++ b/presentation/design-system/search-bar/detekt-baseline.xml
@@ -0,0 +1,7 @@
+
+
+
+
+ LambdaParameterEventTrailing:SearchBar.kt:onQueryChange: (String?) -> Unit
+
+
diff --git a/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[0].png b/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[0].png
index bdf09d675..ce5da8ae2 100644
Binary files a/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[0].png and b/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[1].png b/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[1].png
index f65e43bce..77ab0da08 100644
Binary files a/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[1].png and b/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[2].png b/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[2].png
index f189342a0..f10234acb 100644
Binary files a/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[2].png and b/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[2].png differ
diff --git a/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[3].png b/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[3].png
index 57ae699d4..eb31fed53 100644
Binary files a/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[3].png and b/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[3].png differ
diff --git a/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[4].png b/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[4].png
index 911233300..81b14fc73 100644
Binary files a/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[4].png and b/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[4].png differ
diff --git a/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[5].png b/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[5].png
index d3f44f571..61fc5d716 100644
Binary files a/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[5].png and b/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[5].png differ
diff --git a/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[6].png b/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[6].png
index 047d1f94b..b3ce319c4 100644
Binary files a/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[6].png and b/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[6].png differ
diff --git a/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[7].png b/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[7].png
index 6760436eb..41a279e17 100644
Binary files a/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[7].png and b/presentation/design-system/search-bar/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.search.bar_SearchBarSnapshotTest_snapshotTest[7].png differ
diff --git a/presentation/design-system/shapes/build.gradle.kts b/presentation/design-system/shapes/build.gradle.kts
index d4453dcfe..33b9cd4c3 100644
--- a/presentation/design-system/shapes/build.gradle.kts
+++ b/presentation/design-system/shapes/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
}
@@ -12,7 +9,8 @@ android {
dependencies {
implementation(libs.compose.material)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(platform(libs.compose.bom))
- implementation(project(module.presentation.designSystem.dimensions))
+ implementation(projects.presentation.designSystem.dimensions)
}
diff --git a/presentation/design-system/shapes/detekt-baseline.xml b/presentation/design-system/shapes/detekt-baseline.xml
new file mode 100644
index 000000000..38720efd4
--- /dev/null
+++ b/presentation/design-system/shapes/detekt-baseline.xml
@@ -0,0 +1,8 @@
+
+
+
+
+ ReturnCount:CornerShape.kt:CornerShape$override fun createOutline: Outline
+ TopLevelPropertyNaming:LocalShapes.kt:internal val LocalShapes = staticCompositionLocalOf<Shapes> { error("No shapes provided. Make sure to wrap your composables in a custom theme.") }
+
+
diff --git a/presentation/design-system/switch/build.gradle.kts b/presentation/design-system/switch/build.gradle.kts
index 9c8f3afcc..4307077b6 100644
--- a/presentation/design-system/switch/build.gradle.kts
+++ b/presentation/design-system/switch/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.paparazzi)
}
@@ -13,10 +10,11 @@ android {
dependencies {
implementation(libs.compose.material)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(platform(libs.compose.bom))
- implementation(project(module.presentation.designSystem.icons))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.previews))
- testImplementation(project(module.presentation.paparazzi))
+ implementation(projects.presentation.designSystem.icons)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.previews)
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[0].png b/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[0].png
index f36c34c44..c33fd37f8 100644
Binary files a/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[0].png and b/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[1].png b/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[1].png
index a13dfdfe9..eda5c804d 100644
Binary files a/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[1].png and b/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[2].png b/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[2].png
index 9d33da297..780f8c7a7 100644
Binary files a/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[2].png and b/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[2].png differ
diff --git a/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[3].png b/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[3].png
index ee1f4ba9e..ad2d58866 100644
Binary files a/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[3].png and b/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[3].png differ
diff --git a/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[4].png b/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[4].png
index 5e9174bd4..e6259390f 100644
Binary files a/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[4].png and b/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[4].png differ
diff --git a/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[5].png b/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[5].png
index 3442fcb84..51f4cbe18 100644
Binary files a/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[5].png and b/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[5].png differ
diff --git a/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[6].png b/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[6].png
index 9872b6721..11dba4076 100644
Binary files a/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[6].png and b/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[6].png differ
diff --git a/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[7].png b/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[7].png
index 80c62d052..382199136 100644
Binary files a/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[7].png and b/presentation/design-system/switch/src/test/snapshots/images/com.sottti.roller.coasters.presentation.design.system.switchh_SwitchSnapshotTest_snapshotTest[7].png differ
diff --git a/presentation/design-system/text/build.gradle.kts b/presentation/design-system/text/build.gradle.kts
index b7069a6cf..9599a7d0a 100644
--- a/presentation/design-system/text/build.gradle.kts
+++ b/presentation/design-system/text/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.paparazzi)
}
@@ -13,11 +10,12 @@ android {
dependencies {
implementation(libs.compose.material)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(platform(libs.compose.bom))
- implementation(project(module.presentation.designSystem.colors))
- implementation(project(module.presentation.designSystem.dimensions))
- implementation(project(module.presentation.designSystem.typography))
- implementation(project(module.presentation.previews))
- testImplementation(project(module.presentation.paparazzi))
+ implementation(projects.presentation.designSystem.colors)
+ implementation(projects.presentation.designSystem.dimensions)
+ implementation(projects.presentation.designSystem.typography)
+ implementation(projects.presentation.previews)
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/design-system/text/detekt-baseline.xml b/presentation/design-system/text/detekt-baseline.xml
new file mode 100644
index 000000000..6ec74dca4
--- /dev/null
+++ b/presentation/design-system/text/detekt-baseline.xml
@@ -0,0 +1,7 @@
+
+
+
+
+ NoConsecutiveBlankLines:Text.kt:Text.Body$
+
+
diff --git a/presentation/design-system/themes/build.gradle.kts b/presentation/design-system/themes/build.gradle.kts
index 3e644c942..1e0b72453 100644
--- a/presentation/design-system/themes/build.gradle.kts
+++ b/presentation/design-system/themes/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
}
@@ -11,13 +8,13 @@ android {
}
dependencies {
- api(project(module.presentation.designSystem.colors))
+ api(projects.presentation.designSystem.colors)
implementation(libs.compose.material)
implementation(libs.material)
implementation(libs.splashscreen)
implementation(platform(libs.compose.bom))
- implementation(project(module.presentation.designSystem.dimensions))
- implementation(project(module.presentation.designSystem.iconResources))
- implementation(project(module.presentation.designSystem.shapes))
- implementation(project(module.presentation.designSystem.typography))
+ implementation(projects.presentation.designSystem.dimensions)
+ implementation(projects.presentation.designSystem.iconResources)
+ implementation(projects.presentation.designSystem.shapes)
+ implementation(projects.presentation.designSystem.typography)
}
diff --git a/presentation/design-system/typography/build.gradle.kts b/presentation/design-system/typography/build.gradle.kts
index 7ca8ca173..3affff187 100644
--- a/presentation/design-system/typography/build.gradle.kts
+++ b/presentation/design-system/typography/build.gradle.kts
@@ -1,6 +1,5 @@
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
}
diff --git a/presentation/design-system/typography/detekt-baseline.xml b/presentation/design-system/typography/detekt-baseline.xml
new file mode 100644
index 000000000..d89049a47
--- /dev/null
+++ b/presentation/design-system/typography/detekt-baseline.xml
@@ -0,0 +1,7 @@
+
+
+
+
+ TopLevelPropertyNaming:LocalTypography.kt:internal val LocalTypography = staticCompositionLocalOf<Typography> { error("No typography provided. Make sure to wrap your composables in a custom theme.") }
+
+
diff --git a/presentation/explore/build.gradle.kts b/presentation/explore/build.gradle.kts
index 9c008e606..365b4ad54 100644
--- a/presentation/explore/build.gradle.kts
+++ b/presentation/explore/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.kotlin.ksp)
alias(libs.plugins.paparazzi)
@@ -16,30 +13,31 @@ dependencies {
implementation(libs.appcompat)
implementation(libs.compose.foundation)
implementation(libs.compose.material)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(libs.hilt)
implementation(libs.hilt.navigation.compose)
implementation(libs.paging.compose)
implementation(libs.paging.runtime)
implementation(platform(libs.compose.bom))
- implementation(project(module.domain.fixtures))
- implementation(project(module.domain.locales))
- implementation(project(module.domain.rollerCoasters))
- implementation(project(module.presentation.designSystem.chip))
- implementation(project(module.presentation.designSystem.dimensions))
- implementation(project(module.presentation.designSystem.empty))
- implementation(project(module.presentation.designSystem.error))
- implementation(project(module.presentation.designSystem.images))
- implementation(project(module.presentation.designSystem.progressIndicators))
- implementation(project(module.presentation.designSystem.rollerCoasterCard))
- implementation(project(module.presentation.designSystem.text))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.fixtures))
- implementation(project(module.presentation.format))
- implementation(project(module.presentation.previews))
- implementation(project(module.presentation.stringProvider))
- implementation(project(module.presentation.topBars))
- implementation(project(module.presentation.utils))
+ implementation(projects.domain.fixtures)
+ implementation(projects.domain.locales)
+ implementation(projects.domain.rollerCoasters)
+ implementation(projects.presentation.designSystem.chip)
+ implementation(projects.presentation.designSystem.dimensions)
+ implementation(projects.presentation.designSystem.empty)
+ implementation(projects.presentation.designSystem.error)
+ implementation(projects.presentation.designSystem.images)
+ implementation(projects.presentation.designSystem.progressIndicators)
+ implementation(projects.presentation.designSystem.rollerCoasterCard)
+ implementation(projects.presentation.designSystem.text)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.fixtures)
+ implementation(projects.presentation.format)
+ implementation(projects.presentation.previews)
+ implementation(projects.presentation.stringProvider)
+ implementation(projects.presentation.topBars)
+ implementation(projects.presentation.utils)
ksp(libs.hilt.compiler)
testImplementation(libs.junit)
@@ -48,5 +46,5 @@ dependencies {
testImplementation(libs.paging.testing)
testImplementation(libs.truth)
testImplementation(libs.turbine)
- testImplementation(project(module.presentation.paparazzi))
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/explore/detekt-baseline.xml b/presentation/explore/detekt-baseline.xml
new file mode 100644
index 000000000..00924ff90
--- /dev/null
+++ b/presentation/explore/detekt-baseline.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ ArgumentListWrapping:ExploreReducer.kt:( primary = state.filters.primary.map { filter -> when { primaryFilterClass.isInstance(filter) -> (filter as T).updateFilter(state) else -> filter } })
+ ArgumentListWrapping:ExploreReducer.kt:( secondary = state.filters.secondary.map { filter -> when (filter) { is AllFilter -> filter.copy(visible = filter is T) is AlphabeticalFilter -> filter.copy(visible = filter is T) is DropFilter -> filter.copy(visible = filter is T) is GForceFilter -> filter.copy(visible = filter is T) is HeightFilter -> filter.copy(visible = filter is T) is InversionsFilter -> filter.copy(visible = filter is T) is LengthFilter -> filter.copy(visible = filter is T) is MaxVerticalFilter -> filter.copy(visible = filter is T) is SpeedFilter -> filter.copy(visible = filter is T) is SteelFilter -> filter.copy(visible = filter is T) is WoodFilter -> filter.copy(visible = filter is T) } })
+ CyclomaticComplexMethod:ExploreTestHelpers.kt:internal fun filtersWithExpansion
+ CyclomaticComplexMethod:ExploreUiMapper.kt:private fun Ride.contextualStat: String?
+ Indentation:ExploreReducer.kt:
+ LambdaParameterInRestartableEffect:ExploreUi.kt:onScrollToTop: (() -> Unit) -> Unit
+ NoConsecutiveBlankLines:ExploreReducer.kt:
+ NoConsecutiveBlankLines:ExploreState.kt:
+ NoConsecutiveBlankLines:ExploreTestHelpers.kt:
+ ParameterNaming:ExploreUi.kt:onListCreated: @Composable (LazyListState) -> Unit
+ SpacingAroundParens:ExploreReducer.kt:(
+ ThrowingExceptionsWithoutMessageOrCause:ExploreUiStateProvider.kt:Exception()
+ Wrapping:ExploreReducer.kt:(
+
+
diff --git a/presentation/explore/src/main/kotlin/com/sottti/roller/coasters/presentation/explore/ui/ExploreUiContent.kt b/presentation/explore/src/main/kotlin/com/sottti/roller/coasters/presentation/explore/ui/ExploreUiContent.kt
index e517f41ae..ea2c9a2f3 100644
--- a/presentation/explore/src/main/kotlin/com/sottti/roller/coasters/presentation/explore/ui/ExploreUiContent.kt
+++ b/presentation/explore/src/main/kotlin/com/sottti/roller/coasters/presentation/explore/ui/ExploreUiContent.kt
@@ -8,10 +8,15 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.LazyListState
+import androidx.compose.material3.Button
+import androidx.compose.material3.Card
import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.text.style.TextAlign
import androidx.paging.LoadState
+import androidx.paging.LoadState.Error
import androidx.paging.LoadState.Loading
import androidx.paging.LoadState.NotLoading
import androidx.paging.compose.LazyPagingItems
@@ -22,10 +27,13 @@ import com.sottti.roller.coasters.presentation.design.system.error.ErrorUi
import com.sottti.roller.coasters.presentation.design.system.progress.indicators.ProgressIndicator
import com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.RollerCoasterCard
import com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.RollerCoasterCardStat
+import com.sottti.roller.coasters.presentation.design.system.text.Text
+import com.sottti.roller.coasters.presentation.explore.R
import com.sottti.roller.coasters.presentation.explore.model.ExploreAction
import com.sottti.roller.coasters.presentation.explore.model.ExploreRollerCoaster
import com.sottti.roller.coasters.presentation.explore.model.Filters
import com.sottti.roller.coasters.presentation.utils.override
+import com.sottti.roller.coasters.presentation.utils.plus
@Composable
internal fun ExploreContent(
@@ -100,8 +108,13 @@ private fun LoadedRollerCoasters(
contentPadding = padding + PaddingValues(dimensions.spacing.medium),
verticalArrangement = Arrangement.spacedBy(dimensions.spacing.medium),
) {
- if (rollerCoasters.loadState.prepend is Loading) {
- item(key = "loading") { FillMaxWidthProgressIndicator() }
+ when (rollerCoasters.loadState.prepend) {
+ is Error -> item(key = "prepend error") {
+ PaginationErrorItem(onRetry = { rollerCoasters.retry() })
+ }
+
+ is Loading -> item(key = "prepend loading") { FillMaxWidthProgressIndicator() }
+ else -> Unit
}
items(
@@ -116,8 +129,13 @@ private fun LoadedRollerCoasters(
}
}
- if (rollerCoasters.loadState.append is Loading) {
- item(key = "loading") { FillMaxWidthProgressIndicator() }
+ when (rollerCoasters.loadState.append) {
+ is Error -> item(key = "append error") {
+ PaginationErrorItem(onRetry = { rollerCoasters.retry() })
+ }
+
+ is Loading -> item(key = "append loading") { FillMaxWidthProgressIndicator() }
+ else -> Unit
}
}
}
@@ -163,3 +181,26 @@ private fun FillMaxWidthProgressIndicator(
.fillMaxWidth(),
)
}
+
+@Composable
+private fun PaginationErrorItem(
+ onRetry: () -> Unit,
+) {
+ Card(modifier = Modifier.fillMaxWidth()) {
+ Column(
+ modifier = Modifier
+ .fillMaxWidth()
+ .padding(dimensions.spacing.medium),
+ horizontalAlignment = Alignment.CenterHorizontally,
+ verticalArrangement = Arrangement.spacedBy(dimensions.spacing.small),
+ ) {
+ Text.Body.Medium(
+ textResId = R.string.pagination_error,
+ textAlign = TextAlign.Center,
+ )
+ Button(onClick = onRetry) {
+ Text.Vanilla(R.string.pagination_error_retry)
+ }
+ }
+ }
+}
diff --git a/presentation/explore/src/main/res/values-es-rES/strings.xml b/presentation/explore/src/main/res/values-es-rES/strings.xml
index 75f5b2ca6..9d22c98a5 100644
--- a/presentation/explore/src/main/res/values-es-rES/strings.xml
+++ b/presentation/explore/src/main/res/values-es-rES/strings.xml
@@ -13,5 +13,7 @@
Todos
Acero
Madera
+ No pudimos cargar mΓ‘s montaΓ±as rusas.
+ Reintentar
Clasificado #%1$d
diff --git a/presentation/explore/src/main/res/values-gl/strings.xml b/presentation/explore/src/main/res/values-gl/strings.xml
index 590ca210f..22561f7ac 100644
--- a/presentation/explore/src/main/res/values-gl/strings.xml
+++ b/presentation/explore/src/main/res/values-gl/strings.xml
@@ -13,5 +13,7 @@
Todos
Aceiro
Madeira
+ Non puidemos cargar mΓ‘is montaΓ±as rusas.
+ Tentar de novo
Clasificado #%1$d
diff --git a/presentation/explore/src/main/res/values/strings.xml b/presentation/explore/src/main/res/values/strings.xml
index 54b0ab244..f705d78d9 100644
--- a/presentation/explore/src/main/res/values/strings.xml
+++ b/presentation/explore/src/main/res/values/strings.xml
@@ -13,5 +13,7 @@
All
Steel
Wood
+ We couldn\'t load more roller coasters.
+ Retry
Ranked #%1$d
diff --git a/presentation/explore/src/test/kotlin/com/sottti/roller/coasters/presentation/explore/data/ExploreViewModelTest.kt b/presentation/explore/src/test/kotlin/com/sottti/roller/coasters/presentation/explore/data/ExploreViewModelTest.kt
index 873e2ffd8..16d3544a5 100644
--- a/presentation/explore/src/test/kotlin/com/sottti/roller/coasters/presentation/explore/data/ExploreViewModelTest.kt
+++ b/presentation/explore/src/test/kotlin/com/sottti/roller/coasters/presentation/explore/data/ExploreViewModelTest.kt
@@ -32,6 +32,7 @@ import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.launch
+import kotlinx.coroutines.test.advanceUntilIdle
import kotlinx.coroutines.test.runTest
import org.junit.Test
@@ -173,15 +174,15 @@ internal class ExploreViewModelTest {
observeSystemLocale = observeSystemLocale,
)
- val job = launch { viewModel.rollerCoasters.collect() }
+ backgroundScope.launch { viewModel.rollerCoasters.collect() }
+ advanceUntilIdle()
viewModel.events.test {
viewModel.onAction(SecondaryFilterAction.SelectTypeSteel)
+ advanceUntilIdle()
assertThat(awaitItem()).isEqualTo(ExploreEvent.ScrollToTop)
cancelAndIgnoreRemainingEvents()
}
-
- job.cancel()
}
@Test
diff --git a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[0].png b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[0].png
index c20ea6fd9..1731629b7 100644
Binary files a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[0].png and b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[10].png b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[10].png
index ca30cfb0e..fe1338730 100644
Binary files a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[10].png and b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[10].png differ
diff --git a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[11].png b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[11].png
index 6c6fd046b..3a209e088 100644
Binary files a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[11].png and b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[11].png differ
diff --git a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[12].png b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[12].png
index ca30cfb0e..fe1338730 100644
Binary files a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[12].png and b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[12].png differ
diff --git a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[13].png b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[13].png
index 6c6fd046b..3a209e088 100644
Binary files a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[13].png and b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[13].png differ
diff --git a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[14].png b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[14].png
index ca30cfb0e..fe1338730 100644
Binary files a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[14].png and b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[14].png differ
diff --git a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[15].png b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[15].png
index 6c6fd046b..3a209e088 100644
Binary files a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[15].png and b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[15].png differ
diff --git a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[16].png b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[16].png
index 22985e6d3..83ed415e2 100644
Binary files a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[16].png and b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[16].png differ
diff --git a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[17].png b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[17].png
index a07bb8544..9be4ceca3 100644
Binary files a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[17].png and b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[17].png differ
diff --git a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[18].png b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[18].png
index de0ce0f44..38db2154f 100644
Binary files a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[18].png and b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[18].png differ
diff --git a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[19].png b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[19].png
index 24cea2a60..da76d9d30 100644
Binary files a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[19].png and b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[19].png differ
diff --git a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[1].png b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[1].png
index 932ebe870..f85357232 100644
Binary files a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[1].png and b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[2].png b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[2].png
index 483dcd8cc..20a441618 100644
Binary files a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[2].png and b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[2].png differ
diff --git a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[3].png b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[3].png
index 117bac0e4..2f096eae1 100644
Binary files a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[3].png and b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[3].png differ
diff --git a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[4].png b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[4].png
index b4783711f..7c3719ff2 100644
Binary files a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[4].png and b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[4].png differ
diff --git a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[5].png b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[5].png
index 3e01bbb85..928c8220e 100644
Binary files a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[5].png and b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[5].png differ
diff --git a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[6].png b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[6].png
index 2b33ddd5d..eee5050da 100644
Binary files a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[6].png and b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[6].png differ
diff --git a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[7].png b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[7].png
index 9a7f086a2..3e945d788 100644
Binary files a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[7].png and b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[7].png differ
diff --git a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[8].png b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[8].png
index ca30cfb0e..fe1338730 100644
Binary files a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[8].png and b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[8].png differ
diff --git a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[9].png b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[9].png
index 6c6fd046b..3a209e088 100644
Binary files a/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[9].png and b/presentation/explore/src/test/snapshots/images/com.sottti.roller.coasters.presentation.explore.ui_ExploreUiSnapshotTest_snapshotTest[9].png differ
diff --git a/presentation/favourites/build.gradle.kts b/presentation/favourites/build.gradle.kts
index 189802ba2..cc23b6c1a 100644
--- a/presentation/favourites/build.gradle.kts
+++ b/presentation/favourites/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.kotlin.ksp)
alias(libs.plugins.paparazzi)
@@ -15,24 +12,25 @@ android {
dependencies {
implementation(libs.compose.foundation)
implementation(libs.compose.material)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(libs.hilt)
implementation(libs.hilt.navigation.compose)
implementation(libs.paging.compose)
implementation(libs.paging.runtime)
implementation(platform(libs.compose.bom))
- implementation(project(module.domain.fixtures))
- implementation(project(module.domain.rollerCoasters))
- implementation(project(module.presentation.designSystem.dimensions))
- implementation(project(module.presentation.designSystem.empty))
- implementation(project(module.presentation.designSystem.error))
- implementation(project(module.presentation.designSystem.progressIndicators))
- implementation(project(module.presentation.designSystem.rollerCoasterCard))
- implementation(project(module.presentation.designSystem.text))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.previews))
- implementation(project(module.presentation.topBars))
- implementation(project(module.presentation.utils))
+ implementation(projects.domain.fixtures)
+ implementation(projects.domain.rollerCoasters)
+ implementation(projects.presentation.designSystem.dimensions)
+ implementation(projects.presentation.designSystem.empty)
+ implementation(projects.presentation.designSystem.error)
+ implementation(projects.presentation.designSystem.progressIndicators)
+ implementation(projects.presentation.designSystem.rollerCoasterCard)
+ implementation(projects.presentation.designSystem.text)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.previews)
+ implementation(projects.presentation.topBars)
+ implementation(projects.presentation.utils)
ksp(libs.hilt.compiler)
testImplementation(libs.junit)
@@ -41,5 +39,5 @@ dependencies {
testImplementation(libs.paging.testing)
testImplementation(libs.truth)
testImplementation(libs.turbine)
- testImplementation(project(module.presentation.paparazzi))
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/favourites/detekt-baseline.xml b/presentation/favourites/detekt-baseline.xml
new file mode 100644
index 000000000..32c810d2a
--- /dev/null
+++ b/presentation/favourites/detekt-baseline.xml
@@ -0,0 +1,13 @@
+
+
+
+
+ ArgumentListWrapping:FavouritesUiContent.kt:(modifier = Modifier .padding(padding) .fillMaxSize())
+ FunctionOnlyReturningConstant:FavouritesPresentationModule.kt:FavouritesPresentationModule$@Provides fun provideCoroutineScope: CoroutineScope?
+ NoConsecutiveBlankLines:FavouritesUiContent.kt:
+ NoEmptyFirstLineInMethodBlock:FavouritesViewModelTest.kt:FavouritesViewModelTest$
+ ParameterNaming:FavouritesUi.kt:onListCreated: @Composable (LazyListState, TopAppBarScrollBehavior) -> Unit
+ ThrowingExceptionsWithoutMessageOrCause:FavouritesUiStateProvider.kt:Exception()
+ Wrapping:FavouritesUiContent.kt:(
+
+
diff --git a/presentation/favourites/src/main/kotlin/com/sottti/roller/coasters/presentation/favourites/ui/FavouritesUiContent.kt b/presentation/favourites/src/main/kotlin/com/sottti/roller/coasters/presentation/favourites/ui/FavouritesUiContent.kt
index 6101d3936..c50940485 100644
--- a/presentation/favourites/src/main/kotlin/com/sottti/roller/coasters/presentation/favourites/ui/FavouritesUiContent.kt
+++ b/presentation/favourites/src/main/kotlin/com/sottti/roller/coasters/presentation/favourites/ui/FavouritesUiContent.kt
@@ -8,14 +8,19 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.LazyListState
+import androidx.compose.material3.Button
+import androidx.compose.material3.Card
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Scaffold
import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.NestedScrollConnection
import androidx.compose.ui.input.nestedscroll.nestedScroll
+import androidx.compose.ui.text.style.TextAlign
import androidx.paging.LoadState
+import androidx.paging.LoadState.Error
import androidx.paging.LoadState.Loading
import androidx.paging.LoadState.NotLoading
import androidx.paging.compose.LazyPagingItems
@@ -25,9 +30,12 @@ import com.sottti.roller.coasters.presentation.design.system.error.ErrorButton
import com.sottti.roller.coasters.presentation.design.system.error.ErrorUi
import com.sottti.roller.coasters.presentation.design.system.progress.indicators.ProgressIndicator
import com.sottti.roller.coasters.presentation.design.system.roller.coaster.card.RollerCoasterCard
+import com.sottti.roller.coasters.presentation.design.system.text.Text
+import com.sottti.roller.coasters.presentation.favourites.R
import com.sottti.roller.coasters.presentation.favourites.model.FavouritesRollerCoaster
import com.sottti.roller.coasters.presentation.top.bars.ui.MainTopBar
import com.sottti.roller.coasters.presentation.utils.override
+import com.sottti.roller.coasters.presentation.utils.plus
@Composable
@@ -104,8 +112,13 @@ private fun LoadedRollerCoasters(
state = listState,
verticalArrangement = Arrangement.spacedBy(dimensions.spacing.medium),
) {
- if (rollerCoasters.loadState.prepend is Loading) {
- item(key = "prepend loading") { ProgressIndicatorFillMaxWidth() }
+ when (rollerCoasters.loadState.prepend) {
+ is Error -> item(key = "prepend error") {
+ PaginationErrorItem(onRetry = { rollerCoasters.retry() })
+ }
+
+ is Loading -> item(key = "prepend loading") { ProgressIndicatorFillMaxWidth() }
+ else -> Unit
}
items(
@@ -120,8 +133,13 @@ private fun LoadedRollerCoasters(
}
}
- if (rollerCoasters.loadState.append is Loading) {
- item(key = "append loading") { ProgressIndicatorFillMaxWidth() }
+ when (rollerCoasters.loadState.append) {
+ is Error -> item(key = "append error") {
+ PaginationErrorItem(onRetry = { rollerCoasters.retry() })
+ }
+
+ is Loading -> item(key = "append loading") { ProgressIndicatorFillMaxWidth() }
+ else -> Unit
}
}
}
@@ -157,3 +175,26 @@ private fun ProgressIndicatorFillMaxWidth() {
.fillMaxWidth(),
)
}
+
+@Composable
+private fun PaginationErrorItem(
+ onRetry: () -> Unit,
+) {
+ Card(modifier = Modifier.fillMaxWidth()) {
+ Column(
+ modifier = Modifier
+ .fillMaxWidth()
+ .padding(dimensions.spacing.medium),
+ horizontalAlignment = Alignment.CenterHorizontally,
+ verticalArrangement = Arrangement.spacedBy(dimensions.spacing.small),
+ ) {
+ Text.Body.Medium(
+ textResId = R.string.pagination_error,
+ textAlign = TextAlign.Center,
+ )
+ Button(onClick = onRetry) {
+ Text.Vanilla(R.string.pagination_error_retry)
+ }
+ }
+ }
+}
diff --git a/presentation/favourites/src/main/res/values-es-rES/strings.xml b/presentation/favourites/src/main/res/values-es-rES/strings.xml
index c1d9eadf3..d3a0332cb 100644
--- a/presentation/favourites/src/main/res/values-es-rES/strings.xml
+++ b/presentation/favourites/src/main/res/values-es-rES/strings.xml
@@ -1,3 +1,5 @@
Favoritos>
+ No pudimos cargar mΓ‘s favoritos.
+ Reintentar
diff --git a/presentation/favourites/src/main/res/values-gl/strings.xml b/presentation/favourites/src/main/res/values-gl/strings.xml
index c1d9eadf3..f5bac7c4c 100644
--- a/presentation/favourites/src/main/res/values-gl/strings.xml
+++ b/presentation/favourites/src/main/res/values-gl/strings.xml
@@ -1,3 +1,5 @@
Favoritos>
+ Non puidemos cargar mΓ‘is favoritos.
+ Tentar de novo
diff --git a/presentation/favourites/src/main/res/values/strings.xml b/presentation/favourites/src/main/res/values/strings.xml
index c9fdcf43e..eb3836fe1 100644
--- a/presentation/favourites/src/main/res/values/strings.xml
+++ b/presentation/favourites/src/main/res/values/strings.xml
@@ -1,3 +1,5 @@
Favourites>
+ We couldn\'t load more favourites.
+ Retry
diff --git a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[0].png b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[0].png
index 44d8d27c5..1731629b7 100644
Binary files a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[0].png and b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[10].png b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[10].png
index 531f7fd06..6df0ad665 100644
Binary files a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[10].png and b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[10].png differ
diff --git a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[11].png b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[11].png
index c9bbe01c5..9fa5bb695 100644
Binary files a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[11].png and b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[11].png differ
diff --git a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[12].png b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[12].png
index 531f7fd06..6df0ad665 100644
Binary files a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[12].png and b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[12].png differ
diff --git a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[13].png b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[13].png
index c9bbe01c5..9fa5bb695 100644
Binary files a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[13].png and b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[13].png differ
diff --git a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[14].png b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[14].png
index 531f7fd06..6df0ad665 100644
Binary files a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[14].png and b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[14].png differ
diff --git a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[15].png b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[15].png
index c9bbe01c5..9fa5bb695 100644
Binary files a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[15].png and b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[15].png differ
diff --git a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[16].png b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[16].png
index 22985e6d3..83ed415e2 100644
Binary files a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[16].png and b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[16].png differ
diff --git a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[17].png b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[17].png
index a07bb8544..9be4ceca3 100644
Binary files a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[17].png and b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[17].png differ
diff --git a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[18].png b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[18].png
index de0ce0f44..38db2154f 100644
Binary files a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[18].png and b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[18].png differ
diff --git a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[19].png b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[19].png
index 24cea2a60..da76d9d30 100644
Binary files a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[19].png and b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[19].png differ
diff --git a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[1].png b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[1].png
index dc815b63f..f85357232 100644
Binary files a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[1].png and b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[2].png b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[2].png
index 43fc09ea6..101145992 100644
Binary files a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[2].png and b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[2].png differ
diff --git a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[3].png b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[3].png
index 87b131002..6914beff0 100644
Binary files a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[3].png and b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[3].png differ
diff --git a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[4].png b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[4].png
index 6465eedb7..a774c0a59 100644
Binary files a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[4].png and b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[4].png differ
diff --git a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[5].png b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[5].png
index 29a9b818c..133af49e4 100644
Binary files a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[5].png and b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[5].png differ
diff --git a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[6].png b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[6].png
index 2b33ddd5d..3c69f676d 100644
Binary files a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[6].png and b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[6].png differ
diff --git a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[7].png b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[7].png
index 9a7f086a2..1a75a4ab0 100644
Binary files a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[7].png and b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[7].png differ
diff --git a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[8].png b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[8].png
index 531f7fd06..6df0ad665 100644
Binary files a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[8].png and b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[8].png differ
diff --git a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[9].png b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[9].png
index c9bbe01c5..9fa5bb695 100644
Binary files a/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[9].png and b/presentation/favourites/src/test/snapshots/images/com.sottti.roller.coasters.presentation.favourites.ui_FavouritesUiSnapshotTest_snapshotTest[9].png differ
diff --git a/presentation/fixtures/build.gradle.kts b/presentation/fixtures/build.gradle.kts
index 523f8a2d7..07008c3b1 100644
--- a/presentation/fixtures/build.gradle.kts
+++ b/presentation/fixtures/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
}
android {
@@ -10,5 +7,5 @@ android {
}
dependencies {
- implementation(project(module.domain.model))
+ implementation(projects.domain.model)
}
diff --git a/presentation/fixtures/detekt-baseline.xml b/presentation/fixtures/detekt-baseline.xml
new file mode 100644
index 000000000..cf804da18
--- /dev/null
+++ b/presentation/fixtures/detekt-baseline.xml
@@ -0,0 +1,20 @@
+
+
+
+
+ PropertyName:RollerCoasterFixtures.kt:public const val fixtureAnotherStat: String = "94 meters"
+ PropertyName:RollerCoasterFixtures.kt:public const val fixtureAnotherStatDetail: String = "Top 83"
+ PropertyName:RollerCoasterFixtures.kt:public const val fixtureContentDescription: String = "content description"
+ PropertyName:RollerCoasterFixtures.kt:public const val fixtureParkName: String = "PortAventura Park"
+ PropertyName:RollerCoasterFixtures.kt:public const val fixtureRollerCoasterName: String = "Dragon Khan"
+ PropertyName:RollerCoasterFixtures.kt:public const val fixtureStat: String = "49 meters"
+ PropertyName:RollerCoasterFixtures.kt:public const val fixtureStatDetail: String = "Top 38"
+ TopLevelPropertyNaming:RollerCoasterFixtures.kt:public const val fixtureAnotherStat: String = "94 meters"
+ TopLevelPropertyNaming:RollerCoasterFixtures.kt:public const val fixtureAnotherStatDetail: String = "Top 83"
+ TopLevelPropertyNaming:RollerCoasterFixtures.kt:public const val fixtureContentDescription: String = "content description"
+ TopLevelPropertyNaming:RollerCoasterFixtures.kt:public const val fixtureParkName: String = "PortAventura Park"
+ TopLevelPropertyNaming:RollerCoasterFixtures.kt:public const val fixtureRollerCoasterName: String = "Dragon Khan"
+ TopLevelPropertyNaming:RollerCoasterFixtures.kt:public const val fixtureStat: String = "49 meters"
+ TopLevelPropertyNaming:RollerCoasterFixtures.kt:public const val fixtureStatDetail: String = "Top 38"
+
+
diff --git a/presentation/format/build.gradle.kts b/presentation/format/build.gradle.kts
index 8c7aaeec7..7e850ed71 100644
--- a/presentation/format/build.gradle.kts
+++ b/presentation/format/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.kotlin.ksp)
}
@@ -19,11 +16,11 @@ dependencies {
implementation(libs.compose.runtime)
implementation(libs.hilt)
implementation(platform(libs.compose.bom))
- implementation(project(module.domain.fixtures))
- implementation(project(module.domain.locales))
- implementation(project(module.domain.rollerCoasters))
- implementation(project(module.presentation.designSystem.colors))
- implementation(project(module.presentation.fixtures))
+ implementation(projects.domain.fixtures)
+ implementation(projects.domain.locales)
+ implementation(projects.domain.rollerCoasters)
+ implementation(projects.presentation.designSystem.colors)
+ implementation(projects.presentation.fixtures)
ksp(libs.hilt.compiler)
androidTestImplementation(libs.junit.ext)
diff --git a/presentation/format/detekt-baseline.xml b/presentation/format/detekt-baseline.xml
new file mode 100644
index 000000000..9ac7e60b3
--- /dev/null
+++ b/presentation/format/detekt-baseline.xml
@@ -0,0 +1,7 @@
+
+
+
+
+ ArgumentListWrapping:DisplayUnitFormatter.kt:DisplayUnitFormatter$( R.string.g_force, value.toDisplayFormat(appLanguage, defaultLocale), )
+
+
diff --git a/presentation/home/build.gradle.kts b/presentation/home/build.gradle.kts
deleted file mode 100644
index da48b6ea8..000000000
--- a/presentation/home/build.gradle.kts
+++ /dev/null
@@ -1,38 +0,0 @@
-import com.sottti.roller.coasters.buildSrc.module
-
-plugins {
- alias(libs.plugins.android.library)
- alias(libs.plugins.hilt)
- alias(libs.plugins.kotlin.android)
- alias(libs.plugins.kotlin.compose)
- alias(libs.plugins.kotlin.ksp)
- alias(libs.plugins.paparazzi)
-}
-
-android {
- namespace = "com.sottti.roller.coasters.presentation.home"
-}
-
-dependencies {
- implementation(libs.appcompat)
- implementation(libs.compose.material)
- implementation(libs.compose.navigation2)
- implementation(libs.hilt)
- implementation(libs.hilt.navigation.compose)
- implementation(platform(libs.compose.bom))
- implementation(project(module.domain.settings))
- implementation(project(module.presentation.aboutMe))
- implementation(project(module.presentation.designSystem.icons))
- implementation(project(module.presentation.designSystem.text))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.explore))
- implementation(project(module.presentation.favourites))
- implementation(project(module.presentation.navigation))
- implementation(project(module.presentation.previews))
- implementation(project(module.presentation.rollerCoasterDetails))
- implementation(project(module.presentation.search))
- implementation(project(module.presentation.settings))
- implementation(project(module.presentation.utils))
- ksp(libs.hilt.compiler)
- testImplementation(project(module.presentation.paparazzi))
-}
diff --git a/presentation/home/src/test/snapshots/images/com.sottti.roller.coasters.presentation.home.ui_HomeBottomBarUiSnapshotTest_snapshotTest[0].png b/presentation/home/src/test/snapshots/images/com.sottti.roller.coasters.presentation.home.ui_HomeBottomBarUiSnapshotTest_snapshotTest[0].png
deleted file mode 100644
index a8e76a652..000000000
Binary files a/presentation/home/src/test/snapshots/images/com.sottti.roller.coasters.presentation.home.ui_HomeBottomBarUiSnapshotTest_snapshotTest[0].png and /dev/null differ
diff --git a/presentation/home/src/test/snapshots/images/com.sottti.roller.coasters.presentation.home.ui_HomeBottomBarUiSnapshotTest_snapshotTest[1].png b/presentation/home/src/test/snapshots/images/com.sottti.roller.coasters.presentation.home.ui_HomeBottomBarUiSnapshotTest_snapshotTest[1].png
deleted file mode 100644
index 7f1e40d47..000000000
Binary files a/presentation/home/src/test/snapshots/images/com.sottti.roller.coasters.presentation.home.ui_HomeBottomBarUiSnapshotTest_snapshotTest[1].png and /dev/null differ
diff --git a/presentation/home/src/test/snapshots/images/com.sottti.roller.coasters.presentation.home.ui_HomeUiBottomBarUiSnapshotTest_snapshotTest[0].png b/presentation/home/src/test/snapshots/images/com.sottti.roller.coasters.presentation.home.ui_HomeUiBottomBarUiSnapshotTest_snapshotTest[0].png
deleted file mode 100644
index 9af830152..000000000
Binary files a/presentation/home/src/test/snapshots/images/com.sottti.roller.coasters.presentation.home.ui_HomeUiBottomBarUiSnapshotTest_snapshotTest[0].png and /dev/null differ
diff --git a/presentation/home/src/test/snapshots/images/com.sottti.roller.coasters.presentation.home.ui_HomeUiBottomBarUiSnapshotTest_snapshotTest[1].png b/presentation/home/src/test/snapshots/images/com.sottti.roller.coasters.presentation.home.ui_HomeUiBottomBarUiSnapshotTest_snapshotTest[1].png
deleted file mode 100644
index 90ce493b5..000000000
Binary files a/presentation/home/src/test/snapshots/images/com.sottti.roller.coasters.presentation.home.ui_HomeUiBottomBarUiSnapshotTest_snapshotTest[1].png and /dev/null differ
diff --git a/presentation/navigation-external/build.gradle.kts b/presentation/navigation-external/build.gradle.kts
index 514dbd7e5..827338f81 100644
--- a/presentation/navigation-external/build.gradle.kts
+++ b/presentation/navigation-external/build.gradle.kts
@@ -1,6 +1,5 @@
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.ksp)
}
diff --git a/presentation/navigation/build.gradle.kts b/presentation/navigation/build.gradle.kts
index 1e206861e..9bbc4966d 100644
--- a/presentation/navigation/build.gradle.kts
+++ b/presentation/navigation/build.gradle.kts
@@ -1,15 +1,11 @@
plugins {
- alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
- alias(libs.plugins.kotlin.compose)
+ alias(libs.plugins.kotlin.jvm)
alias(libs.plugins.kotlin.serialization)
}
-android {
- namespace = "com.sottti.roller.coasters.presentation.navigation"
-}
-
dependencies {
- implementation(libs.compose.navigation2)
+ api(platform(libs.compose.bom))
+ api(libs.compose.runtime)
+ api(libs.compose.runtime.saveable)
implementation(libs.kotlin.serialization.json)
}
diff --git a/presentation/navigation/detekt-baseline.xml b/presentation/navigation/detekt-baseline.xml
new file mode 100644
index 000000000..30e5de00d
--- /dev/null
+++ b/presentation/navigation/detekt-baseline.xml
@@ -0,0 +1,7 @@
+
+
+
+
+ NoConsecutiveBlankLines:NavigationDestination.kt:
+
+
diff --git a/presentation/navigation/src/main/kotlin/com/sottti/roller/coasters/presentation/navigation/NavigationDestination.kt b/presentation/navigation/src/main/kotlin/com/sottti/roller/coasters/presentation/navigation/NavigationDestination.kt
index 82c7834ed..e6d990240 100644
--- a/presentation/navigation/src/main/kotlin/com/sottti/roller/coasters/presentation/navigation/NavigationDestination.kt
+++ b/presentation/navigation/src/main/kotlin/com/sottti/roller/coasters/presentation/navigation/NavigationDestination.kt
@@ -21,7 +21,7 @@ public sealed interface NavigationDestination {
@Immutable
@Serializable
- public data object Home : NavigationDestination
+ public data object AppShell : NavigationDestination
@Immutable
@Serializable
diff --git a/presentation/navigation/src/main/kotlin/com/sottti/roller/coasters/presentation/navigation/NavigationDestinationMappers.kt b/presentation/navigation/src/main/kotlin/com/sottti/roller/coasters/presentation/navigation/NavigationDestinationMappers.kt
index 62a923244..e904f12d5 100644
--- a/presentation/navigation/src/main/kotlin/com/sottti/roller/coasters/presentation/navigation/NavigationDestinationMappers.kt
+++ b/presentation/navigation/src/main/kotlin/com/sottti/roller/coasters/presentation/navigation/NavigationDestinationMappers.kt
@@ -1,9 +1,9 @@
package com.sottti.roller.coasters.presentation.navigation
import com.sottti.roller.coasters.presentation.navigation.NavigationDestination.AboutMe
+import com.sottti.roller.coasters.presentation.navigation.NavigationDestination.AppShell
import com.sottti.roller.coasters.presentation.navigation.NavigationDestination.Explore
import com.sottti.roller.coasters.presentation.navigation.NavigationDestination.Favourites
-import com.sottti.roller.coasters.presentation.navigation.NavigationDestination.Home
import com.sottti.roller.coasters.presentation.navigation.NavigationDestination.Search
import com.sottti.roller.coasters.presentation.navigation.NavigationDestination.Settings
@@ -12,7 +12,7 @@ public fun String?.toNavigationDestination(): NavigationDestination =
AboutMe::class.qualifiedName -> AboutMe
Explore::class.qualifiedName -> Explore
Favourites::class.qualifiedName -> Favourites
- Home::class.qualifiedName -> Home
+ AppShell::class.qualifiedName -> AppShell
Search::class.qualifiedName -> Search
Settings::class.qualifiedName -> Settings
else -> Explore
diff --git a/presentation/paparazzi/build.gradle.kts b/presentation/paparazzi/build.gradle.kts
index 3fb499952..7858e8bc2 100644
--- a/presentation/paparazzi/build.gradle.kts
+++ b/presentation/paparazzi/build.gradle.kts
@@ -1,7 +1,16 @@
+import org.jetbrains.kotlin.gradle.dsl.JvmTarget
+
plugins {
alias(libs.plugins.kotlin.jvm)
}
+kotlin {
+ jvmToolchain(21)
+ compilerOptions {
+ jvmTarget.set(JvmTarget.JVM_21)
+ }
+}
+
dependencies {
implementation(libs.paparazzi.core)
}
diff --git a/presentation/paparazzi/detekt-baseline.xml b/presentation/paparazzi/detekt-baseline.xml
new file mode 100644
index 000000000..c42d52988
--- /dev/null
+++ b/presentation/paparazzi/detekt-baseline.xml
@@ -0,0 +1,8 @@
+
+
+
+
+ Filename:PIXEL_10_PRO_XL.kt:com.sottti.roller.coasters.presentation.paparazzi.PIXEL_10_PRO_XL.kt
+ TopLevelPropertyNaming:PIXEL_10_PRO_XL.kt:internal val PIXEL_10_PRO_XL: DeviceConfig = DeviceConfig( screenHeight = 2992, screenWidth = 1344, xdpi = 486, ydpi = 486, orientation = ScreenOrientation.PORTRAIT, uiMode = UiMode.NORMAL, nightMode = NightMode.NOTNIGHT, density = Density.create(560), fontScale = 1f, layoutDirection = LayoutDirection.LTR, locale = null, ratio = ScreenRatio.LONG, size = ScreenSize.NORMAL, keyboard = Keyboard.NOKEY, touchScreen = TouchScreen.FINGER, keyboardState = KeyboardState.SOFT, softButtons = true, navigation = Navigation.NONAV, screenRound = null, released = "August 20, 2025" )
+
+
diff --git a/presentation/previews/build.gradle.kts b/presentation/previews/build.gradle.kts
index 1ddffee3e..edaa49487 100644
--- a/presentation/previews/build.gradle.kts
+++ b/presentation/previews/build.gradle.kts
@@ -1,6 +1,5 @@
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
}
@@ -9,6 +8,6 @@ android {
}
dependencies {
- implementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(platform(libs.compose.bom))
}
diff --git a/presentation/previews/detekt-baseline.xml b/presentation/previews/detekt-baseline.xml
new file mode 100644
index 000000000..c59f389d9
--- /dev/null
+++ b/presentation/previews/detekt-baseline.xml
@@ -0,0 +1,14 @@
+
+
+
+
+ AnnotationSpacing:RollerCoasterPreviewDynamicColors.kt:RollerCoasterPreviewDynamicColors$@Preview( group = LIGHT_THEME_GROUP, device = DEVICE, name = "Red", wallpaper = RED_DOMINATED_EXAMPLE, ) @Preview( group = LIGHT_THEME_GROUP, device = DEVICE, name = "Blue", wallpaper = BLUE_DOMINATED_EXAMPLE, ) @Preview( group = LIGHT_THEME_GROUP, device = DEVICE, name = "Green", wallpaper = GREEN_DOMINATED_EXAMPLE, ) @Preview( group = LIGHT_THEME_GROUP, device = DEVICE, name = "Yellow", wallpaper = YELLOW_DOMINATED_EXAMPLE, ) @Preview( group = DARK_THEME_GROUP, device = DEVICE, uiMode = UI_MODE_NIGHT_YES or UI_MODE_TYPE_NORMAL, name = "Red", wallpaper = RED_DOMINATED_EXAMPLE, ) @Preview( group = DARK_THEME_GROUP, device = DEVICE, uiMode = UI_MODE_NIGHT_YES or UI_MODE_TYPE_NORMAL, name = "Blue", wallpaper = BLUE_DOMINATED_EXAMPLE, ) @Preview( group = DARK_THEME_GROUP, device = DEVICE, uiMode = UI_MODE_NIGHT_YES or UI_MODE_TYPE_NORMAL, name = "Green", wallpaper = GREEN_DOMINATED_EXAMPLE, ) @Preview( group = DARK_THEME_GROUP, device = DEVICE, uiMode = UI_MODE_NIGHT_YES or UI_MODE_TYPE_NORMAL, name = "Yellow", wallpaper = YELLOW_DOMINATED_EXAMPLE, ) @Retention(AnnotationRetention.BINARY) @Target(AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.FUNCTION) public annotation
+ ModifierListSpacing:RollerCoasterPreviewDynamicColors.kt:RollerCoasterPreviewDynamicColors$@Preview( group = LIGHT_THEME_GROUP, device = DEVICE, name = "Red", wallpaper = RED_DOMINATED_EXAMPLE, ) @Preview( group = LIGHT_THEME_GROUP, device = DEVICE, name = "Blue", wallpaper = BLUE_DOMINATED_EXAMPLE, ) @Preview( group = LIGHT_THEME_GROUP, device = DEVICE, name = "Green", wallpaper = GREEN_DOMINATED_EXAMPLE, ) @Preview( group = LIGHT_THEME_GROUP, device = DEVICE, name = "Yellow", wallpaper = YELLOW_DOMINATED_EXAMPLE, ) @Preview( group = DARK_THEME_GROUP, device = DEVICE, uiMode = UI_MODE_NIGHT_YES or UI_MODE_TYPE_NORMAL, name = "Red", wallpaper = RED_DOMINATED_EXAMPLE, ) @Preview( group = DARK_THEME_GROUP, device = DEVICE, uiMode = UI_MODE_NIGHT_YES or UI_MODE_TYPE_NORMAL, name = "Blue", wallpaper = BLUE_DOMINATED_EXAMPLE, ) @Preview( group = DARK_THEME_GROUP, device = DEVICE, uiMode = UI_MODE_NIGHT_YES or UI_MODE_TYPE_NORMAL, name = "Green", wallpaper = GREEN_DOMINATED_EXAMPLE, ) @Preview( group = DARK_THEME_GROUP, device = DEVICE, uiMode = UI_MODE_NIGHT_YES or UI_MODE_TYPE_NORMAL, name = "Yellow", wallpaper = YELLOW_DOMINATED_EXAMPLE, ) @Retention(AnnotationRetention.BINARY) @Target(AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.FUNCTION) public annotation
+ NoConsecutiveBlankLines:RollerCoasterPreviewDynamicColors.kt:
+ PreviewAnnotationNaming:RollerCoasterPreviewDynamicColors.kt:RollerCoasterPreviewDynamicColors
+ PreviewAnnotationNaming:RollerCoastersPreview.kt:RollerCoastersPreview
+ PreviewAnnotationNaming:RollerCoastersPreviewNoLocale.kt:RollerCoastersPreviewNoLocale
+ PreviewAnnotationNaming:RollerCoastersPreviewSingleLocale.kt:RollerCoastersPreviewSingleLocale
+ PreviewAnnotationNaming:RollerCoastersTallPreview.kt:RollerCoastersTallPreview
+
+
diff --git a/presentation/roller-coaster-details/build.gradle.kts b/presentation/roller-coaster-details/build.gradle.kts
index 93b6606ae..1161f304f 100644
--- a/presentation/roller-coaster-details/build.gradle.kts
+++ b/presentation/roller-coaster-details/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.kotlin.ksp)
alias(libs.plugins.paparazzi)
@@ -14,25 +11,26 @@ android {
dependencies {
implementation(libs.compose.material)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(libs.hilt)
implementation(libs.hilt.navigation.compose)
implementation(platform(libs.compose.bom))
- implementation(project(module.domain.fixtures))
- implementation(project(module.domain.rollerCoasters))
- implementation(project(module.presentation.designSystem.colors))
- implementation(project(module.presentation.designSystem.dimensions))
- implementation(project(module.presentation.designSystem.error))
- implementation(project(module.presentation.designSystem.icons))
- implementation(project(module.presentation.designSystem.images))
- implementation(project(module.presentation.designSystem.map))
- implementation(project(module.presentation.designSystem.progressIndicators))
- implementation(project(module.presentation.designSystem.text))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.format))
- implementation(project(module.presentation.navigation))
- implementation(project(module.presentation.previews))
- implementation(project(module.presentation.utils))
+ implementation(projects.domain.fixtures)
+ implementation(projects.domain.rollerCoasters)
+ implementation(projects.presentation.designSystem.colors)
+ implementation(projects.presentation.designSystem.dimensions)
+ implementation(projects.presentation.designSystem.error)
+ implementation(projects.presentation.designSystem.icons)
+ implementation(projects.presentation.designSystem.images)
+ implementation(projects.presentation.designSystem.map)
+ implementation(projects.presentation.designSystem.progressIndicators)
+ implementation(projects.presentation.designSystem.text)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.format)
+ implementation(projects.presentation.navigation)
+ implementation(projects.presentation.previews)
+ implementation(projects.presentation.utils)
ksp(libs.hilt.compiler)
testImplementation(libs.junit)
@@ -40,5 +38,5 @@ dependencies {
testImplementation(libs.mockk)
testImplementation(libs.truth)
testImplementation(libs.turbine)
- testImplementation(project(module.presentation.paparazzi))
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/roller-coaster-details/detekt-baseline.xml b/presentation/roller-coaster-details/detekt-baseline.xml
new file mode 100644
index 000000000..2dab03c28
--- /dev/null
+++ b/presentation/roller-coaster-details/detekt-baseline.xml
@@ -0,0 +1,10 @@
+
+
+
+
+ ArgumentListWrapping:RollerCoasterDetailsReducer.kt:( header = R.string.identity_header, name = RollerCoasterDetailsRow( headline = R.string.identity_name, trailing = name.current.value, ), formerNames = name.former?.value?.let { formerNames -> RollerCoasterDetailsRow( headline = R.string.identity_former_names, trailing = formerNames, ) })
+ SpacingAroundParens:RollerCoasterDetailsReducer.kt:(
+ Wrapping:RollerCoasterDetailsReducer.kt:(
+ Wrapping:RollerCoasterDetailsReducer.kt:( header = R.string.identity_header, name = RollerCoasterDetailsRow( headline = R.string.identity_name, trailing = name.current.value, ), formerNames = name.former?.value?.let { formerNames -> RollerCoasterDetailsRow( headline = R.string.identity_former_names, trailing = formerNames, ) })
+
+
diff --git a/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[0].png b/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[0].png
index c03d8a044..521761064 100644
Binary files a/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[0].png and b/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[1].png b/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[1].png
index b8c59a613..2ce8d7031 100644
Binary files a/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[1].png and b/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[2].png b/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[2].png
index 7de2e536c..b470523ab 100644
Binary files a/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[2].png and b/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[2].png differ
diff --git a/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[3].png b/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[3].png
index a40333814..a6aecec79 100644
Binary files a/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[3].png and b/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[3].png differ
diff --git a/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[4].png b/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[4].png
index 0aea57c47..7feb14d46 100644
Binary files a/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[4].png and b/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[4].png differ
diff --git a/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[5].png b/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[5].png
index de8e1db70..8f5c82b7e 100644
Binary files a/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[5].png and b/presentation/roller-coaster-details/src/test/snapshots/images/com.sottti.roller.coasters.presentation.roller.coaster.details.ui_RollerCoasterDetailsUiSnapshotTest_snapshotTest[5].png differ
diff --git a/presentation/search/build.gradle.kts b/presentation/search/build.gradle.kts
index b6213bf3d..ab5d3d528 100644
--- a/presentation/search/build.gradle.kts
+++ b/presentation/search/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.kotlin.ksp)
alias(libs.plugins.paparazzi)
@@ -15,24 +12,25 @@ android {
dependencies {
implementation(libs.compose.foundation)
implementation(libs.compose.material)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(libs.hilt)
implementation(libs.hilt.navigation.compose)
implementation(platform(libs.compose.bom))
- implementation(project(module.domain.fixtures))
- implementation(project(module.domain.rollerCoasters))
- implementation(project(module.presentation.designSystem.dimensions))
- implementation(project(module.presentation.designSystem.empty))
- implementation(project(module.presentation.designSystem.error))
- implementation(project(module.presentation.designSystem.icons))
- implementation(project(module.presentation.designSystem.progressIndicators))
- implementation(project(module.presentation.designSystem.rollerCoasterCard))
- implementation(project(module.presentation.designSystem.searchBar))
- implementation(project(module.presentation.designSystem.text))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.previews))
- implementation(project(module.presentation.topBars))
- implementation(project(module.presentation.utils))
+ implementation(projects.domain.fixtures)
+ implementation(projects.domain.rollerCoasters)
+ implementation(projects.presentation.designSystem.dimensions)
+ implementation(projects.presentation.designSystem.empty)
+ implementation(projects.presentation.designSystem.error)
+ implementation(projects.presentation.designSystem.icons)
+ implementation(projects.presentation.designSystem.progressIndicators)
+ implementation(projects.presentation.designSystem.rollerCoasterCard)
+ implementation(projects.presentation.designSystem.searchBar)
+ implementation(projects.presentation.designSystem.text)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.previews)
+ implementation(projects.presentation.topBars)
+ implementation(projects.presentation.utils)
ksp(libs.hilt.compiler)
- testImplementation(project(module.presentation.paparazzi))
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/search/detekt-baseline.xml b/presentation/search/detekt-baseline.xml
new file mode 100644
index 000000000..563cdc1c4
--- /dev/null
+++ b/presentation/search/detekt-baseline.xml
@@ -0,0 +1,8 @@
+
+
+
+
+ NoConsecutiveBlankLines:SearchReducer.kt:
+ ParameterNaming:SearchUi.kt:onListCreated: @Composable (LazyListState, TopAppBarScrollBehavior) -> Unit
+
+
diff --git a/presentation/search/src/main/kotlin/com/sottti/roller/coasters/presentation/search/ui/SearchUiContent.kt b/presentation/search/src/main/kotlin/com/sottti/roller/coasters/presentation/search/ui/SearchUiContent.kt
index 4469ce750..4e4fe14b8 100644
--- a/presentation/search/src/main/kotlin/com/sottti/roller/coasters/presentation/search/ui/SearchUiContent.kt
+++ b/presentation/search/src/main/kotlin/com/sottti/roller/coasters/presentation/search/ui/SearchUiContent.kt
@@ -25,6 +25,7 @@ import com.sottti.roller.coasters.presentation.search.model.SearchAction
import com.sottti.roller.coasters.presentation.search.model.SearchResult
import com.sottti.roller.coasters.presentation.search.model.SearchState
import com.sottti.roller.coasters.presentation.utils.override
+import com.sottti.roller.coasters.presentation.utils.plus
@Composable
@OptIn(ExperimentalMaterial3Api::class)
diff --git a/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[0].png b/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[0].png
index 976b1b74a..1439a3a8e 100644
Binary files a/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[0].png and b/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[1].png b/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[1].png
index 4b497af16..3bb617a44 100644
Binary files a/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[1].png and b/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[2].png b/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[2].png
index cf8d42eae..13121f47e 100644
Binary files a/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[2].png and b/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[2].png differ
diff --git a/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[3].png b/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[3].png
index 16fcd8947..ade9140d5 100644
Binary files a/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[3].png and b/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[3].png differ
diff --git a/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[4].png b/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[4].png
index 864d76903..7f13faf9c 100644
Binary files a/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[4].png and b/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[4].png differ
diff --git a/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[5].png b/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[5].png
index 00d44e688..1535568b8 100644
Binary files a/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[5].png and b/presentation/search/src/test/snapshots/images/com.sottti.roller.coasters.presentation.search.ui_SearchUiSnapshotTest_snapshotTest[5].png differ
diff --git a/presentation/settings/build.gradle.kts b/presentation/settings/build.gradle.kts
index d546af3b0..a797e0d82 100644
--- a/presentation/settings/build.gradle.kts
+++ b/presentation/settings/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.kotlin.ksp)
alias(libs.plugins.paparazzi)
@@ -14,22 +11,23 @@ android {
dependencies {
implementation(libs.compose.material)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(libs.hilt)
implementation(libs.hilt.navigation.compose)
implementation(platform(libs.compose.bom))
- implementation(project(module.domain.systemFeatures))
- implementation(project(module.domain.settings))
- implementation(project(module.presentation.designSystem.dialogs))
- implementation(project(module.presentation.designSystem.dimensions))
- implementation(project(module.presentation.designSystem.icons))
- implementation(project(module.presentation.designSystem.progressIndicators))
- implementation(project(module.presentation.designSystem.shapes))
- implementation(project(module.presentation.designSystem.switch))
- implementation(project(module.presentation.designSystem.text))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.previews))
- implementation(project(module.presentation.utils))
+ implementation(projects.domain.systemFeatures)
+ implementation(projects.domain.settings)
+ implementation(projects.presentation.designSystem.dialogs)
+ implementation(projects.presentation.designSystem.dimensions)
+ implementation(projects.presentation.designSystem.icons)
+ implementation(projects.presentation.designSystem.progressIndicators)
+ implementation(projects.presentation.designSystem.shapes)
+ implementation(projects.presentation.designSystem.switch)
+ implementation(projects.presentation.designSystem.text)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.previews)
+ implementation(projects.presentation.utils)
ksp(libs.hilt.compiler)
testImplementation(libs.junit)
@@ -37,5 +35,5 @@ dependencies {
testImplementation(libs.mockk)
testImplementation(libs.truth)
testImplementation(libs.turbine)
- testImplementation(project(module.presentation.paparazzi))
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/settings/detekt-baseline.xml b/presentation/settings/detekt-baseline.xml
new file mode 100644
index 000000000..4e18c84e1
--- /dev/null
+++ b/presentation/settings/detekt-baseline.xml
@@ -0,0 +1,16 @@
+
+
+
+
+ ChainWrapping:SettingsAppColorContrastReducer.kt:&&
+ CyclomaticComplexMethod:SettingsViewModel.kt:SettingsViewModel$private suspend fun SettingsState.handleStateMutationAction: SettingsState
+ FunctionOnlyReturningConstant:SettingsPresentationModule.kt:SettingsPresentationModule$@Provides @ViewModelScoped fun provideInitialSettingsState: SettingsState?
+ Indentation:SettingsAppColorContrastReducer.kt:
+ NoConsecutiveBlankLines:SettingsAppLanguageUiMapperTest.kt:SettingsAppLanguageUiMapperTest$
+ NoConsecutiveBlankLines:SettingsInitialState.kt:
+ Wrapping:SettingsAppLanguageReducerTest.kt:SettingsAppLanguageReducerTest$(
+ Wrapping:SettingsAppMeasurementSystemReducerTest.kt:SettingsAppMeasurementSystemReducerTest$(
+ Wrapping:SettingsAppThemeReducerTest.kt:SettingsAppThemeReducerTest$(
+ Wrapping:SettingsUiList.kt:(
+
+
diff --git a/presentation/settings/src/main/kotlin/com/sottti/roller/coasters/presentation/settings/ui/SettingsUiList.kt b/presentation/settings/src/main/kotlin/com/sottti/roller/coasters/presentation/settings/ui/SettingsUiList.kt
index b1c53d407..b9b8ca071 100644
--- a/presentation/settings/src/main/kotlin/com/sottti/roller/coasters/presentation/settings/ui/SettingsUiList.kt
+++ b/presentation/settings/src/main/kotlin/com/sottti/roller/coasters/presentation/settings/ui/SettingsUiList.kt
@@ -36,6 +36,7 @@ import com.sottti.roller.coasters.presentation.settings.model.SettingsAction.Lau
import com.sottti.roller.coasters.presentation.settings.model.SettingsAction.LaunchAppThemePicker
import com.sottti.roller.coasters.presentation.settings.model.SettingsState
import com.sottti.roller.coasters.presentation.utils.Spacer
+import com.sottti.roller.coasters.presentation.utils.plus
@Composable
internal fun SettingsList(
diff --git a/presentation/settings/src/test/kotlin/com/sottti/roller/coasters/presentation/settings/data/SettingsTestHelpers.kt b/presentation/settings/src/test/kotlin/com/sottti/roller/coasters/presentation/settings/data/SettingsTestHelpers.kt
index c4beb7890..e56ad027d 100644
--- a/presentation/settings/src/test/kotlin/com/sottti/roller/coasters/presentation/settings/data/SettingsTestHelpers.kt
+++ b/presentation/settings/src/test/kotlin/com/sottti/roller/coasters/presentation/settings/data/SettingsTestHelpers.kt
@@ -1,9 +1,13 @@
package com.sottti.roller.coasters.presentation.settings.data
-
import app.cash.turbine.TurbineTestContext
import app.cash.turbine.test
import com.google.common.truth.Truth.assertThat
+import com.sottti.roller.coasters.domain.settings.model.colorContrast.AppColorContrast
+import com.sottti.roller.coasters.domain.settings.model.dynamicColor.AppDynamicColor
+import com.sottti.roller.coasters.domain.settings.model.language.AppLanguage
+import com.sottti.roller.coasters.domain.settings.model.measurementSystem.AppMeasurementSystem
+import com.sottti.roller.coasters.domain.settings.model.theme.AppTheme
import com.sottti.roller.coasters.domain.settings.usecase.colorContrast.GetAppColorContrast
import com.sottti.roller.coasters.domain.settings.usecase.colorContrast.ObserveAppColorContrast
import com.sottti.roller.coasters.domain.settings.usecase.colorContrast.SetAppColorContrast
@@ -19,8 +23,18 @@ import com.sottti.roller.coasters.domain.settings.usecase.theme.GetAppTheme
import com.sottti.roller.coasters.domain.settings.usecase.theme.ObserveAppTheme
import com.sottti.roller.coasters.domain.settings.usecase.theme.SetAppTheme
import com.sottti.roller.coasters.domain.system.features.SystemFeatures
+import com.sottti.roller.coasters.presentation.settings.data.mapper.toDomain
+import com.sottti.roller.coasters.presentation.settings.model.AppSelectedLanguageState
+import com.sottti.roller.coasters.presentation.settings.model.DynamicColorCheckedState
+import com.sottti.roller.coasters.presentation.settings.model.SelectedAppColorContrastState
+import com.sottti.roller.coasters.presentation.settings.model.SelectedAppMeasurementSystemState
+import com.sottti.roller.coasters.presentation.settings.model.SelectedAppThemeState
import com.sottti.roller.coasters.presentation.settings.model.SettingsState
+import io.mockk.every
import io.mockk.mockk
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.emptyFlow
+import kotlinx.coroutines.flow.flowOf
internal fun createViewModel(
systemFeatures: SystemFeatures = mockk(),
@@ -29,11 +43,12 @@ internal fun createViewModel(
getAppMeasurementSystem: GetAppMeasurementSystem = mockk(),
getAppTheme: GetAppTheme = mockk(),
initialState: SettingsState? = null,
- observeAppColorContrast: ObserveAppColorContrast = mockk(),
- observeAppDynamicColor: ObserveAppDynamicColor = mockk(),
- observeAppLanguage: ObserveAppLanguage = mockk(),
- observeAppMeasurementSystem: ObserveAppMeasurementSystem = mockk(),
- observeAppTheme: ObserveAppTheme = mockk(),
+ observeAppColorContrast: ObserveAppColorContrast = defaultObserveAppColorContrast(initialState),
+ observeAppDynamicColor: ObserveAppDynamicColor = defaultObserveAppDynamicColor(initialState),
+ observeAppLanguage: ObserveAppLanguage = defaultObserveAppLanguage(initialState),
+ observeAppMeasurementSystem: ObserveAppMeasurementSystem =
+ defaultObserveAppMeasurementSystem(initialState),
+ observeAppTheme: ObserveAppTheme = defaultObserveAppTheme(initialState),
setAppColorContrast: SetAppColorContrast = mockk(),
setAppDynamicColor: SetAppDynamicColor = mockk(),
setAppLanguage: SetAppLanguage = mockk(),
@@ -58,8 +73,127 @@ internal fun createViewModel(
testInitialState = initialState,
)
-internal suspend fun SettingsViewModel.assertHasState(expected: SettingsState) =
- state.test { assertHasState(expected) }
+private fun defaultObserveAppColorContrast(
+ initialState: SettingsState?,
+): ObserveAppColorContrast {
+ val observeAppColorContrast = mockk()
+ val appColorContrastFlow =
+ initialState?.let { flowOf(it.appColorContrast()) } ?: emptyFlow()
+ every { observeAppColorContrast() } returns appColorContrastFlow
+ return observeAppColorContrast
+}
+
+private fun defaultObserveAppDynamicColor(
+ initialState: SettingsState?,
+): ObserveAppDynamicColor {
+ val observeAppDynamicColor = mockk()
+ val appDynamicColorFlow =
+ initialState?.let { flowOf(it.appDynamicColor()) } ?: emptyFlow()
+ every { observeAppDynamicColor() } returns appDynamicColorFlow
+ return observeAppDynamicColor
+}
+
+private fun defaultObserveAppLanguage(
+ initialState: SettingsState?,
+): ObserveAppLanguage {
+ val observeAppLanguage = mockk()
+ val appLanguageFlow =
+ initialState?.let { flowOf(it.appLanguage()) } ?: emptyFlow()
+ every { observeAppLanguage() } returns appLanguageFlow
+ return observeAppLanguage
+}
+
+private fun defaultObserveAppMeasurementSystem(
+ initialState: SettingsState?,
+): ObserveAppMeasurementSystem {
+ val observeAppMeasurementSystem = mockk()
+ val appMeasurementSystemFlow =
+ initialState?.let {
+ flowOf(it.appMeasurementSystem())
+ } ?: emptyFlow()
+ every { observeAppMeasurementSystem() } returns appMeasurementSystemFlow
+ return observeAppMeasurementSystem
+}
+
+private fun defaultObserveAppTheme(
+ initialState: SettingsState?,
+): ObserveAppTheme {
+ val observeAppTheme = mockk()
+ val appThemeFlow =
+ initialState?.let { flowOf(it.appTheme()) } ?: emptyFlow()
+ every { observeAppTheme() } returns appThemeFlow
+ return observeAppTheme
+}
+
+private fun SettingsState.appColorContrast(): AppColorContrast =
+ when (val selectedAppColorContrast = appColorContrast.listItem.selectedAppColorContrast) {
+ is SelectedAppColorContrastState.Loaded ->
+ selectedAppColorContrast.appColorContrast.toDomain()
+
+ SelectedAppColorContrastState.Loading -> AppColorContrast.System
+ }
+
+private fun SettingsState.appDynamicColor(): AppDynamicColor =
+ when (val checkedState = dynamicColor?.checkedState) {
+ is DynamicColorCheckedState.Loaded -> when {
+ checkedState.checked -> AppDynamicColor.Enabled
+ else -> AppDynamicColor.Disabled
+ }
+
+ DynamicColorCheckedState.Loading, null -> AppDynamicColor.Enabled
+ }
+
+private fun SettingsState.appLanguage(): AppLanguage =
+ when (val selectedAppLanguage = appLanguage.listItem.selectedAppLanguage) {
+ is AppSelectedLanguageState.Loaded -> selectedAppLanguage.appLanguage.toDomain()
+ AppSelectedLanguageState.Loading -> AppLanguage.System
+ }
+
+private fun SettingsState.appMeasurementSystem(): AppMeasurementSystem =
+ when (
+ val selectedAppMeasurementSystem =
+ appMeasurementSystem.listItem.selectedAppMeasurementSystem
+ ) {
+ is SelectedAppMeasurementSystemState.Loaded ->
+ selectedAppMeasurementSystem.appMeasurementSystem.toDomain()
+
+ SelectedAppMeasurementSystemState.Loading -> AppMeasurementSystem.System
+ }
+
+private fun SettingsState.appTheme(): AppTheme =
+ when (val selectedAppTheme = appTheme.listItem.selectedAppTheme) {
+ is SelectedAppThemeState.Loaded -> selectedAppTheme.appTheme.toDomain()
+ SelectedAppThemeState.Loading -> AppTheme.System
+ }
+
+internal suspend fun SettingsViewModel.assertHasState(
+ expected: SettingsState,
+) =
+ state.test {
+ assertHasState(expected)
+ cancelAndIgnoreRemainingEvents()
+ }
+
+internal suspend fun SettingsViewModel.assertHasState(
+ expected: SettingsState,
+ action: SettingsViewModel.() -> Unit,
+) =
+ state.test {
+ awaitItem()
+ delay(1)
+ this@assertHasState.action()
+ var current = this@assertHasState.state.value
+ var attempts = 0
+ while (current != expected && attempts < STATE_ASSERTION_ATTEMPTS) {
+ delay(1)
+ current = this@assertHasState.state.value
+ attempts++
+ }
+ assertThat(current).isEqualTo(expected)
+ cancelAndIgnoreRemainingEvents()
+ }
+
+private const val STATE_ASSERTION_ATTEMPTS = 100
internal suspend fun TurbineTestContext.assertHasState(expected: SettingsState) {
var state: SettingsState
diff --git a/presentation/settings/src/test/kotlin/com/sottti/roller/coasters/presentation/settings/data/SettingsViewModelTest.kt b/presentation/settings/src/test/kotlin/com/sottti/roller/coasters/presentation/settings/data/SettingsViewModelTest.kt
index 77003c651..17fdf6a8d 100644
--- a/presentation/settings/src/test/kotlin/com/sottti/roller/coasters/presentation/settings/data/SettingsViewModelTest.kt
+++ b/presentation/settings/src/test/kotlin/com/sottti/roller/coasters/presentation/settings/data/SettingsViewModelTest.kt
@@ -58,14 +58,30 @@ import io.mockk.coEvery
import io.mockk.coVerify
import io.mockk.every
import io.mockk.mockk
+import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.test.UnconfinedTestDispatcher
+import kotlinx.coroutines.test.resetMain
import kotlinx.coroutines.test.runTest
+import kotlinx.coroutines.test.setMain
+import org.junit.After
+import org.junit.Before
import org.junit.Test
@OptIn(ExperimentalCoroutinesApi::class)
internal class SettingsViewModelTest {
+ @Before
+ fun setUp() {
+ Dispatchers.setMain(UnconfinedTestDispatcher())
+ }
+
+ @After
+ fun tearDown() {
+ Dispatchers.resetMain()
+ }
+
@Test
fun `app color contrast picker selection change`() = runTest {
val systemFeatures = mockk()
@@ -88,9 +104,9 @@ internal class SettingsViewModelTest {
initialState = initialState,
)
- viewModel.onAction(AppColorContrastPickerSelectionChange(newSelectedColorContrast))
-
- viewModel.assertHasState(expectedState)
+ viewModel.assertHasState(expectedState) {
+ onAction(AppColorContrastPickerSelectionChange(newSelectedColorContrast))
+ }
}
@Test
@@ -108,9 +124,9 @@ internal class SettingsViewModelTest {
setAppColorContrast = setAppColorContrast,
)
- viewModel.onAction(ConfirmColorContrastPickerSelection(selectedAppColorContrast))
-
- viewModel.assertHasState(expectedState)
+ viewModel.assertHasState(expectedState) {
+ onAction(ConfirmColorContrastPickerSelection(selectedAppColorContrast))
+ }
coVerify(exactly = 1) { setAppColorContrast(selectedAppColorContrast.toDomain()) }
}
@@ -126,9 +142,9 @@ internal class SettingsViewModelTest {
)
val viewModel = createViewModel(initialState = initialState)
- viewModel.onAction(AppLanguagePickerSelectionChange(newSelectedLanguage))
-
- viewModel.assertHasState(expectedState)
+ viewModel.assertHasState(expectedState) {
+ onAction(AppLanguagePickerSelectionChange(newSelectedLanguage))
+ }
}
@Test
@@ -145,9 +161,9 @@ internal class SettingsViewModelTest {
setAppLanguage = setAppLanguage,
)
- viewModel.onAction(ConfirmAppLanguagePickerSelection(selectedAppLanguage))
-
- viewModel.assertHasState(expectedState)
+ viewModel.assertHasState(expectedState) {
+ onAction(ConfirmAppLanguagePickerSelection(selectedAppLanguage))
+ }
coVerify(exactly = 1) { setAppLanguage(selectedAppLanguage.toDomain()) }
}
@@ -163,9 +179,9 @@ internal class SettingsViewModelTest {
)
val viewModel = createViewModel(initialState = initialState)
- viewModel.onAction(AppMeasurementSystemPickerSelectionChange(newSelectedMeasurementSystem))
-
- viewModel.assertHasState(expectedState)
+ viewModel.assertHasState(expectedState) {
+ onAction(AppMeasurementSystemPickerSelectionChange(newSelectedMeasurementSystem))
+ }
}
@Test
@@ -182,9 +198,9 @@ internal class SettingsViewModelTest {
setAppMeasurementSystem = setAppMeasurementSystem,
)
- viewModel.onAction(ConfirmAppMeasurementSystemPickerSelection(selectedAppMeasurementSystem))
-
- viewModel.assertHasState(expectedState)
+ viewModel.assertHasState(expectedState) {
+ onAction(ConfirmAppMeasurementSystemPickerSelection(selectedAppMeasurementSystem))
+ }
coVerify(exactly = 1) { setAppMeasurementSystem(selectedAppMeasurementSystem.toDomain()) }
}
@@ -207,9 +223,9 @@ internal class SettingsViewModelTest {
systemFeatures = systemFeatures,
)
- viewModel.onAction(AppThemePickerSelectionChange(newSelectedTheme))
-
- viewModel.assertHasState(expectedState)
+ viewModel.assertHasState(expectedState) {
+ onAction(AppThemePickerSelectionChange(newSelectedTheme))
+ }
}
@Test
@@ -228,9 +244,9 @@ internal class SettingsViewModelTest {
setAppTheme = setAppTheme,
)
- viewModel.onAction(ConfirmAppThemePickerSelection(selectedAppTheme))
-
- viewModel.assertHasState(expectedState)
+ viewModel.assertHasState(expectedState) {
+ onAction(ConfirmAppThemePickerSelection(selectedAppTheme))
+ }
coVerify(exactly = 1) { setAppTheme(selectedAppTheme.toDomain()) }
}
@@ -284,10 +300,10 @@ internal class SettingsViewModelTest {
)
val viewModel = createViewModel(initialState = initialState)
- viewModel.onAction(DismissAppColorContrastNotAvailableMessage)
-
val expectedState = initialState.hideAppColorContrastNotAvailableMessage()
- viewModel.assertHasState(expectedState)
+ viewModel.assertHasState(expectedState) {
+ onAction(DismissAppColorContrastNotAvailableMessage)
+ }
}
@Test
@@ -302,10 +318,10 @@ internal class SettingsViewModelTest {
)
val viewModel = createViewModel(initialState = initialState)
- viewModel.onAction(DismissAppColorContrastPicker)
-
val expectedState = initialState.hideAppColorContrastPicker()
- viewModel.assertHasState(expectedState)
+ viewModel.assertHasState(expectedState) {
+ onAction(DismissAppColorContrastPicker)
+ }
}
@Test
@@ -315,10 +331,10 @@ internal class SettingsViewModelTest {
)
val viewModel = createViewModel(initialState = initialState)
- viewModel.onAction(DismissAppLanguagePicker)
-
val expectedState = initialState.hideAppLanguagePicker()
- viewModel.assertHasState(expectedState)
+ viewModel.assertHasState(expectedState) {
+ onAction(DismissAppLanguagePicker)
+ }
}
@Test
@@ -328,10 +344,10 @@ internal class SettingsViewModelTest {
)
val viewModel = createViewModel(initialState = initialState)
- viewModel.onAction(DismissAppMeasurementSystemPicker)
-
val expectedState = initialState.hideAppMeasurementSystemPicker()
- viewModel.assertHasState(expectedState)
+ viewModel.assertHasState(expectedState) {
+ onAction(DismissAppMeasurementSystemPicker)
+ }
}
@Test
@@ -342,10 +358,10 @@ internal class SettingsViewModelTest {
)
val viewModel = createViewModel(initialState = initialState)
- viewModel.onAction(DismissAppThemePicker)
-
val expectedState = initialState.hideAppThemePicker()
- viewModel.assertHasState(expectedState)
+ viewModel.assertHasState(expectedState) {
+ onAction(DismissAppThemePicker)
+ }
}
@Test
@@ -444,13 +460,13 @@ internal class SettingsViewModelTest {
initialState = initialState,
)
- viewModel.onAction(LaunchAppColorContrastPicker)
-
val expectedState = initialState.showAppColorContrastPicker(
selectedAppColorContrast = appColorContrast,
appColorContrastAvailable = colorContrastAvailable,
)
- viewModel.assertHasState(expectedState)
+ viewModel.assertHasState(expectedState) {
+ onAction(LaunchAppColorContrastPicker)
+ }
}
@Test
@@ -473,13 +489,13 @@ internal class SettingsViewModelTest {
initialState = initialState,
)
- viewModel.onAction(LaunchAppColorContrastPicker)
-
val expectedState = initialState.showAppColorContrastPicker(
selectedAppColorContrast = appColorContrast,
appColorContrastAvailable = colorContrastAvailable,
)
- viewModel.assertHasState(expectedState)
+ viewModel.assertHasState(expectedState) {
+ onAction(LaunchAppColorContrastPicker)
+ }
}
@Test
@@ -493,10 +509,10 @@ internal class SettingsViewModelTest {
initialState = initialState,
)
- viewModel.onAction(LaunchAppLanguagePicker)
-
val expectedState = initialState.showAppLanguagePicker(appLanguage)
- viewModel.assertHasState(expectedState)
+ viewModel.assertHasState(expectedState) {
+ onAction(LaunchAppLanguagePicker)
+ }
}
@Test
@@ -510,10 +526,10 @@ internal class SettingsViewModelTest {
initialState = initialState,
)
- viewModel.onAction(LaunchAppMeasurementSystemPicker)
-
val expectedState = initialState.showAppMeasurementSystemPicker(appMeasurementSystem)
- viewModel.assertHasState(expectedState)
+ viewModel.assertHasState(expectedState) {
+ onAction(LaunchAppMeasurementSystemPicker)
+ }
}
@Test
@@ -531,12 +547,12 @@ internal class SettingsViewModelTest {
initialState = initialState,
)
- viewModel.onAction(LaunchAppThemePicker)
-
val expectedState = initialState.showAppThemePicker(
lightDarkAppThemingAvailable = lightDarkSystemThemingAvailable,
selectedAppTheme = appTheme.toPresentationModel(selected = true),
)
- viewModel.assertHasState(expectedState)
+ viewModel.assertHasState(expectedState) {
+ onAction(LaunchAppThemePicker)
+ }
}
}
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[0].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[0].png
index c69cf4800..06253d257 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[0].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[10].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[10].png
index 4caa46aa0..29ea7a259 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[10].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[10].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[11].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[11].png
index 2d0f8b88a..311541448 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[11].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[11].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[12].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[12].png
index f47f4c331..331bbb946 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[12].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[12].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[13].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[13].png
index 08387c8a5..d7bc993f4 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[13].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[13].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[14].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[14].png
index 15f8be33b..61ca4b907 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[14].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[14].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[15].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[15].png
index 3c724a8bb..9409c4e8e 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[15].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[15].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[16].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[16].png
index 30b26248f..b22655a01 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[16].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[16].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[17].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[17].png
index 64cf692b2..a82824a6e 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[17].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[17].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[18].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[18].png
index 6e3878099..aaa815991 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[18].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[18].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[19].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[19].png
index 3c739cf49..1a7cfbc6a 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[19].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[19].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[1].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[1].png
index 201e78cfe..0aed7c6f8 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[1].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[20].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[20].png
index 9f2331852..6e153d6bb 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[20].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[20].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[21].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[21].png
index 620d473bc..356f57291 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[21].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[21].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[22].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[22].png
index 668a9b101..63cf4c79f 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[22].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[22].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[23].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[23].png
index ac1751355..4d5de6195 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[23].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[23].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[24].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[24].png
index 7aa1ca49f..bca0f0f62 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[24].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[24].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[25].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[25].png
index 4c9780d50..f046d70c2 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[25].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[25].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[26].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[26].png
index 5add56fd3..0b9d172d0 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[26].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[26].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[27].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[27].png
index c9a958fbe..c4939da9b 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[27].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[27].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[28].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[28].png
index 77dfcb328..8bfe379c4 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[28].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[28].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[29].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[29].png
index 7d05fae90..6207b6174 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[29].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[29].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[2].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[2].png
index 51a911bad..d7cf3893a 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[2].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[2].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[30].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[30].png
index f3997701c..fc7ad6a20 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[30].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[30].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[31].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[31].png
index fd3f4b192..072ae704a 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[31].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[31].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[32].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[32].png
index 2b9095e4b..051afde93 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[32].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[32].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[33].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[33].png
index e49bd23bf..14c73c44d 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[33].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[33].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[34].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[34].png
index 4f76b9ac1..fbc6ee05d 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[34].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[34].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[35].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[35].png
index 37ccbab02..76e0b253f 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[35].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[35].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[36].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[36].png
index 50d0d77f6..3b8ab2635 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[36].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[36].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[37].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[37].png
index 3d2fb0ebc..0eaf45e09 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[37].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[37].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[38].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[38].png
index 2d4499c91..37301cfdc 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[38].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[38].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[39].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[39].png
index b08b93535..5443d7998 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[39].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[39].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[3].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[3].png
index fb69b075a..b993e12cd 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[3].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[3].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[40].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[40].png
index fa2b07d60..f29ed747e 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[40].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[40].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[41].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[41].png
index 3332895a5..d80ac1a9a 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[41].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[41].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[42].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[42].png
index 3cf988439..aa3b36dc1 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[42].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[42].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[43].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[43].png
index ae3f28921..5c3ced1eb 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[43].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[43].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[44].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[44].png
index 04cae10d6..301467950 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[44].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[44].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[45].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[45].png
index f1ed89323..d8c9a8eb9 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[45].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[45].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[46].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[46].png
index 70f218d46..de5a23eb4 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[46].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[46].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[47].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[47].png
index 1c11c7b83..3b1219e08 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[47].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[47].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[48].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[48].png
index 295c0ff74..3c7eb90f6 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[48].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[48].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[49].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[49].png
index f448b64a4..e06375e00 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[49].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[49].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[4].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[4].png
index af15eaa0e..ae547379a 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[4].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[4].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[50].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[50].png
index d9ef94d48..3b103413d 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[50].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[50].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[51].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[51].png
index 5da04dd6b..ebd08bfe5 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[51].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[51].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[52].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[52].png
index b22e0815f..2c22f74da 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[52].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[52].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[53].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[53].png
index d4de52981..bd2db432e 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[53].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[53].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[54].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[54].png
index b22e0815f..2c22f74da 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[54].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[54].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[55].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[55].png
index d4de52981..bd2db432e 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[55].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[55].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[5].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[5].png
index ace439d8a..6696fd154 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[5].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[5].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[6].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[6].png
index 188be94aa..60becfed3 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[6].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[6].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[7].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[7].png
index 5a3b59156..25d91bfa4 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[7].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[7].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[8].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[8].png
index 9fd757227..ccb16040d 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[8].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[8].png differ
diff --git a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[9].png b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[9].png
index 68d8092a4..4023256c1 100644
Binary files a/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[9].png and b/presentation/settings/src/test/snapshots/images/com.sottti.roller.coasters.presentation.settings.ui_SettingsUiSnapshotTest_snapshotTest[9].png differ
diff --git a/presentation/string-provider/build.gradle.kts b/presentation/string-provider/build.gradle.kts
index a1d56c121..c95dd456b 100644
--- a/presentation/string-provider/build.gradle.kts
+++ b/presentation/string-provider/build.gradle.kts
@@ -1,6 +1,5 @@
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.ksp)
}
diff --git a/presentation/top-bars/build.gradle.kts b/presentation/top-bars/build.gradle.kts
index 9e3192894..f38373221 100644
--- a/presentation/top-bars/build.gradle.kts
+++ b/presentation/top-bars/build.gradle.kts
@@ -1,8 +1,5 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.paparazzi)
}
@@ -14,13 +11,14 @@ android {
dependencies {
implementation(libs.compose.material)
implementation(libs.compose.navigation2)
- implementation(libs.compose.ui.tooling)
+ debugImplementation(libs.compose.ui.tooling)
+ implementation(libs.compose.ui.tooling.preview)
implementation(platform(libs.compose.bom))
- implementation(project(module.presentation.designSystem.icons))
- implementation(project(module.presentation.designSystem.text))
- implementation(project(module.presentation.designSystem.themes))
- implementation(project(module.presentation.fixtures))
- implementation(project(module.presentation.navigation))
- implementation(project(module.presentation.previews))
- testImplementation(project(module.presentation.paparazzi))
+ implementation(projects.presentation.designSystem.icons)
+ implementation(projects.presentation.designSystem.text)
+ implementation(projects.presentation.designSystem.themes)
+ implementation(projects.presentation.fixtures)
+ implementation(projects.presentation.navigation)
+ implementation(projects.presentation.previews)
+ testImplementation(projects.presentation.paparazzi)
}
diff --git a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[0].png b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[0].png
index 341ec2439..32a52a0ec 100644
Binary files a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[0].png and b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[0].png differ
diff --git a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[10].png b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[10].png
index a3192cfc0..de9cf1ce6 100644
Binary files a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[10].png and b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[10].png differ
diff --git a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[11].png b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[11].png
index b2a7f2017..0a884c38f 100644
Binary files a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[11].png and b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[11].png differ
diff --git a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[1].png b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[1].png
index 44111883d..50e116897 100644
Binary files a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[1].png and b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[1].png differ
diff --git a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[2].png b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[2].png
index 341ec2439..32a52a0ec 100644
Binary files a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[2].png and b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[2].png differ
diff --git a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[3].png b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[3].png
index 44111883d..50e116897 100644
Binary files a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[3].png and b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[3].png differ
diff --git a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[4].png b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[4].png
index 341ec2439..32a52a0ec 100644
Binary files a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[4].png and b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[4].png differ
diff --git a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[5].png b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[5].png
index 44111883d..50e116897 100644
Binary files a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[5].png and b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[5].png differ
diff --git a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[6].png b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[6].png
index 341ec2439..32a52a0ec 100644
Binary files a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[6].png and b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[6].png differ
diff --git a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[7].png b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[7].png
index 44111883d..50e116897 100644
Binary files a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[7].png and b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[7].png differ
diff --git a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[8].png b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[8].png
index 9d6a7225d..22462fb31 100644
Binary files a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[8].png and b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[8].png differ
diff --git a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[9].png b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[9].png
index cb8021af5..6273e6391 100644
Binary files a/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[9].png and b/presentation/top-bars/src/test/snapshots/images/com.sottti.roller.coasters.presentation.topBars.ui_TopBarsUiSnapshotTest_snapshotTest[9].png differ
diff --git a/presentation/utils/build.gradle.kts b/presentation/utils/build.gradle.kts
index ae970622c..d11439142 100644
--- a/presentation/utils/build.gradle.kts
+++ b/presentation/utils/build.gradle.kts
@@ -1,6 +1,5 @@
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
}
diff --git a/presentation/utils/detekt-baseline.xml b/presentation/utils/detekt-baseline.xml
new file mode 100644
index 000000000..83ac7ac7e
--- /dev/null
+++ b/presentation/utils/detekt-baseline.xml
@@ -0,0 +1,9 @@
+
+
+
+
+ Indentation:Padding.kt:
+ MagicNumber:Combine.kt:3
+ MagicNumber:Combine.kt:5
+
+
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 183ee8823..e9f411357 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -1,4 +1,6 @@
-rootProject.name = "Roller Coasters"
+enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
+
+rootProject.name = "RollerCoasters"
pluginManagement {
repositories {
@@ -58,7 +60,7 @@ include(
":presentation:favourites",
":presentation:fixtures",
":presentation:format",
- ":presentation:home",
+ ":presentation:app-shell",
":presentation:navigation",
":presentation:navigation-external",
":presentation:paparazzi",
diff --git a/utils/lifecycle/build.gradle.kts b/utils/lifecycle/build.gradle.kts
index f42803e3e..c3dfd74c4 100644
--- a/utils/lifecycle/build.gradle.kts
+++ b/utils/lifecycle/build.gradle.kts
@@ -1,6 +1,5 @@
plugins {
alias(libs.plugins.android.library)
- alias(libs.plugins.kotlin.android)
}
android {
diff --git a/utils/time-dates/build.gradle.kts b/utils/time-dates/build.gradle.kts
index 69d05143c..ebeda3a40 100644
--- a/utils/time-dates/build.gradle.kts
+++ b/utils/time-dates/build.gradle.kts
@@ -1,11 +1,9 @@
-import com.sottti.roller.coasters.buildSrc.module
-
plugins {
alias(libs.plugins.kotlin.jvm)
}
dependencies {
- api(project(module.domain.model))
+ api(projects.domain.model)
implementation(libs.annotations)
testImplementation(libs.junit)
diff --git a/utils/time-dates/detekt-baseline.xml b/utils/time-dates/detekt-baseline.xml
new file mode 100644
index 000000000..48461e5db
--- /dev/null
+++ b/utils/time-dates/detekt-baseline.xml
@@ -0,0 +1,13 @@
+
+
+
+
+ MagicNumber:TimeMapper.kt:60
+ NoConsecutiveBlankLines:DateMapperTestStubs.kt:
+ NoConsecutiveBlankLines:TimeMapper.kt:
+ NoMultipleSpaces:DateMapperTestStubs.kt:
+ TopLevelPropertyNaming:DateMapper.kt:private val FULL_DATE_REGEX_PATTERN = Regex("""\d{4}-\d{2}-\d{2}""")
+ TopLevelPropertyNaming:DateMapper.kt:private val YEAR_MONTH_REGEX_PATTERN = Regex("""\d{4}-\d{1,2}""")
+ TopLevelPropertyNaming:DateMapper.kt:private val YEAR_ONLY_REGEX_PATTERN = Regex("""-?\d{4}""")
+
+