diff --git a/YACReaderLibrary/server/requestmapper.cpp b/YACReaderLibrary/server/requestmapper.cpp index c0694c97..a3efb446 100644 --- a/YACReaderLibrary/server/requestmapper.cpp +++ b/YACReaderLibrary/server/requestmapper.cpp @@ -290,7 +290,12 @@ void RequestMapper::serviceV2(HttpRequest &request, HttpResponse &response) } else if (comicPage.exactMatch(path) || comicPageRemote.exactMatch(path)) { PageControllerV2().service(request, response); } else if (comicUpdate.exactMatch(path)) { - UpdateComicControllerV2().service(request, response); + auto updateController = UpdateComicControllerV2(); + updateController.service(request, response); + + if (!updateController.error) { + emit comicUpdated(updateController.updatedLibraryId, updateController.updatedComicId); + } } else if (folderContent.exactMatch(path)) { FolderContentControllerV2().service(request, response); } else if (tags.exactMatch(path)) { diff --git a/YACReaderLibrary/server/requestmapper.h b/YACReaderLibrary/server/requestmapper.h index ba786f07..505871ab 100644 --- a/YACReaderLibrary/server/requestmapper.h +++ b/YACReaderLibrary/server/requestmapper.h @@ -20,6 +20,9 @@ public: void loadSessionV1(stefanfrings::HttpRequest &request, stefanfrings::HttpResponse &response); void loadSessionV2(stefanfrings::HttpRequest &request, stefanfrings::HttpResponse &response); +signals: + void comicUpdated(qulonglong libraryId, qulonglong comicId); + private: void serviceV1(stefanfrings::HttpRequest &request, stefanfrings::HttpResponse &response); void serviceV2(stefanfrings::HttpRequest &request, stefanfrings::HttpResponse &response); diff --git a/YACReaderLibrary/server/yacreader_http_server.cpp b/YACReaderLibrary/server/yacreader_http_server.cpp index 483c1ace..37d0d374 100644 --- a/YACReaderLibrary/server/yacreader_http_server.cpp +++ b/YACReaderLibrary/server/yacreader_http_server.cpp @@ -137,7 +137,10 @@ void YACReaderHttpServer::start(quint16 port) testServer.close(); } - listener = new HttpListener(listenerSettings, new RequestMapper(app), app); + auto requestMapper = new RequestMapper(app); + listener = new HttpListener(listenerSettings, requestMapper, app); + + connect(requestMapper, &RequestMapper::comicUpdated, this, &YACReaderHttpServer::comicUpdated); if (listener->isListening()) { qDebug("ServiceHelper: Service has started"); @@ -158,7 +161,7 @@ void YACReaderHttpServer::stop() } YACReaderHttpServer::YACReaderHttpServer() - : listener(nullptr) + : QObject(nullptr), listener(nullptr) { } diff --git a/YACReaderLibrary/server/yacreader_http_server.h b/YACReaderLibrary/server/yacreader_http_server.h index d399f843..4c0e2761 100644 --- a/YACReaderLibrary/server/yacreader_http_server.h +++ b/YACReaderLibrary/server/yacreader_http_server.h @@ -1,17 +1,16 @@ #ifndef YACREADER_HTTP_SERVER_H #define YACREADER_HTTP_SERVER_H +#include #include namespace stefanfrings { class HttpListener; } -class YACReaderHttpServer +class YACReaderHttpServer : public QObject { -private: - stefanfrings::HttpListener *listener; - + Q_OBJECT public: YACReaderHttpServer(); @@ -20,7 +19,11 @@ public: QString getPort(); -protected: +signals: + void comicUpdated(qulonglong libraryId, qulonglong comicId); + +private: + stefanfrings::HttpListener *listener; }; #endif // YACREADER_HTTP_SERVER_H