From f4cbb4e1ddec771d74cc9873c1ecdeb0a0006541 Mon Sep 17 00:00:00 2001 From: Kevin Schildhorn Date: Fri, 21 Nov 2025 10:15:51 -0500 Subject: [PATCH 1/5] initial call --- build.gradle.kts | 5 +- gradle/libs.versions.toml | 56 +++++++++---------- gradle/wrapper/gradle-wrapper.properties | 2 +- ios/build.gradle.kts | 2 - .../kotlin/co/touchlab/droidcon/Koin.kt | 4 +- 5 files changed, 35 insertions(+), 34 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index d03c079b..f5fe5500 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -24,8 +24,9 @@ subprojects { } tasks.withType(KotlinCompile::class).all { - kotlinOptions { - jvmTarget = "1.8" + compilerOptions { + jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8) + freeCompilerArgs.add("-opt-in=kotlin.time.ExperimentalTime") } } configure { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c1ea9aba..58a205cd 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,54 +2,54 @@ ## SDK Versions minSdk = "21" targetSdk = "35" -compileSdk = "35" +compileSdk = "36" # Dependencies -kotlin = "2.1.10" +kotlin = "2.2.21" ## Gradle Plugin version must be compatible with Multiplatform ## https://kotlinlang.org/docs/multiplatform-compatibility-guide.html#version-compatibility -android-gradle-plugin = "8.9.0" -coroutines = "1.10.1" -kotlinx-datetime = "0.6.1" -ktor = "3.0.3" +android-gradle-plugin = "8.13.1" +coroutines = "1.10.2" +kotlinx-datetime = "0.7.1" +ktor = "3.3.2" stately = "2.1.0" java = "21" -kermit = "2.0.5" -sqliter = "1.3.1" +kermit = "2.0.8" +sqliter = "1.3.3" hyperdrive = "0.1.148" -multiplatformSettings = "1.2.0" -sqlDelight = "2.0.2" -firebase-bom = "33.10.0" -firebase-crashlytics-gradle = "3.0.3" -gms-google-services = "4.4.2" +multiplatformSettings = "1.3.0" +sqlDelight = "2.2.1" +firebase-bom = "34.6.0" +firebase-crashlytics-gradle = "3.0.6" +gms-google-services = "4.4.4" # TODO: Update Compose libraries. There is currently a conflicing issue with the HorizontalPager -compose-androidx-ui = "1.7.8" +compose-androidx-ui = "1.9.5" compose-compiler = "1.5.15" -composeNavigation = "2.9.5" -compose-jb = "1.7.3" +composeNavigation = "2.9.6" +compose-jb = "1.9.3" -splashscreen = "1.0.1" +splashscreen = "1.2.0" junit = "4.13.2" -junitKtx = "1.2.1" -imageLoader = "1.2.2.1" +junitKtx = "1.3.0" +imageLoader = "1.10.0" korio = "4.0.10" # Sample - Android -androidx-core = "1.15.0" -androidx-lifecycle = "2.8.7" -androidx-activity-compose = "1.10.1" +androidx-core = "1.17.0" +androidx-lifecycle = "2.10.0" +androidx-activity-compose = "1.12.0" android-desugaring = "2.1.5" -koin = "4.0.2" -uuid = "0.8.3" -ktlint = "12.1.1" -coil = "3.1.0" -zoomimage = "1.1.0-alpha06" -skie = "0.10.1" +koin = "4.1.1" +uuid = "0.8.4" +ktlint = "14.0.1" +coil = "3.3.0" +zoomimage = "1.4.0" +skie = "0.10.8" [libraries] coil-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coil" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index cea7a793..37f853b1 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/ios/build.gradle.kts b/ios/build.gradle.kts index abf76243..c61a2a46 100644 --- a/ios/build.gradle.kts +++ b/ios/build.gradle.kts @@ -1,4 +1,3 @@ -import org.jetbrains.kotlin.gradle.plugin.mpp.BitcodeEmbeddingMode import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget plugins { @@ -49,7 +48,6 @@ kotlin { framework { baseName = "DroidconKit" isStatic = true - embedBitcodeMode = BitcodeEmbeddingMode.DISABLE freeCompilerArgs += listOf( "-linker-option", "-framework", "-linker-option", "Metal", diff --git a/shared/src/commonMain/kotlin/co/touchlab/droidcon/Koin.kt b/shared/src/commonMain/kotlin/co/touchlab/droidcon/Koin.kt index 6786b0fa..00ac9815 100644 --- a/shared/src/commonMain/kotlin/co/touchlab/droidcon/Koin.kt +++ b/shared/src/commonMain/kotlin/co/touchlab/droidcon/Koin.kt @@ -49,8 +49,9 @@ import co.touchlab.droidcon.domain.service.impl.json.AboutJsonResourceDataSource import co.touchlab.droidcon.domain.service.impl.json.JsonResourceReader import io.ktor.client.HttpClient import io.ktor.client.plugins.HttpTimeout +import kotlin.time.Clock +import kotlin.time.ExperimentalTime import kotlinx.coroutines.runBlocking -import kotlinx.datetime.Clock import kotlinx.datetime.TimeZone import kotlinx.serialization.json.Json import org.koin.core.KoinApplication @@ -91,6 +92,7 @@ val booleanAdapter = object : ColumnAdapter { override fun encode(value: Boolean): Long = if (value) 1L else 0L } +@OptIn(ExperimentalTime::class) private val coreModule = module { single { DroidconDatabase.invoke( From c89be89c45cc982d53246a290533e27dcf49fd25 Mon Sep 17 00:00:00 2001 From: Kevin Schildhorn Date: Fri, 21 Nov 2025 10:21:02 -0500 Subject: [PATCH 2/5] adding compiler arg --- build.gradle.kts | 7 +++++++ ios/build.gradle.kts | 1 + shared-ui/build.gradle.kts | 1 + shared/build.gradle.kts | 1 + 4 files changed, 10 insertions(+) diff --git a/build.gradle.kts b/build.gradle.kts index f5fe5500..377a8daf 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,4 +1,5 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { @@ -29,6 +30,12 @@ subprojects { freeCompilerArgs.add("-opt-in=kotlin.time.ExperimentalTime") } } + + tasks.withType(KotlinNativeCompile::class).all { + compilerOptions { + freeCompilerArgs.add("-opt-in=kotlin.time.ExperimentalTime") + } + } configure { version.set("1.4.0") enableExperimentalRules.set(true) diff --git a/ios/build.gradle.kts b/ios/build.gradle.kts index c61a2a46..873a09b7 100644 --- a/ios/build.gradle.kts +++ b/ios/build.gradle.kts @@ -22,6 +22,7 @@ kotlin { languageSettings.apply { optIn("kotlin.RequiresOptIn") optIn("kotlinx.coroutines.ExperimentalCoroutinesApi") + optIn("kotlin.time.ExperimentalTime") } } iosMain.dependencies { diff --git a/shared-ui/build.gradle.kts b/shared-ui/build.gradle.kts index 9828407a..74510b38 100644 --- a/shared-ui/build.gradle.kts +++ b/shared-ui/build.gradle.kts @@ -106,6 +106,7 @@ kotlin { languageSettings.apply { optIn("kotlin.RequiresOptIn") optIn("kotlinx.coroutines.ExperimentalCoroutinesApi") + optIn("kotlin.time.ExperimentalTime") } } matching { it.name.endsWith("Test") }.configureEach { diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts index bdaf0388..4b22ada9 100644 --- a/shared/build.gradle.kts +++ b/shared/build.gradle.kts @@ -96,6 +96,7 @@ kotlin { languageSettings.apply { optIn("kotlin.RequiresOptIn") optIn("kotlinx.coroutines.ExperimentalCoroutinesApi") + optIn("kotlin.time.ExperimentalTime") } } From 12ad1e71cc5305ec6fae1b81dafb8eeadc2ec5a1 Mon Sep 17 00:00:00 2001 From: Kevin Schildhorn Date: Fri, 21 Nov 2025 11:13:37 -0500 Subject: [PATCH 3/5] Updating Dependencies and fixing deprecation warnings --- .../java/co/touchlab/droidcon/android/MainApp.kt | 4 ++-- gradle/libs.versions.toml | 13 ++++++++----- gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle.kts | 2 +- .../ui/session/SessionDetailView.kt | 6 +++--- .../ui/session/SpeakerDetailView.kt | 4 ++-- .../util/LocalDateTime+startOfMinute.kt | 2 +- .../util/NavigationController.kt | 6 +++--- .../viewmodel/session/SessionDetailViewModel.kt | 2 +- .../droidcon/service/AndroidNotificationService.kt | 2 +- .../application/service/NotificationService.kt | 2 +- .../co/touchlab/droidcon/domain/entity/Session.kt | 2 +- .../repository/impl/SqlDelightSessionRepository.kt | 6 ++++-- .../impl/adapter/InstantSqlDelightAdapter.kt | 2 +- .../droidcon/domain/service/DateTimeService.kt | 2 +- .../domain/service/impl/DefaultDateTimeService.kt | 4 ++-- .../domain/service/impl/DefaultFeedbackService.kt | 3 +-- .../domain/service/impl/DefaultScheduleService.kt | 2 +- .../domain/service/impl/DefaultSyncService.kt | 2 +- .../sqldelight/co/touchlab/droidcon/db/Session.sq | 2 +- .../iosMain/kotlin/co/touchlab/droidcon/Koin.ios.kt | 1 + .../droidcon/service/IOSNotificationService.kt | 2 +- 22 files changed, 39 insertions(+), 34 deletions(-) diff --git a/android/src/main/java/co/touchlab/droidcon/android/MainApp.kt b/android/src/main/java/co/touchlab/droidcon/android/MainApp.kt index 13ec2c1a..9c1cec2f 100644 --- a/android/src/main/java/co/touchlab/droidcon/android/MainApp.kt +++ b/android/src/main/java/co/touchlab/droidcon/android/MainApp.kt @@ -14,8 +14,8 @@ import co.touchlab.droidcon.initKoin import co.touchlab.droidcon.service.ParseUrlViewService import co.touchlab.droidcon.ui.uiModule import co.touchlab.droidcon.util.ClasspathResourceReader -import com.google.firebase.analytics.ktx.analytics -import com.google.firebase.ktx.Firebase +import com.google.firebase.Firebase +import com.google.firebase.analytics.analytics import com.russhwolf.settings.ExperimentalSettingsApi import com.russhwolf.settings.ObservableSettings import com.russhwolf.settings.SharedPreferencesSettings diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 58a205cd..7ae85ade 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,7 @@ [versions] ## SDK Versions -minSdk = "21" -targetSdk = "35" +minSdk = "23" +targetSdk = "36" compileSdk = "36" # Dependencies @@ -23,6 +23,9 @@ hyperdrive = "0.1.148" multiplatformSettings = "1.3.0" sqlDelight = "2.2.1" +firebase-analytics = "22.5.0" +firebase-crashlytics = "19.4.4" +firebase-messaging = "24.1.2" firebase-bom = "34.6.0" firebase-crashlytics-gradle = "3.0.6" gms-google-services = "4.4.4" @@ -59,9 +62,9 @@ compose-compiler = { module = "androidx.compose.compiler:compiler", version.ref androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "splashscreen" } firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebase-bom" } -firebase-analytics = { module = "com.google.firebase:firebase-analytics-ktx", version = "_" } -firebase-crashlytics = { module = "com.google.firebase:firebase-crashlytics-ktx", version = "_" } -firebase-messaging = { module = "com.google.firebase:firebase-messaging-ktx", version = "_" } +firebase-analytics = { module = "com.google.firebase:firebase-analytics-ktx", version.ref = "firebase-analytics" } +firebase-crashlytics = { module = "com.google.firebase:firebase-crashlytics-ktx", version.ref = "firebase-crashlytics" } +firebase-messaging = { module = "com.google.firebase:firebase-messaging-ktx", version.ref = "firebase-messaging" } hyperdrive-multiplatformx-api = { module = "org.brightify.hyperdrive:multiplatformx-api", version.ref = "hyperdrive" } android-desugar = { module = "com.android.tools:desugar_jdk_libs", version.ref = "android-desugaring" } uuid = { module = "com.benasher44:uuid", version.ref = "uuid" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 37f853b1..d4081da4 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/settings.gradle.kts b/settings.gradle.kts index 55116d7d..a06e880c 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -18,7 +18,7 @@ dependencyResolutionManagement { } plugins { - id("org.gradle.toolchains.foojay-resolver-convention") version("0.8.0") + id("org.gradle.toolchains.foojay-resolver-convention") version ("0.8.0") } include(":shared", ":shared-ui", ":android", ":ios") diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionDetailView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionDetailView.kt index 5ddcc439..ca7be9c6 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionDetailView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionDetailView.kt @@ -21,9 +21,9 @@ import androidx.compose.material.icons.filled.Description import androidx.compose.material.icons.filled.Info import androidx.compose.material.icons.outlined.BookmarkAdd import androidx.compose.material3.Button -import androidx.compose.material3.Divider import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FloatingActionButton +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -102,7 +102,7 @@ internal fun SessionDetailView(viewModel: SessionDetailViewModel) { val title by viewModel.observeTitle.observeAsState() val locationInfo by viewModel.observeInfo.observeAsState() HeaderView(title, locationInfo) - Divider() + HorizontalDivider() } if (state != SessionDetailViewModel.SessionState.Ended) { val isAttending by viewModel.observeIsAttending.observeAsState() @@ -167,7 +167,7 @@ internal fun SessionDetailView(viewModel: SessionDetailViewModel) { textAlign = TextAlign.Center, ) - Divider() + HorizontalDivider() speakers.forEach { speaker -> SpeakerView(speaker) diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SpeakerDetailView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SpeakerDetailView.kt index c16ad3dd..8f5589ef 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SpeakerDetailView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SpeakerDetailView.kt @@ -14,8 +14,8 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.Description import androidx.compose.material.icons.filled.Language -import androidx.compose.material3.Divider import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -80,7 +80,7 @@ internal fun SpeakerDetailView(viewModel: SpeakerDetailViewModel) { SocialView(WebLink.fromUrl(it), "linkedin") } - Divider() + HorizontalDivider() viewModel.bio?.let { BioView(it, viewModel.bioWebLinks) diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/util/LocalDateTime+startOfMinute.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/util/LocalDateTime+startOfMinute.kt index 00317ab1..281fecbe 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/util/LocalDateTime+startOfMinute.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/util/LocalDateTime+startOfMinute.kt @@ -5,4 +5,4 @@ package co.touchlab.droidcon.util import kotlinx.datetime.LocalDateTime val LocalDateTime.startOfMinute: LocalDateTime - get() = LocalDateTime(year, month, dayOfMonth, hour, minute) + get() = LocalDateTime(year, month, day, hour, minute) diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/util/NavigationController.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/util/NavigationController.kt index 66eaa404..4068c74b 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/util/NavigationController.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/util/NavigationController.kt @@ -4,7 +4,7 @@ import androidx.compose.animation.AnimatedContent import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.slideInHorizontally import androidx.compose.animation.slideOutHorizontally -import androidx.compose.animation.with +import androidx.compose.animation.togetherWith import androidx.compose.material3.Surface import androidx.compose.runtime.Composable import androidx.compose.runtime.RememberObserver @@ -260,9 +260,9 @@ internal fun NavigationStack(key: Any?, links: NavigationStackScope.() -> Unit, targetState = activeLinkComposables, transitionSpec = { if (initialState.indexOfLast { it.body != null } < targetState.indexOfLast { it.body != null }) { - slideInHorizontally(initialOffsetX = { it }) with slideOutHorizontally(targetOffsetX = { -it }) + slideInHorizontally(initialOffsetX = { it }).togetherWith(slideOutHorizontally(targetOffsetX = { -it })) } else { - slideInHorizontally(initialOffsetX = { -it }) with slideOutHorizontally(targetOffsetX = { it }) + slideInHorizontally(initialOffsetX = { -it }).togetherWith(slideOutHorizontally(targetOffsetX = { it })) } }, contentAlignment = Alignment.BottomCenter, diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/viewmodel/session/SessionDetailViewModel.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/viewmodel/session/SessionDetailViewModel.kt index ca6ce08d..758a830e 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/viewmodel/session/SessionDetailViewModel.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/viewmodel/session/SessionDetailViewModel.kt @@ -11,11 +11,11 @@ import co.touchlab.droidcon.dto.WebLink import co.touchlab.droidcon.service.ParseUrlViewService import co.touchlab.droidcon.util.formatter.DateFormatter import co.touchlab.droidcon.viewmodel.FeedbackDialogViewModel +import kotlin.time.Instant import kotlinx.coroutines.delay import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.map -import kotlinx.datetime.Instant import org.brightify.hyperdrive.multiplatformx.BaseViewModel import org.brightify.hyperdrive.multiplatformx.property.asFlow import org.brightify.hyperdrive.multiplatformx.property.flatMapLatest diff --git a/shared/src/androidMain/kotlin/co/touchlab/droidcon/service/AndroidNotificationService.kt b/shared/src/androidMain/kotlin/co/touchlab/droidcon/service/AndroidNotificationService.kt index 6f4392e9..c3ab1086 100644 --- a/shared/src/androidMain/kotlin/co/touchlab/droidcon/service/AndroidNotificationService.kt +++ b/shared/src/androidMain/kotlin/co/touchlab/droidcon/service/AndroidNotificationService.kt @@ -21,7 +21,7 @@ import co.touchlab.kermit.Logger import com.russhwolf.settings.ObservableSettings import com.russhwolf.settings.get import com.russhwolf.settings.set -import kotlinx.datetime.Instant +import kotlin.time.Instant import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json diff --git a/shared/src/commonMain/kotlin/co/touchlab/droidcon/application/service/NotificationService.kt b/shared/src/commonMain/kotlin/co/touchlab/droidcon/application/service/NotificationService.kt index 6c9a1f54..c1bdcbe1 100644 --- a/shared/src/commonMain/kotlin/co/touchlab/droidcon/application/service/NotificationService.kt +++ b/shared/src/commonMain/kotlin/co/touchlab/droidcon/application/service/NotificationService.kt @@ -2,7 +2,7 @@ package co.touchlab.droidcon.application.service import co.touchlab.droidcon.domain.entity.Session import co.touchlab.droidcon.service.DeepLinkNotificationHandler -import kotlinx.datetime.Instant +import kotlin.time.Instant interface NotificationService { suspend fun initialize(): Boolean diff --git a/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/entity/Session.kt b/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/entity/Session.kt index 726812a0..bef750d4 100644 --- a/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/entity/Session.kt +++ b/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/entity/Session.kt @@ -1,7 +1,7 @@ package co.touchlab.droidcon.domain.entity import co.touchlab.droidcon.domain.service.DateTimeService -import kotlinx.datetime.Instant +import kotlin.time.Instant class Session( private val dateTimeService: DateTimeService, diff --git a/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/repository/impl/SqlDelightSessionRepository.kt b/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/repository/impl/SqlDelightSessionRepository.kt index 0a3ba597..2c0c9041 100644 --- a/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/repository/impl/SqlDelightSessionRepository.kt +++ b/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/repository/impl/SqlDelightSessionRepository.kt @@ -9,10 +9,10 @@ import co.touchlab.droidcon.domain.entity.Room import co.touchlab.droidcon.domain.entity.Session import co.touchlab.droidcon.domain.repository.SessionRepository import co.touchlab.droidcon.domain.service.DateTimeService +import kotlin.time.Instant import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.first -import kotlinx.datetime.Instant class SqlDelightSessionRepository(private val dateTimeService: DateTimeService, private val sessionQueries: SessionQueries) : BaseRepository(), @@ -73,7 +73,9 @@ class SqlDelightSessionRepository(private val dateTimeService: DateTimeService, ) } - override fun doDelete(id: Session.Id, conferenceId: Long) = sessionQueries.deleteById(id.value, conferenceId) + override fun doDelete(id: Session.Id, conferenceId: Long) { + sessionQueries.deleteById(id.value, conferenceId) + } override fun contains(id: Session.Id, conferenceId: Long): Boolean = sessionQueries.existsById(id.value, conferenceId).executeAsOne().toBoolean() diff --git a/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/repository/impl/adapter/InstantSqlDelightAdapter.kt b/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/repository/impl/adapter/InstantSqlDelightAdapter.kt index 0aecc959..decd3e4c 100644 --- a/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/repository/impl/adapter/InstantSqlDelightAdapter.kt +++ b/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/repository/impl/adapter/InstantSqlDelightAdapter.kt @@ -1,7 +1,7 @@ package co.touchlab.droidcon.domain.repository.impl.adapter import app.cash.sqldelight.ColumnAdapter -import kotlinx.datetime.Instant +import kotlin.time.Instant object InstantSqlDelightAdapter : ColumnAdapter { diff --git a/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/service/DateTimeService.kt b/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/service/DateTimeService.kt index 9ac6703b..35f31a0f 100644 --- a/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/service/DateTimeService.kt +++ b/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/service/DateTimeService.kt @@ -1,6 +1,6 @@ package co.touchlab.droidcon.domain.service -import kotlinx.datetime.Instant +import kotlin.time.Instant import kotlinx.datetime.LocalDateTime import kotlinx.datetime.TimeZone diff --git a/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/service/impl/DefaultDateTimeService.kt b/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/service/impl/DefaultDateTimeService.kt index e944f1eb..8563aaeb 100644 --- a/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/service/impl/DefaultDateTimeService.kt +++ b/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/service/impl/DefaultDateTimeService.kt @@ -1,8 +1,8 @@ package co.touchlab.droidcon.domain.service.impl import co.touchlab.droidcon.domain.service.DateTimeService -import kotlinx.datetime.Clock -import kotlinx.datetime.Instant +import kotlin.time.Clock +import kotlin.time.Instant import kotlinx.datetime.LocalDateTime import kotlinx.datetime.TimeZone import kotlinx.datetime.toInstant diff --git a/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/service/impl/DefaultFeedbackService.kt b/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/service/impl/DefaultFeedbackService.kt index e9e169a5..620b5e6b 100644 --- a/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/service/impl/DefaultFeedbackService.kt +++ b/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/service/impl/DefaultFeedbackService.kt @@ -6,9 +6,8 @@ import co.touchlab.droidcon.domain.service.FeedbackService import com.russhwolf.settings.ExperimentalSettingsApi import com.russhwolf.settings.ObservableSettings import com.russhwolf.settings.set +import kotlin.time.Clock import kotlinx.coroutines.flow.first -import kotlinx.datetime.Clock -import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json @OptIn(ExperimentalSettingsApi::class) diff --git a/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/service/impl/DefaultScheduleService.kt b/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/service/impl/DefaultScheduleService.kt index debaf85b..56f55f44 100644 --- a/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/service/impl/DefaultScheduleService.kt +++ b/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/service/impl/DefaultScheduleService.kt @@ -4,7 +4,7 @@ import co.touchlab.droidcon.domain.entity.Session import co.touchlab.droidcon.domain.repository.SessionRepository import co.touchlab.droidcon.domain.service.ConferenceConfigProvider import co.touchlab.droidcon.domain.service.ScheduleService -import kotlinx.datetime.Instant +import kotlin.time.Instant class DefaultScheduleService( private val sessionRepository: SessionRepository, diff --git a/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/service/impl/DefaultSyncService.kt b/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/service/impl/DefaultSyncService.kt index d05df721..af4ff279 100644 --- a/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/service/impl/DefaultSyncService.kt +++ b/shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/service/impl/DefaultSyncService.kt @@ -24,13 +24,13 @@ import co.touchlab.droidcon.domain.service.impl.dto.SpeakersDto.LinkType import co.touchlab.droidcon.domain.service.impl.dto.SponsorSessionsDto import co.touchlab.droidcon.domain.service.impl.dto.SponsorsDto import co.touchlab.kermit.Logger +import kotlin.time.Instant import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.delay import kotlinx.coroutines.flow.first import kotlinx.coroutines.isActive import kotlinx.coroutines.launch import kotlinx.datetime.DateTimeUnit -import kotlinx.datetime.Instant import kotlinx.datetime.LocalDateTime import kotlinx.datetime.TimeZone import kotlinx.datetime.minus diff --git a/shared/src/commonMain/sqldelight/co/touchlab/droidcon/db/Session.sq b/shared/src/commonMain/sqldelight/co/touchlab/droidcon/db/Session.sq index 75922387..e2dc8c28 100644 --- a/shared/src/commonMain/sqldelight/co/touchlab/droidcon/db/Session.sq +++ b/shared/src/commonMain/sqldelight/co/touchlab/droidcon/db/Session.sq @@ -1,4 +1,4 @@ -import kotlinx.datetime.Instant; +import kotlin.time.Instant; import kotlin.Int; CREATE TABLE sessionTable( diff --git a/shared/src/iosMain/kotlin/co/touchlab/droidcon/Koin.ios.kt b/shared/src/iosMain/kotlin/co/touchlab/droidcon/Koin.ios.kt index bd43fcbe..6f997c7c 100644 --- a/shared/src/iosMain/kotlin/co/touchlab/droidcon/Koin.ios.kt +++ b/shared/src/iosMain/kotlin/co/touchlab/droidcon/Koin.ios.kt @@ -78,6 +78,7 @@ fun Koin.get(objCProtocol: ObjCProtocol, qualifier: Qualifier?): Any { return get(kClazz, qualifier, null) } +@OptIn(BetaInteropApi::class) fun Koin.getAny(objCObject: ObjCObject, qualifier: Qualifier?, parameters: ParametersDefinition?): Any { val kclass = when (objCObject) { is ObjCClass -> getOriginalKotlinClass(objCObject) diff --git a/shared/src/iosMain/kotlin/co/touchlab/droidcon/service/IOSNotificationService.kt b/shared/src/iosMain/kotlin/co/touchlab/droidcon/service/IOSNotificationService.kt index 68ae3637..08e40cae 100644 --- a/shared/src/iosMain/kotlin/co/touchlab/droidcon/service/IOSNotificationService.kt +++ b/shared/src/iosMain/kotlin/co/touchlab/droidcon/service/IOSNotificationService.kt @@ -7,7 +7,7 @@ import co.touchlab.droidcon.domain.service.ConferenceConfigProvider import co.touchlab.droidcon.domain.service.SyncService import co.touchlab.droidcon.util.wrapMultiThreadCallback import co.touchlab.kermit.Logger -import kotlinx.datetime.Instant +import kotlin.time.Instant import kotlinx.datetime.toNSDate import platform.Foundation.NSCalendar import platform.Foundation.NSCalendarUnitDay From 5b9acd140af3246aca5ab47f6abc55f341fe6b50 Mon Sep 17 00:00:00 2001 From: Kevin Schildhorn Date: Fri, 21 Nov 2025 11:16:15 -0500 Subject: [PATCH 4/5] Update Koin.kt --- shared/src/commonMain/kotlin/co/touchlab/droidcon/Koin.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/shared/src/commonMain/kotlin/co/touchlab/droidcon/Koin.kt b/shared/src/commonMain/kotlin/co/touchlab/droidcon/Koin.kt index 00ac9815..797f7037 100644 --- a/shared/src/commonMain/kotlin/co/touchlab/droidcon/Koin.kt +++ b/shared/src/commonMain/kotlin/co/touchlab/droidcon/Koin.kt @@ -92,7 +92,6 @@ val booleanAdapter = object : ColumnAdapter { override fun encode(value: Boolean): Long = if (value) 1L else 0L } -@OptIn(ExperimentalTime::class) private val coreModule = module { single { DroidconDatabase.invoke( From f233d2784635feb84c21bf92754eaea4097f1882 Mon Sep 17 00:00:00 2001 From: Kevin Schildhorn Date: Fri, 21 Nov 2025 11:58:29 -0500 Subject: [PATCH 5/5] Update Koin.kt --- shared/src/commonMain/kotlin/co/touchlab/droidcon/Koin.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/shared/src/commonMain/kotlin/co/touchlab/droidcon/Koin.kt b/shared/src/commonMain/kotlin/co/touchlab/droidcon/Koin.kt index 797f7037..72bd2f04 100644 --- a/shared/src/commonMain/kotlin/co/touchlab/droidcon/Koin.kt +++ b/shared/src/commonMain/kotlin/co/touchlab/droidcon/Koin.kt @@ -50,7 +50,6 @@ import co.touchlab.droidcon.domain.service.impl.json.JsonResourceReader import io.ktor.client.HttpClient import io.ktor.client.plugins.HttpTimeout import kotlin.time.Clock -import kotlin.time.ExperimentalTime import kotlinx.coroutines.runBlocking import kotlinx.datetime.TimeZone import kotlinx.serialization.json.Json