aboutsummaryrefslogtreecommitdiff
path: root/lib/csapi/event_context.h
diff options
context:
space:
mode:
authorAndres Salomon <dilinger@queued.net>2021-01-18 04:00:14 -0500
committerAndres Salomon <dilinger@queued.net>2021-01-18 04:00:14 -0500
commit09eb39236666e81d5da014acea011dcd74d0999b (patch)
tree52876d96be71be1a39d5d935c1295a51995e8949 /lib/csapi/event_context.h
parentf1788ee27f33e9339334e0d79bde9a27d9ce2e44 (diff)
parenta4e78956f105875625b572d8b98459ffa86fafe5 (diff)
downloadlibquotient-09eb39236666e81d5da014acea011dcd74d0999b.tar.gz
libquotient-09eb39236666e81d5da014acea011dcd74d0999b.zip
Update upstream source from tag 'upstream/0.6.4'
Update to upstream version '0.6.4' with Debian dir aa8705fd74743e79c043bc9e3e425d5064404cfe
Diffstat (limited to 'lib/csapi/event_context.h')
-rw-r--r--lib/csapi/event_context.h123
1 files changed, 71 insertions, 52 deletions
diff --git a/lib/csapi/event_context.h b/lib/csapi/event_context.h
index a5fda7ea..d82d16ab 100644
--- a/lib/csapi/event_context.h
+++ b/lib/csapi/event_context.h
@@ -4,65 +4,84 @@
#pragma once
+#include "events/eventloader.h"
#include "jobs/basejob.h"
-#include "events/eventloader.h"
-#include "converters.h"
+namespace Quotient {
-namespace QMatrixClient
-{
- // Operations
+/*! \brief Get events and state around the specified event.
+ *
+ * This API returns a number of events that happened just before and
+ * after the specified event. This allows clients to get the context
+ * surrounding an event.
+ *
+ * *Note*: This endpoint supports lazy-loading of room member events. See
+ * `Lazy-loading room members <#lazy-loading-room-members>`_ for more
+ * information.
+ */
+class GetEventContextJob : public BaseJob {
+public:
+ /*! \brief Get events and state around the specified event.
+ *
+ * \param roomId
+ * The room to get events from.
+ *
+ * \param eventId
+ * The event to get context around.
+ *
+ * \param limit
+ * The maximum number of events to return. Default: 10.
+ *
+ * \param filter
+ * A JSON ``RoomEventFilter`` to filter the returned events with. The
+ * filter is only applied to ``events_before``, ``events_after``, and
+ * ``state``. It is not applied to the ``event`` itself. The filter may
+ * be applied before or/and after the ``limit`` parameter - whichever the
+ * homeserver prefers.
+ *
+ * See `Filtering <#filtering>`_ for more information.
+ */
+ explicit GetEventContextJob(const QString& roomId, const QString& eventId,
+ Omittable<int> limit = none,
+ const QString& filter = {});
- /// Get events and state around the specified event.
- ///
- /// This API returns a number of events that happened just before and
- /// after the specified event. This allows clients to get the context
- /// surrounding an event.
- class GetEventContextJob : public BaseJob
- {
- public:
- /*! Get events and state around the specified event.
- * \param roomId
- * The room to get events from.
- * \param eventId
- * The event to get context around.
- * \param limit
- * The maximum number of events to return. Default: 10.
- */
- explicit GetEventContextJob(const QString& roomId, const QString& eventId, Omittable<int> limit = none);
+ /*! \brief Construct a URL without creating a full-fledged job object
+ *
+ * This function can be used when a URL for GetEventContextJob
+ * is necessary but the job itself isn't.
+ */
+ static QUrl makeRequestUrl(QUrl baseUrl, const QString& roomId,
+ const QString& eventId,
+ Omittable<int> limit = none,
+ const QString& filter = {});
- /*! Construct a URL without creating a full-fledged job object
- *
- * This function can be used when a URL for
- * GetEventContextJob is necessary but the job
- * itself isn't.
- */
- static QUrl makeRequestUrl(QUrl baseUrl, const QString& roomId, const QString& eventId, Omittable<int> limit = none);
+ // Result properties
- ~GetEventContextJob() override;
+ /// A token that can be used to paginate backwards with.
+ QString begin() const { return loadFromJson<QString>("start"_ls); }
- // Result properties
+ /// A token that can be used to paginate forwards with.
+ QString end() const { return loadFromJson<QString>("end"_ls); }
- /// A token that can be used to paginate backwards with.
- const QString& begin() const;
- /// A token that can be used to paginate forwards with.
- const QString& end() const;
- /// A list of room events that happened just before the
- /// requested event, in reverse-chronological order.
- RoomEvents&& eventsBefore();
- /// Details of the requested event.
- RoomEventPtr&& event();
- /// A list of room events that happened just after the
- /// requested event, in chronological order.
- RoomEvents&& eventsAfter();
- /// The state of the room at the last event returned.
- StateEvents&& state();
+ /// A list of room events that happened just before the
+ /// requested event, in reverse-chronological order.
+ RoomEvents eventsBefore()
+ {
+ return takeFromJson<RoomEvents>("events_before"_ls);
+ }
+
+ /// Details of the requested event.
+ RoomEventPtr event() { return takeFromJson<RoomEventPtr>("event"_ls); }
+
+ /// A list of room events that happened just after the
+ /// requested event, in chronological order.
+ RoomEvents eventsAfter()
+ {
+ return takeFromJson<RoomEvents>("events_after"_ls);
+ }
- protected:
- Status parseJson(const QJsonDocument& data) override;
+ /// The state of the room at the last event returned.
+ StateEvents state() { return takeFromJson<StateEvents>("state"_ls); }
+};
- private:
- class Private;
- QScopedPointer<Private> d;
- };
-} // namespace QMatrixClient
+} // namespace Quotient