mirror of
https://codeberg.org/timelimit/timelimit-android.git
synced 2025-10-03 01:39:22 +02:00
Finish server integration for activity level blocking
This commit is contained in:
parent
f4a21b600e
commit
36e684e253
5 changed files with 41 additions and 3 deletions
|
@ -25,4 +25,7 @@ interface AppActivityDao {
|
|||
|
||||
@Query("DELETE FROM app_activity WHERE device_id = :deviceId AND app_package_name = :packageName AND activity_class_name IN (:activities)")
|
||||
fun deleteAppActivitiesSync(deviceId: String, packageName: String, activities: List<String>)
|
||||
|
||||
@Query("DELETE FROM app_activity WHERE device_id = :deviceId")
|
||||
fun deleteAppActivitiesByDeviceId(deviceId: String)
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package io.timelimit.android.extensions
|
||||
|
||||
import android.util.JsonReader
|
||||
|
||||
fun <T> JsonReader.parseList(parseItem: (JsonReader) -> T): List<T> {
|
||||
val result = mutableListOf<T>()
|
||||
|
||||
this.beginArray()
|
||||
while (this.hasNext()) {
|
||||
result.add(parseItem(this))
|
||||
}
|
||||
this.endArray()
|
||||
|
||||
return result
|
||||
}
|
|
@ -233,6 +233,19 @@ object ApplyServerDataStatus {
|
|||
})
|
||||
}
|
||||
|
||||
run {
|
||||
// apply activities
|
||||
database.appActivity().deleteAppActivitiesByDeviceId(item.deviceId)
|
||||
database.appActivity().addAppActivitiesSync(item.activities.map {
|
||||
AppActivity(
|
||||
deviceId = item.deviceId,
|
||||
appPackageName = it.packageName,
|
||||
activityClassName = it.className,
|
||||
title = it.title
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
run {
|
||||
// apply changed version number
|
||||
database.device().updateAppsVersion(
|
||||
|
|
|
@ -320,7 +320,7 @@ data class UpdateAppActivitiesAction(
|
|||
companion object {
|
||||
const val TYPE_VALUE = "UPDATE_APP_ACTIVITIES"
|
||||
private const val REMOVED = "removed"
|
||||
private const val UPDATED_OR_ADDED = "UPDATED_OR_ADDED"
|
||||
private const val UPDATED_OR_ADDED = "updatedOrAdded"
|
||||
|
||||
fun parse(data: JSONObject) = UpdateAppActivitiesAction(
|
||||
removedActivities = data.getJSONArray(REMOVED).toJsonArrayArray().map { item ->
|
||||
|
|
|
@ -19,7 +19,9 @@ import android.util.JsonReader
|
|||
import io.timelimit.android.data.customtypes.ImmutableBitmask
|
||||
import io.timelimit.android.data.customtypes.ImmutableBitmaskJson
|
||||
import io.timelimit.android.data.model.*
|
||||
import io.timelimit.android.extensions.parseList
|
||||
import io.timelimit.android.integration.platform.*
|
||||
import io.timelimit.android.sync.actions.AppActivityItem
|
||||
import io.timelimit.android.sync.actions.InstalledApp
|
||||
import io.timelimit.android.util.parseJsonArray
|
||||
import io.timelimit.android.util.parseJsonStringArray
|
||||
|
@ -610,17 +612,20 @@ data class ServerTimeLimitRule(
|
|||
data class ServerInstalledAppsData(
|
||||
val deviceId: String,
|
||||
val version: String,
|
||||
val apps: List<InstalledApp>
|
||||
val apps: List<InstalledApp>,
|
||||
val activities: List<AppActivityItem>
|
||||
) {
|
||||
companion object {
|
||||
private const val DEVICE_ID = "deviceId"
|
||||
private const val VERSION = "version"
|
||||
private const val APPS = "apps"
|
||||
private const val ACTIVITIES = "activities"
|
||||
|
||||
fun parse(reader: JsonReader): ServerInstalledAppsData {
|
||||
var deviceId: String? = null
|
||||
var version: String? = null
|
||||
var apps: List<InstalledApp>? = null
|
||||
var activities: List<AppActivityItem>? = null
|
||||
|
||||
reader.beginObject()
|
||||
while (reader.hasNext()) {
|
||||
|
@ -628,6 +633,7 @@ data class ServerInstalledAppsData(
|
|||
DEVICE_ID -> deviceId = reader.nextString()
|
||||
VERSION -> version = reader.nextString()
|
||||
APPS -> apps = InstalledApp.parseList(reader)
|
||||
ACTIVITIES -> activities = reader.parseList { AppActivityItem.parse(it) }
|
||||
else -> reader.skipValue()
|
||||
}
|
||||
}
|
||||
|
@ -636,7 +642,8 @@ data class ServerInstalledAppsData(
|
|||
return ServerInstalledAppsData(
|
||||
deviceId = deviceId!!,
|
||||
version = version!!,
|
||||
apps = apps!!
|
||||
apps = apps!!,
|
||||
activities = activities!!
|
||||
)
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue