diff options
-rw-r--r-- | backends/cloud/storage.cpp | 25 | ||||
-rw-r--r-- | backends/cloud/storage.h | 8 |
2 files changed, 32 insertions, 1 deletions
diff --git a/backends/cloud/storage.cpp b/backends/cloud/storage.cpp index c20ad865ad..d4548b84cb 100644 --- a/backends/cloud/storage.cpp +++ b/backends/cloud/storage.cpp @@ -128,7 +128,8 @@ SavesSyncRequest *Storage::syncSaves(BoolCallback callback, Networking::ErrorCal _runningRequestsMutex.unlock(); return _savesSyncRequest; } - if (!errorCallback) errorCallback = getErrorPrintingCallback(); + if (!callback) callback = new Common::Callback<Storage, BoolResponse>(this, &Storage::savesSyncDefaultCallback); + if (!errorCallback) errorCallback = new Common::Callback<Storage, Networking::ErrorResponse>(this, &Storage::savesSyncDefaultErrorCallback); _savesSyncRequest = new SavesSyncRequest(this, callback, errorCallback); _syncRestartRequestsed = false; _runningRequestsMutex.unlock(); @@ -192,6 +193,28 @@ void Storage::setSyncTarget(GUI::CommandReceiver *target) { _runningRequestsMutex.unlock(); } +void Storage::savesSyncDefaultCallback(BoolResponse response) { + _runningRequestsMutex.lock(); + _savesSyncRequest = nullptr; + _runningRequestsMutex.unlock(); + + if (!response.value) warning("SavesSyncRequest called success callback with `false` argument"); + g_system->displayMessageOnOSD(_("Saves sync complete.")); +} + +void Storage::savesSyncDefaultErrorCallback(Networking::ErrorResponse error) { + _runningRequestsMutex.lock(); + _savesSyncRequest = nullptr; + _runningRequestsMutex.unlock(); + + printErrorResponse(error); + + if (error.interrupted) + g_system->displayMessageOnOSD(_("Saves sync was cancelled.")); + else + g_system->displayMessageOnOSD(_("Saves sync failed.\nCheck your Internet connection.")); +} + ///// DownloadFolderRequest-related ///// bool Storage::startDownload(Common::String remotePath, Common::String localPath) { diff --git a/backends/cloud/storage.h b/backends/cloud/storage.h index a577b3c468..b33d69e411 100644 --- a/backends/cloud/storage.h +++ b/backends/cloud/storage.h @@ -181,6 +181,14 @@ public: /** Sets SavesSyncRequest's target to given CommandReceiver. */ virtual void setSyncTarget(GUI::CommandReceiver *target); +protected: + /** Finishes the sync. Shows an OSD message. */ + virtual void savesSyncDefaultCallback(BoolResponse response); + + /** Finishes the sync. Shows an OSD message. */ + virtual void savesSyncDefaultErrorCallback(Networking::ErrorResponse error); + +public: ///// DownloadFolderRequest-related ///// /** Starts a folder download. */ |