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

Expose Platform specific info as expect-actual (locale, system, version) #52

Merged
merged 1 commit into from
Dec 6, 2023
Merged
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
4 changes: 2 additions & 2 deletions androidApp/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ android {
targetSdk = 34

applicationId = "com.mirego.kmp.boilerplate"
versionCode = 1
versionName = "0.1"
versionCode = project.property("versionCode") as? Int
versionName = project.property("versionName") as? String
}
buildTypes {
debug {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.tooling.preview.Preview
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flowOf

@Composable
fun Greeting(textFlow: Flow<String>) {
Expand All @@ -15,9 +14,8 @@ fun Greeting(textFlow: Flow<String>) {
Text(text = text)
}

@Preview
@Preview(showSystemUi = true)
@Composable
fun PreviewGreeting() {
val textFlow = flowOf("Hello, Android 31")
Greeting(textFlow)
Greeting(Greeting().greeting())
}
3 changes: 3 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,6 @@ android.useAndroidX=true
kotlin.mpp.androidSourceSetLayoutVersion=2
kotlin.mpp.enableCInteropCommonization=true
kotlin.mpp.stability.nowarn=true
#Version
versionName=0.0.1
versionCode=1
4 changes: 2 additions & 2 deletions ios/Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
PODS:
- Shared (0.1)
- Shared (0.0.1)
- SwiftLint (0.52.4)

DEPENDENCIES:
Expand All @@ -15,7 +15,7 @@ EXTERNAL SOURCES:
:path: "../shared"

SPEC CHECKSUMS:
Shared: 9cee99d7ec6f327294a149403bec06a18fc5db29
Shared: 4d22deb908e7a9ed9a64ea2d3fcc53255a207993
SwiftLint: 1cc5cd61ba9bacb2194e340aeb47a2a37fda00b3

PODFILE CHECKSUM: 83ebf5d7b61ce65029f18160027c7392430ee27f
Expand Down
4 changes: 2 additions & 2 deletions ios/iosApp.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 0.1;
MARKETING_VERSION = 0.0.1;
PRODUCT_BUNDLE_IDENTIFIER = com.mirego.kmp.boilerplate;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
Expand All @@ -399,7 +399,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 0.1;
MARKETING_VERSION = 0.0.1;
PRODUCT_BUNDLE_IDENTIFIER = com.mirego.kmp.boilerplate;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
Expand Down
2 changes: 1 addition & 1 deletion shared/Shared.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |spec|
spec.name = 'Shared'
spec.version = '0.1'
spec.version = '0.0.1'
spec.homepage = 'https://github.com/mirego/your-project'
spec.source = { :http=> ''}
spec.authors = ''
Expand Down
8 changes: 7 additions & 1 deletion shared/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ plugins {
alias(libs.plugins.ktlint)
}

version = "0.1"
version = project.property("versionName") as String

kotlin {
jvmToolchain(17)
Expand Down Expand Up @@ -69,11 +69,17 @@ android {
compileSdk = 34
defaultConfig {
minSdk = 21

buildConfigField("Integer", "VERSION_CODE", "${project.property("versionCode")}")
buildConfigField("String", "VERSION_NAME", "\"$version\"")
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
buildFeatures {
buildConfig = true
}
}

ktlint {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.mirego.kmp.boilerplate.platform

import android.os.Build
import com.mirego.kmp.boilerplate.common.BuildConfig

actual fun Platform(): Platform = AndroidPlatform()

private class AndroidPlatform : Platform {
override val system = System(
name = "Android",
version = Build.VERSION.SDK_INT.toString()
)

override val locale = java.util.Locale.getDefault().let {
Locale(
languageCode = it.language,
regionCode = it.country
)
}

override val version = Version(
name = BuildConfig.VERSION_NAME,
code = BuildConfig.VERSION_CODE
)
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,9 +1,19 @@
package com.mirego.kmp.boilerplate

import com.mirego.kmp.boilerplate.platform.Platform
import com.mirego.kmp.boilerplate.utils.CFlow
import com.mirego.kmp.boilerplate.utils.wrap
import kotlinx.coroutines.flow.flowOf

class Greeting {
fun greeting(): CFlow<String> = flowOf("Hello, ${Platform().platform}!").wrap()
private val platform = Platform()

private val greetingText = buildString {
appendLine("Hello! 👋")
appendLine(platform.system)
appendLine(platform.locale)
appendLine(platform.version)
}

fun greeting(): CFlow<String> = flowOf(greetingText).wrap()
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.mirego.kmp.boilerplate.platform

expect fun Platform(): Platform

interface Platform {
val system: System
val locale: Locale
val version: Version
}

data class Locale(
val languageCode: String,
val regionCode: String?
)

data class System(
val name: String,
val version: String
)

data class Version(
val name: String,
val code: Int
)

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.mirego.kmp.boilerplate.platform

import platform.Foundation.NSBundle
import platform.Foundation.NSLocale
import platform.Foundation.currentLocale
import platform.Foundation.languageCode
import platform.Foundation.regionCode
import platform.UIKit.UIDevice

actual fun Platform(): Platform = IOSPlatform()

private class IOSPlatform : Platform {
override val system = UIDevice.currentDevice.let {
System(
name = it.systemName,
version = it.systemVersion
)
}

override val locale = NSLocale.currentLocale.let {
Locale(
languageCode = it.languageCode,
regionCode = it.regionCode
)
}

override val version = NSBundle.mainBundle().infoDictionary()!!.let {
Version(
name = it["CFBundleShortVersionString"] as String,
code = (it["CFBundleVersion"] as String).toInt()
)
}
}

This file was deleted.

Loading