Closed arkivanov closed 7 months ago
The updates across various documentation and code files in the Decompose library primarily focus on improving clarity, updating serialization methods from Parcelable
to kotlinx-serialization
, and refining the handling of deep links and component contexts. These changes enhance user understanding and streamline the integration process for developers working with Kotlin Multiplatform projects.
File Path | Change Summary |
---|---|
decompose/src/.../DeeplinkUtils.kt |
Updated documentation to recommend a specific launchMode for Android deep links. |
docs/component/{back-button, instance-retaining}.md |
Removed version references in documentation. |
docs/component/{custom-component-context, scopes, state-preservation}.md |
Updated component context definitions and introduced new extensions for scopes. Transitioned state preservation to kotlinx-serialization . |
docs/extensions/compose.md |
Renamed animation argument to fallbackAnimation and removed version references. |
docs/faq.md |
Updated usage information for ApplicationLifecycle API. |
docs/getting-started/{installation, quick-start}.md |
Streamlined extension modules and updated configuration class annotations to @Serializable . |
docs/navigation/{overview, pages/overview, slot/overview, stack/...}.md |
Updated navigation components to use kotlinx-serialization and refined deep linking handling. Removed outdated references. |
mkdocs.yml |
Updated navigation structure in documentation settings. |
docs/getting-started/quick-start.md
and docs/getting-started/installation.md
address the need for clearer documentation and specific instructions on setup and code changes, which aligns with the objectives of this issue.🐰 Ode to Code by CodeRabbit
In the land of code, where the bits align, A rabbit hopped, leaving bugs behind. With a whisk of a tail, and a twitch of an ear, Updates rolled out, bringing much cheer. 🌟 Now serialize with ease, deep links delight, In Decompose’s docs, you’ll find your light!
docs/component/back-button.md (22)
Near line 7: This sentence does not start with an uppercase letter. Context: ...igation with back button `Child Stack` and `Child Pages` can automatically navigat... --- Near line 7: Possible spelling mistake found. Context: ...ed. All you need to do is to supply the `handleBackButton=true` argument when you initialize a na... --- Near line 13: Possible spelling mistake found. Context: ...ck button can be handled manually using `BackHandler` (comes from [Essenty](https://github.c... --- Near line 13: Possible spelling mistake found. Context: ...nually using `BackHandler` (comes from [Essenty](https://github.com/arkivanov/Essenty) ... --- Near line 13: Possible spelling mistake found. Context: ...Essenty) library), which is provided by `ComponentContext`. The `decompose` module adds Essenty's... --- Near line 13: Possible spelling mistake found. Context: ...ntContext`. The `decompose` module adds Essenty's `back-handler` module as `api` depend... --- Near line 13: Possible spelling mistake found. Context: ...adds Essenty's `back-handler` module as `api` dependency, so you don't need to expli... --- Near line 13: Possible spelling mistake. ‘familiarise’ is British English. Context: ...plicitly add it to your project. Please familiarise yourself with Essenty library, especial... --- Near line 13: Possible spelling mistake found. Context: ...oject. Please familiarise yourself with Essenty library, especially with the `BackHandl... --- Near line 13: Possible spelling mistake found. Context: ...th Essenty library, especially with the `BackHandler` and `BackDispatcher`. ### Usage examp... --- Near line 13: Possible spelling mistake found. Context: ..., especially with the `BackHandler` and `BackDispatcher`. ### Usage example ```kotlin import ... --- Near line 40: Possible spelling mistake found. Context: ...tton callbacks, e.g. `Child Stack` uses `BackHandler` to automatically pop the stack on back... --- Near line 54: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ...y on Android. The UI part is covered by Compose extensions, please see the [related doc... --- Near line 58: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ...button handling in Compose By default, Decompose doesn't propagate `LocalOnBackPressedDi... --- Near line 58: Possible spelling mistake found. Context: ...By default, Decompose doesn't propagate `LocalOnBackPressedDispatcherOwner` from Jetpack `activity-compose` librar... --- Near line 58: Possible spelling mistake found. Context: ...vity-compose` library. Therefore, using `BackHandler {}` Composable API from `activity-compo... --- Near line 58: Possible spelling mistake found. Context: ... will register the callback in the root `OnBackPressedDispatcher`. This will cause the Composable handle... --- Near line 60: Possible spelling mistake found. Context: ... component hierarchy. If you are using `BackHandler` from Jetpack `activity-compose` librar... --- Near line 62: Possible spelling mistake found. Context: ...mation. Another approach is to use the `BackHandler` provided by Essenty library and implem... --- Near line 62: Possible spelling mistake found. Context: ...is to use the `BackHandler` provided by Essenty library and implemented for you by Deco... --- Near line 62: Possible spelling mistake found. Context: ...mplemented for you by Decompose. Expose `BackHandler` from your component and register/unreg... --- Near line 110: Possible spelling mistake found. Context: ...} ``` Now we can use the newly created `BackHandler` Composable API similarly to the one pr...docs/component/custom-component-context.md (7)
Near line 3: Possible spelling mistake found. Context: ... Custom `ComponentContext` If you need `ComponentContext` to have extra functionality that is no... --- Near line 3: Possible missing comma found. Context: ...y of your choice. For instance, in some cases it might be useful to create a componen... --- Near line 5: Possible spelling mistake found. Context: ...onents. ## Create and implement custom ComponentContext To define a custom component context, ... --- Near line 7: Possible spelling mistake found. Context: ...t, create an interface that extends the `GenericComponentContext` interface, then implement it by delega... --- Near line 7: Possible spelling mistake found. Context: ... it by delegating parts to the existing `ComponentContext`. Also, implement the `componentContext... --- Near line 7: Possible spelling mistake found. Context: ...`ComponentContext`. Also, implement the `componentContextFactory` property to allow Decompose creating n... --- Near line 7: The preposition ‘to’ may be missing (allow someone to do something). Context: ...ponentContextFactory` property to allow Decompose creating new instances of the custom co...docs/component/instance-retaining.md (12)
Near line 3: Possible spelling mistake found. Context: ...d when configuration changes occur. The `ComponentContext` interface extends the `InstanceKeeperO... --- Near line 3: Possible spelling mistake found. Context: ...ComponentContext` interface extends the `InstanceKeeperOwner` interface, which provides the `Instanc... --- Near line 3: Possible spelling mistake found. Context: ...perOwner` interface, which provides the `InstanceKeeper` - a multiplatform abstraction for inst... --- Near line 3: Possible spelling mistake found. Context: ...instances retaining. It is provided by [Essenty](https://github.com/arkivanov/Essenty) ... --- Near line 5: Possible spelling mistake found. Context: ...e author). The `decompose` module adds Essenty's `instance-keeper` module as `api` dep... --- Near line 5: Possible spelling mistake found. Context: ...s Essenty's `instance-keeper` module as `api` dependency, so you don't need to expli... --- Near line 5: Possible spelling mistake. ‘familiarise’ is British English. Context: ...plicitly add it to your project. Please familiarise yourself with Essenty library, especial... --- Near line 5: Possible spelling mistake found. Context: ...oject. Please familiarise yourself with Essenty library, especially with the `InstanceK... --- Near line 5: Possible spelling mistake found. Context: ...th Essenty library, especially with the `InstanceKeeper`. ## Usage example ```kotlin import c... --- Near line 34: Possible spelling mistake found. Context: ...on Android. On the one hand, this makes `InstanceKeeper` no longer required. But on the other h... --- Near line 38: Using many exclamation marks might seem excessive (in this case: 6 exclamation marks for a text that’s 1203 characters long) Context: ... the hosting `Activity` or `Fragment`. !!! warning The `retainedComponent` fu... --- Near line 39: This sentence does not start with an uppercase letter. Context: ... hosting `Activity` or `Fragment`. !!! warning The `retainedComponent` function m...docs/component/scopes.md (19)
Near line 2: ‘Due to the fact that’ might be wordy. Consider a shorter alternative. Context: # Scoping jobs and subscriptions Due to the fact that components are lifecycle-aware, it is v... --- Near line 3: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase. Context: ...t components are lifecycle-aware, it is very easy to manage coroutine scopes and reactive... --- Near line 3: Possible spelling mistake found. Context: ...ecycle-aware, it is very easy to manage coroutine scopes and reactive subscriptions. ## ... --- Near line 5: Possible spelling mistake found. Context: ... reactive subscriptions. ## Creating a CoroutineScope in a component There are extensions fo... --- Near line 7: Possible spelling mistake found. Context: ...n a component There are extensions for `CoroutineScope` and `Lifecycle` [provided](https://git... --- Near line 7: Possible spelling mistake found. Context: ...eadme-ov-file#coroutines-extensions) by Essenty. Add the following dependency to your ... --- Near line 9: Possible spelling mistake found. Context: ... the following dependency to your build.gradle file. === "Groovy" ``` groovy ... --- Near line 23: Possible spelling mistake found. Context: ...coroutines:") ``` Use the Essenty extensions to create the `CoroutineScop... --- Near line 23: Possible spelling mistake found. Context: ...se the Essenty extensions to create the `CoroutineScope`. ```kotlin import com.arkivanov.decom... --- Near line 55: Possible spelling mistake found. Context: ...ad } } } ``` ## Creating a CoroutineScope that survives Android configuration cha... --- Near line 91: Possible spelling mistake found. Context: ...nce(mainContext) } } ``` ## Creating a Reaktive DisposableScope in a component There a... --- Near line 91: Possible spelling mistake found. Context: ...ontext) } } ``` ## Creating a Reaktive DisposableScope in a component There are extensions fo... --- Near line 93: Possible spelling mistake found. Context: ...n a component There are extensions for `DisposableScope` and `Lifecycle` [provided](https://git... --- Near line 93: Possible spelling mistake found. Context: ...=readme-ov-file#reaktive-extensions) by Essenty. Add the following dependency to your ... --- Near line 95: Possible spelling mistake found. Context: ... the following dependency to your build.gradle file. === "Groovy" ``` groovy ... --- Near line 109: Possible spelling mistake found. Context: ...e-reaktive: ") ``` Use the Essenty extensions to create the `DisposableSco... --- Near line 109: Possible spelling mistake found. Context: ...se the Essenty extensions to create the `DisposableScope`. ```kotlin import com.arkivanov.decom... --- Near line 140: Possible spelling mistake found. Context: ... } } } ``` ## Creating a Reaktive DisposableScope that survives Android c... --- Near line 140: Possible spelling mistake found. Context: ... } } } ``` ## Creating a Reaktive DisposableScope that survives Android configuration cha... docs/component/state-preservation.md (14)
Near line 3: Possible spelling mistake found. Context: ...or process death on Android or iOS. The `ComponentContext` interface extends the `StateKeeperOwne... --- Near line 3: Possible spelling mistake found. Context: ...ComponentContext` interface extends the `StateKeeperOwner` interface, which provides the `StateKe... --- Near line 3: Possible spelling mistake found. Context: ...perOwner` interface, which provides the `StateKeeper` API - a multiplatform abstraction for ... --- Near line 3: Possible spelling mistake found. Context: ... state preservation. It is provided by [Essenty](https://github.com/arkivanov/Essenty) ... --- Near line 5: Possible spelling mistake found. Context: ...e author). The `decompose` module adds Essenty's `state-keeper` module as `api` depend... --- Near line 5: Possible spelling mistake found. Context: ...adds Essenty's `state-keeper` module as `api` dependency, so you don't need to expli... --- Near line 5: Possible spelling mistake. ‘familiarise’ is British English. Context: ...plicitly add it to your project. Please familiarise yourself with Essenty library, especial... --- Near line 5: Possible spelling mistake found. Context: ...oject. Please familiarise yourself with Essenty library, especially with the `StateKeep... --- Near line 5: Possible spelling mistake found. Context: ...th Essenty library, especially with the `StateKeeper` API. Decompose relies on [kotlinx-ser... --- Near line 7: You might be missing the article “the” here. Context: ...`StateKeeper` API. Decompose relies on [kotlinx-serialization](https://github.co... --- Near line 7: Possible spelling mistake found. Context: ...StateKeeper` API. Decompose relies on [kotlinx-serialization](https://github.com/Kotlin/kotlinx.seri... --- Near line 74: Possible spelling mistake found. Context: ...state on non-Android targets Thanks to `kotlinx-serialization` the state can be serialized as JSON st... --- Near line 74: Possible spelling mistake found. Context: ...as JSON string and encoded as usual via `NSCoder` (iOS), file system (JVM), `localStorag... --- Near line 74: Possible spelling mistake found. Context: ...via `NSCoder` (iOS), file system (JVM), `localStorage` (Web), etc.docs/extensions/compose.md (46)
Near line 9: Possible spelling mistake found. Context: ...etpack-and-multiplatform-compose). ### ProGuard rules for Compose for Desktop (JVM) If... --- Near line 11: Possible spelling mistake found. Context: ...will need to add the following rule for ProGuard, so that the app works correctly in rel... --- Near line 11: The conjunction “so that” does not require a comma. Context: ...d to add the following rule for ProGuard, so that the app works correctly in release mode... --- Near line 19: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ...otlin/com/arkivanov/decompose/value) to Compose `State` use `Value.subscribeAsState(... --- Near line 19: The word ‘State .subscribeAsState(): State ` extension function: ```kotlin import... --- Near line 45: Possible spelling mistake found. Context: ...ing JetBrains Compose, you can have the `LifecycleRegistry` react to changes in the window state u... --- Near line 79: This sentence does not start with an uppercase letter. Context: ...eceive lifecycle events correctly. !!! note You can find the `runOnUiThread` m... --- Near line 85: Possible missing comma found. Context: ...vigation state manually In most of the cases there is no need to manually observe th... --- Near line 85: The word ‘Value `, which makes it possible to observe t... --- Near line 101: Possible spelling mistake found. Context: ...overview.md) navigation model provides [ChildStack](https://github.com/arkivanov/Decompose... --- Near line 101: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ...ecompose/router/stack/ChildStack.kt) as `Value ` that can be observed in a ... --- Near line 101: Possible spelling mistake found. Context: ...d `Composable` components following the `ChildStack` changes. Both Compose extension modul... --- Near line 103: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ...llowing the `ChildStack` changes. Both Compose extension modules provide the [Children... --- Near line 105: Possible spelling mistake found. Context: ...llowing features: - It listens for the `ChildStack` changes and displays the corresponding... --- Near line 107: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym. Context: ...figuration changes and process death. - It animates between children if there is a... --- Near line 206: This sentence does not start with an uppercase letter. Context: ...odifier.width(300.dp), ) } ``` !!! note Child Slot might not be suitable f... --- Near line 215: Possible spelling mistake found. Context: ...overview.md) navigation model provides [ChildPages](https://github.com/arkivanov/Decompose... --- Near line 215: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ...ecompose/router/pages/ChildPages.kt) as `Value ` that can be observed in a ... --- Near line 217: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ...rved in a `Composable` component. Both Compose extension modules provide the [Pages(..... --- Near line 219: Possible spelling mistake found. Context: ...llowing features: - It listens for the `ChildPages` changes and displays child components ... --- Near line 219: Possible spelling mistake found. Context: ...ges and displays child components using `HorizontalPager` or `VerticalPager` (see the related Je... --- Near line 219: Possible spelling mistake found. Context: ...d components using `HorizontalPager` or `VerticalPager` (see the related Jetpack Compose [docu... --- Near line 317: Usually, there’s no comma before “when”. Context: ...evious examples demonstrate simple cases, when all children have the same animation. B... --- Near line 346: ‘take into account’ might be wordy. Consider a shorter alternative. Context: ...f" width="512"> It is also possible to take into account the other child and the animation direc... --- Near line 368: The conjunction “so that” does not have a comma in front. Context: ... default stack animation is configurable, so that it's possible to avoid specifying the s... --- Near line 400: Possible spelling mistake found. Context: ...he animation block receives the current `ChildStack` and animates children using the provid... --- Near line 430: Possible spelling mistake found. Context: ... #### Implementing `StackAnimator` The `stackAnimation` function takes care of tracking the `C... --- Near line 430: Possible spelling mistake found. Context: ...on` function takes care of tracking the `ChildStack` changes. `StackAnimator` is only respo... --- Near line 430: Possible spelling mistake found. Context: ...e of tracking the `ChildStack` changes. `StackAnimator` is only responsible for manipulating t... --- Near line 430: Possible spelling mistake found. Context: ...` in the given `direction`, and calling `onFinished` at the end. ```kotlin import androidx... --- Near line 460: Possible spelling mistake found. Context: ...ished at the end } ``` #### Using `stackAnimator` function This is the simplest, but le... --- Near line 462: Possible spelling mistake found. Context: ...he simplest, but less powerful way. The `stackAnimator` function takes care of running the ani... --- Near line 494: Using many exclamation marks might seem excessive (in this case: 15 exclamation marks for a text that’s 9346 characters long) Context: ... examples. ## Predictive Back Gesture !!!warning Predictive Back Gesture supp... --- Near line 498: This sentence does not start with an uppercase letter. Context: ...lease use version 2.1.x. `Child Stack` supports the new [Android Predictive Back Gestur... --- Near line 500: Possible spelling mistake found. Context: ... To enable the gesture, first implement `BackHandlerOwner` interface in your component with `Chil... --- Near line 500: Possible spelling mistake found. Context: ...nent with `Child Stack`, then just pass `predictiveBackAnimation` to the `Children` function. ```kotlin... --- Near line 563: Possible spelling mistake found. Context: ...dard Android-like system animation The `androidPredictiveBackAnimatable` API resembles the standard back gestur... --- Near line 599: Possible spelling mistake found. Context: ...lly handles the gesture and manipulates `BackDispatcher` as needed. 1. Create `BackDispatcher`... --- Near line 601: Possible spelling mistake found. Context: ... `BackDispatcher` as needed. 1. Create `BackDispatcher` and assign it to a variable. 2. Create... --- Near line 602: Possible spelling mistake found. Context: ...gn it to a variable. 2. Create the root `DefaultComponentContext` and pass the previously created `BackD... --- Near line 602: Possible spelling mistake found. Context: ...ontext` and pass the previously created `BackDispatcher` as `backHandler` argument. 3. Pass the... --- Near line 602: Possible spelling mistake found. Context: ... previously created `BackDispatcher` as `backHandler` argument. 3. Pass the **same** `BackDi... --- Near line 603: Possible spelling mistake found. Context: ...Handler` argument. 3. Pass the **same** `BackDispatcher` to `PredictiveBackGestureOverlay`. ``... --- Near line 603: Possible spelling mistake found. Context: .... Pass the **same** `BackDispatcher` to `PredictiveBackGestureOverlay`. ```kotlin title="Using Composable Pr... --- Near line 635: Possible spelling mistake found. Context: ...he predictive back gesture, so it looks native-ish on iOS. ```kotlin title="In commonMain... --- Near line 748: Possible spelling mistake found. Context: ...an find samples in a separate branch - [compose-darwin/sample](https://github.com/arkivanov/De... docs/faq.md (15)
Near line 3: If this is a question, the word order is probably incorrect. Did you mean “Why are lifecycle callbacks”… ? Context: # FAQ ## Why lifecycle callbacks are not called on iOS (or any other non-And... --- Near line 5: Possible missing comma found. Context: ... non-Android platform)? On non-Android platforms the `Lifecycle` should usually be contr... --- Near line 5: Possible spelling mistake found. Context: ... can be done by creating an instance of `LifecycleRegistry`, passing it to `DefaultComponentContex... --- Near line 5: Possible spelling mistake found. Context: ...e of `LifecycleRegistry`, passing it to `DefaultComponentContext`, and then controlling the `LifecycleRe... --- Near line 5: Possible spelling mistake found. Context: ...onentContext`, and then controlling the `LifecycleRegistry` based on platform-specific lifecycle e... --- Near line 11: Possible spelling mistake found. Context: ...ion, not partially in one screen), then `ApplicationLifecycle` API from Essenty can be used. `Applica... --- Near line 11: Possible spelling mistake found. Context: ...), then `ApplicationLifecycle` API from Essenty can be used. `ApplicationLifecycle` can... --- Near line 11: Possible spelling mistake found. Context: ...ifecycle` API from Essenty can be used. `ApplicationLifecycle` can be destroyed manually if needed, e... --- Near line 11: Possible spelling mistake found. Context: ...when the root component is created in a `UIViewController` and the screen is closed. ### Lifecyc... --- Near line 15: Possible spelling mistake found. Context: ...Compose for Desktop (JVM) There is the `LifecycleController` API available on Compose for Desktop. ... --- Near line 19: Possible spelling mistake found. Context: ...h the key" This exception is thrown by `StateKeeper` when its `register` method is called s... --- Near line 21: Possible spelling mistake found. Context: ...component outside Compose. See the [docs](component/overview.md#root-componentcontext). Otherwise, a second instance can be c... --- Near line 22: Possible spelling mistake found. Context: ...poses. - If you are using more than one `childStack` in one component (or more than one nav... --- Near line 28: Possible spelling mistake found. Context: ...tories) for more information. - Prefer `pushNew` function instead of `push` when showin... --- Near line 29: Possible spelling mistake found. Context: ...ndle accidental double clicks. - Prefer `pushToFront` to prevent duplicated components with ...docs/getting-started/installation.md (27)
Near line 9: Possible spelling mistake found. Context: ...t contains some core features like: - [ComponentContext](../component/overview.md#componentcont... --- Near line 9: Unpaired symbol: ‘[’ seems to be missing Context: ...core features like: - [ComponentContext](../component/overview.md#componentconte... --- Near line 10: Unpaired symbol: ‘[’ seems to be missing Context: ...e lifecycle, state saving, etc. - [Value](../component/overview.md/#value-and-mut... --- Near line 11: Unpaired symbol: ‘[’ seems to be missing Context: ...state changes in the UI). - [Child Stack](../navigation/stack/overview.md) - stac... --- Near line 12: Possible spelling mistake found. Context: ...erview.md) - stack navigation model. - [defaultComponentContext](../getting-started/quick-start.md/#and... --- Near line 12: Unpaired symbol: ‘[’ seems to be missing Context: ...gation model. - [defaultComponentContext](../getting-started/quick-start.md/#andr... --- Near line 12: Possible spelling mistake found. Context: ...droid-with-compose) - creates a default `ComponentContext` attached to an Activity or Fragment on... --- Near line 15: Possible spelling mistake found. Context: ...is module should be imported into build.gradle.kts for shared application module at `k... --- Near line 15: Possible spelling mistake found. Context: ...le should be imported into build.gradle.kts for shared application module at `kotli... --- Near line 15: Possible spelling mistake found. Context: ...le.kts for shared application module at `kotlin.sourceSets.commonMain.dependencies`. I... --- Near line 17: Possible spelling mistake found. Context: ...es`. If you are having Android module (androidApp or composeApp if using KMP Wizard) this... --- Near line 17: Possible spelling mistake found. Context: ...re having Android module (androidApp or composeApp if using KMP Wizard) this dependency al... --- Near line 17: Possible spelling mistake found. Context: ...dency also needs to be added into build.gradle.kts for Android module at ```android.de... --- Near line 17: Possible spelling mistake found. Context: ...lso needs to be added into build.gradle.kts for Android module at ```android.depend... --- Near line 31: Possible spelling mistake found. Context: ...:") ``` ### Dependency on Essenty library Some functionality is actually... --- Near line 33: Possible spelling mistake found. Context: ... functionality is actually provided by [Essenty](https://github.com/arkivanov/Essenty) ... --- Near line 33: Possible spelling mistake found. Context: .../github.com/arkivanov/Essenty) library. Essenty is implemented by the same author and p... --- Near line 33: Possible spelling mistake found. Context: ...des very basic things like `Lifecycle`, `StateKeeper`, etc. Most important Essenty modules a... --- Near line 33: Possible spelling mistake found. Context: ...le`, `StateKeeper`, etc. Most important Essenty modules are added to the `decompose` mo... --- Near line 33: Possible spelling mistake found. Context: ... are added to the `decompose` module as `api` dependency, so you don't have to add t... --- Near line 33: Possible spelling mistake. ‘familiarise’ is British English. Context: ...d them manually to your project. Please familiarise yourself with Essenty library. !!! not... --- Near line 33: Possible spelling mistake found. Context: ...oject. Please familiarise yourself with Essenty library. !!! note If you are targe... --- Near line 35: This sentence does not start with an uppercase letter. Context: ...ise yourself with Essenty library. !!! note If you are targetting Android, make... --- Near line 36: Possible spelling mistake found. Context: ...senty library. !!! note If you are targetting Android, make sure you applied the [kot... --- Near line 36: Possible spelling mistake found. Context: ...ing Android, make sure you applied the [kotlin-parcelize](https://developer.android.com/kotlin/p... --- Near line 62: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ...ws (older alternative to Compose UI) to Decompose components. Please head to the correspo... --- Near line 80: Possible missing comma found. Context: ...mework For using Decompose on your iOS project you need to export it to the iOS Framew... docs/getting-started/quick-start.md (59)
Near line 5: Use “the” before the superlative. Context: ...be used to kick-start your project. ## A simplest component ```kotlin class Roo... --- Near line 23: Possible spelling mistake found. Context: ...iews (e.g. for Compose or SwiftUI). ## ComponentContext [ComponentContext](../component/overvi... --- Near line 25: Possible spelling mistake found. Context: ...ose or SwiftUI). ## ComponentContext [ComponentContext](../component/overview.md#componentcont... --- Near line 25: Unpaired symbol: ‘[’ seems to be missing Context: ... ## ComponentContext [ComponentContext](../component/overview.md#componentconte... --- Near line 25: Did you mean “or”? ‘Of’ refers to parts of a whole, while ‘or’ refers to alternatives. Context: ... is probably the most important concept of Decompose. It is an interface that prov... --- Near line 25: Possible spelling mistake found. Context: ...vation, instance retaining (aka Android ViewModel), back button handling, etc. Each compo... --- Near line 25: Possible spelling mistake found. Context: ...ndling, etc. Each component has its own `ComponentContext` provided by Decompose. If your compon... --- Near line 27: Possible spelling mistake found. Context: ... Decompose. If your component requires `ComponentContext`, just pass it via constructor. You can... --- Near line 27: Possible spelling mistake found. Context: ... also use the delegation pattern to add `ComponentContext` to `this` scope. ```kotlin import com... --- Near line 51: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ...e provides an observable state holder - `Value`. It offers great integration with vari... --- Near line 51: Possible spelling mistake found. Context: ...Kotlin/React, etc. You can also convert Reaktive `Observable` or coroutines `Flow` to `V... --- Near line 51: Possible spelling mistake found. Context: ...n also convert Reaktive `Observable` or coroutines `Flow` to `Value`, if needed. ```kotli... --- Near line 51: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ...ve `Observable` or coroutines `Flow` to `Value`, if needed. ```kotlin import com.arki... --- Near line 84: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ... Observing Value in Compose Observing `Value` in Compose is easy, just use the `subs... --- Near line 84: Possible spelling mistake found. Context: ...Value` in Compose is easy, just use the `subscribeAsState` extension function. ```kotlin import ... --- Near line 111: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym. Context: ... ) } } } ``` ### Observing Value in SwiftUI ```swift struct Detai... --- Near line 133: Possible spelling mistake found. Context: ...tem } } } ``` #### What is StateValue [StateValue](https://github.com/arkiva... --- Near line 135: Possible spelling mistake found. Context: ... } } ``` #### What is StateValue [StateValue](https://github.com/arkivanov/Decompose... --- Near line 135: Unpaired symbol: ‘[’ seems to be missing Context: ...`` #### What is StateValue [StateValue](https://github.com/arkivanov/Decompose/... --- Near line 135: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ...eValue.swift) is a property wrapper for `Value` that makes it observable in SwiftUI. U... --- Near line 135: Consider adding a comma after ‘Unfortunately’ for more clarity. Context: ...e` that makes it observable in SwiftUI. Unfortunately it [does not look possible](https://git... --- Near line 135: The preposition “into” seems more likely in this position than the preposition “in”. Context: ...ry or framework, so it has to be copied in your project. ### Observing Value in o... --- Near line 141: Possible spelling mistake found. Context: ...platforms and UI frameworks. ### Using Reaktive or coroutines The state can be also ex... --- Near line 141: Possible spelling mistake found. Context: ...d UI frameworks. ### Using Reaktive or coroutines The state can be also exposed using Re... --- Near line 143: These words/punctuation marks might seem a little out of order. For clarity and coherence, try switching them around. Context: ...g Reaktive or coroutines The state can be also exposed using Reaktive `Observable` or ... --- Near line 143: Possible spelling mistake found. Context: ...es The state can be also exposed using Reaktive `Observable` or coroutines `Flow`, or a... --- Near line 143: Possible spelling mistake found. Context: ... exposed using Reaktive `Observable` or coroutines `Flow`, or any other reactive library. ... --- Near line 155: Possible spelling mistake found. Context: ... child component. Decompose relies on [kotlinx-serialization](https://github.com/Kotlin/kotlinx.seri... --- Near line 155: Possible spelling mistake found. Context: ...notated as `@Serializable`, or a custom serializer should be implemented manually. ### Us... --- Near line 292: Possible spelling mistake found. Context: ... } ) } } ``` #### What is StackView? [StackView](https://github.com/arkiva... --- Near line 294: Possible spelling mistake found. Context: ... } } ``` #### What is StackView? [StackView](https://github.com/arkivanov/Decompose... --- Near line 294: Unpaired symbol: ‘[’ seems to be missing Context: ...``` #### What is StackView? [StackView](https://github.com/arkivanov/Decompose/... --- Near line 304: Possible spelling mistake found. Context: ...omponent ### Android with Compose Use `defaultComponentContext` extension function to create the root ... --- Near line 304: Possible spelling mistake found. Context: ...` extension function to create the root `ComponentContext` in an `Activity` or a `Fragment`. !!!... --- Near line 306: This sentence does not start with an uppercase letter. Context: ... in an `Activity` or a `Fragment`. !!! warning The `defaultComponentContext` func... --- Near line 343: Possible spelling mistake found. Context: ... } } ``` ### Desktop with Compose Use `LifecycleController` to bind the root lifecycle with the ma... --- Near line 343: Possible spelling mistake found. Context: ...he main window state. See an example of `runOnUiThread` function here - [Utils.kt](https://git... --- Near line 390: Possible spelling mistake found. Context: ...mpose or SwiftUI (with the experimental ApplicationLifecycle) !!!warning Use this approach onl... --- Near line 396: Possible spelling mistake found. Context: ... In your Xcode project declare a simple `AppDelegate` containing the `RootComponent`. ```sw... --- Near line 396: Possible spelling mistake found. Context: ...e a simple `AppDelegate` containing the `RootComponent`. ```swift class AppDelegate: NSObject... --- Near line 406: Possible spelling mistake found. Context: ...ng Compose*, create a Kotlin file named `RootViewController.kt` in your shared module in `iosMain` ... --- Near line 406: Possible spelling mistake found. Context: ...Controller.kt` in your shared module in `iosMain` source set with the following content.... --- Near line 406: Possible spelling mistake found. Context: ...with the following content. Then create `RootView` displaying `RootViewController`. ```k... --- Near line 406: Possible spelling mistake found. Context: ...tent. Then create `RootView` displaying `RootViewController`. ```kotlin import androidx.compose.ui... --- Near line 431: Possible spelling mistake found. Context: ...xt: Context) { } } ``` Step 3. Use `AppDelegate` in your application entrypoint. ```sw... --- Near line 431: Possible spelling mistake found. Context: .... Use `AppDelegate` in your application entrypoint. ```swift @main struct iOSApp: App { ... --- Near line 447: Possible spelling mistake found. Context: ...se or SwiftUI (without the experimental ApplicationLifecycle) Step 1. Create `RootHolder` class tha... --- Near line 449: Possible spelling mistake found. Context: ...l ApplicationLifecycle) Step 1. Create `RootHolder` class that holds the root component an... --- Near line 473: Possible spelling mistake found. Context: ...) } } ``` Step 2. Declare a simple `AppDelegate` containing `RootHolder` ```swift clas... --- Near line 481: Possible spelling mistake found. Context: ...ng Compose*, create a Kotlin file named `RootViewController.kt` in your shared module in `iosMain` ... --- Near line 481: Possible spelling mistake found. Context: ...Controller.kt` in your shared module in `iosMain` source set with the following content.... --- Near line 481: Possible spelling mistake found. Context: ...with the following content. Then create `RootView` displaying `RootViewController`. ```k... --- Near line 481: Possible spelling mistake found. Context: ...tent. Then create `RootView` displaying `RootViewController`. ```kotlin import androidx.compose.ui... --- Near line 506: Possible spelling mistake found. Context: ...xt: Context) { } } ``` Step 4. Use `AppDelegate` in your `App` entrypoint. ```swift @m... --- Near line 506: Possible spelling mistake found. Context: ...Step 4. Use `AppDelegate` in your `App` entrypoint. ```swift @main struct iOSApp: App { ... --- Near line 537: Possible spelling mistake found. Context: ...eb) In the place where you create your `RootComponent`: 1. Initialize a `LifecycleRegistry`.... --- Near line 539: Possible spelling mistake found. Context: ... your `RootComponent`: 1. Initialize a `LifecycleRegistry`. 2. Pass it into the root `ComponentCo... --- Near line 540: Possible spelling mistake found. Context: ...ycleRegistry`. 2. Pass it into the root `ComponentContext`. 3. Attach the `LifecycleRegistry` to ... --- Near line 541: Possible spelling mistake found. Context: ... root `ComponentContext`. 3. Attach the `LifecycleRegistry` to the `document` via an extension fun...docs/navigation/children/overview.md (42)
Near line 5: Possible spelling mistake found. Context: ... Navigation`. The API is based around [NavState](https://github.com/arkivanov/Decompose... --- Near line 5: Possible spelling mistake found. Context: ...mpose/router/children/NavState.kt) and [ChildNavState](https://github.com/arkivanov/Decompose... --- Near line 5: Possible spelling mistake found. Context: ... that should be implemented by clients. `NavState` represents a persistent state of the n... --- Near line 5: Possible spelling mistake found. Context: ...lds a navigation state for each child - `ChildNavState`. Both `NavState` and `ChildNavState` m... --- Near line 5: Possible spelling mistake found. Context: ... for each child - `ChildNavState`. Both `NavState` and `ChildNavState` must be immutable,... --- Near line 5: Possible spelling mistake found. Context: ... - `ChildNavState`. Both `NavState` and `ChildNavState` must be immutable, and correctly imple... --- Near line 5: Possible spelling mistake found. Context: ...e, and correctly implement `equals` and `hashCode` methods (or just be data objects/class... --- Near line 5: Possible spelling mistake found. Context: ...ere must be no duplicated (by equality) `ChildNavState.configuration` within a `NavState`. Th... --- Near line 5: Possible spelling mistake found. Context: ... `ChildNavState.configuration` within a `NavState`. The navigation is performed by trans... --- Near line 7: Possible spelling mistake found. Context: ...s performed by transforming the current `NavState` to a new one. The `Generic Navigation`... --- Near line 7: Possible spelling mistake found. Context: ...alculates diffs between the old list of `ChildNavState` and the new one, and manipulates child... --- Near line 9: Possible spelling mistake found. Context: ...pulates child components as needed. ## ChildNavState `ChildNavState` represents a state of ... --- Near line 11: This sentence does not start with an uppercase letter. Context: ...ded. ## ChildNavState `ChildNavState` represents a state of a child component. It holds ... --- Near line 11: The word ‘unique’ is a noun or an adjective. A verb is missing or misspelled, or maybe a comma is missing. Context: ...ioned earlier, the `Configuration` must unique within the `NavState`. The `Status` ca... --- Near line 11: Possible spelling mistake found. Context: ... `Configuration` must unique within the `NavState`. The `Status` can be one of the follo... --- Near line 15: Use a comma before “and” if it connects two independent clauses (unless they are closely connected and short). Context: ...D` - The child component is instantiated and its maximum lifecycle state is `RESUMED... --- Near line 17: Use a comma before “and” if it connects two independent clauses (unless they are closely connected and short). Context: ...D` - The child component is instantiated and its maximum lifecycle state is `STARTED... --- Near line 19: Use a comma before “and” if it connects two independent clauses (unless they are closely connected and short). Context: ...D` - The child component is instantiated and its maximum lifecycle state is `CREATED... --- Near line 21: Did you mean to use the possessive pronoun “its”? Context: ...nt is destroyed but still managed, e.g. it's state may be saved and restored later. ... --- Near line 23: Possible spelling mistake found. Context: ...m the navigation, you should remove its `ChildNavState` from the `NavState` altogether. The [... --- Near line 23: Possible spelling mistake found. Context: ...uld remove its `ChildNavState` from the `NavState` altogether. The [SimpleChildNavState]... --- Near line 25: Possible spelling mistake found. Context: ...` from the `NavState` altogether. The [SimpleChildNavState](https://github.com/arkivanov/Decompose... --- Near line 25: Possible spelling mistake found. Context: ...eChildNavState.kt) class implements the `ChildNavState` interfaces. It can be used in simple c... --- Near line 51: In this context, ‘type’ should agree in number with the noun after ‘of’. Context: ...ing type parameters: - `C` - a type of component configurations. - `T` - a type of components. - `E` - ... --- Near line 52: In this context, ‘type’ should agree in number with the noun after ‘of’. Context: ...onent configurations. - `T` - a type of components. - `E` - a type of navigation events. -... --- Near line 53: In this context, ‘type’ should agree in number with the noun after ‘of’. Context: ...a type of components. - `E` - a type of navigation events. - `N` - a type of navigation state, mu... --- Near line 54: Possible spelling mistake found. Context: ...ype of navigation state, must implement `NavState` interface. - `S` - a type of the resul... --- Near line 55: It looks like there might be a possessive apostrophe missing. Consider inserting it. Context: ...erface. - `S` - a type of the resulting children state. The `children` function accepts... --- Near line 59: Possible spelling mistake found. Context: ...ource and performs the navigation. The [SimpleNavigation](https://github.com/arkivanov/Decompose... --- Near line 60: Possible missing comma found. Context: ...on is not required. - `key: String` - a key of the navigation, must be unique if th... --- Near line 62: Possible spelling mistake found. Context: ...aves the provided navigation state into `SerializableContainer`, called when the hosting component goe... --- Near line 63: Possible spelling mistake found. Context: ... the navigation state from the provided `SerializableContainer`. The restored navigation state must ha... --- Near line 66: Possible spelling mistake found. Context: ...very time the navigation state changes, `oldState` is `null` when called first time durin... --- Near line 66: Possible spelling mistake. ‘initialisation’ is British English. Context: ...is `null` when called first time during initialisation. - `onEventComplete: (event: E, newSta... --- Near line 68: Possible spelling mistake. ‘initialisation’ is British English. Context: ...g should be disabled. Called during the initialisation and after each navigation event. - `chi... --- Near line 69: Possible spelling mistake found. Context: ...onentContext: ComponentContext) -> T` - childFactory a factory function that creates new chi... --- Near line 71: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ...hildren` function returns an observable `Value` of the resulting children state. ### ... --- Near line 90: Possible spelling mistake found. Context: ...described above. It accepts an optional `KSerializer` argument, so that the navigation st... --- Near line 90: Possible spelling mistake found. Context: ...state is never saved or restored if the serializer is not provided. ## Examples ### A st... --- Near line 96: Unpaired symbol: ‘[’ seems to be missing Context: ... A stack that can be empty [Child Stack](../stack/overview.md) provided by Decom... --- Near line 96: Unless you want to emphasize “not”, use “cannot” which is more common. Context: ...tack/overview.md) provided by Decompose can not be empty. Here is an example of using t... --- Near line 203: Possible spelling mistake found. Context: ...roject See the sample project has the [CustomNavigationComponent](https://github.com/arkivanov/Decompose... docs/navigation/overview.md (26)
Near line 3: Possible spelling mistake found. Context: ...navigation/stack/overview.md) using the `childStack` extension function. But if you need to... --- Near line 3: The expression “come in handy” is rather colloquial. Consider replacing it to add a more formal tone to your writing. Context: ...witch child components, then navigation comes in handy. Currently, Decompose provides two pre... --- Near line 5: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ... navigation comes in handy. Currently, Decompose provides two predefined navigation mode... --- Near line 7: Unpaired symbol: ‘[’ seems to be missing Context: ...fined navigation models: - [Child Stack](../navigation/stack/overview.md) - pref... --- Near line 8: Unpaired symbol: ‘[’ seems to be missing Context: ...and navigate between them. - [Child Slot](../navigation/slot/overview.md) - prefe... --- Near line 9: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym. Context: ...smiss one child component at a time. - [Child Pages](../navigation/pages/overview.md)... --- Near line 9: Unpaired symbol: ‘[’ seems to be missing Context: ...hild component at a time. - [Child Pages](../navigation/pages/overview.md) - pref... --- Near line 11: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ...onent. If none of this fit your needs, Decompose introduces [Generic Navigation](https:/... --- Near line 18: Possible spelling mistake found. Context: ...ly persists child configurations using [StateKeeper](../component/state-preservation.md), s... --- Near line 20: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ...y supplying a child factory function to Decompose. The function accepts a child configura... --- Near line 20: Possible spelling mistake found. Context: ...ction accepts a child configuration and `ComponentContext` and returns a new instance of the corr... --- Near line 20: Do you wish to insert an arrow? Context: ... of the corresponding child component - `(Config, ComponentContext) -> Child`. When you need to navigate, you ... --- Near line 20: Possible spelling mistake found. Context: ...se automatically creates and manages a [ComponentContext](../component/overview.md#componentcont... --- Near line 27: Unpaired symbol: ‘[’ seems to be missing Context: ...irements: 1. Be immutable 2. [Correctly](https://docs.oracle.com/javase/8/docs/a... --- Near line 28: Possible spelling mistake found. Context: ...` and `hashCode()` methods 3. Implement `Parcelable` interface (or be `@Serializable` start... --- Near line 34: Possible spelling mistake found. Context: ... or process death. Decompose relies on [kotlinx-serialization](https://github.com/Kotlin/kotlinx.seri... --- Near line 34: Possible spelling mistake found. Context: ...notated as `@Serializable`, or a custom serializer should be implemented manually. Please... --- Near line 36: Consider using a different verb to strengthen your wording. Context: ...should be implemented manually. Please make sure you [setup](https://github.com/Kotlin/k... --- Near line 36: Possible spelling mistake found. Context: ...com/Kotlin/kotlinx.serialization#setup) `kotlinx-serialization` correctly and applied the plugin. !!!... --- Near line 39: Possible missing comma found. Context: ... applied the plugin. !!!warning On Android the amount of data that can be preserve... --- Near line 43: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ... navigation is performed synchronously, Decompose instantiates components and calls lifec... --- Near line 43: Possible spelling mistake. ‘behaviour’ is British English. Context: ... background thread may cause unexpected behaviour. !!!warning Always perform the nav... --- Near line 48: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ... on a non-main thread. When it happens, Decompose calls the special error handler - `onDe... --- Near line 48: Possible spelling mistake found. Context: ...mpose calls the special error handler - `onDecomposeError`. By default, it prints the exception t... --- Near line 48: It seems like there are too many consecutive spaces here. Context: ...efault, it prints the exception to logs, however you can override the default beh... --- Near line 48: Possible spelling mistake. ‘behaviour’ is British English. Context: ..., however you can override the default behaviour by providing your own handler.docs/navigation/pages/overview.md (18)
Near line 5: This sentence does not start with an uppercase letter. Context: ...ild Pages (experimental) `Child Pages` is a navigation model for managing a list ... --- Near line 10: Possible spelling mistake. ‘neighbours’ is British English. Context: ...ntly selected page is `ACTIVE`, its two neighbours are `INACTIVE`, and the rest are `DESTR... --- Near line 10: Possible spelling mistake. ‘behaviour’ is British English. Context: ...ur own logic, for example with circular behaviour. It is possible to have more than one... --- Near line 16: Unpaired symbol: ‘[’ seems to be missing Context: ...consists of two main entities: - [Pages](https://github.com/arkivanov/Decompose/... --- Near line 19: Possible spelling mistake found. Context: ...of the selected child configuration. - [ChildPages](https://github.com/arkivanov/Decompose... --- Near line 19: Unpaired symbol: ‘[’ seems to be missing Context: ...ected child configuration. - [ChildPages](https://github.com/arkivanov/Decompose/... --- Near line 22: Possible spelling mistake found. Context: ... empty, otherwise can be any number. - [PagesNavigation](https://github.com/arkivanov/Decompose... --- Near line 22: Unpaired symbol: ‘[’ seems to be missing Context: ...se can be any number. - [PagesNavigation](https://github.com/arkivanov/Decompose/... --- Near line 28: This sentence does not start with an uppercase letter. Context: ...ns-and-child-factories). `Child Pages` adds one additional requirement for child co... --- Near line 36: Possible spelling mistake found. Context: ...ild Pages`: - Create a new instance of `PagesNavigation` and assign it to a variable or a prope... --- Near line 37: Possible spelling mistake found. Context: ...Child Pages` navigation model using the `ComponentContext#childPages` extension function and pass... --- Near line 37: Possible spelling mistake found. Context: ...childPages` extension function and pass `PagesNavigation` into it along with other arguments. - ... --- Near line 38: Possible spelling mistake found. Context: ...to it along with other arguments. - The `childPages` function returns `Value` t... --- Near line 38: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ...ts. - The `childPages` function returns `Value ` that can be observed in th... --- Near line 38: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ...observed in the UI. Assign the returned `Value` to another property or a variable. ##... --- Near line 42: This sentence does not start with an uppercase letter. Context: ...aying pages with Compose `Child Pages` state can be observed and displayed in Compos... --- Near line 111: This sentence does not start with an uppercase letter. Context: ...th on (not only) Android `Child Pages` automatically preserves the state when a configuratio... --- Near line 111: Possible spelling mistake found. Context: ...ble state preservation completely, pass `serializer = null` argument. When navigation state... docs/navigation/slot/overview.md (13)
Near line 5: This sentence does not start with an uppercase letter. Context: ...erview ## The Child Slot `Child Slot` is a navigation model that allows only one... --- Near line 5: Did you mean “activating”? Or maybe you should add a pronoun? In active voice, ‘allow’ + ‘to’ takes an object, usually a pronoun. Context: ...n other words, each `Child Slot` allows to activate a child component, replace with another... --- Near line 11: Possible spelling mistake found. Context: ...tion consists of two main entities: - [ChildSlot](https://github.com/arkivanov/Decompose... --- Near line 11: Unpaired symbol: ‘[’ seems to be missing Context: ...ists of two main entities: - [ChildSlot](https://github.com/arkivanov/Decompose/... --- Near line 12: Possible spelling mistake found. Context: ... the currently active child, if any. - [SlotNavigation](https://github.com/arkivanov/Decompose... --- Near line 12: Unpaired symbol: ‘[’ seems to be missing Context: ... active child, if any. - [SlotNavigation](https://github.com/arkivanov/Decompose/... --- Near line 22: Possible spelling mistake found. Context: ...hild Slot`: - Create a new instance of `SlotNavigation` and assign it to a variable or a prope... --- Near line 23: Possible spelling mistake found. Context: ...- Initialize the `Child Slot` using the `ComponentContext#childSlot` extension function and pass ... --- Near line 23: Possible spelling mistake found. Context: ...#childSlot` extension function and pass `SlotNavigation` into it along with other arguments. - ... --- Near line 24: Possible spelling mistake found. Context: ...to it along with other arguments. - The `childSlot` function returns `Value` th... --- Near line 24: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ...nts. - The `childSlot` function returns `Value ` that can be observed in the... --- Near line 24: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ...observed in the UI. Assign the returned `Value` to another property or a variable. ##... --- Near line 97: Possible missing article found. Context: ...t components to have `Child Slots` with same keys. An exception will be thrown if mu... docs/navigation/stack/deeplinking.md (11)
Near line 5: After the expression ‘for example’ a comma is usually used. Context: ... platform's specific documentation. For example here is the [related documentation](htt... --- Near line 50: Possible spelling mistake found. Context: ...ng) : Config() } } ``` Now, if the `initialItemId` is supplied, the initial screen will b... --- Near line 50: Possible spelling mistake found. Context: ...upplied, the initial screen will be the `ItemDetails` component. The `ItemList` component wi... --- Near line 50: Possible spelling mistake found. Context: ...ill be the `ItemDetails` component. The `ItemList` component will be in the back stack, s... --- Near line 60: Possible spelling mistake found. Context: ...links. Once the app is configured, the deeplink `Intent` will be available to use in `A... --- Near line 60: Possible spelling mistake found. Context: ...nk `Intent` will be available to use in `Activity#onCreate` method. The `handleDeepLink` extension... --- Near line 60: Possible spelling mistake found. Context: ... use in `Activity#onCreate` method. The `handleDeepLink` extension function can be used to auto... --- Near line 60: Possible spelling mistake found. Context: ... to automatically extract the deep link `Uri` from the `Intent`, it also takes care ... --- Near line 98: Consider wrapping this idiom with two commas if you want to put a strong emphasize on it. Context: ... way The alternative way can be used if for some reason you don't want to use the `standard` (d... --- Near line 98: Possible spelling mistake found. Context: ...t want to use the `standard` (default) [launchMode](https://developer.android.com/guide/co... --- Near line 98: Possible spelling mistake found. Context: ... handling the new deep link manually in `Activity#onNewIntent`. ```kotlin import android.content.Int...docs/navigation/stack/navigation.md (29)
Near line 3: Possible spelling mistake found. Context: # Navigation with Child Stack ## The StackNavigator All navigation in `Child Stack` is per... --- Near line 5: Possible spelling mistake found. Context: ...in `Child Stack` is performed using the [`StackNavigator`](https://github.com/arkivanov/Decompos... --- Near line 5: Possible spelling mistake found. Context: ...kt) interface, which is extended by the `StackNavigation` interface. `StackNavigator` contains ... --- Near line 7: This sentence does not start with an uppercase letter. Context: ...avigation` interface. `StackNavigator` contains the `navigate` method with the followin... --- Near line 9: You might be missing the article “a” here. Context: ... a new one. The stack is represented as `List`, where the last element is the top... --- Near line 12: Possible spelling mistake found. Context: ...avigate` extension function without the `onComplete` callback, for convenience. !!!warning... --- Near line 25: Use a comma before “and” if it connects two independent clauses (unless they are closely connected and short). Context: ...thod returns, the navigation is finished and all component lifecycles are moved into... --- Near line 25: Possible spelling mistake found. Context: ...invocations - e.g. `pop` is called from `onResume` lifecycle callback of a component bein... --- Near line 27: Possible spelling mistake found. Context: ...the current navigation is finished. ## StackNavigator extension functions There are `StackNa... --- Near line 29: Possible spelling mistake found. Context: ...avigator extension functions There are `StackNavigator` [extension functions](https://github.c... --- Near line 31: This sentence does not start with an uppercase letter. Context: ...iew example](overview.md#example). ### push(configuration) Pushes the provided `Co... --- Near line 31: It appears that a white space is missing. Context: ...example](overview.md#example). ### push(configuration) Pushes the provided `Con... --- Near line 35: This sentence does not start with an uppercase letter. Context: ...` is already present in the stack. !!! note "Illustration" ```title="Before" ... --- Near line 55: This sentence does not start with an uppercase letter. Context: ...ame button quickly multiple times. !!! note "Illustration 1" ```title="Before"... --- Near line 69: This sentence does not start with an uppercase letter. Context: ...tle="After" [A, B, C*] ``` !!! note "Illustration 2" ```title="Before"... --- Near line 87: Possible spelling mistake found. Context: ...ack, if any. This API works similar to `bringToFront`, except it compares configurations by ... --- Near line 89: This sentence does not start with an uppercase letter. Context: ...ather than by configuration class. !!! note "Illustration 1" ```title="Before"... --- Near line 103: This sentence does not start with an uppercase letter. Context: ...r" [A(1), B(1), A(2)*] ``` !!! note "Illustration 2" ```title="Before"... --- Near line 117: This sentence does not start with an uppercase letter. Context: ...r" [B(1), A(2), A(1)*] ``` !!! note "Illustration 3" ```title="Before"... --- Near line 135: This sentence does not start with an uppercase letter. Context: ...iguration at the top of the stack. !!! note "Illustration" ```title="Before" ... --- Near line 158: Possible missing comma found. Context: ...ps the configurations at the top of the stack while the provided predicate returns tr... --- Near line 160: This sentence does not start with an uppercase letter. Context: ...e provided predicate returns true. !!! note "Illustration" ```title="Before" ... --- Near line 178: This sentence does not start with an uppercase letter. Context: ...active (the new top of the stack). !!! note "Illustration" ```title="Before" ... --- Near line 196: This sentence does not start with an uppercase letter. Context: ...with the provided `Configuration`. !!! note "Illustration" ```title="Before" ... --- Near line 214: This sentence does not start with an uppercase letter. Context: ...longer in the stack are destroyed. !!! note "Illustration" ```title="Before" ... --- Near line 230: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ...s primarily helpful when implementing a Decompose app with Bottom Navigation. See the [re... --- Near line 232: This sentence does not start with an uppercase letter. Context: ...ions/178) in the *old repository*. !!! note The operation is performed as one t... --- Near line 234: Using many exclamation marks might seem excessive (in this case: 42 exclamation marks for a text that’s 4562 characters long) Context: ...nfiguration, it will not be recreated. !!! note "Illustration" ```title="Befo... --- Near line 235: This sentence does not start with an uppercase letter. Context: ...uration, it will not be recreated. !!! note "Illustration" ```title="Before" ...docs/navigation/stack/overview.md (26)
Near line 5: This sentence does not start with an uppercase letter. Context: ...view ## The Child Stack `Child Stack` is a navigation model for managing a stack... --- Near line 5: Possible spelling mistake found. Context: ...naging a stack of components, just like `FragmentManager`. Each component has its own `Lifecycl... --- Near line 11: Possible spelling mistake found. Context: ...tion consists of two main entities: - [ChildStack](https://github.com/arkivanov/Decompose... --- Near line 11: Unpaired symbol: ‘[’ seems to be missing Context: ...sts of two main entities: - [ChildStack](https://github.com/arkivanov/Decompose/... --- Near line 12: Possible spelling mistake found. Context: ...ponents and their configurations. - ChildStack#active - contains the currently active ... --- Near line 13: Possible spelling mistake found. Context: ...s the currently active component. - ChildStack#backStack - contains the back stack of ... --- Near line 13: Possible spelling mistake found. Context: ...ntly active component. - ChildStack#backStack - contains the back stack of inactive c... --- Near line 14: Possible spelling mistake found. Context: ...e back stack of inactive components. - [StackNavigation](https://github.com/arkivanov/Decompose... --- Near line 14: Unpaired symbol: ‘[’ seems to be missing Context: ... inactive components. - [StackNavigation](https://github.com/arkivanov/Decompose/... --- Near line 20: This sentence does not start with an uppercase letter. Context: ...ns-and-child-factories). `Child Stack` adds one additional requirement for child co... --- Near line 28: Possible spelling mistake found. Context: ...ild Stack`: - Create a new instance of `StackNavigation` and assign it to a variable or a prope... --- Near line 29: Possible spelling mistake found. Context: ... Initialize the `Child Stack` using the `ComponentContext#childStack` extension function and pass... --- Near line 29: Possible spelling mistake found. Context: ...childStack` extension function and pass `StackNavigation` into it along with other arguments. - ... --- Near line 30: Possible spelling mistake found. Context: ...to it along with other arguments. - The `childStack` function returns `Value` t... --- Near line 30: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ...ts. - The `childStack` function returns `Value ` that can be observed in th... --- Near line 30: Only proper nouns start with an uppercase character (there are exceptions for headlines). Context: ...observed in the UI. Assign the returned `Value` to another property or a variable. ##... --- Near line 34: This sentence does not start with an uppercase letter. Context: ...g the stack with Compose `Child Stack` state can be observed and displayed in Compos... --- Near line 156: This sentence does not start with an uppercase letter. Context: ...onents in the back stack `Child Stack` can not be empty, there is always one activ... --- Near line 156: Use a comma before “and” if it connects two independent clauses (unless they are closely connected and short). Context: ...all components are automatically created and the active component is resumed. ## Sc... --- Near line 160: This sentence does not start with an uppercase letter. Context: ...th on (not only) Android `Child Stack` automatically preserves the state when a configuratio... --- Near line 160: Possible spelling mistake found. Context: ...ble state preservation completely, pass `serializer = null` argument. When navigation state... --- Near line 173: Don’t put a space after the opening parenthesis. Context: ..., perform the navigation, e.g. by using `navigation.pop { ... }`. - After the navigation is perfor... --- Near line 251: Possible spelling mistake found. Context: ...r results using reactive streams - e.g. coroutines `Flow` or Rx `Observable`. Here is an ... --- Near line 253: Possible spelling mistake found. Context: ...`Observable`. Here is an example using Reaktive library. Kotlin coroutines `SharedFlow`... --- Near line 253: Possible spelling mistake found. Context: ... example using Reaktive library. Kotlin coroutines `SharedFlow` should be very similar. `... --- Near line 253: Possible spelling mistake found. Context: ...ing Reaktive library. Kotlin coroutines `SharedFlow` should be very similar. ```kotlin int...
docs/component/custom-component-context.md (2)
`7-7`: Ensure the transition from `ComponentContext` to `GenericComponentContext` is clearly documented in all relevant parts of the documentation. --- `18-37`: The implementation of `DefaultAppComponentContext` correctly delegates lifecycle and state management responsibilities to the `componentContext`. However, ensure that the `componentContextFactory` is thoroughly tested to confirm that it correctly handles lifecycle events and state restoration.docs/faq.md (1)
`11-11`: Clarify the conditions under which `ApplicationLifecycle` should be manually destroyed to prevent resource leaks or unintended behavior.docs/component/instance-retaining.md (1)
`29-35`: > :memo: **NOTE** > This review was outside the diff hunks and was mapped to the diff hunk with the greatest overlap. Original lines [32-37] The documentation correctly notes the potential for retaining components over configuration changes. However, emphasize the risks associated with this approach, particularly the potential for memory leaks if not handled carefully.docs/component/state-preservation.md (1)
`19-27`: The updated example for state preservation using `kotlinx-serialization` is clear and demonstrates the new approach effectively. Ensure that all related code samples across the documentation are updated to reflect this change.decompose/src/androidMain/kotlin/com/arkivanov/decompose/DeeplinkUtils.kt (1)
`18-20`: The recommendation to use the `standard` launch mode for activities handling deep links is well-documented. Ensure that this recommendation is consistent with Android best practices and that example code is tested to confirm behavior.mkdocs.yml (1)
`38-46`: > :memo: **NOTE** > This review was outside the diff hunks and was mapped to the diff hunk with the greatest overlap. Original lines [45-56] The MkDocs configuration has been updated to reflect the removal of "Custom ComponentContext" from the navigation. Verify that all links are correctly redirected and that there are no broken links in the documentation.docs/navigation/overview.md (1)
`32-34`: The documentation clearly explains the requirement for configurations to be `@Serializable` for persistence. Ensure that all related components and documentation are updated to reflect this change.docs/getting-started/installation.md (1)
`45-56`: The consolidation of extension modules for Compose into a single module is well-documented. Ensure that the documentation clearly explains how to integrate this module into projects and that all related code samples are updated.docs/navigation/slot/overview.md (2)
`65-81`: Changes to `DefaultRootComponent` correctly implement the new serialization strategy using `@Serializable`. Ensure that `DialogConfig.serializer()` is correctly implemented and tested. --- `88-91`: Transition to `@Serializable` in `DialogConfig` aligns with modern serialization practices.docs/component/back-button.md (1)
`42-42`: Removal of the version reference simplifies the documentation and avoids potential confusion with outdated information.docs/component/scopes.md (2)
`7-53`: Addition of `CoroutineScope` extensions and corresponding dependencies enhances scope management in components. Ensure that the added dependencies are correctly reflected in the build.gradle files and that the scope management behaves as expected during component lifecycle changes. --- `93-138`: Introduction of `DisposableScope` extensions and dependencies supports better management of reactive subscriptions in components. Check that the new dependencies are correctly added to the build.gradle files and that the `DisposableScope` behaves as expected in component lifecycle scenarios.docs/navigation/pages/overview.md (1)
`61-106`: Updates to `PagesComponent` and `DefaultPagesComponent` correctly implement the new serialization strategy and enhance state preservation. Ensure that `Config.serializer()` is correctly implemented and that state preservation behaves as expected with the new changes.docs/navigation/stack/deeplinking.md (1)
`66-102`: > :memo: **NOTE** > This review was outside the diff hunks and was mapped to the diff hunk with the greatest overlap. Original lines [50-85] Refinements to deep link handling in `MainActivity` clarify the process and align with best practices for Android development. Ensure that the `handleDeepLink` function is correctly implemented and that it behaves as expected in various deep link scenarios.docs/navigation/stack/navigation.md (1)
`46-52`: > :memo: **NOTE** > This review was outside the diff hunks and was mapped to the diff hunk with the greatest overlap. Original lines [49-83] Removal of version information from function declarations simplifies the documentation and avoids potential confusion with outdated information.docs/navigation/children/overview.md (1)
`34-47`: Ensure the `children` function's documentation is up-to-date with code changes. Verify that the documentation for the `children` function accurately reflects all recent code changes, especially those related to serialization and state management. This is crucial for maintaining the accuracy and usefulness of the documentation.docs/navigation/stack/overview.md (1)
`143-149`: Ensure the `@Serializable` annotation is correctly applied to the `Config` class. Verify that the `@Serializable` annotation is correctly applied and functioning as expected in the `Config` class. This is crucial for ensuring that the navigation state can be serialized and deserialized without issues.docs/getting-started/quick-start.md (1)
`155-155`: Ensure that all configuration classes are updated to use `@Serializable` as per the new guidelines.
Summary by CodeRabbit
launchMode
.ComponentContext
toGenericComponentContext
.CoroutineScope
andDisposableScope
in component scopes.kotlinx-serialization
instead ofParcelable
.@Serializable
for configuration persistence across various navigation components.