Browse Source

Move `StateMachine` to its own module. (#257)

test/jme/compound-poc
Jorge Martin Espinosa 2 years ago committed by GitHub
parent
commit
f744691c15
  1. 1
      features/verifysession/impl/build.gradle.kts
  2. 2
      features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateMachine.kt
  3. 35
      libraries/statemachine/build.gradle.kts
  4. 5
      libraries/statemachine/src/main/kotlin/io/element/android/libraries/statemachine/StateMachine.kt
  5. 2
      libraries/statemachine/src/test/kotlin/io/element/android/libraries/statemachine/StateMachineTests.kt
  6. 1
      plugins/src/main/kotlin/extension/DependencyHandleScope.kt
  7. 1
      settings.gradle.kts

1
features/verifysession/impl/build.gradle.kts

@ -42,6 +42,7 @@ dependencies { @@ -42,6 +42,7 @@ dependencies {
implementation(projects.libraries.designsystem)
implementation(projects.libraries.elementresources)
implementation(projects.libraries.uiStrings)
implementation(projects.libraries.statemachine)
implementation(libs.accompanist.flowlayout)
api(projects.features.verifysession.api)

2
features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateMachine.kt

@ -17,7 +17,7 @@ @@ -17,7 +17,7 @@
@file:Suppress("WildcardImport")
package io.element.android.features.verifysession.impl
import io.element.android.libraries.core.statemachine.createStateMachine
import io.element.android.libraries.statemachine.createStateMachine
import io.element.android.libraries.matrix.api.verification.SessionVerificationService
import io.element.android.libraries.matrix.api.verification.VerificationEmoji
import io.element.android.libraries.matrix.api.verification.VerificationFlowState

35
libraries/statemachine/build.gradle.kts

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
/*
* Copyright (c) 2022 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// TODO: Remove once https://youtrack.jetbrains.com/issue/KTIJ-19369 is fixed
@Suppress("DSL_SCOPE_VIOLATION")
plugins {
id("java-library")
id("com.android.lint")
alias(libs.plugins.kotlin.jvm)
}
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
dependencies {
implementation(libs.coroutines.core)
testImplementation(libs.test.junit)
testImplementation(libs.test.truth)
}

5
libraries/core/src/main/kotlin/io/element/android/libraries/core/statemachine/StateMachine.kt → libraries/statemachine/src/main/kotlin/io/element/android/libraries/statemachine/StateMachine.kt

@ -14,9 +14,8 @@ @@ -14,9 +14,8 @@
* limitations under the License.
*/
package io.element.android.libraries.core.statemachine
package io.element.android.libraries.statemachine
import io.element.android.libraries.core.bool.orFalse
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
@ -64,7 +63,7 @@ class StateMachine<Event : Any, State : Any>( @@ -64,7 +63,7 @@ class StateMachine<Event : Any, State : Any>(
private fun <E : Event> findMatchingRoute(event: E): StateMachineRoute<E, State, State>? {
val routesForEvent = routes.filter { it.eventType.isInstance(event) }
return (routesForEvent.firstOrNull { it.fromState?.isInstance(currentState).orFalse() }
return (routesForEvent.firstOrNull { it.fromState?.isInstance(currentState) == true }
?: routesForEvent.firstOrNull { it.fromState == null }) as? StateMachineRoute<E, State, State>
}

2
libraries/core/src/test/kotlin/io/element/android/libraries/core/statemachine/StateMachineTests.kt → libraries/statemachine/src/test/kotlin/io/element/android/libraries/statemachine/StateMachineTests.kt

@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
* limitations under the License.
*/
package io.element.android.libraries.core.statemachine
package io.element.android.libraries.statemachine
import com.google.common.truth.Truth.assertThat
import org.junit.Assert.fail

1
plugins/src/main/kotlin/extension/DependencyHandleScope.kt

@ -61,6 +61,7 @@ fun DependencyHandlerScope.allLibrariesImpl() { @@ -61,6 +61,7 @@ fun DependencyHandlerScope.allLibrariesImpl() {
implementation(project(":libraries:dateformatter:impl"))
implementation(project(":libraries:di"))
implementation(project(":libraries:session-storage:impl"))
implementation(project(":libraries:statemachine"))
}

1
settings.gradle.kts

@ -65,6 +65,7 @@ include(":libraries:encrypted-db") @@ -65,6 +65,7 @@ include(":libraries:encrypted-db")
include(":libraries:session-storage:api")
include(":libraries:session-storage:impl")
include(":libraries:session-storage:impl-memory")
include(":libraries:statemachine")
include(":services:analytics:api")
include(":services:analytics:noop")

Loading…
Cancel
Save