summaryrefslogtreecommitdiffstats
path: root/lib/Service/ProxyCacheMessageService.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Service/ProxyCacheMessageService.php')
-rw-r--r--lib/Service/ProxyCacheMessageService.php16
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/Service/ProxyCacheMessageService.php b/lib/Service/ProxyCacheMessageService.php
index 8a82fc885..a1c5b71ae 100644
--- a/lib/Service/ProxyCacheMessageService.php
+++ b/lib/Service/ProxyCacheMessageService.php
@@ -57,6 +57,10 @@ class ProxyCacheMessageService {
return $this->mapper->findByRemote($remoteServerUrl, $remoteToken, $remoteMessageId);
}
+ public function delete(ProxyCacheMessage $message): ProxyCacheMessage {
+ return $this->mapper->delete($message);
+ }
+
public function deleteExpiredMessages(): void {
$this->mapper->deleteExpiredMessages($this->timeFactory->getDateTime());
}
@@ -81,7 +85,12 @@ class ProxyCacheMessageService {
/** @var TalkChatMessageWithParent $messageData */
$messageData = $ocsResponse->getData()[0];
- $proxy = new ProxyCacheMessage();
+ try {
+ $proxy = $this->mapper->findByRemote($room->getRemoteServer(), $room->getRemoteToken(), $messageId);
+ } catch (DoesNotExistException) {
+ $proxy = new ProxyCacheMessage();
+ }
+
$proxy->setLocalToken($room->getToken());
$proxy->setRemoteServerUrl($room->getRemoteServer());
$proxy->setRemoteToken($room->getRemoteToken());
@@ -111,6 +120,11 @@ class ProxyCacheMessageService {
}
$proxy->setMetaData(json_encode($metaData));
+ if ($proxy->getId() !== null) {
+ $this->mapper->update($proxy);
+ return $proxy;
+ }
+
try {
$this->mapper->insert($proxy);
} catch (DBException $e) {