diff --git a/composeApp/build.gradle.kts b/composeApp/build.gradle.kts
index 8c355404..1051d870 100644
--- a/composeApp/build.gradle.kts
+++ b/composeApp/build.gradle.kts
@@ -11,6 +11,30 @@ plugins {
alias(libs.plugins.ktlint)
}
+val organization: String? by project
+
+val appConfig =
+ mapOf(
+ "dw" to
+ AppConfig(
+ appId = "org.dw.probe",
+ appName = "News Media Scan",
+ srcRoot = "src/dwMain/kotlin",
+ resRoot = "src/dwMain/resources",
+ ),
+ "ooni" to
+ AppConfig(
+ appId = "org.ooni.probe",
+ appName = "OONI Probe",
+ srcRoot = "src/ooniMain/kotlin",
+ resRoot = "src/ooniMain/resources",
+ ),
+ )
+
+val config = appConfig[organization] ?: appConfig["ooni"]!!
+
+println("The current build flavor is set to $organization with app id set to ${config.appId}.")
+
kotlin {
androidTarget {
@OptIn(ExperimentalKotlinGradlePluginApi::class)
@@ -54,8 +78,11 @@ kotlin {
implementation(libs.kotlin.serialization)
implementation(libs.bundles.ui)
implementation(libs.bundles.tooling)
- }
+ getByName("commonMain") {
+ kotlin.srcDir(config.srcRoot)
+ }
+ }
all {
languageSettings.optIn("kotlinx.coroutines.ExperimentalCoroutinesApi")
}
@@ -71,16 +98,24 @@ kotlin {
}
}
+compose.resources {
+ customDirectory(
+ sourceSetName = "commonMain",
+ directoryProvider = provider { layout.projectDirectory.dir(config.resRoot) },
+ )
+}
+
android {
namespace = "org.ooni.probe"
compileSdk = libs.versions.android.compileSdk.get().toInt()
defaultConfig {
- applicationId = "org.ooni.probe"
+ applicationId = config.appId
minSdk = libs.versions.android.minSdk.get().toInt()
targetSdk = libs.versions.android.targetSdk.get().toInt()
versionCode = 1
versionName = "1.0"
+ resValue("string", "app_name", config.appName)
}
packaging {
resources {
@@ -121,3 +156,126 @@ ktlint {
}
additionalEditorconfig.put("ktlint_function_naming_ignore_when_annotated_with", "Composable")
}
+
+tasks.register("copyCommonResourcesToFlavor") {
+ doLast {
+ val projectDir = project.projectDir.absolutePath
+
+ val sourceFile = File(projectDir, "src/commonMain/composeResources")
+
+ val destinationFile = File(projectDir, config.resRoot)
+
+ copyRecursive(sourceFile, destinationFile)
+ }
+}
+
+tasks.register("cleanCopiedCommonResourcesToFlavor") {
+ doLast {
+ val projectDir = project.projectDir.absolutePath
+
+ val destinationFile = File(projectDir, config.resRoot)
+ destinationFile.listFiles()?.forEach { folder ->
+ folder.listFiles()?.forEach { file ->
+ if (file.name == ".gitignore") {
+ file.readText().lines().forEach { line ->
+ if (line.isNotEmpty()) {
+ println("Removing $line")
+ File(folder, line).deleteRecursively()
+ }
+ }.also {
+ file.delete()
+ }
+ }
+ }
+ }
+ }
+}
+
+/**
+ * Configure the prepareComposeResourcesTaskForCommonMain task to depend on the copyCommonResourcesToFlavor task.
+ * This will ensure that the common resources are copied to the correct location before the task is executed.
+ *
+ * NOTE: Current limitation is that multiple resources directories are not supported.
+ */
+tasks.named("preBuild").configure {
+ dependsOn("copyCommonResourcesToFlavor")
+}
+
+tasks.named("clean").configure {
+ dependsOn("copyCommonResourcesToFlavor")
+}
+
+tasks.named("clean").configure {
+ dependsOn("cleanCopiedCommonResourcesToFlavor")
+}
+
+data class AppConfig(
+ val appId: String,
+ val appName: String,
+ val srcRoot: String,
+ val resRoot: String,
+)
+
+/**
+ * Ignore the copied file if it is not already ignored.
+ *
+ * @param filePath The path to the file to ignore.
+ * @param lineToAdd The line to add to the file.
+ */
+fun ignoreCopiedFileIfNotIgnored(
+ filePath: String,
+ lineToAdd: String,
+) {
+ val file = File(filePath)
+
+ if (!file.exists()) {
+ file.createNewFile()
+ }
+
+ val fileContents = file.readText()
+
+ if (!fileContents.contains(lineToAdd)) {
+ file.appendText("\n$lineToAdd")
+ }
+}
+
+/**
+ * Copy files from one directory to another.
+ *
+ * @param from The source directory.
+ * @param to The destination directory.
+ */
+fun copyRecursive(
+ from: File,
+ to: File,
+) {
+ if (!from.exists()) {
+ println("Source directory does not exist: $from")
+ return
+ }
+ from.listFiles()?.forEach { file ->
+ if (file.name != ".DS_Store") {
+ if (file.isDirectory) {
+ val newDir = File(to, file.name)
+ newDir.mkdir()
+ copyRecursive(file, newDir)
+ } else {
+ val destinationFile = File(to, file.name)
+ if (destinationFile.exists()) {
+ println("Overwriting $destinationFile")
+ destinationFile.delete()
+ }
+ if (!destinationFile.parentFile.exists()) {
+ destinationFile.parentFile.mkdirs()
+ }
+ file.copyTo(destinationFile).also {
+ println("Ignoring ${it.name}")
+ ignoreCopiedFileIfNotIgnored(
+ to.absolutePath + "/.gitignore",
+ it.name,
+ )
+ }
+ }
+ }
+ }
+}
diff --git a/composeApp/src/androidMain/res/values/strings.xml b/composeApp/src/androidMain/res/values/strings.xml
index 9301c107..85420055 100644
--- a/composeApp/src/androidMain/res/values/strings.xml
+++ b/composeApp/src/androidMain/res/values/strings.xml
@@ -1,3 +1,2 @@
- OONI Probe
-
\ No newline at end of file
+
diff --git a/composeApp/src/commonMain/composeResources/values/common.xml b/composeApp/src/commonMain/composeResources/values/common.xml
new file mode 100644
index 00000000..4392043c
--- /dev/null
+++ b/composeApp/src/commonMain/composeResources/values/common.xml
@@ -0,0 +1,3 @@
+
+ Run Test
+
diff --git a/composeApp/src/commonMain/kotlin/org/ooni/probe/App.kt b/composeApp/src/commonMain/kotlin/org/ooni/probe/App.kt
index 6f41befd..3f115e9a 100644
--- a/composeApp/src/commonMain/kotlin/org/ooni/probe/App.kt
+++ b/composeApp/src/commonMain/kotlin/org/ooni/probe/App.kt
@@ -11,7 +11,7 @@ import androidx.navigation.compose.rememberNavController
import co.touchlab.kermit.Logger
import org.jetbrains.compose.ui.tooling.preview.Preview
import org.ooni.probe.di.Dependencies
-import org.ooni.probe.ui.Theme
+import org.ooni.probe.ui.AppTheme
import org.ooni.probe.ui.navigation.Navigation
@Composable
@@ -19,7 +19,7 @@ import org.ooni.probe.ui.navigation.Navigation
fun App(dependencies: Dependencies) {
val navController = rememberNavController()
- Theme {
+ AppTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background,
diff --git a/composeApp/src/commonMain/kotlin/org/ooni/probe/shared/ThemeConfigBase.kt b/composeApp/src/commonMain/kotlin/org/ooni/probe/shared/ThemeConfigBase.kt
new file mode 100644
index 00000000..82007a63
--- /dev/null
+++ b/composeApp/src/commonMain/kotlin/org/ooni/probe/shared/ThemeConfigBase.kt
@@ -0,0 +1,7 @@
+package org.ooni.probe.shared
+
+import androidx.compose.material3.ColorScheme
+
+interface ThemeConfigBase {
+ fun colorScheme(isDarkTheme: Boolean): ColorScheme
+}
diff --git a/composeApp/src/commonMain/kotlin/org/ooni/probe/ui/Theme.kt b/composeApp/src/commonMain/kotlin/org/ooni/probe/ui/Theme.kt
index ca9a42a8..796e85ff 100644
--- a/composeApp/src/commonMain/kotlin/org/ooni/probe/ui/Theme.kt
+++ b/composeApp/src/commonMain/kotlin/org/ooni/probe/ui/Theme.kt
@@ -4,71 +4,15 @@ import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Shapes
-import androidx.compose.material3.darkColorScheme
-import androidx.compose.material3.lightColorScheme
import androidx.compose.runtime.Composable
-import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
-private val primaryColor = Color(0xff0588cb)
-private val primaryLightColor = primaryColor.copy(alpha = 0.75f)
-private val secondaryColor = Color(0xff5db8fe)
-private val secondaryLightColor = secondaryColor.copy(alpha = 0.75f)
-private val primaryTextColor = Color(0xffffffff)
-private val secondaryTextColor = Color(0xff000000)
-private val surfaceDark = Color(0xFF161616)
-private val surfaceLight = Color(0xFFFFFFFF)
-private val backgroundLightColor = Color(0xffF1F0F5)
-private val backgroundDarkColor = Color(0xff010100)
-private val errorColor = Color(0xFFFF8989)
-private val onErrorColor = Color(0xFF000000)
-
-private val LightColors =
- lightColorScheme(
- primary = primaryColor,
- onPrimary = primaryTextColor,
- secondary = secondaryColor,
- onSecondary = secondaryTextColor,
- tertiary = primaryLightColor,
- onTertiary = primaryTextColor,
- background = backgroundLightColor,
- onBackground = Color.Black,
- surface = surfaceLight,
- onSurface = Color.Black,
- surfaceVariant = surfaceLight,
- onSurfaceVariant = Color.Black,
- secondaryContainer = primaryColor,
- onSecondaryContainer = Color.White,
- error = errorColor,
- onError = onErrorColor,
- )
-
-private val DarkColors =
- darkColorScheme(
- primary = primaryColor,
- onPrimary = primaryTextColor,
- secondary = secondaryLightColor,
- onSecondary = secondaryTextColor,
- tertiary = primaryLightColor,
- onTertiary = primaryTextColor,
- background = backgroundDarkColor,
- onBackground = Color.White,
- surface = surfaceDark,
- onSurface = Color.White,
- surfaceVariant = surfaceDark,
- onSurfaceVariant = Color.White,
- secondaryContainer = primaryColor,
- onSecondaryContainer = Color.White,
- error = errorColor,
- onError = onErrorColor,
- )
-
@Composable
-internal fun Theme(
+fun AppTheme(
useDarkTheme: Boolean = isSystemInDarkTheme(),
content: @Composable () -> Unit,
) {
- val colorScheme = if (useDarkTheme) DarkColors else LightColors
+ val colorScheme = ThemeConfig.colorScheme(useDarkTheme)
val shapes =
Shapes(
small = RoundedCornerShape(4.dp),
diff --git a/composeApp/src/commonMain/kotlin/org/ooni/probe/ui/dashboard/DashboardScreen.kt b/composeApp/src/commonMain/kotlin/org/ooni/probe/ui/dashboard/DashboardScreen.kt
index 7334c255..a66857db 100644
--- a/composeApp/src/commonMain/kotlin/org/ooni/probe/ui/dashboard/DashboardScreen.kt
+++ b/composeApp/src/commonMain/kotlin/org/ooni/probe/ui/dashboard/DashboardScreen.kt
@@ -1,43 +1,73 @@
package org.ooni.probe.ui.dashboard
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Button
+import androidx.compose.material3.ExperimentalMaterial3Api
+import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
+import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import ooniprobe.composeapp.generated.resources.Res
+import ooniprobe.composeapp.generated.resources.app_name
+import ooniprobe.composeapp.generated.resources.logo
+import org.jetbrains.compose.resources.painterResource
+import org.jetbrains.compose.resources.stringResource
import org.jetbrains.compose.ui.tooling.preview.Preview
-import org.ooni.probe.ui.Theme
+import org.ooni.probe.ui.AppTheme
+@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun DashboardScreen(
state: DashboardViewModel.State,
onEvent: (DashboardViewModel.Event) -> Unit,
) {
- Column {
- Button(
- onClick = { onEvent(DashboardViewModel.Event.StartClick) },
- enabled = !state.isRunning,
+ Scaffold(
+ topBar = {
+ TopAppBar(
+ title = {
+ Text(stringResource(Res.string.app_name))
+ },
+ )
+ },
+ ) { contentPadding ->
+
+ Column(
+ modifier = Modifier.padding(contentPadding),
+ verticalArrangement = Arrangement.Center,
) {
- Text("Run Test")
- }
+ Button(
+ onClick = { onEvent(DashboardViewModel.Event.StartClick) },
+ enabled = !state.isRunning,
+ ) {
+ // Text(stringResource(Res.string.run_tests))
+ Text("Run Tests")
+ }
- Text(
- text = state.log,
- modifier =
- Modifier
- .fillMaxSize()
- .verticalScroll(rememberScrollState()),
- )
+ Image(
+ painterResource(Res.drawable.logo),
+ contentDescription = "OONI Probe Logo",
+ modifier = Modifier.align(Alignment.CenterHorizontally),
+ )
+ Text(
+ text = state.log,
+ modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState()),
+ )
+ }
}
}
@Preview
@Composable
fun DashboardScreenPreview() {
- Theme {
+ AppTheme {
DashboardScreen(
state = DashboardViewModel.State(isRunning = false, log = ""),
onEvent = {},
diff --git a/composeApp/src/dwMain/kotlin/Config.kt b/composeApp/src/dwMain/kotlin/Config.kt
new file mode 100644
index 00000000..a6e0da90
--- /dev/null
+++ b/composeApp/src/dwMain/kotlin/Config.kt
@@ -0,0 +1,7 @@
+object Config {
+ object Config {
+ const val OONI_API_BASE_URL: String = "https://api.prod.ooni.io"
+ const val OONI_RUN_DASHBOARD_URL: String = "https://run-v2.ooni.org"
+ const val BASE_SOFTWARE_NAME: String = "news-media-scan"
+ }
+}
diff --git a/composeApp/src/dwMain/kotlin/org/ooni/probe/ui/Colors.kt b/composeApp/src/dwMain/kotlin/org/ooni/probe/ui/Colors.kt
new file mode 100644
index 00000000..217ad4dd
--- /dev/null
+++ b/composeApp/src/dwMain/kotlin/org/ooni/probe/ui/Colors.kt
@@ -0,0 +1,64 @@
+package org.ooni.probe.ui
+
+import androidx.compose.material3.ColorScheme
+import androidx.compose.material3.darkColorScheme
+import androidx.compose.material3.lightColorScheme
+import androidx.compose.ui.graphics.Color
+
+class ThemeConfig {
+ companion object {
+ fun colorScheme(isDarkTheme: Boolean) = if (isDarkTheme) darkColors else lightColors
+ }
+}
+
+private val primaryColor = Color(0xffD32625)
+private val primaryLightColor = primaryColor.copy(alpha = 0.75f)
+private val secondaryColor = Color(0xff5db8fe)
+private val secondaryLightColor = secondaryColor.copy(alpha = 0.75f)
+private val primaryTextColor = Color(0xffffffff)
+private val secondaryTextColor = Color(0xff000000)
+private val surfaceDark = Color(0xFF161616)
+private val surfaceLight = Color(0xFFFFFFFF)
+private val backgroundLightColor = Color(0xffF1F0F5)
+private val backgroundDarkColor = Color(0xff010100)
+private val errorColor = Color(0xFFFF8989)
+private val onErrorColor = Color(0xFF000000)
+
+val darkColors: ColorScheme =
+ darkColorScheme(
+ primary = primaryColor,
+ onPrimary = primaryTextColor,
+ secondary = secondaryLightColor,
+ onSecondary = secondaryTextColor,
+ tertiary = primaryLightColor,
+ onTertiary = primaryTextColor,
+ background = backgroundDarkColor,
+ onBackground = Color.White,
+ surface = surfaceDark,
+ onSurface = Color.White,
+ surfaceVariant = surfaceDark,
+ onSurfaceVariant = Color.White,
+ secondaryContainer = primaryColor,
+ onSecondaryContainer = Color.White,
+ error = errorColor,
+ onError = onErrorColor,
+ )
+val lightColors: ColorScheme =
+ lightColorScheme(
+ primary = primaryColor,
+ onPrimary = primaryTextColor,
+ secondary = secondaryColor,
+ onSecondary = secondaryTextColor,
+ tertiary = primaryLightColor,
+ onTertiary = primaryTextColor,
+ background = backgroundLightColor,
+ onBackground = Color.Black,
+ surface = surfaceLight,
+ onSurface = Color.Black,
+ surfaceVariant = surfaceLight,
+ onSurfaceVariant = Color.Black,
+ secondaryContainer = primaryColor,
+ onSecondaryContainer = Color.White,
+ error = errorColor,
+ onError = onErrorColor,
+ )
diff --git a/composeApp/src/dwMain/resources/drawable/.gitignore b/composeApp/src/dwMain/resources/drawable/.gitignore
new file mode 100644
index 00000000..35f3f1a5
--- /dev/null
+++ b/composeApp/src/dwMain/resources/drawable/.gitignore
@@ -0,0 +1,2 @@
+
+compose-multiplatform.xml
\ No newline at end of file
diff --git a/composeApp/src/dwMain/resources/drawable/logo.xml b/composeApp/src/dwMain/resources/drawable/logo.xml
new file mode 100644
index 00000000..dac2aa51
--- /dev/null
+++ b/composeApp/src/dwMain/resources/drawable/logo.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/composeApp/src/dwMain/resources/values/.gitignore b/composeApp/src/dwMain/resources/values/.gitignore
new file mode 100644
index 00000000..5bdcc5ad
--- /dev/null
+++ b/composeApp/src/dwMain/resources/values/.gitignore
@@ -0,0 +1,2 @@
+
+common.xml
\ No newline at end of file
diff --git a/composeApp/src/dwMain/resources/values/strings.xml b/composeApp/src/dwMain/resources/values/strings.xml
new file mode 100644
index 00000000..3cbb405a
--- /dev/null
+++ b/composeApp/src/dwMain/resources/values/strings.xml
@@ -0,0 +1,3 @@
+
+ News Media Scan
+
diff --git a/composeApp/src/ooniMain/kotlin/Config.kt b/composeApp/src/ooniMain/kotlin/Config.kt
new file mode 100644
index 00000000..e511cc05
--- /dev/null
+++ b/composeApp/src/ooniMain/kotlin/Config.kt
@@ -0,0 +1,7 @@
+package org.ooni.probe.config
+
+object Config {
+ const val OONI_API_BASE_URL: String = "https://api.prod.ooni.io"
+ const val OONI_RUN_DASHBOARD_URL: String = "https://run-v2.ooni.org"
+ const val BASE_SOFTWARE_NAME: String = "ooniprobe"
+}
diff --git a/composeApp/src/ooniMain/kotlin/org/ooni/probe/ui/Colors.kt b/composeApp/src/ooniMain/kotlin/org/ooni/probe/ui/Colors.kt
new file mode 100644
index 00000000..b74eb8b6
--- /dev/null
+++ b/composeApp/src/ooniMain/kotlin/org/ooni/probe/ui/Colors.kt
@@ -0,0 +1,65 @@
+package org.ooni.probe.ui
+
+import androidx.compose.material3.ColorScheme
+import androidx.compose.material3.darkColorScheme
+import androidx.compose.material3.lightColorScheme
+import androidx.compose.ui.graphics.Color
+import org.ooni.probe.shared.ThemeConfigBase
+
+class ThemeConfig {
+ companion object : ThemeConfigBase {
+ override fun colorScheme(isDarkTheme: Boolean) = if (isDarkTheme) darkColors else lightColors
+ }
+}
+
+val primaryColor = Color(0xff0588cb)
+val primaryLightColor = primaryColor.copy(alpha = 0.75f)
+val secondaryColor = Color(0xff5db8fe)
+val secondaryLightColor = secondaryColor.copy(alpha = 0.75f)
+val primaryTextColor = Color(0xffffffff)
+val secondaryTextColor = Color(0xff000000)
+val surfaceDark = Color(0xFF161616)
+val surfaceLight = Color(0xFFFFFFFF)
+val backgroundLightColor = Color(0xffF1F0F5)
+val backgroundDarkColor = Color(0xff010100)
+val errorColor = Color(0xFFFF8989)
+val onErrorColor = Color(0xFF000000)
+
+val darkColors: ColorScheme =
+ darkColorScheme(
+ primary = primaryColor,
+ onPrimary = primaryTextColor,
+ secondary = secondaryLightColor,
+ onSecondary = secondaryTextColor,
+ tertiary = primaryLightColor,
+ onTertiary = primaryTextColor,
+ background = backgroundDarkColor,
+ onBackground = Color.White,
+ surface = surfaceDark,
+ onSurface = Color.White,
+ surfaceVariant = surfaceDark,
+ onSurfaceVariant = Color.White,
+ secondaryContainer = primaryColor,
+ onSecondaryContainer = Color.White,
+ error = errorColor,
+ onError = onErrorColor,
+ )
+val lightColors: ColorScheme =
+ lightColorScheme(
+ primary = primaryColor,
+ onPrimary = primaryTextColor,
+ secondary = secondaryColor,
+ onSecondary = secondaryTextColor,
+ tertiary = primaryLightColor,
+ onTertiary = primaryTextColor,
+ background = backgroundLightColor,
+ onBackground = Color.Black,
+ surface = surfaceLight,
+ onSurface = Color.Black,
+ surfaceVariant = surfaceLight,
+ onSurfaceVariant = Color.Black,
+ secondaryContainer = primaryColor,
+ onSecondaryContainer = Color.White,
+ error = errorColor,
+ onError = onErrorColor,
+ )
diff --git a/composeApp/src/ooniMain/resources/drawable/.gitignore b/composeApp/src/ooniMain/resources/drawable/.gitignore
new file mode 100644
index 00000000..35f3f1a5
--- /dev/null
+++ b/composeApp/src/ooniMain/resources/drawable/.gitignore
@@ -0,0 +1,2 @@
+
+compose-multiplatform.xml
\ No newline at end of file
diff --git a/composeApp/src/ooniMain/resources/drawable/logo.xml b/composeApp/src/ooniMain/resources/drawable/logo.xml
new file mode 100644
index 00000000..ec00ac58
--- /dev/null
+++ b/composeApp/src/ooniMain/resources/drawable/logo.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/composeApp/src/ooniMain/resources/values/.gitignore b/composeApp/src/ooniMain/resources/values/.gitignore
new file mode 100644
index 00000000..5bdcc5ad
--- /dev/null
+++ b/composeApp/src/ooniMain/resources/values/.gitignore
@@ -0,0 +1,2 @@
+
+common.xml
\ No newline at end of file
diff --git a/composeApp/src/ooniMain/resources/values/strings.xml b/composeApp/src/ooniMain/resources/values/strings.xml
new file mode 100644
index 00000000..96cb7ce4
--- /dev/null
+++ b/composeApp/src/ooniMain/resources/values/strings.xml
@@ -0,0 +1,3 @@
+
+ OONI Probe
+
diff --git a/gradle.properties b/gradle.properties
index 5db355f8..59e98477 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -9,4 +9,5 @@ android.useAndroidX=true
#MPP
kotlin.mpp.androidSourceSetLayoutVersion=2
-kotlin.mpp.enableCInteropCommonization=true
\ No newline at end of file
+kotlin.mpp.enableCInteropCommonization=true
+
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 5cfad43e..0942cdba 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -5,7 +5,7 @@ android-compileSdk = "34"
android-minSdk = "24"
android-targetSdk = "34"
-compose-plugin = "1.6.11"
+compose-plugin = "1.7.0-alpha02"
kotlin = "2.0.0"
[plugins]
diff --git a/iosApp/iosApp.xcodeproj/project.pbxproj b/iosApp/iosApp.xcodeproj/project.pbxproj
index 1b90a014..123f806b 100644
--- a/iosApp/iosApp.xcodeproj/project.pbxproj
+++ b/iosApp/iosApp.xcodeproj/project.pbxproj
@@ -127,7 +127,6 @@
B92378962B6B1156000C7307 /* Frameworks */,
7555FF79242A565900829871 /* Resources */,
93E977732C4FE022009CCABC /* ShellScript */,
- 8C6B45F03EB6D1828FCB533E /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -206,23 +205,6 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
- 8C6B45F03EB6D1828FCB533E /* [CP] Copy Pods Resources */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-resources-${CONFIGURATION}-input-files.xcfilelist",
- );
- name = "[CP] Copy Pods Resources";
- outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-resources-${CONFIGURATION}-output-files.xcfilelist",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-resources.sh\"\n";
- showEnvVarsInLog = 0;
- };
93E977732C4FE022009CCABC /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 6f0e8113..182a3e2a 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -28,4 +28,4 @@ dependencyResolutionManagement {
}
}
-include(":composeApp")
\ No newline at end of file
+include(":composeApp")