From 0ee09d99cea46540dc48cac6f4697cf3ac2ed8a2 Mon Sep 17 00:00:00 2001 From: Sebastian Kippe Date: Sun, 24 Dec 2017 10:53:27 +0100 Subject: [PATCH] Wait for connection state before fetching anything This ensures that no data is fetched prematurely. --- app/routes/index.js | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/app/routes/index.js b/app/routes/index.js index 6ae4ab3..501bf23 100644 --- a/app/routes/index.js +++ b/app/routes/index.js @@ -1,7 +1,8 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { isEmpty, isPresent } from '@ember/utils'; -import { hash } from 'rsvp'; +import { later } from '@ember/runloop'; +import { hash, Promise } from 'rsvp'; export default Route.extend({ @@ -13,8 +14,12 @@ export default Route.extend({ } }, + beforeModel() { + return this.waitForConnectionState(); + }, + model(params) { - if (this.get('storage.disconnected')) { return {}; } + if (this.get('storage.disconnected')) { return null; } let path = params.path; @@ -39,6 +44,21 @@ export default Route.extend({ if (isPresent(model)) { controller.set('currentDirPath', model.currentDirPath); } + }, + + waitForConnectionState() { + let self = this; + + return new Promise(resolve => { + function checkConnectingDone() { + if (self.get('storage.connecting')) { + later(checkConnectingDone, 20); + } else { + resolve(); + } + } + checkConnectingDone(); + }); } });