From 5173f9cfe59ab9deb2dc873b9f3726810d481e85 Mon Sep 17 00:00:00 2001 From: Roger Chapman Date: Sun, 13 Dec 2020 17:28:22 +1100 Subject: [PATCH 1/3] Fix to broken state change updates on some fields --- CHANGELOG.md | 1 + frontend/src/controls/TextArea.svelte | 2 +- frontend/src/views/FieldBool.svelte | 6 +----- frontend/src/views/FieldBoolValue.svelte | 6 +----- frontend/src/views/FieldEnum.svelte | 6 +----- frontend/src/views/FieldMessage.svelte | 6 +----- frontend/src/views/FieldOneof.svelte | 6 +----- frontend/src/views/FieldText.svelte | 5 +---- frontend/src/views/RepeatedField.svelte | 13 +++++++------ 9 files changed, 15 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7822212..3fa14b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Oneof value that has a message with no fields would cause the UI to become unresponsive +- Oneof with repeated nested messages would loose state, resulting in inability to add repeated values ## [v0.3.2] - 2020-11-25 diff --git a/frontend/src/controls/TextArea.svelte b/frontend/src/controls/TextArea.svelte index 513b294..aa36ba2 100644 --- a/frontend/src/controls/TextArea.svelte +++ b/frontend/src/controls/TextArea.svelte @@ -1,6 +1,6 @@ diff --git a/frontend/src/views/FieldBoolValue.svelte b/frontend/src/views/FieldBoolValue.svelte index e3b15f6..bc71be9 100644 --- a/frontend/src/views/FieldBoolValue.svelte +++ b/frontend/src/views/FieldBoolValue.svelte @@ -1,5 +1,4 @@ {#if multiline } diff --git a/frontend/src/views/RepeatedField.svelte b/frontend/src/views/RepeatedField.svelte index 55a43fa..6bcd3bf 100644 --- a/frontend/src/views/RepeatedField.svelte +++ b/frontend/src/views/RepeatedField.svelte @@ -15,10 +15,8 @@ cloneTarget[key] = clone(target[key]); } return cloneTarget; - } else { - return target; - } - return f + } + return target; } hint = field.kind; @@ -26,10 +24,13 @@ hint = field.message.full_name; } - if (!state[field.name]) { - state[field.name] = [] + $: { + if (!state[field.name]) { + state[field.name] = [] + } } + const onAddButtonClicked = () => { state[field.name] = [...state[field.name], null] } From fb64dcae7b874212da5b3257270553c10d2226d4 Mon Sep 17 00:00:00 2001 From: Roger Chapman Date: Sun, 13 Dec 2020 17:49:38 +1100 Subject: [PATCH 2/3] all repeated fields could loose state --- CHANGELOG.md | 2 +- internal/server/foobar.proto | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fa14b7..a7dac75 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Oneof value that has a message with no fields would cause the UI to become unresponsive -- Oneof with repeated nested messages would loose state, resulting in inability to add repeated values +- State loss between methods causing repeated fields to be reset to empty and the "add" button becoming unresponsive ## [v0.3.2] - 2020-11-25 diff --git a/internal/server/foobar.proto b/internal/server/foobar.proto index 47f88e1..51b93e0 100644 --- a/internal/server/foobar.proto +++ b/internal/server/foobar.proto @@ -67,6 +67,7 @@ message BarRequest { repeated Baz type_repeated_enum = 4; repeated bytes type_repeated_bytes = 5; repeated Bar type_repeated_message = 6; + repeated uint32 uint32repeated = 7; } message BarResponse {} From 5ceca53f73d2df55ee55da87169e427ff5ba1da9 Mon Sep 17 00:00:00 2001 From: Roger Chapman Date: Sun, 13 Dec 2020 21:51:13 +1100 Subject: [PATCH 3/3] move all state changes within correct update handlers --- frontend/src/views/FieldBool.svelte | 6 ++-- frontend/src/views/FieldBoolValue.svelte | 8 ++--- frontend/src/views/FieldEnum.svelte | 7 ++-- frontend/src/views/FieldMap.svelte | 45 ++++++++++++------------ frontend/src/views/FieldMessage.svelte | 6 ++-- frontend/src/views/FieldNilText.svelte | 9 +++-- frontend/src/views/FieldOneof.svelte | 3 +- frontend/src/views/FieldText.svelte | 7 ++-- frontend/src/views/FieldWellKnown.svelte | 23 ++++++------ frontend/src/views/RepeatedField.svelte | 8 ++--- 10 files changed, 63 insertions(+), 59 deletions(-) diff --git a/frontend/src/views/FieldBool.svelte b/frontend/src/views/FieldBool.svelte index 425571e..862c294 100644 --- a/frontend/src/views/FieldBool.svelte +++ b/frontend/src/views/FieldBool.svelte @@ -6,17 +6,17 @@ export let key; export let idx; - let val; + let val, labelColor, removeable; $: { val = key !== undefined ? key : idx >= 0 ? idx : field.name; if (!state[val]) { state[val] = false; } + labelColor = key !== undefined ? "var(--accent-color3)" : idx >= 0 ? "var(--accent-color2)" : undefined; + removeable = idx >= 0; } - const labelColor = key !== undefined ? "var(--accent-color3)" : idx >= 0 ? "var(--accent-color2)" : undefined; - const removeable = idx >= 0;