From 4e3dfe57540c6867b9b9b7ca4f382753f2f50292 Mon Sep 17 00:00:00 2001 From: Evgenii Kozlov Date: Tue, 22 Sep 2020 19:44:11 +0200 Subject: [PATCH] Should not crash Android client when changing media block's background color on Desktop client (#900) --- CHANGELOG.md | 6 ++++- .../page/DocumentExternalEventReducer.kt | 23 +++++++++++-------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 72819a5e46..d1167eb8f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change log for Android @Anytype app. -## Version 0.0.48 +## Version 0.0.48 (WIP) ### New features 🚀 @@ -11,6 +11,10 @@ * Indent aware scroll-and-move (#820) * Enter multi-select mode via document's main menu (#896) +### Fixes & tech 🚒 + +* Should not crash Android client when changing media block's background color on Desktop client (#814) + ### Middleware ⚙ * Updated middleware protocol to `0.13.10` (#851) diff --git a/presentation/src/main/java/com/agileburo/anytype/presentation/page/DocumentExternalEventReducer.kt b/presentation/src/main/java/com/agileburo/anytype/presentation/page/DocumentExternalEventReducer.kt index 7a1e44247c..a38a92c7c7 100644 --- a/presentation/src/main/java/com/agileburo/anytype/presentation/page/DocumentExternalEventReducer.kt +++ b/presentation/src/main/java/com/agileburo/anytype/presentation/page/DocumentExternalEventReducer.kt @@ -32,17 +32,20 @@ class DocumentExternalEventReducer : StateReducer, Event> { is Event.Command.DeleteBlock -> state.filter { !event.targets.contains(it.id) } is Event.Command.GranularChange -> state.replace( replacement = { block -> - val content = block.content() - block.copy( - content = content.copy( - style = event.style ?: content.style, - color = event.color ?: content.color, - backgroundColor = event.backgroundColor ?: content.backgroundColor, - text = event.text ?: content.text, - marks = event.marks ?: content.marks, - align = event.alignment + val content = block.content + if (content is Block.Content.Text) + block.copy( + content = content.copy( + style = event.style ?: content.style, + color = event.color ?: content.color, + backgroundColor = event.backgroundColor ?: content.backgroundColor, + text = event.text ?: content.text, + marks = event.marks ?: content.marks, + align = event.alignment + ) ) - ) + else + block.copy() }, target = { block -> block.id == event.id } )