diff options
author | Julius Härtl <jus@bitgrid.net> | 2019-07-09 11:55:46 +0300 |
---|---|---|
committer | Julius Härtl <jus@bitgrid.net> | 2019-07-10 17:11:40 +0300 |
commit | e9e09b82b908690991cd9c60e4baedd8833c83f5 (patch) | |
tree | 281ef8ea4a2a03624c7f9a1f5638c54b36e25498 /src/services | |
parent | eb155ec1e94f33574d990fb33459b91bce311e18 (diff) |
Reconnect after session has timed out
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'src/services')
-rw-r--r-- | src/services/PollingBackend.js | 11 | ||||
-rw-r--r-- | src/services/SyncService.js | 6 |
2 files changed, 16 insertions, 1 deletions
diff --git a/src/services/PollingBackend.js b/src/services/PollingBackend.js index b650516f0..a41d1353f 100644 --- a/src/services/PollingBackend.js +++ b/src/services/PollingBackend.js @@ -145,6 +145,8 @@ class PollingBackend { this._authority.emit('error', ERROR_TYPE.SAVE_COLLISSION, { outsideChange: e.response.data.outsideChange }) + } else if (e.response.status === 403) { + this._authority.emit('error', ERROR_TYPE.CONNECTION_FAILED, {}) } else { console.error('Failed to fetch steps due to other reason', e) } @@ -179,6 +181,15 @@ class PollingBackend { }).catch((e) => { console.error('failed to apply steps due to collission, retrying') this.lock = false + if (!e.response) { + throw e + } + // Only emit conflict event if we have synced until the latest version + if (e.response.status === 403 && e.response.data.document.currentVersion === this._authority.document.currentVersion) { + this._authority.emit('error', ERROR_TYPE.PUSH_FAILURE, {}) + OC.Notification.showTemporary('Changes could not be sent yet') + } + this.fetchSteps() this.carefulRetry() }) diff --git a/src/services/SyncService.js b/src/services/SyncService.js index 306ffc5f8..2d7a95829 100644 --- a/src/services/SyncService.js +++ b/src/services/SyncService.js @@ -42,7 +42,11 @@ const ERROR_TYPE = { */ PUSH_FAILURE: 1, - LOAD_ERROR: 2 + LOAD_ERROR: 2, + + CONNECTION_FAILED: 3, + + SOURCE_NOT_FOUND: 4 } class SyncService { |