From 7ae4c30e3ee28ed6e58a1e735d4ddf939fde475e Mon Sep 17 00:00:00 2001 From: Jonas L Date: Mon, 4 Mar 2019 00:00:00 +0000 Subject: [PATCH] Add action to configure blocking all notifications --- .../timelimit/android/sync/actions/Actions.kt | 22 +++++++++++++++++++ .../timelimit/android/sync/actions/Parser.kt | 1 + .../sync/actions/dispatch/ParentAction.kt | 10 +++++++++ 3 files changed, 33 insertions(+) diff --git a/app/src/main/java/io/timelimit/android/sync/actions/Actions.kt b/app/src/main/java/io/timelimit/android/sync/actions/Actions.kt index be213ab..57d6639 100644 --- a/app/src/main/java/io/timelimit/android/sync/actions/Actions.kt +++ b/app/src/main/java/io/timelimit/android/sync/actions/Actions.kt @@ -877,6 +877,28 @@ data class UpdateCategoryBlockedTimesAction(val categoryId: String, val blockedT } } +data class UpdateCategoryBlockAllNotificationsAction(val categoryId: String, val blocked: Boolean): ParentAction() { + companion object { + private const val TYPE_VALUE = "UPDATE_CATEGORY_BLOCK_ALL_NOTIFICATIONS" + private const val CATEGORY_ID = "categoryId" + private const val BLOCK = "blocked" + } + + init { + IdGenerator.assertIdValid(categoryId) + } + + override fun serialize(writer: JsonWriter) { + writer.beginObject() + + writer.name(TYPE).value(TYPE_VALUE) + writer.name(CATEGORY_ID).value(categoryId) + writer.name(BLOCK).value(blocked) + + writer.endObject() + } +} + data class CreateTimeLimitRuleAction(val rule: TimeLimitRule): ParentAction() { companion object { const val TYPE_VALUE = "CREATE_TIMELIMIT_RULE" diff --git a/app/src/main/java/io/timelimit/android/sync/actions/Parser.kt b/app/src/main/java/io/timelimit/android/sync/actions/Parser.kt index 9423b7c..972830d 100644 --- a/app/src/main/java/io/timelimit/android/sync/actions/Parser.kt +++ b/app/src/main/java/io/timelimit/android/sync/actions/Parser.kt @@ -60,6 +60,7 @@ object ActionParser { // SetConsiderRebootManipulationAction // RenameChildAction // UpdateParentNotificationFlagsAction + // UpdateCategoryBlockAllNotificationsAction else -> throw IllegalStateException() } } diff --git a/app/src/main/java/io/timelimit/android/sync/actions/dispatch/ParentAction.kt b/app/src/main/java/io/timelimit/android/sync/actions/dispatch/ParentAction.kt index f98435b..8380de1 100644 --- a/app/src/main/java/io/timelimit/android/sync/actions/dispatch/ParentAction.kt +++ b/app/src/main/java/io/timelimit/android/sync/actions/dispatch/ParentAction.kt @@ -454,6 +454,16 @@ object LocalDatabaseParentActionDispatcher { ) ) } + is UpdateCategoryBlockAllNotificationsAction -> { + val categoryEntry = database.category().getCategoryByIdSync(action.categoryId) + ?: throw IllegalArgumentException("can not update notification blocking for non exsistent category") + + database.category().updateCategorySync( + categoryEntry.copy( + blockAllNotifications = action.blocked + ) + ) + } }.let { } database.setTransactionSuccessful()