Skip to content

Instantly share code, notes, and snippets.

@ayitinya
Created January 9, 2024 13:55
Show Gist options
  • Save ayitinya/f93868ae6f5c0b3fa03bebf7907326c7 to your computer and use it in GitHub Desktop.
Save ayitinya/f93868ae6f5c0b3fa03bebf7907326c7 to your computer and use it in GitHub Desktop.
// project-root
plugins {
// this is necessary to avoid the plugins to be loaded multiple times
// in each subproject's classloader
alias(libs.plugins.kotlinJvm) apply false
alias(libs.plugins.jetbrainsCompose) apply false
alias(libs.plugins.androidApplication) apply false
alias(libs.plugins.androidLibrary) apply false
alias(libs.plugins.kotlinMultiplatform) apply false
alias(libs.plugins.kotlinPluginSerialization) apply false
}
// shared/build.gradle.kt
plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.androidLibrary)
alias(libs.plugins.kotlinPluginSerialization)
}
kotlin {
iosX64()
iosArm64()
iosSimulatorArm64()
androidTarget {
compilations.all {
kotlinOptions {
jvmTarget = "1.8"
}
}
}
jvm()
sourceSets {
commonMain.dependencies {
implementation(libs.kotlinx.serialization.json)
implementation(libs.kotlinx.datetime)
implementation(libs.insert.koin.koin.core)
// put your Multiplatform dependencies here
// implementation(libs.ktor.server.resources) including either enable me to define resources in the shared directory
implementation(libs.ktor.client.resources)
implementation(libs.kotlinx.serialization.json)
}
}
}
// shared/commonMain/kotlin/package/resource/UserResources.kt
import io.ktor.resources.*
import kotlinx.serialization.Serializable
@Serializable
@Resource("/users")
class UsersResource {
@Serializable
@Resource("/me")
data class SessionUserDetails(val parent: UsersResource = UsersResource())
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment