Skip to content

Commit 9bbad11

Browse files
committed
Integration Compose into adminConsole feature
1 parent 5191782 commit 9bbad11

File tree

8 files changed

+96
-5
lines changed

8 files changed

+96
-5
lines changed

app/build.gradle.kts

+5-3
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ happyPlugin {
2121

2222
android {
2323
dynamicFeatures += setOf(
24-
projects.sources.dynamicFeature.adminConsole.name,
25-
projects.sources.dynamicFeature.edit.name,
26-
projects.sources.dynamicFeature.postCreator.name
24+
":sources:dynamicFeature:adminConsole",
25+
":sources:dynamicFeature:edit",
26+
":sources:dynamicFeature:postCreator",
2727
)
2828

2929
signingConfigs {
@@ -81,8 +81,10 @@ dependencies {
8181
implementation(platform(libs.firebase.bom))
8282

8383
implementation(libs.android.material)
84+
implementation(libs.android.material.compose.adapter)
8485
implementation(libs.android.play.core.ktx)
8586
implementation(libs.androidx.appcompat)
87+
implementation(libs.androidx.compose.runtime)
8688
implementation(libs.androidx.constraintlayout)
8789
implementation(libs.androidx.core.ktx)
8890
implementation(libs.androidx.fragment.ktx)

app/version.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
BUILD_VERSION=752
1+
BUILD_VERSION=763
22
SUB_VERSION=6
33
VERSION=0

gradle.properties

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
org.gradle.jvmargs=-XX:+UseParallelGC
2-
org.gradle.configureondemand=true
32
org.gradle.caching=true
43
org.gradle.parallel=true
54
org.gradle.unsafe.watch-fs=true

gradle/libs.versions.toml

+2
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ gradle-plugin-google-osslicenses = { module = "com.google.android.gms:oss-licens
5656
gradle-plugin-googleservices = { module = "com.google.gms:google-services", version.ref = "gradleGoogleServices" }
5757
gradle-plugin-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
5858

59+
android-material-compose-adapter = { module = "com.google.android.material:compose-theme-adapter", version.ref = "compose" }
5960
android-material = { module = "com.google.android.material:material", version.ref = "material" }
6061
android-play-core-ktx = { module = "com.google.android.play:core-ktx", version.ref = "playCore" }
6162
android-playservices-auth = { module = "com.google.android.gms:play-services-auth", version.ref = "playServicesAuth" }
@@ -66,6 +67,7 @@ androidx-browser = { module = "androidx.browser:browser", version.ref = "browser
6667
androidx-cardview = { module = "androidx.cardview:cardview", version.ref = "cardView" }
6768
androidx-compose-activity = { module = "androidx.activity:activity-compose", version.ref = "activityCompose" }
6869
androidx-compose-material = { module = "androidx.compose.material:material", version.ref = "compose" }
70+
androidx-compose-runtime = { module = "androidx.compose.runtime:runtime", version.ref = "compose" }
6971
androidx-compose-ui = { module = "androidx.compose.ui:ui", version.ref = "compose" }
7072
androidx-compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "compose" }
7173
androidx-compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview", version.ref = "compose" }

sources/dynamicFeature/adminConsole/build.gradle.kts

+8
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,12 @@ happyPlugin {
1010

1111
dependencies {
1212
implementation(projects.app)
13+
14+
implementation(libs.android.material.compose.adapter)
15+
implementation(libs.androidx.compose.material)
16+
implementation(libs.androidx.compose.runtime)
17+
implementation(libs.androidx.compose.ui)
18+
implementation(libs.androidx.compose.ui.tooling)
19+
implementation(libs.androidx.compose.ui.tooling.preview)
20+
implementation(libs.androidx.fragment.ktx)
1321
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
-keep class com.egoriku.ladyhappy.adminconsole.AdminConsoleFragment
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package com.egoriku.ladyhappy.adminconsole
2+
3+
import android.os.Bundle
4+
import android.view.LayoutInflater
5+
import android.view.View
6+
import android.view.ViewGroup
7+
import androidx.compose.foundation.layout.*
8+
import androidx.compose.material.*
9+
import androidx.compose.runtime.Composable
10+
import androidx.compose.ui.Alignment
11+
import androidx.compose.ui.Modifier
12+
import androidx.compose.ui.tooling.preview.Preview
13+
import androidx.compose.ui.unit.dp
14+
import androidx.fragment.app.Fragment
15+
import com.egoriku.ladyhappy.adminconsole.extension.setThemeContent
16+
17+
class AdminConsoleFragment : Fragment() {
18+
19+
override fun onCreateView(
20+
inflater: LayoutInflater,
21+
container: ViewGroup?,
22+
savedInstanceState: Bundle?
23+
): View = setThemeContent {
24+
Surface {
25+
ConsoleScreen()
26+
}
27+
}
28+
}
29+
30+
@Preview
31+
@Composable
32+
fun ConsoleScreen() {
33+
Column(
34+
modifier = Modifier.fillMaxSize(),
35+
verticalArrangement = Arrangement.Center
36+
) {
37+
FeatureItem(onClick = {}, name = "Publish news")
38+
FeatureItem(onClick = {}, name = "Publish product")
39+
FeatureItem(onClick = {}, name = "Manage users and permissions")
40+
}
41+
}
42+
43+
@OptIn(ExperimentalMaterialApi::class)
44+
@Composable
45+
fun FeatureItem(
46+
modifier: Modifier = Modifier,
47+
onClick: () -> Unit,
48+
name: String
49+
) {
50+
Card(
51+
elevation = 3.dp,
52+
onClick = onClick,
53+
modifier = modifier
54+
.fillMaxWidth()
55+
.defaultMinSize(minHeight = 100.dp)
56+
.padding(all = 16.dp)
57+
) {
58+
Box(contentAlignment = Alignment.Center) {
59+
Text(text = name, style = MaterialTheme.typography.h6)
60+
}
61+
}
62+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.egoriku.ladyhappy.adminconsole.extension
2+
3+
import androidx.compose.runtime.Composable
4+
import androidx.compose.ui.platform.ComposeView
5+
import androidx.fragment.app.Fragment
6+
import com.google.android.material.composethemeadapter.MdcTheme
7+
8+
@Suppress("NOTHING_TO_INLINE")
9+
inline fun Fragment.setThemeContent(
10+
noinline content: @Composable () -> Unit
11+
) = ComposeView(requireContext()).apply {
12+
setContent {
13+
MdcTheme {
14+
content()
15+
}
16+
}
17+
}

0 commit comments

Comments
 (0)