diff --git a/src/activities/reader/KOReaderSyncActivity.cpp b/src/activities/reader/KOReaderSyncActivity.cpp index cff9e41a..46944278 100644 --- a/src/activities/reader/KOReaderSyncActivity.cpp +++ b/src/activities/reader/KOReaderSyncActivity.cpp @@ -201,6 +201,7 @@ void KOReaderSyncActivity::performUpload() { { RenderLock lock(*this); state = UPLOAD_COMPLETE; + uploadCompleteTime = millis(); } requestUpdate(true); } @@ -350,6 +351,13 @@ void KOReaderSyncActivity::render(RenderLock&&) { void KOReaderSyncActivity::loop() { if (state == NO_CREDENTIALS || state == SYNC_FAILED || state == UPLOAD_COMPLETE) { + if (state == UPLOAD_COMPLETE && millis() - uploadCompleteTime >= 3000) { + ActivityResult result; + result.isCancelled = true; + setResult(std::move(result)); + finish(); + return; + } if (mappedInput.wasReleased(MappedInputManager::Button::Back)) { ActivityResult result; result.isCancelled = true; diff --git a/src/activities/reader/KOReaderSyncActivity.h b/src/activities/reader/KOReaderSyncActivity.h index 1cdd8477..d0276444 100644 --- a/src/activities/reader/KOReaderSyncActivity.h +++ b/src/activities/reader/KOReaderSyncActivity.h @@ -78,6 +78,9 @@ class KOReaderSyncActivity final : public Activity { // Selection in result screen (0=Apply, 1=Upload) int selectedOption = 0; + // Timestamp when UPLOAD_COMPLETE state was entered (for auto-close) + unsigned long uploadCompleteTime = 0; + void onWifiSelectionComplete(bool success); void performSync(); void performUpload();