diff options
author | Kitsune Ral <Kitsune-Ral@users.sf.net> | 2020-07-20 19:33:19 +0200 |
---|---|---|
committer | Kitsune Ral <Kitsune-Ral@users.sf.net> | 2020-07-20 19:33:19 +0200 |
commit | 1529f46e6dd457d059fb7e6e9cd10fa0b0399553 (patch) | |
tree | dc871ac1d088d0aade4b508807e34841a7c3f889 /lib/uriresolver.h | |
parent | af329351289606f3cb1ef865cb0cbe61c1d1711b (diff) | |
download | libquotient-1529f46e6dd457d059fb7e6e9cd10fa0b0399553.tar.gz libquotient-1529f46e6dd457d059fb7e6e9cd10fa0b0399553.zip |
UriResolverBase::visitUser(): add return value
To enable reporting when the action is incorrect.
Diffstat (limited to 'lib/uriresolver.h')
-rw-r--r-- | lib/uriresolver.h | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/lib/uriresolver.h b/lib/uriresolver.h index 914ddf02..9b2ced9d 100644 --- a/lib/uriresolver.h +++ b/lib/uriresolver.h @@ -40,7 +40,14 @@ public: protected: /// Called by visitResource() when the passed URI identifies a Matrix user - virtual void visitUser(User* user, const QString& action) {} + /*! + * \return IncorrectAction if the action is not correct or not supported; + * UriResolved if it is accepted; other values are disallowed + */ + virtual UriResolveResult visitUser(User* user, const QString& action) + { + return IncorrectAction; + } /// Called by visitResource() when the passed URI identifies a room or /// an event in a room virtual void visitRoom(Room* room, const QString& eventId) {} @@ -88,17 +95,16 @@ protected: */ UriResolveResult visitResource(Connection* account, const Uri& uri, - std::function<void(User*, QString)> userHandler, + std::function<UriResolveResult(User*, QString)> userHandler, std::function<void(Room*, QString)> roomEventHandler, std::function<void(Connection*, QString, QStringList)> joinHandler, std::function<bool(const QUrl&)> nonMatrixHandler); /*! \brief Check that the resource is resolvable with no action on it */ -inline UriResolveResult checkResource(Connection* account, - const Uri& uri) +inline UriResolveResult checkResource(Connection* account, const Uri& uri) { return visitResource( - account, uri, [](auto, auto) {}, [](auto, auto) {}, + account, uri, [](auto, auto) { return UriResolved; }, [](auto, auto) {}, [](auto, auto, auto) {}, [](auto) { return false; }); } @@ -150,7 +156,7 @@ signals: void nonMatrixAction(QUrl url); private: - void visitUser(User* user, const QString& action) override; + UriResolveResult visitUser(User* user, const QString& action) override; void visitRoom(Room* room, const QString& eventId) override; void joinRoom(Connection* account, const QString& roomAliasOrId, const QStringList& viaServers = {}) override; |