Skip to content

Commit 02256a6

Browse files
authored
Final follow-up (for real!) to analytics. (#3926)
1 parent da02b1f commit 02256a6

File tree

3 files changed

+29
-18
lines changed

3 files changed

+29
-18
lines changed

app/src/main/java/org/wikipedia/analytics/eventplatform/MachineGeneratedArticleDescriptionsAnalyticsHelper.kt

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,39 +8,34 @@ import org.wikipedia.auth.AccountUtil
88
import org.wikipedia.dataclient.ServiceFactory
99
import org.wikipedia.page.PageTitle
1010
import org.wikipedia.settings.Prefs
11+
import org.wikipedia.util.ActiveTimer
1112

1213
class MachineGeneratedArticleDescriptionsAnalyticsHelper {
1314

1415
private var apiFailed = false
1516
var apiOrderList = emptyList<String>()
1617
var displayOrderList = emptyList<String>()
1718
private var chosenSuggestion = ""
18-
private var startTime = 0L
19-
private var timeSpentPerEdit = 0L
19+
val timer = ActiveTimer()
20+
2021
fun articleDescriptionEditingStart(context: Context) {
2122
log(context, composeGroupString() + ".start")
22-
resetTimer()
23-
}
24-
25-
private fun resetTimer() {
26-
startTime = System.currentTimeMillis()
2723
}
2824

2925
fun articleDescriptionEditingEnd(context: Context) {
3026
log(context, composeGroupString() + ".end")
31-
timeSpentPerEdit = System.currentTimeMillis() - startTime
3227
}
3328

3429
fun logAttempt(context: Context, finalDescription: String, wasChosen: Boolean, wasModified: Boolean, title: PageTitle) {
3530
log(context, composeLogString(title) + ".attempt:$finalDescription" +
3631
".suggestion1:${encode(apiOrderList.first())}" + (if (apiOrderList.size > 1) ".suggestion2.${encode(apiOrderList.last())}" else "") +
37-
getOrderString(wasChosen, chosenSuggestion) + ".modified:$wasModified")
32+
getOrderString(wasChosen, chosenSuggestion) + ".modified:$wasModified.timeSpentMs.${timer.elapsedMillis}")
3833
}
3934

4035
fun logSuccess(context: Context, finalDescription: String, wasChosen: Boolean, wasModified: Boolean, title: PageTitle, revId: Long) {
4136
log(context, composeLogString(title) + ".success:$finalDescription" +
4237
".suggestion1:${encode(apiOrderList.first())}" + (if (apiOrderList.size > 1) ".suggestion2.${encode(apiOrderList.last())}" else "") +
43-
getOrderString(wasChosen, chosenSuggestion) + ".modified:$wasModified.timeSpentMs.$timeSpentPerEdit.revId:$revId")
38+
getOrderString(wasChosen, chosenSuggestion) + ".modified:$wasModified.timeSpentMs.${timer.elapsedMillis}.revId:$revId")
4439
}
4540

4641
fun logSuggestionsReceived(context: Context, isBlp: Boolean, title: PageTitle) {

app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.kt

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,16 @@ class DescriptionEditFragment : Fragment() {
143143
return binding.root
144144
}
145145

146+
override fun onPause() {
147+
super.onPause()
148+
analyticsHelper.timer.pause()
149+
}
150+
151+
override fun onResume() {
152+
super.onResume()
153+
analyticsHelper.timer.resume()
154+
}
155+
146156
override fun onDestroyView() {
147157
binding.fragmentDescriptionEditView.callback = null
148158
_binding = null
@@ -272,16 +282,15 @@ class DescriptionEditFragment : Fragment() {
272282
analyticsHelper.articleDescriptionEditingEnd(requireContext())
273283
}
274284
binding.fragmentDescriptionEditView.loadReviewContent(true)
285+
analyticsHelper.timer.pause()
275286
} else {
276287
binding.fragmentDescriptionEditView.setError(null)
277288
binding.fragmentDescriptionEditView.setSaveState(true)
278289
cancelCalls()
279-
if (action == DescriptionEditActivity.Action.ADD_DESCRIPTION) {
280-
analyticsHelper.logAttempt(requireContext(),
281-
binding.fragmentDescriptionEditView.description.orEmpty(), binding.fragmentDescriptionEditView.wasSuggestionChosen,
282-
binding.fragmentDescriptionEditView.wasSuggestionModified, pageTitle
283-
)
284-
}
290+
analyticsHelper.logAttempt(requireContext(),
291+
binding.fragmentDescriptionEditView.description.orEmpty(), binding.fragmentDescriptionEditView.wasSuggestionChosen,
292+
binding.fragmentDescriptionEditView.wasSuggestionModified, pageTitle
293+
)
285294
getEditTokenThenSave()
286295
EditAttemptStepEvent.logSaveAttempt(pageTitle, EditAttemptStepEvent.INTERFACE_OTHER)
287296
}
@@ -469,6 +478,7 @@ class DescriptionEditFragment : Fragment() {
469478
override fun onCancelClick() {
470479
if (binding.fragmentDescriptionEditView.showingReviewContent()) {
471480
binding.fragmentDescriptionEditView.loadReviewContent(false)
481+
analyticsHelper.timer.resume()
472482
} else {
473483
DeviceUtil.hideSoftKeyboard(requireActivity())
474484
requireActivity().onBackPressed()

app/src/main/java/org/wikipedia/util/ActiveTimer.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import java.util.concurrent.TimeUnit
55
class ActiveTimer {
66
private var startMillis: Long = 0
77
private var pauseMillis: Long = 0
8+
private var isPaused = false
89

910
init {
1011
reset()
@@ -17,12 +18,17 @@ class ActiveTimer {
1718

1819
fun pause() {
1920
pauseMillis = System.currentTimeMillis()
21+
isPaused = true
2022
}
2123

2224
fun resume() {
23-
startMillis -= System.currentTimeMillis() - pauseMillis
25+
startMillis += System.currentTimeMillis() - pauseMillis
26+
isPaused = false
2427
}
2528

29+
val elapsedMillis: Long
30+
get() = if (isPaused) pauseMillis - startMillis else System.currentTimeMillis() - startMillis
31+
2632
val elapsedSec: Int
27-
get() = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis() - startMillis).toInt()
33+
get() = TimeUnit.MILLISECONDS.toSeconds(elapsedMillis).toInt()
2834
}

0 commit comments

Comments
 (0)