From 0e4a50b3ddff3627868ed907a3aa811121f26b50 Mon Sep 17 00:00:00 2001 From: KremeCN <3265494849@qq.com> Date: Wed, 26 Aug 2026 20:48:54 +0800 Subject: [PATCH] feat: add isolated activity event writer --- .../activity/ActivityEventWriter.kt | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 android/feature/automation/src/main/kotlin/com/flagship/abox/manager/automation/activity/ActivityEventWriter.kt diff --git a/android/feature/automation/src/main/kotlin/com/flagship/abox/manager/automation/activity/ActivityEventWriter.kt b/android/feature/automation/src/main/kotlin/com/flagship/abox/manager/automation/activity/ActivityEventWriter.kt new file mode 100644 index 0000000..ac36bc7 --- /dev/null +++ b/android/feature/automation/src/main/kotlin/com/flagship/abox/manager/automation/activity/ActivityEventWriter.kt @@ -0,0 +1,45 @@ +package com.flagship.abox.manager.automation.activity + +import com.flagship.abox.manager.domain.ActivityEvent +import com.flagship.abox.manager.domain.ActivityEventId +import com.flagship.abox.manager.domain.ActivityEventKind +import com.flagship.abox.manager.domain.ActivityOutcome +import com.flagship.abox.manager.domain.ActivityRepository +import com.flagship.abox.manager.domain.ActivitySource +import com.flagship.abox.manager.domain.ActivityTarget +import com.flagship.abox.manager.domain.ActivityTargetType +import com.flagship.abox.manager.domain.DeviceName +import com.flagship.abox.manager.domain.ProviderProfileId +import java.util.UUID +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.launch + +class ActivityEventWriter( + private val repository: ActivityRepository, + private val scope: CoroutineScope, +) { + fun recordDevice( + profileId: ProviderProfileId, + deviceName: DeviceName, + kind: ActivityEventKind, + outcome: ActivityOutcome, + errorCode: String? = null, + ) { + scope.launch { + runCatching { + repository.append( + ActivityEvent( + id = ActivityEventId(UUID.randomUUID().toString()), + profileId = profileId, + occurredAtEpochMillis = System.currentTimeMillis(), + kind = kind, + source = ActivitySource.USER, + outcome = outcome, + target = ActivityTarget(ActivityTargetType.DEVICE, deviceName.value, deviceName.value), + errorCode = errorCode, + ), + ) + } + } + } +}