Skip to content

Commit 51e6e80

Browse files
authored
Merge pull request #551 from code-payments/chore/add-metrics-to-photo-processing
chore: add metrics to photo processing (scanning)
2 parents fcde9f9 + 6ef4c72 commit 51e6e80

4 files changed

Lines changed: 25 additions & 3 deletions

File tree

api/src/main/java/com/getcode/analytics/AnalyticsManager.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,14 @@ class AnalyticsManager @Inject constructor(
289289
)
290290
}
291291

292+
override fun photoScanned(successful: Boolean, timeToScanInMillis: Long) {
293+
track(
294+
Name.PhotoScanned,
295+
Property.Result to successful.toString(),
296+
Property.Time to timeToScanInMillis.toInt().toString()
297+
)
298+
}
299+
292300
override fun action(action: Action, source: ActionSource?) {
293301
track(
294302
action = action,
@@ -343,6 +351,7 @@ class AnalyticsManager @Inject constructor(
343351
PrivacyMigration("Privacy Migration"),
344352
BackgroundSwap("Background Swap Initiated"),
345353
Withdrawal("Withdrawal"),
354+
PhotoScanned("Photo Scanned"),
346355

347356
// Errors
348357
ErrorRequest("Error Request"),
@@ -365,6 +374,7 @@ class AnalyticsManager @Inject constructor(
365374
Result("Result"),
366375
MillisecondsToConfirm("Milliseconds to confirm"),
367376
GrabTime("Grab Time"),
377+
Time("Time"),
368378

369379
// Bill
370380
State("State"),

api/src/main/java/com/getcode/analytics/AnalyticsService.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ interface AnalyticsService {
5252

5353
fun appSettingToggled(setting: AppSetting, value: Boolean)
5454

55+
fun photoScanned(successful: Boolean, timeToScanInMillis: Long)
56+
5557
fun action(action: Action, source: ActionSource? = null)
5658
}
5759

@@ -98,5 +100,7 @@ class AnalyticsServiceNull : AnalyticsService {
98100
override fun backgroundSwapInitiated() = Unit
99101
override fun unintentionalLogout() = Unit
100102
override fun appSettingToggled(setting: AppSetting, value: Boolean) = Unit
103+
override fun photoScanned(successful: Boolean, timeToScanInMillis: Long) = Unit
104+
101105
override fun action(action: Action, source: ActionSource?) = Unit
102106
}

api/src/main/java/com/getcode/utils/Logging.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
44
import com.bugsnag.android.BreadcrumbType
55
import com.bugsnag.android.Bugsnag
66
import timber.log.Timber
7+
import kotlin.time.Duration
78
import kotlin.time.measureTime
89

910
sealed interface TraceType {
@@ -103,6 +104,7 @@ fun <T> timedTrace(
103104
type: TraceType = TraceType.Log,
104105
metadata: MetadataBuilder.() -> Unit = {},
105106
error: Throwable? = null,
107+
onComplete: (T, Duration) -> Unit = { _, _ -> },
106108
block: () -> T
107109
): T {
108110
var result: T
@@ -117,7 +119,7 @@ fun <T> timedTrace(
117119
}
118120

119121
trace(message, tag, type, timedMetadata, error)
120-
122+
onComplete(result, time)
121123
return result
122124
}
123125

@@ -127,6 +129,7 @@ suspend fun <T> timedTraceSuspend(
127129
type: TraceType = TraceType.Log,
128130
metadata: MetadataBuilder.() -> Unit = {},
129131
error: Throwable? = null,
132+
onComplete: (T, Duration) -> Unit = { _, _ -> },
130133
block: suspend () -> T
131134
): T {
132135
var result: T
@@ -141,7 +144,7 @@ suspend fun <T> timedTraceSuspend(
141144
}
142145

143146
trace(message, tag, type, timedMetadata, error)
144-
147+
onComplete(result, time)
145148
return result
146149
}
147150

app/src/main/java/com/kik/kikx/kikcodes/implementation/StaticImageHelper.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import android.icu.text.DateFormat
77
import android.icu.text.SimpleDateFormat
88
import android.net.Uri
99
import android.os.Environment
10+
import com.getcode.analytics.AnalyticsService
1011
import com.getcode.util.save
1112
import com.getcode.util.toByteArray
1213
import com.getcode.util.uriToBitmap
@@ -26,6 +27,7 @@ class StaticImageHelper @Inject constructor(
2627
@ApplicationContext
2728
private val context: Context,
2829
private val scanner: KikCodeScanner,
30+
private val analytics: AnalyticsService,
2931
) {
3032
suspend fun analyze(uri: Uri): Result<ScannableKikCode> {
3133
val bitmap = context.uriToBitmap(uri)
@@ -66,7 +68,10 @@ class StaticImageHelper @Inject constructor(
6668
return timedTraceSuspend(
6769
message = "analyzing image",
6870
tag = "Image Analysis",
69-
type = TraceType.Process
71+
type = TraceType.Process,
72+
onComplete = { result, time ->
73+
analytics.photoScanned(result.isSuccess, time.inWholeMilliseconds)
74+
}
7075
) {
7176
// try scanning raw
7277
val raw = scan(bitmap)

0 commit comments

Comments
 (0)