aboutsummaryrefslogtreecommitdiff
path: root/lib/jobs
diff options
context:
space:
mode:
authorKitsune Ral <Kitsune-Ral@users.sf.net>2017-06-13 17:30:13 +0900
committerKitsune Ral <Kitsune-Ral@users.sf.net>2018-07-27 14:35:28 +0900
commitbaee19241daffd50e0b32559cda64d5b6ede09a2 (patch)
tree2aa9e41f64d0dddeff3b5fdf8cca1f433cf0a5d7 /lib/jobs
parent284b751ee424985341812a32721227112160a905 (diff)
downloadlibquotient-baee19241daffd50e0b32559cda64d5b6ede09a2.tar.gz
libquotient-baee19241daffd50e0b32559cda64d5b6ede09a2.zip
Initial support for local echo
The Room class has gained a new internal container, unsyncedEvents, storing locally-created Event objects that are about to be sent or are sent but not yet synced. These objects are supposed to be complete enough to be displayed by clients in a usual way; access to them is provided by Room::pendingEvents() accessor. A set of pendingEvent* signals has been added to notify clients about changes in this container (adding, removal, status update). Yet unsent events don't have Event::id() at all; sent but yet unsynced ones have Event::id() but have almost nothing else except the content for now (probably a sender and an (at least local) timestamp are worth adding). Also: SendEventJob is removed in favor of GTAD-generated SendMessageJob.
Diffstat (limited to 'lib/jobs')
-rw-r--r--lib/jobs/sendeventjob.cpp45
-rw-r--r--lib/jobs/sendeventjob.h57
2 files changed, 0 insertions, 102 deletions
diff --git a/lib/jobs/sendeventjob.cpp b/lib/jobs/sendeventjob.cpp
deleted file mode 100644
index e5852c65..00000000
--- a/lib/jobs/sendeventjob.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-/******************************************************************************
- * Copyright (C) 2015 Felix Rohrbach <kde@fxrh.de>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "sendeventjob.h"
-
-#include "events/roommessageevent.h"
-
-using namespace QMatrixClient;
-
-SendEventJob::SendEventJob(const QString& roomId, const QString& type,
- const QString& plainText)
- : SendEventJob(roomId, RoomMessageEvent(plainText, type))
-{ }
-
-void SendEventJob::beforeStart(const ConnectionData* connData)
-{
- BaseJob::beforeStart(connData);
- setApiEndpoint(apiEndpoint() + connData->generateTxnId());
-}
-
-BaseJob::Status SendEventJob::parseJson(const QJsonDocument& data)
-{
- _eventId = data.object().value("event_id"_ls).toString();
- if (!_eventId.isEmpty())
- return Success;
-
- qCDebug(JOBS) << data;
- return { UserDefinedError, "No event_id in the JSON response" };
-}
-
diff --git a/lib/jobs/sendeventjob.h b/lib/jobs/sendeventjob.h
deleted file mode 100644
index af81ae26..00000000
--- a/lib/jobs/sendeventjob.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/******************************************************************************
- * Copyright (C) 2015 Felix Rohrbach <kde@fxrh.de>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#pragma once
-
-#include "basejob.h"
-
-#include "connectiondata.h"
-
-namespace QMatrixClient
-{
- class SendEventJob: public BaseJob
- {
- public:
- /** Constructs a job that sends an arbitrary room event */
- template <typename EvT>
- SendEventJob(const QString& roomId, const EvT& event)
- : BaseJob(HttpVerb::Put, QStringLiteral("SendEventJob"),
- QStringLiteral("_matrix/client/r0/rooms/%1/send/%2/")
- .arg(roomId, EvT::matrixTypeId()), // See also beforeStart()
- Query(),
- Data(event.contentJson()))
- { }
-
- /**
- * Constructs a plain text message job (for compatibility with
- * the old PostMessageJob API).
- */
- SendEventJob(const QString& roomId, const QString& type,
- const QString& plainText);
-
- QString eventId() const { return _eventId; }
-
- protected:
- Status parseJson(const QJsonDocument& data) override;
-
- private:
- QString _eventId;
-
- void beforeStart(const ConnectionData* connData) override;
- };
-} // namespace QMatrixClient