From 2b159c8e757d7479e0ff3019ebc8a7bec6398ca9 Mon Sep 17 00:00:00 2001 From: Sungyong An Date: Sun, 2 Jun 2024 17:13:05 +0900 Subject: [PATCH 1/4] Use Safe Args for Navigation Compose --- .gitignore | 1 + build.gradle | 1 + gradle/libs.versions.toml | 9 +- sample/android/build.gradle.kts | 6 +- .../dependencies/releaseRuntimeClasspath.txt | 105 +++++++++------ sample/android/src/main/AndroidManifest.xml | 93 +------------ .../fornewid/placeholder/sample/HomeScreen.kt | 111 ++++++++++++++++ .../placeholder/sample/MainActivity.kt | 124 +----------------- .../fornewid/placeholder/sample/NavGraph.kt | 107 +++++++++++++++ .../foundation/PlaceholderBasicSample.kt | 16 +-- .../foundation/PlaceholderFadeSample.kt | 16 +-- .../foundation/PlaceholderShimmerSample.kt | 16 +-- ...e.kt => PlaceholderMaterialBasicSample.kt} | 16 +-- ...le.kt => PlaceholderMaterialFadeSample.kt} | 16 +-- ...kt => PlaceholderMaterialShimmerSample.kt} | 16 +-- ....kt => PlaceholderMaterial3BasicSample.kt} | 16 +-- ...e.kt => PlaceholderMaterial3FadeSample.kt} | 16 +-- ...t => PlaceholderMaterial3ShimmerSample.kt} | 16 +-- 18 files changed, 336 insertions(+), 365 deletions(-) create mode 100644 sample/android/src/main/java/io/github/fornewid/placeholder/sample/HomeScreen.kt create mode 100644 sample/android/src/main/java/io/github/fornewid/placeholder/sample/NavGraph.kt rename sample/android/src/main/java/io/github/fornewid/placeholder/sample/material/{PlaceholderBasicSample.kt => PlaceholderMaterialBasicSample.kt} (91%) rename sample/android/src/main/java/io/github/fornewid/placeholder/sample/material/{PlaceholderFadeSample.kt => PlaceholderMaterialFadeSample.kt} (92%) rename sample/android/src/main/java/io/github/fornewid/placeholder/sample/material/{PlaceholderShimmerSample.kt => PlaceholderMaterialShimmerSample.kt} (92%) rename sample/android/src/main/java/io/github/fornewid/placeholder/sample/material3/{PlaceholderBasicSample.kt => PlaceholderMaterial3BasicSample.kt} (91%) rename sample/android/src/main/java/io/github/fornewid/placeholder/sample/material3/{PlaceholderFadeSample.kt => PlaceholderMaterial3FadeSample.kt} (92%) rename sample/android/src/main/java/io/github/fornewid/placeholder/sample/material3/{PlaceholderShimmerSample.kt => PlaceholderMaterial3ShimmerSample.kt} (92%) diff --git a/.gitignore b/.gitignore index e0af1b9..7fa36fd 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ captures .idea/compiler.xml .idea/jarRepositories.xml .idea/deploymentTargetDropDown.xml +.idea/deploymentTargetSelector.xml .idea/misc.xml .idea/androidTestResultsUserPreferences.xml .idea/appInsightsSettings.xml diff --git a/build.gradle b/build.gradle index e72bb4b..630b26a 100644 --- a/build.gradle +++ b/build.gradle @@ -2,6 +2,7 @@ plugins { alias(libs.plugins.android.application) apply false alias(libs.plugins.android.library) apply false alias(libs.plugins.kotlin.android) apply false + alias(libs.plugins.kotlin.serialization) apply false alias(libs.plugins.metalava) apply false alias(libs.plugins.maven.publish) apply false alias(libs.plugins.jetbrains.dokka) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 207c666..b779099 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -10,11 +10,12 @@ agp = "8.4.1" kotlin = "1.8.22" coroutines = "1.6.4" +serialization = "1.6.3" coil = "1.3.2" -androidx-core = "1.13.1" androidx-activity = "1.9.0" +androidx-navigation = "2.8.0-beta02" androidx-test-core = "1.5.0" androidx-test-runner = "1.5.2" @@ -40,12 +41,13 @@ compose-material-iconsext = { module = "androidx.compose.material:material-icons compose-material3-material3 = { module = "androidx.compose.material3:material3", version.ref = "compose-material3" } kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } -kotlin-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } +kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } +kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization" } coil-compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" } -androidx-core = { module = "androidx.core:core-ktx", version.ref = "androidx-core" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity" } +androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "androidx-navigation" } androidx-test-core = { module = "androidx.test:core-ktx", version.ref="androidx-test-core" } androidx-test-runner = { module = "androidx.test:runner", version.ref = "androidx-test-runner" } @@ -64,6 +66,7 @@ kotlin-pluginGradle = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", ve android-application = { id = "com.android.application", version.ref = "agp" } android-library = { id = "com.android.library", version.ref = "agp" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } +kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } jetbrains-dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } metalava = { id = "me.tylerbwong.gradle.metalava", version.ref = "metalava" } maven-publish = { id = "com.vanniktech.maven.publish", version.ref = "vanniktechPublish" } diff --git a/sample/android/build.gradle.kts b/sample/android/build.gradle.kts index ce85325..752b00c 100644 --- a/sample/android/build.gradle.kts +++ b/sample/android/build.gradle.kts @@ -1,6 +1,7 @@ plugins { id("placeholder.android.application") id("placeholder.android.compose") + alias(libs.plugins.kotlin.serialization) alias(libs.plugins.dependencyGuard) } @@ -27,7 +28,8 @@ dependencies { implementation(projects.material3) implementation(libs.kotlin.stdlib) - implementation(libs.kotlin.coroutines.android) + implementation(libs.kotlinx.coroutines.android) + implementation(libs.kotlinx.serialization.json) implementation(libs.compose.material.material) implementation(libs.compose.material.iconsext) @@ -38,7 +40,7 @@ dependencies { implementation(libs.compose.ui.util) implementation(libs.androidx.activity.compose) - implementation(libs.androidx.core) + implementation(libs.androidx.navigation.compose) implementation(libs.coil.compose) } diff --git a/sample/android/dependencies/releaseRuntimeClasspath.txt b/sample/android/dependencies/releaseRuntimeClasspath.txt index 7899258..5114035 100644 --- a/sample/android/dependencies/releaseRuntimeClasspath.txt +++ b/sample/android/dependencies/releaseRuntimeClasspath.txt @@ -2,8 +2,8 @@ androidx.activity:activity-compose:1.9.0 androidx.activity:activity-ktx:1.9.0 androidx.activity:activity:1.9.0 androidx.annotation:annotation-experimental:1.4.0 -androidx.annotation:annotation-jvm:1.7.0 -androidx.annotation:annotation:1.7.0 +androidx.annotation:annotation-jvm:1.8.0 +androidx.annotation:annotation:1.8.0 androidx.appcompat:appcompat-resources:1.3.1 androidx.arch.core:core-common:2.2.0 androidx.arch.core:core-runtime:2.2.0 @@ -11,14 +11,14 @@ androidx.autofill:autofill:1.0.0 androidx.collection:collection-jvm:1.4.0 androidx.collection:collection-ktx:1.4.0 androidx.collection:collection:1.4.0 -androidx.compose.animation:animation-android:1.6.7 -androidx.compose.animation:animation-core-android:1.6.7 -androidx.compose.animation:animation-core:1.6.7 -androidx.compose.animation:animation:1.6.7 -androidx.compose.foundation:foundation-android:1.6.7 -androidx.compose.foundation:foundation-layout-android:1.6.7 -androidx.compose.foundation:foundation-layout:1.6.7 -androidx.compose.foundation:foundation:1.6.7 +androidx.compose.animation:animation-android:1.7.0-beta02 +androidx.compose.animation:animation-core-android:1.7.0-beta02 +androidx.compose.animation:animation-core:1.7.0-beta02 +androidx.compose.animation:animation:1.7.0-beta02 +androidx.compose.foundation:foundation-android:1.7.0-beta02 +androidx.compose.foundation:foundation-layout-android:1.7.0-beta02 +androidx.compose.foundation:foundation-layout:1.7.0-beta02 +androidx.compose.foundation:foundation:1.7.0-beta02 androidx.compose.material3:material3-android:1.2.1 androidx.compose.material3:material3:1.2.1 androidx.compose.material:material-android:1.6.7 @@ -29,40 +29,54 @@ androidx.compose.material:material-icons-extended:1.6.7 androidx.compose.material:material-ripple-android:1.6.7 androidx.compose.material:material-ripple:1.6.7 androidx.compose.material:material:1.6.7 -androidx.compose.runtime:runtime-android:1.6.7 -androidx.compose.runtime:runtime-saveable-android:1.6.7 -androidx.compose.runtime:runtime-saveable:1.6.7 -androidx.compose.runtime:runtime:1.6.7 -androidx.compose.ui:ui-android:1.6.7 -androidx.compose.ui:ui-geometry-android:1.6.7 -androidx.compose.ui:ui-geometry:1.6.7 -androidx.compose.ui:ui-graphics-android:1.6.7 -androidx.compose.ui:ui-graphics:1.6.7 -androidx.compose.ui:ui-text-android:1.6.7 -androidx.compose.ui:ui-text:1.6.7 -androidx.compose.ui:ui-tooling-preview-android:1.6.7 -androidx.compose.ui:ui-tooling-preview:1.6.7 -androidx.compose.ui:ui-unit-android:1.6.7 -androidx.compose.ui:ui-unit:1.6.7 -androidx.compose.ui:ui-util-android:1.6.7 -androidx.compose.ui:ui-util:1.6.7 -androidx.compose.ui:ui:1.6.7 +androidx.compose.runtime:runtime-android:1.7.0-beta02 +androidx.compose.runtime:runtime-saveable-android:1.7.0-beta02 +androidx.compose.runtime:runtime-saveable:1.7.0-beta02 +androidx.compose.runtime:runtime:1.7.0-beta02 +androidx.compose.ui:ui-android:1.7.0-beta02 +androidx.compose.ui:ui-geometry-android:1.7.0-beta02 +androidx.compose.ui:ui-geometry:1.7.0-beta02 +androidx.compose.ui:ui-graphics-android:1.7.0-beta02 +androidx.compose.ui:ui-graphics:1.7.0-beta02 +androidx.compose.ui:ui-text-android:1.7.0-beta02 +androidx.compose.ui:ui-text:1.7.0-beta02 +androidx.compose.ui:ui-tooling-preview-android:1.7.0-beta02 +androidx.compose.ui:ui-tooling-preview:1.7.0-beta02 +androidx.compose.ui:ui-unit-android:1.7.0-beta02 +androidx.compose.ui:ui-unit:1.7.0-beta02 +androidx.compose.ui:ui-util-android:1.7.0-beta02 +androidx.compose.ui:ui-util:1.7.0-beta02 +androidx.compose.ui:ui:1.7.0-beta02 androidx.concurrent:concurrent-futures:1.1.0 androidx.core:core-ktx:1.13.1 androidx.core:core:1.13.1 androidx.customview:customview-poolingcontainer:1.0.0 androidx.emoji2:emoji2:1.3.0 androidx.exifinterface:exifinterface:1.3.3 +androidx.graphics:graphics-path:1.0.1 androidx.interpolator:interpolator:1.0.0 -androidx.lifecycle:lifecycle-common-java8:2.6.2 -androidx.lifecycle:lifecycle-common:2.6.2 -androidx.lifecycle:lifecycle-livedata-core:2.6.2 -androidx.lifecycle:lifecycle-process:2.6.2 -androidx.lifecycle:lifecycle-runtime-ktx:2.6.2 -androidx.lifecycle:lifecycle-runtime:2.6.2 -androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2 -androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.2 -androidx.lifecycle:lifecycle-viewmodel:2.6.2 +androidx.lifecycle:lifecycle-common-java8:2.8.0 +androidx.lifecycle:lifecycle-common-jvm:2.8.0 +androidx.lifecycle:lifecycle-common:2.8.0 +androidx.lifecycle:lifecycle-livedata-core:2.8.0 +androidx.lifecycle:lifecycle-process:2.8.0 +androidx.lifecycle:lifecycle-runtime-android:2.8.0 +androidx.lifecycle:lifecycle-runtime-compose-android:2.8.0 +androidx.lifecycle:lifecycle-runtime-compose:2.8.0 +androidx.lifecycle:lifecycle-runtime-ktx-android:2.8.0 +androidx.lifecycle:lifecycle-runtime-ktx:2.8.0 +androidx.lifecycle:lifecycle-runtime:2.8.0 +androidx.lifecycle:lifecycle-viewmodel-android:2.8.0 +androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.0 +androidx.lifecycle:lifecycle-viewmodel-compose:2.8.0 +androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.0 +androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.0 +androidx.lifecycle:lifecycle-viewmodel:2.8.0 +androidx.navigation:navigation-common-ktx:2.8.0-beta02 +androidx.navigation:navigation-common:2.8.0-beta02 +androidx.navigation:navigation-compose:2.8.0-beta02 +androidx.navigation:navigation-runtime-ktx:2.8.0-beta02 +androidx.navigation:navigation-runtime:2.8.0-beta02 androidx.profileinstaller:profileinstaller:1.3.1 androidx.savedstate:savedstate-ktx:1.2.1 androidx.savedstate:savedstate:1.2.1 @@ -80,12 +94,17 @@ io.coil-kt:coil-compose:1.3.2 io.coil-kt:coil:1.3.2 org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.5.21 org.jetbrains.kotlin:kotlin-parcelize-runtime:1.5.21 -org.jetbrains.kotlin:kotlin-stdlib-common:1.8.22 +org.jetbrains.kotlin:kotlin-stdlib-common:1.9.22 org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22 org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 -org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1 -org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.7.1 -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.7.1 -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1 +org.jetbrains.kotlin:kotlin-stdlib:1.9.22 +org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 +org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.7.3 +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.7.3 +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 +org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.3 +org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.6.3 +org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 +org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.6.3 +org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3 org.jetbrains:annotations:23.0.0 diff --git a/sample/android/src/main/AndroidManifest.xml b/sample/android/src/main/AndroidManifest.xml index f53c9ec..29cd591 100644 --- a/sample/android/src/main/AndroidManifest.xml +++ b/sample/android/src/main/AndroidManifest.xml @@ -20,104 +20,13 @@ + android:exported="true"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/HomeScreen.kt b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/HomeScreen.kt new file mode 100644 index 0000000..9db144b --- /dev/null +++ b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/HomeScreen.kt @@ -0,0 +1,111 @@ +package io.github.fornewid.placeholder.sample + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.requiredHeight +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material.Divider +import androidx.compose.material.MaterialTheme +import androidx.compose.material.Scaffold +import androidx.compose.material.Text +import androidx.compose.material.TopAppBar +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp + +private data class Demo( + val title: String, + val destination: Destination, +) + +@Composable +fun HomeScreen(onItemClick: (Destination) -> Unit) { + val items: List = listOf( + Demo( + title = stringResource(R.string.foundation_title_basics), + destination = Destination.PlaceholderFoundationBasic, + ), + Demo( + title = stringResource(R.string.foundation_title_fade), + destination = Destination.PlaceholderFoundationFade, + ), + Demo( + title = stringResource(R.string.foundation_title_shimmer), + destination = Destination.PlaceholderFoundationShimmer, + ), + Demo( + title = stringResource(R.string.material_title_basics), + destination = Destination.PlaceholderMaterialBasic, + ), + Demo( + title = stringResource(R.string.material_title_fade), + destination = Destination.PlaceholderMaterialFade, + ), + Demo( + title = stringResource(R.string.material_title_shimmer), + destination = Destination.PlaceholderMaterialShimmer, + ), + Demo( + title = stringResource(R.string.material3_title_basics), + destination = Destination.PlaceholderMaterial3Basic, + ), + Demo( + title = stringResource(R.string.material3_title_fade), + destination = Destination.PlaceholderMaterial3Fade, + ), + Demo( + title = stringResource(R.string.material3_title_shimmer), + destination = Destination.PlaceholderMaterial3Shimmer, + ), + ) + + Scaffold( + topBar = { + TopAppBar( + title = { Text(text = stringResource(R.string.app_name)) }, + backgroundColor = MaterialTheme.colors.surface, + ) + }, + ) { contentPadding -> + LazyColumn( + modifier = Modifier.fillMaxSize(), + contentPadding = contentPadding, + ) { + items( + items = items, + contentType = { "Demo" }, + ) { demo -> + HomeDemoItem(demo, onItemClick = onItemClick) + Divider() + } + } + } +} + +@Composable +private fun HomeDemoItem( + demo: Demo, + onItemClick: (Destination) -> Unit, + modifier: Modifier = Modifier, +) { + Column( + verticalArrangement = Arrangement.Center, + modifier = modifier + .fillMaxWidth() + .requiredHeight(48.dp) + .clickable { onItemClick(demo.destination) } + .padding(horizontal = 16.dp), + ) { + Text( + text = demo.title, + modifier = Modifier.fillMaxWidth(), + style = MaterialTheme.typography.subtitle1, + ) + } +} diff --git a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/MainActivity.kt b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/MainActivity.kt index b01ca92..4069501 100644 --- a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/MainActivity.kt +++ b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/MainActivity.kt @@ -13,130 +13,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -@file:Suppress("DEPRECATION") - package io.github.fornewid.placeholder.sample -import android.annotation.SuppressLint -import android.app.ListActivity -import android.content.Intent import android.os.Bundle -import android.view.View -import android.widget.ListView -import android.widget.SimpleAdapter -import java.text.Collator -import java.util.Collections +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.compose.material.MaterialTheme -/** - * A [ListActivity] which automatically populates the list of sample activities in this app - * with the category `io.github.fornewid.sample.SAMPLE_CODE`. - */ -class MainActivity : ListActivity() { +class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - listAdapter = SimpleAdapter( - this, - getData(intent.getStringExtra(EXTRA_PATH)), - android.R.layout.simple_list_item_1, - arrayOf("title"), - intArrayOf(android.R.id.text1), - ) - - listView.isTextFilterEnabled = true - } - - private fun getData(prefix: String?): List> { - val myData = ArrayList>() - - val mainIntent = Intent(Intent.ACTION_MAIN, null) - mainIntent.addCategory("io.github.fornewid.sample.SAMPLE_CODE") - - @SuppressLint("QueryPermissionsNeeded") // Only querying our own Activities - val list = packageManager.queryIntentActivities(mainIntent, 0) - - val prefixPath: Array? - var prefixWithSlash = prefix - - if (prefix.isNullOrEmpty()) { - prefixPath = null - } else { - prefixPath = prefix.split("/".toRegex()).toTypedArray() - prefixWithSlash = "$prefix/" - } - - val entries = HashMap() - - list.forEach { info -> - val labelSeq = info.loadLabel(packageManager) - val label = labelSeq?.toString() ?: info.activityInfo.name - - if (prefixWithSlash.isNullOrEmpty() || label.startsWith(prefixWithSlash)) { - val labelPath = label.split("/".toRegex()).toTypedArray() - val nextLabel = if (prefixPath == null) labelPath[0] else labelPath[prefixPath.size] - if (prefixPath?.size ?: 0 == labelPath.size - 1) { - addItem( - data = myData, - name = nextLabel, - intent = activityIntent( - info.activityInfo.applicationInfo.packageName, - info.activityInfo.name, - ), - ) - } else { - if (entries[nextLabel] == null) { - addItem( - data = myData, - name = nextLabel, - intent = browseIntent( - if (prefix == "") nextLabel else "$prefix/$nextLabel", - ), - ) - entries[nextLabel] = true - } - } - } - } - - Collections.sort(myData, sDisplayNameComparator) - - return myData - } - - private fun activityIntent(pkg: String, componentName: String): Intent { - val result = Intent() - result.setClassName(pkg, componentName) - return result - } - - private fun browseIntent(path: String): Intent { - val result = Intent() - result.setClass(this, MainActivity::class.java) - result.putExtra(EXTRA_PATH, path) - return result - } - - private fun addItem(data: MutableList>, name: String, intent: Intent) { - val temp = mutableMapOf() - temp["title"] = name - temp["intent"] = intent - data += temp - } - - override fun onListItemClick(l: ListView, v: View, position: Int, id: Long) { - val map = l.getItemAtPosition(position) as Map<*, *> - val intent = map["intent"] as Intent? - startActivity(intent) - } - - companion object { - private const val EXTRA_PATH = "com.example.android.apis.Path" - - private val sDisplayNameComparator = object : Comparator> { - private val collator = Collator.getInstance() - - override fun compare(map1: Map, map2: Map): Int { - return collator.compare(map1["title"], map2["title"]) + setContent { + MaterialTheme { + NavGraph() } } } diff --git a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/NavGraph.kt b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/NavGraph.kt new file mode 100644 index 0000000..59af77e --- /dev/null +++ b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/NavGraph.kt @@ -0,0 +1,107 @@ +package io.github.fornewid.placeholder.sample + +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import io.github.fornewid.placeholder.sample.foundation.PlaceholderBasicSample +import io.github.fornewid.placeholder.sample.foundation.PlaceholderFadeSample +import io.github.fornewid.placeholder.sample.foundation.PlaceholderShimmerSample +import io.github.fornewid.placeholder.sample.material.PlaceholderMaterialBasicSample +import io.github.fornewid.placeholder.sample.material.PlaceholderMaterialFadeSample +import io.github.fornewid.placeholder.sample.material.PlaceholderMaterialShimmerSample +import io.github.fornewid.placeholder.sample.material3.PlaceholderMaterial3BasicSample +import io.github.fornewid.placeholder.sample.material3.PlaceholderMaterial3FadeSample +import io.github.fornewid.placeholder.sample.material3.PlaceholderMaterial3ShimmerSample +import kotlinx.serialization.Serializable + +sealed interface Destination { + + @Serializable + object Home : Destination + + @Serializable + object PlaceholderFoundationBasic : Destination + + @Serializable + object PlaceholderFoundationFade : Destination + + @Serializable + object PlaceholderFoundationShimmer : Destination + + @Serializable + object PlaceholderMaterialBasic : Destination + + @Serializable + object PlaceholderMaterialFade : Destination + + @Serializable + object PlaceholderMaterialShimmer : Destination + + @Serializable + object PlaceholderMaterial3Basic : Destination + + @Serializable + object PlaceholderMaterial3Fade : Destination + + @Serializable + object PlaceholderMaterial3Shimmer : Destination +} + +@Composable +fun NavGraph( + startDestination: Destination = Destination.Home, +) { + val navController = rememberNavController() + val upPress: () -> Unit = { + navController.navigateUp() + } + NavHost( + navController = navController, + startDestination = startDestination, + modifier = Modifier.fillMaxSize(), + ) { + composable { + HomeScreen( + onItemClick = { + navController.navigate(route = it) + }, + ) + } + + // foundation + composable { + PlaceholderBasicSample() + } + composable { + PlaceholderFadeSample() + } + composable { + PlaceholderShimmerSample() + } + + // material + composable { + PlaceholderMaterialBasicSample() + } + composable { + PlaceholderMaterialFadeSample() + } + composable { + PlaceholderMaterialShimmerSample() + } + + // material3 + composable { + PlaceholderMaterial3BasicSample() + } + composable { + PlaceholderMaterial3FadeSample() + } + composable { + PlaceholderMaterial3ShimmerSample() + } + } +} diff --git a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/foundation/PlaceholderBasicSample.kt b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/foundation/PlaceholderBasicSample.kt index 86ed4c3..6eeacd8 100644 --- a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/foundation/PlaceholderBasicSample.kt +++ b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/foundation/PlaceholderBasicSample.kt @@ -15,9 +15,6 @@ */ package io.github.fornewid.placeholder.sample.foundation -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.lazy.LazyColumn @@ -53,15 +50,10 @@ import io.github.fornewid.placeholder.sample.material.ListItem import io.github.fornewid.placeholder.sample.randomSampleImageUrl import kotlinx.coroutines.delay -class PlaceholderBasicSample : ComponentActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - setContent { - SampleTheme { - Sample() - } - } +@Composable +fun PlaceholderBasicSample() { + SampleTheme { + Sample() } } diff --git a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/foundation/PlaceholderFadeSample.kt b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/foundation/PlaceholderFadeSample.kt index b74b57c..2613989 100644 --- a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/foundation/PlaceholderFadeSample.kt +++ b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/foundation/PlaceholderFadeSample.kt @@ -15,9 +15,6 @@ */ package io.github.fornewid.placeholder.sample.foundation -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.lazy.LazyColumn @@ -55,15 +52,10 @@ import io.github.fornewid.placeholder.sample.material.ListItem import io.github.fornewid.placeholder.sample.randomSampleImageUrl import kotlinx.coroutines.delay -class PlaceholderFadeSample : ComponentActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - setContent { - SampleTheme { - Sample() - } - } +@Composable +fun PlaceholderFadeSample() { + SampleTheme { + Sample() } } diff --git a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/foundation/PlaceholderShimmerSample.kt b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/foundation/PlaceholderShimmerSample.kt index c343d32..8911377 100644 --- a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/foundation/PlaceholderShimmerSample.kt +++ b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/foundation/PlaceholderShimmerSample.kt @@ -15,9 +15,6 @@ */ package io.github.fornewid.placeholder.sample.foundation -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.lazy.LazyColumn @@ -55,15 +52,10 @@ import io.github.fornewid.placeholder.sample.material.ListItem import io.github.fornewid.placeholder.sample.randomSampleImageUrl import kotlinx.coroutines.delay -class PlaceholderShimmerSample : ComponentActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - setContent { - SampleTheme { - Sample() - } - } +@Composable +fun PlaceholderShimmerSample() { + SampleTheme { + Sample() } } diff --git a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material/PlaceholderBasicSample.kt b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material/PlaceholderMaterialBasicSample.kt similarity index 91% rename from sample/android/src/main/java/io/github/fornewid/placeholder/sample/material/PlaceholderBasicSample.kt rename to sample/android/src/main/java/io/github/fornewid/placeholder/sample/material/PlaceholderMaterialBasicSample.kt index 885fe89..0a56911 100644 --- a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material/PlaceholderBasicSample.kt +++ b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material/PlaceholderMaterialBasicSample.kt @@ -15,9 +15,6 @@ */ package io.github.fornewid.placeholder.sample.material -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.lazy.LazyColumn @@ -48,15 +45,10 @@ import io.github.fornewid.placeholder.sample.R import io.github.fornewid.placeholder.sample.randomSampleImageUrl import kotlinx.coroutines.delay -class PlaceholderBasicSample : ComponentActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - setContent { - SampleTheme { - Sample() - } - } +@Composable +fun PlaceholderMaterialBasicSample() { + SampleTheme { + Sample() } } diff --git a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material/PlaceholderFadeSample.kt b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material/PlaceholderMaterialFadeSample.kt similarity index 92% rename from sample/android/src/main/java/io/github/fornewid/placeholder/sample/material/PlaceholderFadeSample.kt rename to sample/android/src/main/java/io/github/fornewid/placeholder/sample/material/PlaceholderMaterialFadeSample.kt index 85893da..5e2808d 100644 --- a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material/PlaceholderFadeSample.kt +++ b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material/PlaceholderMaterialFadeSample.kt @@ -15,9 +15,6 @@ */ package io.github.fornewid.placeholder.sample.material -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.lazy.LazyColumn @@ -50,15 +47,10 @@ import io.github.fornewid.placeholder.sample.R import io.github.fornewid.placeholder.sample.randomSampleImageUrl import kotlinx.coroutines.delay -class PlaceholderFadeSample : ComponentActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - setContent { - SampleTheme { - Sample() - } - } +@Composable +fun PlaceholderMaterialFadeSample() { + SampleTheme { + Sample() } } diff --git a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material/PlaceholderShimmerSample.kt b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material/PlaceholderMaterialShimmerSample.kt similarity index 92% rename from sample/android/src/main/java/io/github/fornewid/placeholder/sample/material/PlaceholderShimmerSample.kt rename to sample/android/src/main/java/io/github/fornewid/placeholder/sample/material/PlaceholderMaterialShimmerSample.kt index e395878..d8e355e 100644 --- a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material/PlaceholderShimmerSample.kt +++ b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material/PlaceholderMaterialShimmerSample.kt @@ -15,9 +15,6 @@ */ package io.github.fornewid.placeholder.sample.material -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.lazy.LazyColumn @@ -50,15 +47,10 @@ import io.github.fornewid.placeholder.sample.R import io.github.fornewid.placeholder.sample.randomSampleImageUrl import kotlinx.coroutines.delay -class PlaceholderShimmerSample : ComponentActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - setContent { - SampleTheme { - Sample() - } - } +@Composable +fun PlaceholderMaterialShimmerSample() { + SampleTheme { + Sample() } } diff --git a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material3/PlaceholderBasicSample.kt b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material3/PlaceholderMaterial3BasicSample.kt similarity index 91% rename from sample/android/src/main/java/io/github/fornewid/placeholder/sample/material3/PlaceholderBasicSample.kt rename to sample/android/src/main/java/io/github/fornewid/placeholder/sample/material3/PlaceholderMaterial3BasicSample.kt index 52a1ae1..39be135 100644 --- a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material3/PlaceholderBasicSample.kt +++ b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material3/PlaceholderMaterial3BasicSample.kt @@ -15,9 +15,6 @@ */ package io.github.fornewid.placeholder.sample.material3 -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.lazy.LazyColumn @@ -48,15 +45,10 @@ import io.github.fornewid.placeholder.sample.R import io.github.fornewid.placeholder.sample.randomSampleImageUrl import kotlinx.coroutines.delay -class PlaceholderBasicSample : ComponentActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - setContent { - SampleTheme { - Sample() - } - } +@Composable +fun PlaceholderMaterial3BasicSample() { + SampleTheme { + Sample() } } diff --git a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material3/PlaceholderFadeSample.kt b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material3/PlaceholderMaterial3FadeSample.kt similarity index 92% rename from sample/android/src/main/java/io/github/fornewid/placeholder/sample/material3/PlaceholderFadeSample.kt rename to sample/android/src/main/java/io/github/fornewid/placeholder/sample/material3/PlaceholderMaterial3FadeSample.kt index 9165cd8..02bd863 100644 --- a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material3/PlaceholderFadeSample.kt +++ b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material3/PlaceholderMaterial3FadeSample.kt @@ -15,9 +15,6 @@ */ package io.github.fornewid.placeholder.sample.material3 -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.lazy.LazyColumn @@ -50,15 +47,10 @@ import io.github.fornewid.placeholder.sample.R import io.github.fornewid.placeholder.sample.randomSampleImageUrl import kotlinx.coroutines.delay -class PlaceholderFadeSample : ComponentActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - setContent { - SampleTheme { - Sample() - } - } +@Composable +fun PlaceholderMaterial3FadeSample() { + SampleTheme { + Sample() } } diff --git a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material3/PlaceholderShimmerSample.kt b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material3/PlaceholderMaterial3ShimmerSample.kt similarity index 92% rename from sample/android/src/main/java/io/github/fornewid/placeholder/sample/material3/PlaceholderShimmerSample.kt rename to sample/android/src/main/java/io/github/fornewid/placeholder/sample/material3/PlaceholderMaterial3ShimmerSample.kt index 0b209d4..df12969 100644 --- a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material3/PlaceholderShimmerSample.kt +++ b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/material3/PlaceholderMaterial3ShimmerSample.kt @@ -15,9 +15,6 @@ */ package io.github.fornewid.placeholder.sample.material3 -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.lazy.LazyColumn @@ -50,15 +47,10 @@ import io.github.fornewid.placeholder.sample.R import io.github.fornewid.placeholder.sample.randomSampleImageUrl import kotlinx.coroutines.delay -class PlaceholderShimmerSample : ComponentActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - setContent { - SampleTheme { - Sample() - } - } +@Composable +fun PlaceholderMaterial3ShimmerSample() { + SampleTheme { + Sample() } } From a43d417baf7180a175e4d0f55c19ad7e5a4498af Mon Sep 17 00:00:00 2001 From: Sungyong An Date: Sun, 2 Jun 2024 17:19:08 +0900 Subject: [PATCH 2/4] fix spotless --- .../fornewid/placeholder/sample/HomeScreen.kt | 15 +++++++++++++++ .../fornewid/placeholder/sample/NavGraph.kt | 15 +++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/HomeScreen.kt b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/HomeScreen.kt index 9db144b..b07529c 100644 --- a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/HomeScreen.kt +++ b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/HomeScreen.kt @@ -1,3 +1,18 @@ +/* + * Copyright 2024 fornewid + * + * 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 + * + * https://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. + */ package io.github.fornewid.placeholder.sample import androidx.compose.foundation.clickable diff --git a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/NavGraph.kt b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/NavGraph.kt index 59af77e..d2a83a5 100644 --- a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/NavGraph.kt +++ b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/NavGraph.kt @@ -1,3 +1,18 @@ +/* + * Copyright 2024 fornewid + * + * 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 + * + * https://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. + */ package io.github.fornewid.placeholder.sample import androidx.compose.foundation.layout.fillMaxSize From 849d5246b44f31452ecb1458726537521cdef42d Mon Sep 17 00:00:00 2001 From: Sungyong An Date: Sun, 2 Jun 2024 18:01:29 +0900 Subject: [PATCH 3/4] Downgrade to navigation 2.7.7 for KMP --- build.gradle | 1 - gradle/libs.versions.toml | 5 +- sample/android/build.gradle.kts | 2 - .../dependencies/releaseRuntimeClasspath.txt | 115 ++++++++---------- .../fornewid/placeholder/sample/NavGraph.kt | 70 ++++------- 5 files changed, 75 insertions(+), 118 deletions(-) diff --git a/build.gradle b/build.gradle index 630b26a..e72bb4b 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,6 @@ plugins { alias(libs.plugins.android.application) apply false alias(libs.plugins.android.library) apply false alias(libs.plugins.kotlin.android) apply false - alias(libs.plugins.kotlin.serialization) apply false alias(libs.plugins.metalava) apply false alias(libs.plugins.maven.publish) apply false alias(libs.plugins.jetbrains.dokka) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b779099..98abe99 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -10,12 +10,11 @@ agp = "8.4.1" kotlin = "1.8.22" coroutines = "1.6.4" -serialization = "1.6.3" coil = "1.3.2" androidx-activity = "1.9.0" -androidx-navigation = "2.8.0-beta02" +androidx-navigation = "2.7.7" androidx-test-core = "1.5.0" androidx-test-runner = "1.5.2" @@ -42,7 +41,6 @@ compose-material3-material3 = { module = "androidx.compose.material3:material3", kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } -kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization" } coil-compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" } @@ -66,7 +64,6 @@ kotlin-pluginGradle = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", ve android-application = { id = "com.android.application", version.ref = "agp" } android-library = { id = "com.android.library", version.ref = "agp" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } -kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } jetbrains-dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } metalava = { id = "me.tylerbwong.gradle.metalava", version.ref = "metalava" } maven-publish = { id = "com.vanniktech.maven.publish", version.ref = "vanniktechPublish" } diff --git a/sample/android/build.gradle.kts b/sample/android/build.gradle.kts index 752b00c..e01db6c 100644 --- a/sample/android/build.gradle.kts +++ b/sample/android/build.gradle.kts @@ -1,7 +1,6 @@ plugins { id("placeholder.android.application") id("placeholder.android.compose") - alias(libs.plugins.kotlin.serialization) alias(libs.plugins.dependencyGuard) } @@ -29,7 +28,6 @@ dependencies { implementation(libs.kotlin.stdlib) implementation(libs.kotlinx.coroutines.android) - implementation(libs.kotlinx.serialization.json) implementation(libs.compose.material.material) implementation(libs.compose.material.iconsext) diff --git a/sample/android/dependencies/releaseRuntimeClasspath.txt b/sample/android/dependencies/releaseRuntimeClasspath.txt index 5114035..75e999c 100644 --- a/sample/android/dependencies/releaseRuntimeClasspath.txt +++ b/sample/android/dependencies/releaseRuntimeClasspath.txt @@ -2,8 +2,8 @@ androidx.activity:activity-compose:1.9.0 androidx.activity:activity-ktx:1.9.0 androidx.activity:activity:1.9.0 androidx.annotation:annotation-experimental:1.4.0 -androidx.annotation:annotation-jvm:1.8.0 -androidx.annotation:annotation:1.8.0 +androidx.annotation:annotation-jvm:1.7.0 +androidx.annotation:annotation:1.7.0 androidx.appcompat:appcompat-resources:1.3.1 androidx.arch.core:core-common:2.2.0 androidx.arch.core:core-runtime:2.2.0 @@ -11,14 +11,14 @@ androidx.autofill:autofill:1.0.0 androidx.collection:collection-jvm:1.4.0 androidx.collection:collection-ktx:1.4.0 androidx.collection:collection:1.4.0 -androidx.compose.animation:animation-android:1.7.0-beta02 -androidx.compose.animation:animation-core-android:1.7.0-beta02 -androidx.compose.animation:animation-core:1.7.0-beta02 -androidx.compose.animation:animation:1.7.0-beta02 -androidx.compose.foundation:foundation-android:1.7.0-beta02 -androidx.compose.foundation:foundation-layout-android:1.7.0-beta02 -androidx.compose.foundation:foundation-layout:1.7.0-beta02 -androidx.compose.foundation:foundation:1.7.0-beta02 +androidx.compose.animation:animation-android:1.6.7 +androidx.compose.animation:animation-core-android:1.6.7 +androidx.compose.animation:animation-core:1.6.7 +androidx.compose.animation:animation:1.6.7 +androidx.compose.foundation:foundation-android:1.6.7 +androidx.compose.foundation:foundation-layout-android:1.6.7 +androidx.compose.foundation:foundation-layout:1.6.7 +androidx.compose.foundation:foundation:1.6.7 androidx.compose.material3:material3-android:1.2.1 androidx.compose.material3:material3:1.2.1 androidx.compose.material:material-android:1.6.7 @@ -29,54 +29,46 @@ androidx.compose.material:material-icons-extended:1.6.7 androidx.compose.material:material-ripple-android:1.6.7 androidx.compose.material:material-ripple:1.6.7 androidx.compose.material:material:1.6.7 -androidx.compose.runtime:runtime-android:1.7.0-beta02 -androidx.compose.runtime:runtime-saveable-android:1.7.0-beta02 -androidx.compose.runtime:runtime-saveable:1.7.0-beta02 -androidx.compose.runtime:runtime:1.7.0-beta02 -androidx.compose.ui:ui-android:1.7.0-beta02 -androidx.compose.ui:ui-geometry-android:1.7.0-beta02 -androidx.compose.ui:ui-geometry:1.7.0-beta02 -androidx.compose.ui:ui-graphics-android:1.7.0-beta02 -androidx.compose.ui:ui-graphics:1.7.0-beta02 -androidx.compose.ui:ui-text-android:1.7.0-beta02 -androidx.compose.ui:ui-text:1.7.0-beta02 -androidx.compose.ui:ui-tooling-preview-android:1.7.0-beta02 -androidx.compose.ui:ui-tooling-preview:1.7.0-beta02 -androidx.compose.ui:ui-unit-android:1.7.0-beta02 -androidx.compose.ui:ui-unit:1.7.0-beta02 -androidx.compose.ui:ui-util-android:1.7.0-beta02 -androidx.compose.ui:ui-util:1.7.0-beta02 -androidx.compose.ui:ui:1.7.0-beta02 +androidx.compose.runtime:runtime-android:1.6.7 +androidx.compose.runtime:runtime-saveable-android:1.6.7 +androidx.compose.runtime:runtime-saveable:1.6.7 +androidx.compose.runtime:runtime:1.6.7 +androidx.compose.ui:ui-android:1.6.7 +androidx.compose.ui:ui-geometry-android:1.6.7 +androidx.compose.ui:ui-geometry:1.6.7 +androidx.compose.ui:ui-graphics-android:1.6.7 +androidx.compose.ui:ui-graphics:1.6.7 +androidx.compose.ui:ui-text-android:1.6.7 +androidx.compose.ui:ui-text:1.6.7 +androidx.compose.ui:ui-tooling-preview-android:1.6.7 +androidx.compose.ui:ui-tooling-preview:1.6.7 +androidx.compose.ui:ui-unit-android:1.6.7 +androidx.compose.ui:ui-unit:1.6.7 +androidx.compose.ui:ui-util-android:1.6.7 +androidx.compose.ui:ui-util:1.6.7 +androidx.compose.ui:ui:1.6.7 androidx.concurrent:concurrent-futures:1.1.0 -androidx.core:core-ktx:1.13.1 -androidx.core:core:1.13.1 +androidx.core:core-ktx:1.13.0 +androidx.core:core:1.13.0 androidx.customview:customview-poolingcontainer:1.0.0 androidx.emoji2:emoji2:1.3.0 androidx.exifinterface:exifinterface:1.3.3 -androidx.graphics:graphics-path:1.0.1 androidx.interpolator:interpolator:1.0.0 -androidx.lifecycle:lifecycle-common-java8:2.8.0 -androidx.lifecycle:lifecycle-common-jvm:2.8.0 -androidx.lifecycle:lifecycle-common:2.8.0 -androidx.lifecycle:lifecycle-livedata-core:2.8.0 -androidx.lifecycle:lifecycle-process:2.8.0 -androidx.lifecycle:lifecycle-runtime-android:2.8.0 -androidx.lifecycle:lifecycle-runtime-compose-android:2.8.0 -androidx.lifecycle:lifecycle-runtime-compose:2.8.0 -androidx.lifecycle:lifecycle-runtime-ktx-android:2.8.0 -androidx.lifecycle:lifecycle-runtime-ktx:2.8.0 -androidx.lifecycle:lifecycle-runtime:2.8.0 -androidx.lifecycle:lifecycle-viewmodel-android:2.8.0 -androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.0 -androidx.lifecycle:lifecycle-viewmodel-compose:2.8.0 -androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.0 -androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.0 -androidx.lifecycle:lifecycle-viewmodel:2.8.0 -androidx.navigation:navigation-common-ktx:2.8.0-beta02 -androidx.navigation:navigation-common:2.8.0-beta02 -androidx.navigation:navigation-compose:2.8.0-beta02 -androidx.navigation:navigation-runtime-ktx:2.8.0-beta02 -androidx.navigation:navigation-runtime:2.8.0-beta02 +androidx.lifecycle:lifecycle-common-java8:2.6.2 +androidx.lifecycle:lifecycle-common:2.6.2 +androidx.lifecycle:lifecycle-livedata-core:2.6.2 +androidx.lifecycle:lifecycle-process:2.6.2 +androidx.lifecycle:lifecycle-runtime-ktx:2.6.2 +androidx.lifecycle:lifecycle-runtime:2.6.2 +androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2 +androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2 +androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.2 +androidx.lifecycle:lifecycle-viewmodel:2.6.2 +androidx.navigation:navigation-common-ktx:2.7.7 +androidx.navigation:navigation-common:2.7.7 +androidx.navigation:navigation-compose:2.7.7 +androidx.navigation:navigation-runtime-ktx:2.7.7 +androidx.navigation:navigation-runtime:2.7.7 androidx.profileinstaller:profileinstaller:1.3.1 androidx.savedstate:savedstate-ktx:1.2.1 androidx.savedstate:savedstate:1.2.1 @@ -94,17 +86,12 @@ io.coil-kt:coil-compose:1.3.2 io.coil-kt:coil:1.3.2 org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.5.21 org.jetbrains.kotlin:kotlin-parcelize-runtime:1.5.21 -org.jetbrains.kotlin:kotlin-stdlib-common:1.9.22 +org.jetbrains.kotlin:kotlin-stdlib-common:1.8.22 org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22 org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 -org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.7.3 -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.7.3 -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.3 -org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.6.3 -org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 -org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.6.3 -org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3 +org.jetbrains.kotlin:kotlin-stdlib:1.8.22 +org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1 +org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.7.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.7.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1 org.jetbrains:annotations:23.0.0 diff --git a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/NavGraph.kt b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/NavGraph.kt index d2a83a5..863174f 100644 --- a/sample/android/src/main/java/io/github/fornewid/placeholder/sample/NavGraph.kt +++ b/sample/android/src/main/java/io/github/fornewid/placeholder/sample/NavGraph.kt @@ -30,92 +30,68 @@ import io.github.fornewid.placeholder.sample.material.PlaceholderMaterialShimmer import io.github.fornewid.placeholder.sample.material3.PlaceholderMaterial3BasicSample import io.github.fornewid.placeholder.sample.material3.PlaceholderMaterial3FadeSample import io.github.fornewid.placeholder.sample.material3.PlaceholderMaterial3ShimmerSample -import kotlinx.serialization.Serializable -sealed interface Destination { - - @Serializable - object Home : Destination - - @Serializable - object PlaceholderFoundationBasic : Destination - - @Serializable - object PlaceholderFoundationFade : Destination - - @Serializable - object PlaceholderFoundationShimmer : Destination - - @Serializable - object PlaceholderMaterialBasic : Destination - - @Serializable - object PlaceholderMaterialFade : Destination - - @Serializable - object PlaceholderMaterialShimmer : Destination - - @Serializable - object PlaceholderMaterial3Basic : Destination - - @Serializable - object PlaceholderMaterial3Fade : Destination - - @Serializable - object PlaceholderMaterial3Shimmer : Destination +sealed class Destination(val route: String) { + object Home : Destination("Home") + object PlaceholderFoundationBasic : Destination("PlaceholderFoundationBasic") + object PlaceholderFoundationFade : Destination("PlaceholderFoundationFade") + object PlaceholderFoundationShimmer : Destination("PlaceholderFoundationShimmer") + object PlaceholderMaterialBasic : Destination("PlaceholderMaterialBasic") + object PlaceholderMaterialFade : Destination("PlaceholderMaterialFade") + object PlaceholderMaterialShimmer : Destination("PlaceholderMaterialShimmer") + object PlaceholderMaterial3Basic : Destination("PlaceholderMaterial3Basic") + object PlaceholderMaterial3Fade : Destination("PlaceholderMaterial3Fade") + object PlaceholderMaterial3Shimmer : Destination("PlaceholderMaterial3Shimmer") } @Composable fun NavGraph( - startDestination: Destination = Destination.Home, + startDestination: String = Destination.Home.route, ) { val navController = rememberNavController() - val upPress: () -> Unit = { - navController.navigateUp() - } NavHost( navController = navController, startDestination = startDestination, modifier = Modifier.fillMaxSize(), ) { - composable { + composable(Destination.Home.route) { HomeScreen( onItemClick = { - navController.navigate(route = it) + navController.navigate(route = it.route) }, ) } // foundation - composable { + composable(Destination.PlaceholderFoundationBasic.route) { PlaceholderBasicSample() } - composable { + composable(Destination.PlaceholderFoundationFade.route) { PlaceholderFadeSample() } - composable { + composable(Destination.PlaceholderFoundationShimmer.route) { PlaceholderShimmerSample() } // material - composable { + composable(Destination.PlaceholderMaterialBasic.route) { PlaceholderMaterialBasicSample() } - composable { + composable(Destination.PlaceholderMaterialFade.route) { PlaceholderMaterialFadeSample() } - composable { + composable(Destination.PlaceholderMaterialShimmer.route) { PlaceholderMaterialShimmerSample() } // material3 - composable { + composable(Destination.PlaceholderMaterial3Basic.route) { PlaceholderMaterial3BasicSample() } - composable { + composable(Destination.PlaceholderMaterial3Fade.route) { PlaceholderMaterial3FadeSample() } - composable { + composable(Destination.PlaceholderMaterial3Shimmer.route) { PlaceholderMaterial3ShimmerSample() } } From 60d48dd5726aa05078f2144a5e90411b53f4b227 Mon Sep 17 00:00:00 2001 From: Sungyong An Date: Sun, 2 Jun 2024 18:08:07 +0900 Subject: [PATCH 4/4] Set root project name explicitly for 'build-logic' --- build-logic/settings.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts index 8d88509..2907fbf 100644 --- a/build-logic/settings.gradle.kts +++ b/build-logic/settings.gradle.kts @@ -10,4 +10,5 @@ dependencyResolutionManagement { } } +rootProject.name = "build-logic" include(":convention")