Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: migrate from Moko to JetBrains Compose Multiplatform resources #345

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ plugins {
alias(libs.plugins.crashlytics) apply false
alias(libs.plugins.jetbrainsCompose) apply false
alias(libs.plugins.compose.compiler) apply false
alias(libs.plugins.moko.resources) apply false
}

tasks.register("clean", Delete::class) {
Expand Down
2 changes: 0 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,3 @@ kotlin.mpp.androidSourceSetLayoutVersion=2
#org.gradle.configuration-cache=true
#org.gradle.caching=true
xcodeproj=iosApp/RobotConf.xcodeproj

moko.resources.disableStaticFrameworkWarning=true
6 changes: 0 additions & 6 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@ kotlin = "2.1.10"
kotlinx-coroutines = "1.10.1"
kotlinx-datetime = "0.6.2"
ktor = "3.1.1"
moko-resources = "0.24.5"
moko-graphics = "0.10.0"
okhttp = "4.12.0"
okio = "3.10.2"
openfeedback-m3 = "0.2.3"
Expand Down Expand Up @@ -70,9 +68,6 @@ kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutine
kotlinx-coroutines-play-services = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-play-services", version.ref = "kotlinx-coroutines" }
kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinx-datetime" }
ktor-client-darwin = { module = "io.ktor:ktor-client-darwin", version.ref = "ktor" }
moko-resources = { module = "dev.icerock.moko:resources", version.ref = "moko-resources" }
moko-resources_compose = { module = "dev.icerock.moko:resources-compose", version.ref = "moko-resources" }
moko-graphics = { module = "dev.icerock.moko:graphics", version.ref = "moko-graphics" }
okhttp = { group = "com.squareup.okhttp3", name = "okhttp", version.ref = "okhttp" }
okio = { group = "com.squareup.okio", name = "okio", version.ref = "okio" }
openfeedback-m3 = { module = "io.openfeedback:openfeedback-m3", version.ref = "openfeedback-m3" }
Expand Down Expand Up @@ -111,7 +106,6 @@ google-services = { id = "com.google.gms.google-services", version.ref = "google
jetbrainsCompose = { id = "org.jetbrains.compose", version.ref = "jetbrainsCompose" }
kmp = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
moko-resources = { id = "dev.icerock.mobile.multiplatform-resources", version.ref = "moko-resources" }

## Custom plugins
androidmakers-android-application = { id = "fr.androidmakers.android.application" }
Expand Down
9 changes: 0 additions & 9 deletions shared/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
plugins {
alias(libs.plugins.androidmakers.kmp.library)
alias(libs.plugins.moko.resources)
}

kotlin {
Expand All @@ -16,16 +15,12 @@ kotlin {
export(project(":shared:ui"))
export(project(":shared:domain"))
export(project(":shared:di"))
export(libs.moko.graphics)
export(libs.moko.resources)
export(libs.openfeedback.m3)
}
}

sourceSets {
commonMain.dependencies {
implementation(libs.moko.resources)

api(project(":shared:ui"))
api(project(":shared:domain"))
api(project(":shared:di"))
Expand All @@ -41,7 +36,3 @@ configurations.configureEach {
android {
namespace = "fr.paug.androidmakers.shared"
}

multiplatformResources {
resourcesPackage.set("fr.paug.androidmakers.ui")
}
9 changes: 4 additions & 5 deletions shared/ui/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
plugins {
alias(libs.plugins.androidmakers.kmp.library)
alias(libs.plugins.moko.resources)
alias(libs.plugins.jetbrainsCompose)
alias(libs.plugins.compose.compiler)
}
Expand All @@ -21,12 +20,12 @@ kotlin {

sourceSets {
commonMain.dependencies {
implementation(libs.moko.resources.compose)
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.material3)
implementation(compose.ui)
implementation(compose.material3)
implementation(compose.materialIconsExtended)
implementation(compose.components.resources)
implementation(compose.components.uiToolingPreview)
implementation(libs.coil.compose)
implementation(libs.jetbrains.navigation.compose)
Expand Down Expand Up @@ -62,6 +61,6 @@ android {
namespace = "fr.paug.androidmakers.ui"
}

multiplatformResources {
resourcesPackage.set("fr.paug.androidmakers.ui")
compose.resources {
packageOfResClass = "fr.paug.androidmakers.ui"
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,11 @@ import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import coil3.compose.AsyncImage
import dev.icerock.moko.resources.compose.stringResource
import fr.androidmakers.domain.model.User
import fr.paug.androidmakers.ui.MR
import fr.paug.androidmakers.ui.Res
import fr.paug.androidmakers.ui.signin
import fr.paug.androidmakers.ui.signout
import org.jetbrains.compose.resources.stringResource

@Composable
actual fun SigninButton(
Expand All @@ -33,13 +35,13 @@ actual fun SigninButton(
if (user == null) {
Icon(
imageVector = Icons.Rounded.AccountCircle,
contentDescription = stringResource(MR.strings.signin)
contentDescription = stringResource(Res.string.signin)
)
} else {
AsyncImage(
model = user.photoUrl,
modifier = Modifier.clip(CircleShape),
contentDescription = stringResource(MR.strings.signout)
contentDescription = stringResource(Res.string.signout)
)
}
}
Expand All @@ -51,7 +53,7 @@ actual fun SigninButton(
if (user == null) {
DropdownMenuItem(
text = {
Text(stringResource(MR.strings.signin))
Text(stringResource(Res.string.signin))
},
onClick = {
expandedState.value = false
Expand All @@ -61,7 +63,7 @@ actual fun SigninButton(
} else {
DropdownMenuItem(
text = {
Text(stringResource(MR.strings.signout))
Text(stringResource(Res.string.signout))
},
onClick = {
expandedState.value = false
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:viewportHeight="1792"
android:viewportWidth="1792"
android:width="24dp">
<path
android:fillColor="#000"
android:pathData="M596.6 1410.2q0 80-56 136t-136 56q-80 0-136-56t-56-136q0-80 56-136t136-56q80 0 136 56t56 136zm512 123q2 28-17 48-18 21-47 21h-135q-25 0-43-16.5t-20-41.5q-22-229-184.5-391.5T270.6 968.2q-25-2-41.5-20t-16.5-43v-135q0-29 21-47 17-17 43-17h5q160 13 306 80.5t259 181.5q114 113 181.5 259t80.5 306zm512 2q2 27-18 47-18 20-46 20h-143q-26 0-44.5-17.5t-19.5-42.5q-12-215-101-408.5t-231.5-336q-142.5-142.5-336-231.5t-408.5-102q-25-1-42.5-19.5t-17.5-43.5v-143q0-28 20-46 18-18 44-18h3q262 13 501.5 120t425.5 294q187 186 294 425.5t120 501.5z" />
</vector>
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:viewportHeight="512"
android:viewportWidth="448"
android:width="21dp">
<path
android:fillColor="#FF000000"
android:pathData="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-0.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h0.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z" />
</vector>
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="271dp"
android:viewportHeight="271"
android:viewportWidth="300"
android:width="300dp">
<path
android:fillColor="#FF000000"
android:pathData="m236,0h46l-101,115 118,156h-92.6l-72.5,-94.8 -83,94.8h-46l107,-123 -113,-148h94.9l65.5,86.6zM219.9,244h25.5l-165,-218h-27.4z" />
</vector>
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="115dp"
android:viewportHeight="115"
android:viewportWidth="164"
android:width="164dp">
<group>
<clip-path android:pathData="M0 0h164v115H0z" />
<path
android:fillColor="#FF0000"
android:pathData="M159.87 17.85c-1.89-7.03-7.41-12.55-14.44-14.44C132.7 0 81.64 0 81.64 0S30.58 0 17.85 3.41C10.82 5.3 5.3 10.82 3.41 17.85 0 30.58 0 57.15 0 57.15s0 26.57 3.41 39.3c1.89 7.03 7.41 12.55 14.44 14.44 12.73 3.41 63.79 3.41 63.79 3.41s51.06 0 63.79-3.41c7.03-1.89 12.55-7.41 14.44-14.44 3.41-12.73 3.41-39.3 3.41-39.3s-0.02-26.57-3.41-39.3z" />
<path
android:fillColor="#ffffff"
android:pathData="M65.3 81.64l42.41-24.49L65.3 32.66v48.98z" />
</group>
</vector>
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Android Makers by droidcon</string>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
<?xml version="1.0" encoding="utf-8" ?>
<resources>

<string name="app_name">Android Makers by droidcon</string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,17 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import com.androidmakers.ui.getPlatformContext
import dev.icerock.moko.resources.compose.painterResource
import dev.icerock.moko.resources.compose.stringResource
import fr.paug.androidmakers.ui.MR
import fr.paug.androidmakers.ui.Res
import fr.paug.androidmakers.ui.about_android_makers
import fr.paug.androidmakers.ui.code_of_conduct
import fr.paug.androidmakers.ui.faq
import fr.paug.androidmakers.ui.ic_network_x
import fr.paug.androidmakers.ui.ic_network_youtube
import fr.paug.androidmakers.ui.logo_android_makers
import fr.paug.androidmakers.ui.version
import fr.paug.androidmakers.ui.x_hashtag
import org.jetbrains.compose.resources.painterResource
import org.jetbrains.compose.resources.stringResource
import org.koin.compose.viewmodel.koinViewModel

@Composable
Expand Down Expand Up @@ -63,7 +71,7 @@ fun AboutScreen(
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center,
text = stringResource(
MR.strings.version,
Res.string.version,
versionName,
versionCode
),
Expand All @@ -83,29 +91,23 @@ private fun IntroCard(
.heightIn(max = 128.dp)
.fillMaxWidth()
.padding(horizontal = 32.dp),
painter = painterResource(
if (darkMode) {
MR.images.logo_android_makers_night
} else {
MR.images.logo_android_makers
}
),
painter = painterResource(Res.drawable.logo_android_makers),
contentDescription = "Logo"
)
Text(
modifier = Modifier.padding(16.dp),
text = stringResource(MR.strings.about_android_makers)
text = stringResource(Res.string.about_android_makers)
)
Row(
Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.Center
) {
ClickableText(
text = stringResource(MR.strings.faq),
text = stringResource(Res.string.faq),
onClick = onFaqClick
)
ClickableText(
text = stringResource(MR.strings.code_of_conduct),
text = stringResource(Res.string.code_of_conduct),
onClick = onCocClick
)
}
Expand All @@ -128,7 +130,7 @@ private fun SocialCard(
Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.Center
) {
ClickableText(stringResource(MR.strings.x_hashtag), onXHashtagClick)
ClickableText(stringResource(Res.string.x_hashtag), onXHashtagClick)
}
Row(
Modifier
Expand All @@ -140,7 +142,7 @@ private fun SocialCard(
) {
Icon(
modifier = Modifier.padding(12.dp),
painter = painterResource(MR.images.ic_network_x),
painter = painterResource(Res.drawable.ic_network_x),
tint = if (darkMode) {
Color.White
} else {
Expand All @@ -153,7 +155,7 @@ private fun SocialCard(
) {
Image(
modifier = Modifier.padding(8.dp),
painter = painterResource(MR.images.ic_network_youtube),
painter = painterResource(Res.drawable.ic_network_youtube),
contentDescription = "YouTube"
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,9 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.androidmakers.ui.model.UISession
import dev.icerock.moko.resources.compose.stringResource
import fr.paug.androidmakers.ui.MR
import fr.paug.androidmakers.ui.Res
import fr.paug.androidmakers.ui.filter
import org.jetbrains.compose.resources.stringResource
import org.jetbrains.compose.ui.tooling.preview.Preview

@OptIn(ExperimentalFoundationApi::class)
Expand Down Expand Up @@ -123,7 +124,7 @@ fun TimeSeparator(prettyTime: String) {
modifier = Modifier.size(24.dp),
imageVector = Icons.Rounded.Schedule,
tint = MaterialTheme.colorScheme.primary,
contentDescription = stringResource(MR.strings.filter),
contentDescription = stringResource(Res.string.filter),
)
Text(
text = prettyTime,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,18 @@ import com.androidmakers.ui.getPlatformContext
import com.androidmakers.ui.model.AgendaState
import com.androidmakers.ui.model.Lce
import com.androidmakers.ui.model.UISession
import dev.icerock.moko.resources.compose.stringResource
import fr.androidmakers.domain.model.Room
import fr.androidmakers.domain.utils.eventTimeZone
import fr.paug.androidmakers.ui.MR
import fr.paug.androidmakers.ui.Res
import fr.paug.androidmakers.ui.bookmarked
import fr.paug.androidmakers.ui.english
import fr.paug.androidmakers.ui.filter
import fr.paug.androidmakers.ui.french
import fr.paug.androidmakers.ui.language
import fr.paug.androidmakers.ui.rooms
import kotlinx.datetime.Clock
import kotlinx.datetime.todayIn
import org.jetbrains.compose.resources.stringResource
import org.jetbrains.compose.ui.tooling.preview.Preview
import org.koin.compose.viewmodel.koinViewModel

Expand Down Expand Up @@ -133,32 +139,32 @@ private fun AgendaFilterDrawer(
.fillMaxWidth()
.verticalScroll(state = rememberScrollState())
) {
HeaderItem(stringResource(MR.strings.filter))
HeaderItem(stringResource(Res.string.filter))
FilterItem(
filter = SessionFilter.Bookmark,
filters = sessionFilters,
text = stringResource(MR.strings.bookmarked),
text = stringResource(Res.string.bookmarked),
imageVector = Icons.Rounded.Bookmark,
onFiltersChanged = onFiltersChanged
)

HeaderItem(stringResource(MR.strings.language))
HeaderItem(stringResource(Res.string.language))
FilterItem(
filter = SessionFilter.Language(SessionFilter.Language.FRENCH),
filters = sessionFilters,
text = stringResource(MR.strings.french),
text = stringResource(Res.string.french),
language = SessionFilter.Language.FRENCH,
onFiltersChanged = onFiltersChanged
)
FilterItem(
filter = SessionFilter.Language(SessionFilter.Language.ENGLISH),
filters = sessionFilters,
text = stringResource(MR.strings.english),
text = stringResource(Res.string.english),
language = SessionFilter.Language.ENGLISH,
onFiltersChanged = onFiltersChanged
)

HeaderItem(stringResource(MR.strings.rooms))
HeaderItem(stringResource(Res.string.rooms))
for (room in rooms) {
FilterItem(
filter = SessionFilter.Room(room.id),
Expand Down
Loading