From 01ffc49e1850ecd2fb3bf4c62e2c6c45f68390e0 Mon Sep 17 00:00:00 2001 From: Aditya Wasan Date: Sun, 21 Mar 2021 01:33:14 +0530 Subject: [PATCH] common: add common stringValue api Signed-off-by: Aditya Wasan --- common/build.gradle.kts | 1 + .../msfjarvis/lobsters/utils/StringValue.kt | 25 +++++++++++++++++++ common/src/androidMain/res/values/strings.xml | 13 ++++++++++ .../msfjarvis/lobsters/utils/StringEnum.kt | 15 +++++++++++ .../msfjarvis/lobsters/utils/StringValue.kt | 6 +++++ .../msfjarvis/lobsters/utils/StringValue.kt | 23 +++++++++++++++++ 6 files changed, 83 insertions(+) create mode 100644 common/src/androidMain/kotlin/dev/msfjarvis/lobsters/utils/StringValue.kt create mode 100644 common/src/androidMain/res/values/strings.xml create mode 100644 common/src/commonMain/kotlin/dev/msfjarvis/lobsters/utils/StringEnum.kt create mode 100644 common/src/commonMain/kotlin/dev/msfjarvis/lobsters/utils/StringValue.kt create mode 100644 common/src/jvmMain/kotlin/dev/msfjarvis/lobsters/utils/StringValue.kt diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 1e0a7e44..30a27b53 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -36,6 +36,7 @@ kotlin { val commonMain by getting { dependencies { implementation(compose.runtime) + implementation(compose.ui) } } diff --git a/common/src/androidMain/kotlin/dev/msfjarvis/lobsters/utils/StringValue.kt b/common/src/androidMain/kotlin/dev/msfjarvis/lobsters/utils/StringValue.kt new file mode 100644 index 00000000..65745047 --- /dev/null +++ b/common/src/androidMain/kotlin/dev/msfjarvis/lobsters/utils/StringValue.kt @@ -0,0 +1,25 @@ +package dev.msfjarvis.lobsters.utils + +import androidx.compose.runtime.Composable +import androidx.compose.ui.res.stringResource +import dev.msfjarvis.lobsters.common.R + +private fun stringEnumMapper(stringEnum: StringEnum): Int { + return when (stringEnum) { + StringEnum.AddToSavedPosts -> R.string.add_to_saved_posts + StringEnum.AppName -> R.string.app_name + StringEnum.AvatarContentDescription -> R.string.avatar_content_description + StringEnum.HottestPosts -> R.string.hottest_posts + StringEnum.Loading -> R.string.loading + StringEnum.NoSavedPost -> R.string.no_saved_posts + StringEnum.OpenComments -> R.string.open_comments + StringEnum.RefreshPostsContentDescription -> R.string.refresh_posts_content_description + StringEnum.RemoveFromSavedPosts -> R.string.remove_from_saved_posts + StringEnum.SubmittedBy -> R.string.submitted_by + } +} + +@Composable +actual fun stringValue(enum: StringEnum, vararg formatArgs: Any): String { + return stringResource(stringEnumMapper(enum), formatArgs) +} diff --git a/common/src/androidMain/res/values/strings.xml b/common/src/androidMain/res/values/strings.xml new file mode 100644 index 00000000..75e20d9d --- /dev/null +++ b/common/src/androidMain/res/values/strings.xml @@ -0,0 +1,13 @@ + + Claw + Loading posts… + You don\'t have any saved posts + Hottest + Saved + submitted by %1$s + %1$s\'s avatar + Add to saved posts + Remove from saved posts + Refresh posts + Open comments + diff --git a/common/src/commonMain/kotlin/dev/msfjarvis/lobsters/utils/StringEnum.kt b/common/src/commonMain/kotlin/dev/msfjarvis/lobsters/utils/StringEnum.kt new file mode 100644 index 00000000..9a5b5edf --- /dev/null +++ b/common/src/commonMain/kotlin/dev/msfjarvis/lobsters/utils/StringEnum.kt @@ -0,0 +1,15 @@ +package dev.msfjarvis.lobsters.utils + +enum class StringEnum { + AddToSavedPosts, + AppName, + AvatarContentDescription, + HottestPosts, + Loading, + NoSavedPost, + OpenComments, + RefreshPostsContentDescription, + RemoveFromSavedPosts, + SubmittedBy, + ; +} diff --git a/common/src/commonMain/kotlin/dev/msfjarvis/lobsters/utils/StringValue.kt b/common/src/commonMain/kotlin/dev/msfjarvis/lobsters/utils/StringValue.kt new file mode 100644 index 00000000..a7834c8d --- /dev/null +++ b/common/src/commonMain/kotlin/dev/msfjarvis/lobsters/utils/StringValue.kt @@ -0,0 +1,6 @@ +package dev.msfjarvis.lobsters.utils + +import androidx.compose.runtime.Composable + +@Composable +expect fun stringValue(enum: StringEnum, vararg formatArgs: Any): String \ No newline at end of file diff --git a/common/src/jvmMain/kotlin/dev/msfjarvis/lobsters/utils/StringValue.kt b/common/src/jvmMain/kotlin/dev/msfjarvis/lobsters/utils/StringValue.kt new file mode 100644 index 00000000..ebd94f86 --- /dev/null +++ b/common/src/jvmMain/kotlin/dev/msfjarvis/lobsters/utils/StringValue.kt @@ -0,0 +1,23 @@ +package dev.msfjarvis.lobsters.utils + +import androidx.compose.runtime.Composable + +private fun stringEnumMapper(stringEnum: StringEnum): String { + return when (stringEnum) { + StringEnum.AddToSavedPosts -> "Add to saved posts" + StringEnum.AppName -> "Claw" + StringEnum.AvatarContentDescription -> "%1s's avatar" + StringEnum.HottestPosts -> "Hottest" + StringEnum.Loading -> "Loading posts…" + StringEnum.NoSavedPost -> "You don't have any saved posts" + StringEnum.OpenComments -> "Open comments" + StringEnum.RefreshPostsContentDescription -> "Refresh posts" + StringEnum.RemoveFromSavedPosts -> "Remove from saved posts" + StringEnum.SubmittedBy -> "submitted by %1s" + } +} + +@Composable +actual fun stringValue(enum: StringEnum, vararg formatArgs: Any): String { + return stringEnumMapper(enum).format(formatArgs) +}