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, + ), + ) + } + } + } +}