diff --git a/CHANGELOG.md b/CHANGELOG.md index 42149357..265508f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,21 @@ ## [Unreleased] -TBA +### Added +- Migrated from Gradle Nexus publishing library to Gradle Maven Publish Plugin([#86](https://github.com/addhen/kanalytics/pull/86)). + +### Dependencies +- Bumped gradle to `v8.14.3` ([#85](https://github.com/addhen/kanalytics/pull/85))cc1 +- Bumped kotlinx-serialization-json to `v1.9.0` ([#84](https://github.com/addhen/kanalytics/pull/84)) +- Bumped atomicfu to `v0.29.0` ([#83](https://github.com/addhen/kanalytics/pull/83)) +- Bumped AGP to `v8.11.0` ([#81](https://github.com/addhen/kanalytics/pull/81)) +- Bumped dev.mokkery to `v2.9.0` ([#80](https://github.com/addhen/kanalytics/pull/80)) +- Bumped kotlin to `v2.2.0` ([#79](https://github.com/addhen/kanalytics/pull/79)) +- Bumped lifecycle-viewmodel-compose to `v2.9.1` ([#78](https://github.com/addhen/kanalytics/pull/78)) +- Bumped compose-gradle-plugin to `v1.8.2` ([#77](https://github.com/addhen/kanalytics/pull/77)) +- Bumped kermit to `v2.0.6` ([#75](https://github.com/addhen/kanalytics/pull/75)) +- Bumped appcompat to `v1.7.1` ([#72](https://github.com/addhen/kanalytics/pull/72)) +- Bumped data-table-material3 to `v0.11.4` ([#70](https://github.com/addhen/kanalytics/pull/70)) +- Bumped lifecycle-viewmodel-compose to `v2.9.0` ([#66](https://github.com/addhen/kanalytics/pull/66)) ## [1.3.0] - 2025-05-21 diff --git a/convention-plugins/src/main/kotlin/com/addhen/gradle/convention/Kotlin.kt b/convention-plugins/src/main/kotlin/com/addhen/gradle/convention/Kotlin.kt index 9dcd34b5..12fed3d7 100644 --- a/convention-plugins/src/main/kotlin/com/addhen/gradle/convention/Kotlin.kt +++ b/convention-plugins/src/main/kotlin/com/addhen/gradle/convention/Kotlin.kt @@ -17,6 +17,7 @@ fun Project.configureKotlin() { // Turning this off due to: //https://youtrack.jetbrains.com/issue/KT-66568/w-KLIB-resolver-The-same-uniquename...-found-in-more-than-one-library allWarningsAsErrors.set(false) + optIn.add("kotlin.time.ExperimentalTime") freeCompilerArgs.add( // expect/actual classes (including interfaces, objects, annotations, enums, actual typealiases) in Beta // https://youtrack.jetbrains.com/issue/KT-61573 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 474222e1..cfd3ed57 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -31,7 +31,7 @@ kotlinx-serializer = "1.9.0" lifecycle-viewmodel-compose = "2.9.1" kermit = "2.0.6" kotlinx-collections-immutable = "0.4.0" -kotlinx-datetime = "0.7.0-0.6.x-compat" +kotlinx-datetime = "0.7.1" sqldelight = "2.1.0" startup-runtime = "1.2.0" composeDataTable = "0.11.4" diff --git a/kanalytics-viewer-no-op/src/commonMain/kotlin/com/addhen/kanalytics/viewer/KAnalyticsCollector.kt b/kanalytics-viewer-no-op/src/commonMain/kotlin/com/addhen/kanalytics/viewer/KAnalyticsCollector.kt index ee09e94c..1144551d 100644 --- a/kanalytics-viewer-no-op/src/commonMain/kotlin/com/addhen/kanalytics/viewer/KAnalyticsCollector.kt +++ b/kanalytics-viewer-no-op/src/commonMain/kotlin/com/addhen/kanalytics/viewer/KAnalyticsCollector.kt @@ -5,7 +5,7 @@ package com.addhen.kanalytics.viewer import com.addhen.kanalytics.KAnalyticsEvent import com.addhen.kanalytics.KTrackerName -import kotlinx.datetime.Instant +import kotlin.time.Instant public class KAnalyticsCollector( private val showNotification: Boolean = false, diff --git a/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/KAnalyticsCollector.kt b/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/KAnalyticsCollector.kt index d587f8dc..7883af0f 100644 --- a/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/KAnalyticsCollector.kt +++ b/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/KAnalyticsCollector.kt @@ -10,11 +10,11 @@ import com.addhen.kanalytics.viewer.app.shared.AppCoroutineDispatchers import com.addhen.kanalytics.viewer.app.shared.data.model.EventData import com.addhen.kanalytics.viewer.app.shared.data.repository.EventDataRepository import com.addhen.kanalytics.viewer.app.shared.data.repository.EventRepository +import kotlin.time.Instant import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.MainScope import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import kotlinx.datetime.Instant public class KAnalyticsCollector( showShortcut: Boolean = true, diff --git a/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/KAnalyticsInterceptor.kt b/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/KAnalyticsInterceptor.kt index b01d63c6..49d86a5f 100644 --- a/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/KAnalyticsInterceptor.kt +++ b/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/KAnalyticsInterceptor.kt @@ -5,7 +5,7 @@ package com.addhen.kanalytics.viewer import com.addhen.kanalytics.Interceptor import com.addhen.kanalytics.KAnalyticsEvent -import kotlinx.datetime.Clock +import kotlin.time.Clock public class KAnalyticsInterceptor( private val collector: KAnalyticsCollector = KAnalyticsCollector(), diff --git a/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/RetentionPolicyManager.kt b/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/RetentionPolicyManager.kt index 2b236308..d88b2017 100644 --- a/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/RetentionPolicyManager.kt +++ b/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/RetentionPolicyManager.kt @@ -5,8 +5,8 @@ package com.addhen.kanalytics.viewer import com.addhen.kanalytics.viewer.app.shared.data.repository.EventRepository import kotlin.jvm.JvmInline -import kotlinx.datetime.Clock -import kotlinx.datetime.Instant +import kotlin.time.Clock +import kotlin.time.Instant public class RetentionPolicyManager( private val clock: Clock = Clock.System, @@ -18,7 +18,11 @@ public class RetentionPolicyManager( val daysInMillis = dayDuration.numberOfDays * 24 * 60 * 60 * 1000L val currentTimeInMillis = clock.now().toEpochMilliseconds() val retentionDeadlineInMillis = currentTimeInMillis - daysInMillis - repository.deleteAllOlderThan(Instant.fromEpochMilliseconds(retentionDeadlineInMillis)) + repository.deleteAllOlderThan( + Instant.fromEpochMilliseconds( + retentionDeadlineInMillis, + ), + ) } @JvmInline diff --git a/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/database/EventDataDao.kt b/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/database/EventDataDao.kt index 8efeec29..ea883ff1 100644 --- a/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/database/EventDataDao.kt +++ b/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/database/EventDataDao.kt @@ -8,11 +8,11 @@ import com.addhen.kanalytics.viewer.app.shared.AppCoroutineDispatchers import com.addhen.kanalytics.viewer.app.shared.data.database.entities.EventDataEntity import com.addhen.kanalytics.viewer.app.shared.data.database.sqlidelight.EventViewerDatabase import com.addhen.kanalytics.viewer.app.shared.data.database.sqlidelight.createDatabase +import kotlin.time.Instant import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.map import kotlinx.coroutines.withContext -import kotlinx.datetime.Instant public class EventDataDao( private val database: EventViewerDatabase, diff --git a/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/database/entities/EventDataEntity.kt b/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/database/entities/EventDataEntity.kt index a3021f44..98646988 100644 --- a/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/database/entities/EventDataEntity.kt +++ b/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/database/entities/EventDataEntity.kt @@ -3,13 +3,11 @@ package com.addhen.kanalytics.viewer.app.shared.data.database.entities -import kotlinx.datetime.Instant - internal class EventDataEntity( val id: Long?, val name: String, val trackerName: String, val description: String?, - val createdAt: Instant, + val createdAt: kotlin.time.Instant, val properties: Map, ) diff --git a/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/database/sqlidelight/adapters/InstantAdapter.kt b/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/database/sqlidelight/adapters/InstantAdapter.kt index 778757fb..3bbeb47d 100644 --- a/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/database/sqlidelight/adapters/InstantAdapter.kt +++ b/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/database/sqlidelight/adapters/InstantAdapter.kt @@ -4,11 +4,11 @@ package com.addhen.kanalytics.viewer.app.shared.data.database.sqlidelight.adapters import app.cash.sqldelight.ColumnAdapter -import kotlinx.datetime.Instant +import kotlin.time.Instant internal val instantAdapter = object : ColumnAdapter { - override fun decode(databaseValue: String): Instant = Instant.parse(databaseValue) + override fun decode(databaseValue: String): Instant = kotlin.time.Instant.parse(databaseValue) override fun encode(value: Instant): String = value.toString() } diff --git a/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/model/EventData.kt b/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/model/EventData.kt index e0f3d368..6c53dfc7 100644 --- a/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/model/EventData.kt +++ b/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/model/EventData.kt @@ -3,7 +3,7 @@ package com.addhen.kanalytics.viewer.app.shared.data.model -import kotlinx.datetime.Instant +import kotlin.time.Instant public class EventData( public val id: Long?, diff --git a/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/repository/EventDataRepository.kt b/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/repository/EventDataRepository.kt index 9f7acb9b..a75c3dc3 100644 --- a/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/repository/EventDataRepository.kt +++ b/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/repository/EventDataRepository.kt @@ -6,9 +6,9 @@ package com.addhen.kanalytics.viewer.app.shared.data.repository import com.addhen.kanalytics.viewer.app.shared.data.database.EventDataDao import com.addhen.kanalytics.viewer.app.shared.data.database.entities.EventDataEntity import com.addhen.kanalytics.viewer.app.shared.data.model.EventData +import kotlin.time.Instant import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map -import kotlinx.datetime.Instant public class EventDataRepository(private val eventDataDao: EventDataDao) : EventRepository { diff --git a/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/repository/EventRepository.kt b/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/repository/EventRepository.kt index 11469d88..c244313e 100644 --- a/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/repository/EventRepository.kt +++ b/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/data/repository/EventRepository.kt @@ -4,8 +4,8 @@ package com.addhen.kanalytics.viewer.app.shared.data.repository import com.addhen.kanalytics.viewer.app.shared.data.model.EventData +import kotlin.time.Instant import kotlinx.coroutines.flow.Flow -import kotlinx.datetime.Instant public interface EventRepository { diff --git a/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/ui/Instant.kt b/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/ui/Instant.kt index 1f21a891..c22e88cf 100644 --- a/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/ui/Instant.kt +++ b/kanalytics-viewer/src/commonMain/kotlin/com/addhen/kanalytics/viewer/app/shared/ui/Instant.kt @@ -1,7 +1,7 @@ // Copyright 2025, Addhen Ltd and the kanalytics project contributors // SPDX-License-Identifier: Apache-2.0 -import kotlinx.datetime.Instant +import kotlin.time.Instant import kotlinx.datetime.TimeZone import kotlinx.datetime.toLocalDateTime diff --git a/kanalytics-viewer/src/commonMain/sqldelight/com/addhen/kanalytics/viewer/app/shared/data/database/sqlidelight/event_data.sq b/kanalytics-viewer/src/commonMain/sqldelight/com/addhen/kanalytics/viewer/app/shared/data/database/sqlidelight/event_data.sq index e9d23c9d..d9c591a5 100644 --- a/kanalytics-viewer/src/commonMain/sqldelight/com/addhen/kanalytics/viewer/app/shared/data/database/sqlidelight/event_data.sq +++ b/kanalytics-viewer/src/commonMain/sqldelight/com/addhen/kanalytics/viewer/app/shared/data/database/sqlidelight/event_data.sq @@ -1,7 +1,7 @@ import kotlin.String; import kotlin.Any; import kotlin.collections.Map; -import kotlinx.datetime.Instant; +import kotlin.time.Instant; PRAGMA user_version = 3; diff --git a/kanalytics-viewer/src/commonTest/kotlin/com.addhen.kanalytics/viewer/KAnalyticsCollectorTest.kt b/kanalytics-viewer/src/commonTest/kotlin/com.addhen.kanalytics/viewer/KAnalyticsCollectorTest.kt index ff2441f2..1bceaf79 100644 --- a/kanalytics-viewer/src/commonTest/kotlin/com.addhen.kanalytics/viewer/KAnalyticsCollectorTest.kt +++ b/kanalytics-viewer/src/commonTest/kotlin/com.addhen.kanalytics/viewer/KAnalyticsCollectorTest.kt @@ -14,6 +14,8 @@ import kotlin.test.BeforeTest import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertTrue +import kotlin.time.Clock +import kotlin.time.Instant import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow @@ -24,8 +26,6 @@ import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.resetMain import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.setMain -import kotlinx.datetime.Clock -import kotlinx.datetime.Instant @OptIn(ExperimentalCoroutinesApi::class) class KAnalyticsCollectorTest { diff --git a/kanalytics-viewer/src/commonTest/kotlin/com.addhen.kanalytics/viewer/RetentionPolicyManagerTest.kt b/kanalytics-viewer/src/commonTest/kotlin/com.addhen.kanalytics/viewer/RetentionPolicyManagerTest.kt index 635f0fbd..4af0a6db 100644 --- a/kanalytics-viewer/src/commonTest/kotlin/com.addhen.kanalytics/viewer/RetentionPolicyManagerTest.kt +++ b/kanalytics-viewer/src/commonTest/kotlin/com.addhen.kanalytics/viewer/RetentionPolicyManagerTest.kt @@ -13,9 +13,9 @@ import dev.mokkery.verifySuspend import kotlin.test.BeforeTest import kotlin.test.Test import kotlin.test.assertFailsWith +import kotlin.time.Clock +import kotlin.time.Instant import kotlinx.coroutines.test.runTest -import kotlinx.datetime.Clock -import kotlinx.datetime.Instant class RetentionPolicyManagerTest { private lateinit var clock: TestClock @@ -43,7 +43,11 @@ class RetentionPolicyManagerTest { manager.processDataRetention() verifySuspend { - repository.deleteAllOlderThan(Instant.fromEpochMilliseconds(expectedRetentionDeadline)) + repository.deleteAllOlderThan( + kotlin.time.Instant.fromEpochMilliseconds( + expectedRetentionDeadline, + ), + ) } }