diff options
Diffstat (limited to 'lib/csapi/event_context.h')
-rw-r--r-- | lib/csapi/event_context.h | 52 |
1 files changed, 32 insertions, 20 deletions
diff --git a/lib/csapi/event_context.h b/lib/csapi/event_context.h index 54441617..2f9c66d8 100644 --- a/lib/csapi/event_context.h +++ b/lib/csapi/event_context.h @@ -4,34 +4,47 @@ #pragma once -#include "converters.h" - #include "events/eventloader.h" #include "jobs/basejob.h" namespace Quotient { -// 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); + Omittable<int> limit = none, + const QString& filter = {}); /*! \brief Construct a URL without creating a full-fledged job object * @@ -40,37 +53,36 @@ public: */ static QUrl makeRequestUrl(QUrl baseUrl, const QString& roomId, const QString& eventId, - Omittable<int> limit = none); - ~GetEventContextJob() override; + Omittable<int> limit = none, + const QString& filter = {}); // Result properties /// A token that can be used to paginate backwards with. - const QString& begin() const; + QString begin() const { return loadFromJson<QString>("start"_ls); } /// A token that can be used to paginate forwards with. - const QString& end() const; + QString end() const { return loadFromJson<QString>("end"_ls); } /// A list of room events that happened just before the /// requested event, in reverse-chronological order. - RoomEvents&& eventsBefore(); + RoomEvents eventsBefore() + { + return takeFromJson<RoomEvents>("events_before"_ls); + } /// Details of the requested event. - RoomEventPtr&& 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(); + RoomEvents eventsAfter() + { + return takeFromJson<RoomEvents>("events_after"_ls); + } /// The state of the room at the last event returned. - StateEvents&& state(); - -protected: - Status parseJson(const QJsonDocument& data) override; - -private: - class Private; - QScopedPointer<Private> d; + StateEvents state() { return takeFromJson<StateEvents>("state"_ls); } }; } // namespace Quotient |