Skip to content

Commit 4d36530

Browse files
committed
Implement core-uistate module and generates restartable and skippable UI states
1 parent 68817bf commit 4d36530

File tree

17 files changed

+66
-56
lines changed

17 files changed

+66
-56
lines changed

core-data/build.gradle.kts

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ plugins {
33
id("org.jetbrains.kotlin.android")
44
id("org.jetbrains.kotlin.plugin.serialization")
55
id("kotlin-kapt")
6-
id("com.google.devtools.ksp")
76
id("dagger.hilt.android.plugin")
87
}
98

@@ -21,24 +20,13 @@ android {
2120
}
2221
}
2322

24-
kotlin {
25-
sourceSets.configureEach {
26-
kotlin.srcDir("$buildDir/generated/ksp/$name/kotlin/")
27-
}
28-
}
29-
3023
dependencies {
3124
api(project(":core-model"))
3225
api(project(":core-network"))
3326
api(project(":core-database"))
3427

35-
api(Dependencies.streamClient)
36-
3728
api(Dependencies.coroutines)
3829

3930
api(Dependencies.hiltAndroid)
4031
kapt(Dependencies.hiltCompiler)
41-
42-
implementation(Dependencies.sealedXCore)
43-
ksp(Dependencies.sealedXProcessor)
4432
}

core-designsystem/build.gradle.kts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,6 @@ android {
2424
composeOptions {
2525
kotlinCompilerExtensionVersion = Versions.COMPOSE_COMPILER
2626
}
27-
28-
packagingOptions {
29-
resources.excludes.add("META-INF/LICENSE.txt")
30-
resources.excludes.add("META-INF/NOTICE.txt")
31-
resources.excludes.add("LICENSE.txt")
32-
resources.excludes.add("/META-INF/{AL2.0,LGPL2.1}")
33-
}
3427
}
3528

3629
dependencies {

core-model/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,6 @@ android {
2020
}
2121

2222
dependencies {
23+
api(Dependencies.streamClient)
2324
api(Dependencies.kotlinSerializationJson)
2425
}

core-uistate/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build

core-uistate/build.gradle.kts

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
plugins {
2+
id("com.android.library")
3+
id("org.jetbrains.kotlin.android")
4+
id("com.google.devtools.ksp")
5+
}
6+
7+
android {
8+
compileSdk = Configurations.compileSdk
9+
10+
defaultConfig {
11+
minSdk = Configurations.minSdk
12+
targetSdk = Configurations.targetSdk
13+
}
14+
15+
compileOptions {
16+
sourceCompatibility = JavaVersion.VERSION_1_8
17+
targetCompatibility = JavaVersion.VERSION_1_8
18+
}
19+
20+
buildFeatures {
21+
compose = true
22+
}
23+
24+
composeOptions {
25+
kotlinCompilerExtensionVersion = Versions.COMPOSE_COMPILER
26+
}
27+
}
28+
29+
kotlin {
30+
sourceSets.configureEach {
31+
kotlin.srcDir("$buildDir/generated/ksp/$name/kotlin/")
32+
}
33+
}
34+
35+
dependencies {
36+
implementation(project(":core-model"))
37+
38+
implementation(Dependencies.composeRuntime)
39+
40+
implementation(Dependencies.sealedXCore)
41+
ksp(Dependencies.sealedXProcessor)
42+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<manifest package="io.getstream.whatsappclone.uistate" />

core-data/src/main/kotlin/io/getstream/whatsappclone/data/model/UiState.kt renamed to core-uistate/src/main/kotlin/io/getstream/whatsappclone/uistate/UiState.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,25 @@
1414
* limitations under the License.
1515
*/
1616

17-
package io.getstream.whatsappclone.data.model
17+
package io.getstream.whatsappclone.uistate
1818

19+
import androidx.compose.runtime.Immutable
1920
import com.skydoves.sealedx.core.Extensive
2021
import com.skydoves.sealedx.core.annotations.ExtensiveModel
2122
import com.skydoves.sealedx.core.annotations.ExtensiveSealed
2223
import io.getstream.chat.android.client.models.Channel
23-
import io.getstream.whatsappclone.model.WhatsAppUserExtensive
2424

25+
/**
26+
* Generates restartable and skippable UI states based on KSP and extensive models.
27+
* @see (SealedX)[https://github.com/skydoves/sealedx]
28+
*/
2529
@ExtensiveSealed(
2630
models = [
2731
ExtensiveModel(type = Channel::class, name = "WhatsAppMessage"),
2832
ExtensiveModel(type = WhatsAppUserExtensive::class, name = "WhatsAppUser")
2933
]
3034
)
35+
@Immutable
3136
sealed interface UiState {
3237
data class Success(val data: Extensive) : UiState
3338
object Loading : UiState

core-model/src/main/kotlin/io/getstream/whatsappclone/model/WhatsAppUserExtensive.kt renamed to core-uistate/src/main/kotlin/io/getstream/whatsappclone/uistate/WhatsAppUserExtensive.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,12 @@
1414
* limitations under the License.
1515
*/
1616

17-
package io.getstream.whatsappclone.model
17+
package io.getstream.whatsappclone.uistate
1818

19+
import androidx.compose.runtime.Immutable
20+
import io.getstream.whatsappclone.model.WhatsAppUser
21+
22+
@Immutable
1923
data class WhatsAppUserExtensive(
2024
val whatsappUserList: List<WhatsAppUser>
2125
)

feature-calls/build.gradle.kts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,13 @@ android {
3030
lint {
3131
abortOnError = false
3232
}
33-
34-
packagingOptions {
35-
resources.excludes.add("META-INF/LICENSE.txt")
36-
resources.excludes.add("META-INF/NOTICE.txt")
37-
resources.excludes.add("LICENSE.txt")
38-
resources.excludes.add("/META-INF/{AL2.0,LGPL2.1}")
39-
}
4033
}
4134

4235
dependencies {
4336
// core modules
4437
implementation(project(":core-designsystem"))
4538
implementation(project(":core-navigation"))
39+
implementation(project(":core-uistate"))
4640
implementation(project(":core-data"))
4741

4842
implementation(Dependencies.composeLifecycle)

feature-calls/src/main/kotlin/io/getstream/whatsappclone/calls/WhatsAppCalls.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ import androidx.compose.foundation.lazy.items
2121
import androidx.compose.runtime.Composable
2222
import androidx.compose.runtime.getValue
2323
import androidx.lifecycle.compose.collectAsStateWithLifecycle
24-
import io.getstream.whatsappclone.data.model.WhatsAppUserUiState
2524
import io.getstream.whatsappclone.designsystem.component.WhatsAppError
2625
import io.getstream.whatsappclone.designsystem.component.WhatsAppLoadingColumn
2726
import io.getstream.whatsappclone.navigation.AppComposeNavigator
2827
import io.getstream.whatsappclone.navigation.WhatsAppScreens
28+
import io.getstream.whatsappclone.uistate.WhatsAppUserUiState
2929

3030
@Composable
3131
fun WhatsAppCalls(

0 commit comments

Comments
 (0)