Skip to content

Commit 5c67f5d

Browse files
authored
Merge pull request #42 from ActivityWatch/dev/getLastEvent-limit
2 parents 81e838b + 003a818 commit 5c67f5d

File tree

3 files changed

+9
-10
lines changed

3 files changed

+9
-10
lines changed

mobile/src/main/java/net/activitywatch/android/RustInterface.kt

+2-3
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class RustInterface constructor(context: Context? = null) {
4141
private external fun setDataDir(path: String)
4242
external fun getBuckets(): String
4343
external fun createBucket(bucket: String): String
44-
external fun getEvents(bucket_id: String): String
44+
external fun getEvents(bucket_id: String, limit: Int): String
4545
external fun heartbeat(bucket_id: String, event: String, pulsetime: Double): String
4646

4747
fun sayHello(to: String): String {
@@ -93,8 +93,7 @@ class RustInterface constructor(context: Context? = null) {
9393

9494
fun getEventsJSON(bucket_id: String, limit: Int = 0): JSONArray {
9595
// TODO: Handle errors
96-
// FIXME: Use limit (will have major performance benefits)
97-
val result = getEvents(bucket_id)
96+
val result = getEvents(bucket_id, limit)
9897
return try {
9998
JSONArray(result)
10099
} catch(e: JSONException) {

mobile/src/main/java/net/activitywatch/android/watcher/UsageStatsWatcher.kt

+6-6
Original file line numberDiff line numberDiff line change
@@ -109,12 +109,12 @@ class UsageStatsWatcher constructor(val context: Context) {
109109
}
110110

111111
private fun getLastEvent(): JSONObject? {
112-
// FIXME: For some reason doesn't return last event, always 2h behind (so probably a timezone issue)
113112
val events = ri.getEventsJSON(bucket_id, limit=1)
114-
return if (events.length() > 0) {
115-
//Log.d(TAG, events[0].toString())
113+
return if (events.length() == 1) {
114+
//Log.d(TAG, "Last event: ${events[0]}")
116115
events[0] as JSONObject
117116
} else {
117+
Log.w(TAG, "More or less than one event was retrieved when trying to get last event, actual length: ${events.length()}")
118118
null
119119
}
120120
}
@@ -155,7 +155,7 @@ class UsageStatsWatcher constructor(val context: Context) {
155155
nextEvent@ while(usageEvents.hasNextEvent()) {
156156
val event = UsageEvents.Event()
157157
usageEvents.getNextEvent(event)
158-
if(event.eventType !in arrayListOf(UsageEvents.Event.MOVE_TO_FOREGROUND, UsageEvents.Event.MOVE_TO_BACKGROUND, UsageEvents.Event.SCREEN_INTERACTIVE, UsageEvents.Event.SCREEN_NON_INTERACTIVE)) {
158+
if(event.eventType !in arrayListOf(UsageEvents.Event.ACTIVITY_RESUMED, UsageEvents.Event.ACTIVITY_PAUSED, UsageEvents.Event.SCREEN_INTERACTIVE, UsageEvents.Event.SCREEN_NON_INTERACTIVE)) {
159159
// Not sure which events are triggered here, so we use a (probably safe) fallback
160160
//Log.d(TAG, "Rare eventType: ${event.eventType}, skipping")
161161
continue@nextEvent
@@ -164,12 +164,12 @@ class UsageStatsWatcher constructor(val context: Context) {
164164
val awEvent = Event.fromUsageEvent(event, context, includeClassname = true)
165165
val pulsetime: Double
166166
when(event.eventType) {
167-
UsageEvents.Event.MOVE_TO_FOREGROUND, UsageEvents.Event.SCREEN_INTERACTIVE -> {
167+
UsageEvents.Event.ACTIVITY_RESUMED, UsageEvents.Event.SCREEN_INTERACTIVE -> {
168168
// MOVE_TO_FOREGROUND: New Activity was opened
169169
// SCREEN_INTERACTIVE: Screen just became interactive, user was previously therefore not active on the device
170170
pulsetime = 1.0
171171
}
172-
UsageEvents.Event.MOVE_TO_BACKGROUND, UsageEvents.Event.SCREEN_NON_INTERACTIVE -> {
172+
UsageEvents.Event.ACTIVITY_PAUSED, UsageEvents.Event.SCREEN_NON_INTERACTIVE -> {
173173
// MOVE_TO_BACKGROUND: Activity was moved to background
174174
// SCREEN_NOT_INTERACTIVE: Screen locked/turned off, user is therefore now AFK, and this is the last event
175175
pulsetime = 24 * 60 * 60.0 // 24h, we will assume events should never grow longer than that

0 commit comments

Comments
 (0)