From af16a4e191be90938bded146ba53c5ad2895e670 Mon Sep 17 00:00:00 2001 From: crc-32 Date: Tue, 12 Nov 2024 19:44:52 +0000 Subject: [PATCH] fix calendar di --- android/gradle.properties | 3 ++- .../kotlin/io/rebble/cobble/shared/di/AndroidModule.kt | 4 +++- .../domain/calendar/AndroidCalendarActionExecutor.kt | 3 +-- .../kotlin/io/rebble/cobble/shared/di/CalendarModule.kt | 5 +++-- .../rebble/cobble/shared/domain/common/PebbleDevice.kt | 2 ++ .../cobble/shared/handlers/CalendarActionHandler.kt | 9 +++++---- 6 files changed, 16 insertions(+), 10 deletions(-) diff --git a/android/gradle.properties b/android/gradle.properties index 27a81ed6..0a6d59d1 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -5,4 +5,5 @@ android.defaults.buildfeatures.buildconfig=true android.nonTransitiveRClass=false android.nonFinalResIds=false kotlin.code.style=official -kotlin.native.disableCompilerDaemon = true \ No newline at end of file +kotlin.native.disableCompilerDaemon = true +kapt.use.k2=false \ No newline at end of file diff --git a/android/shared/src/androidMain/kotlin/io/rebble/cobble/shared/di/AndroidModule.kt b/android/shared/src/androidMain/kotlin/io/rebble/cobble/shared/di/AndroidModule.kt index d56eecf8..53632b2f 100644 --- a/android/shared/src/androidMain/kotlin/io/rebble/cobble/shared/di/AndroidModule.kt +++ b/android/shared/src/androidMain/kotlin/io/rebble/cobble/shared/di/AndroidModule.kt @@ -45,7 +45,9 @@ val androidModule = module { single { AndroidJobScheduler() } single { FlutterPreferences() } singleOf(::AndroidNotificationActionExecutor) - singleOf(::AndroidCalendarActionExecutor) + factory { params -> + AndroidCalendarActionExecutor(params.get()) + } factory>(named("deviceHandlers")) { params -> val pebbleDevice: PebbleDevice = params.get() diff --git a/android/shared/src/androidMain/kotlin/io/rebble/cobble/shared/domain/calendar/AndroidCalendarActionExecutor.kt b/android/shared/src/androidMain/kotlin/io/rebble/cobble/shared/domain/calendar/AndroidCalendarActionExecutor.kt index ada7f069..5041b1d9 100644 --- a/android/shared/src/androidMain/kotlin/io/rebble/cobble/shared/domain/calendar/AndroidCalendarActionExecutor.kt +++ b/android/shared/src/androidMain/kotlin/io/rebble/cobble/shared/domain/calendar/AndroidCalendarActionExecutor.kt @@ -17,10 +17,9 @@ import org.koin.core.component.KoinComponent import org.koin.core.component.inject import kotlin.time.Duration.Companion.days -class AndroidCalendarActionExecutor: PlatformCalendarActionExecutor, KoinComponent { +class AndroidCalendarActionExecutor(private val watchTimelineSyncer: WatchTimelineSyncer): PlatformCalendarActionExecutor, KoinComponent { private val platformContext: PlatformContext by inject() private val calendarDao: CalendarDao by inject() - private val watchTimelineSyncer: WatchTimelineSyncer by inject() override suspend fun handlePlatformAction(action: CalendarAction, pin: TimelinePin): TimelineService.ActionResponse { val instanceId = pin.backingId ?: run { diff --git a/android/shared/src/commonMain/kotlin/io/rebble/cobble/shared/di/CalendarModule.kt b/android/shared/src/commonMain/kotlin/io/rebble/cobble/shared/di/CalendarModule.kt index f6726076..117387ff 100644 --- a/android/shared/src/commonMain/kotlin/io/rebble/cobble/shared/di/CalendarModule.kt +++ b/android/shared/src/commonMain/kotlin/io/rebble/cobble/shared/di/CalendarModule.kt @@ -13,8 +13,9 @@ import org.koin.dsl.module val calendarModule = module { singleOf(::PhoneCalendarSyncer) - singleOf(::WatchTimelineSyncer) - singleOf(::TimelineActionManager) + factory { params -> + TimelineActionManager(params.get()) + } single { CalendarSync(CoroutineScope(SupervisorJob() + get() + CoroutineName("CalendarSync"))) } diff --git a/android/shared/src/commonMain/kotlin/io/rebble/cobble/shared/domain/common/PebbleDevice.kt b/android/shared/src/commonMain/kotlin/io/rebble/cobble/shared/domain/common/PebbleDevice.kt index 25a0e132..66ebf660 100644 --- a/android/shared/src/commonMain/kotlin/io/rebble/cobble/shared/domain/common/PebbleDevice.kt +++ b/android/shared/src/commonMain/kotlin/io/rebble/cobble/shared/domain/common/PebbleDevice.kt @@ -5,6 +5,7 @@ import io.rebble.cobble.shared.Logging import io.rebble.cobble.shared.domain.appmessage.AppMessageTransactionSequence import io.rebble.cobble.shared.domain.state.ConnectionState import io.rebble.cobble.shared.domain.state.ConnectionStateManager +import io.rebble.cobble.shared.domain.timeline.TimelineActionManager import io.rebble.cobble.shared.domain.voice.VoiceSession import io.rebble.cobble.shared.handlers.CobbleHandler import io.rebble.cobble.shared.handlers.OutgoingMessage @@ -80,6 +81,7 @@ open class PebbleDevice( val audioStreamService: AudioStreamService by inject {parametersOf(protocolHandler)} val putBytesController: PutBytesController by inject {parametersOf(this)} + val timelineActionManager: TimelineActionManager by inject {parametersOf(this)} override fun close() { negotiationScope.cancel("PebbleDevice closed") diff --git a/android/shared/src/commonMain/kotlin/io/rebble/cobble/shared/handlers/CalendarActionHandler.kt b/android/shared/src/commonMain/kotlin/io/rebble/cobble/shared/handlers/CalendarActionHandler.kt index 338cc88f..ec67c9f0 100644 --- a/android/shared/src/commonMain/kotlin/io/rebble/cobble/shared/handlers/CalendarActionHandler.kt +++ b/android/shared/src/commonMain/kotlin/io/rebble/cobble/shared/handlers/CalendarActionHandler.kt @@ -1,6 +1,7 @@ package io.rebble.cobble.shared.handlers import com.benasher44.uuid.Uuid +import io.ktor.http.parametersOf import io.rebble.cobble.shared.Logging import io.rebble.cobble.shared.database.NextSyncAction import io.rebble.cobble.shared.database.dao.TimelinePinDao @@ -17,16 +18,16 @@ import kotlinx.coroutines.flow.* import kotlinx.coroutines.launch import org.koin.core.component.KoinComponent import org.koin.core.component.inject +import org.koin.core.parameter.parametersOf class CalendarActionHandler(private val pebbleDevice: PebbleDevice): KoinComponent, CobbleHandler { - private val timelineActionManager: TimelineActionManager by inject() + private val timelineActionManager = pebbleDevice.timelineActionManager private val timelinePinDao: TimelinePinDao by inject() - private val calendarActionExecutor: PlatformCalendarActionExecutor by inject() + private val timelineSyncer = WatchTimelineSyncer(pebbleDevice.blobDBService) + private val calendarActionExecutor: PlatformCalendarActionExecutor by inject() { parametersOf(timelineSyncer) } private val calendarActionFlow = timelineActionManager.actionFlowForApp(calendarWatchappId) - private val timelineSyncer = WatchTimelineSyncer(pebbleDevice.blobDBService) - init { pebbleDevice.negotiationScope.launch { val deviceScope = pebbleDevice.connectionScope.filterNotNull().first()