From 4c209aaa867df670e2d583587151c2317c0fdfd5 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Fri, 28 Oct 2022 11:39:56 +0300 Subject: [PATCH] Stream: Update notes when edited (with web socket) (#2483) * note edit websocket * fix note update input --- .../Espo/Hooks/Note/WebSocketSubmit.php | 8 +++---- application/Espo/Services/Note.php | 21 ++++++++++++------- client/src/views/stream/panel.js | 10 +++++++++ 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/application/Espo/Hooks/Note/WebSocketSubmit.php b/application/Espo/Hooks/Note/WebSocketSubmit.php index 8a64b4b87d..028c6f5530 100644 --- a/application/Espo/Hooks/Note/WebSocketSubmit.php +++ b/application/Espo/Hooks/Note/WebSocketSubmit.php @@ -56,10 +56,6 @@ class WebSocketSubmit return; } - if (!$entity->isNew()) { - return; - } - $parentId = $entity->get('parentId'); $parentType = $entity->get('parentType'); @@ -75,6 +71,10 @@ class WebSocketSubmit 'createdById' => $entity->get('createdById'), ]; + if (!$entity->isNew()) { + $data->noteId = $entity->getId(); + } + $topic = "streamUpdate.{$parentType}.{$parentId}"; $this->webSocketSubmission->submit($topic, null, $data); diff --git a/application/Espo/Services/Note.php b/application/Espo/Services/Note.php index 0eed998e8d..1932551dba 100644 --- a/application/Espo/Services/Note.php +++ b/application/Espo/Services/Note.php @@ -170,6 +170,19 @@ class Note extends Record } } + public function filterUpdateInput(stdClass $data): void + { + parent::filterUpdateInput($data); + + unset($data->parentId); + unset($data->parentType); + unset($data->targetType); + unset($data->usersIds); + unset($data->teamsIds); + unset($data->portalsIds); + unset($data->isGlobal); + } + /** * @param NoteEntity $entity * @param stdClass $data @@ -186,14 +199,6 @@ class Note extends Record if (!$entity->isPost() && !$this->user->isAdmin()) { throw new ForbiddenSilent("Only 'Post' type allowed."); } - - $entity->clear('parentId'); - $entity->clear('parentType'); - $entity->clear('targetType'); - $entity->clear('usersIds'); - $entity->clear('teamsIds'); - $entity->clear('portalsIds'); - $entity->clear('isGlobal'); } protected function handlePostText(NoteEntity $entity): void diff --git a/client/src/views/stream/panel.js b/client/src/views/stream/panel.js index 8cc09bec93..a03e9e8637 100644 --- a/client/src/views/stream/panel.js +++ b/client/src/views/stream/panel.js @@ -298,6 +298,16 @@ define('views/stream/panel', ['views/record/panels/relationship', 'lib!Textcompl return; } + if (data.noteId) { + let model = this.collection.get(data.noteId); + + if (model) { + model.fetch(); + } + + return; + } + this.collection.fetchNew(); }); },