From 1529f46e6dd457d059fb7e6e9cd10fa0b0399553 Mon Sep 17 00:00:00 2001 From: Kitsune Ral Date: Mon, 20 Jul 2020 19:33:19 +0200 Subject: UriResolverBase::visitUser(): add return value To enable reporting when the action is incorrect. --- lib/uriresolver.h | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'lib/uriresolver.h') 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 userHandler, + std::function userHandler, std::function roomEventHandler, std::function joinHandler, std::function 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; -- cgit v1.2.3