Skip to content

Commit

Permalink
fix(ssr): check for window and document
Browse files Browse the repository at this point in the history
  • Loading branch information
adamdbradley committed Feb 23, 2019
1 parent 03c01c6 commit e3e8c85
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 20 deletions.
39 changes: 21 additions & 18 deletions src/@ionic-native/core/bootstrap.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,26 @@
export function checkReady() {
const DEVICE_READY_TIMEOUT = 5000;
if (typeof process === 'undefined') {
const win: any = typeof window !== 'undefined' ? window : {};
const DEVICE_READY_TIMEOUT = 5000;

// To help developers using cordova, we listen for the device ready event and
// log an error if it didn't fire in a reasonable amount of time. Generally,
// when this happens, developers should remove and reinstall plugins, since
// an inconsistent plugin is often the culprit.
const before = Date.now();
// To help developers using cordova, we listen for the device ready event and
// log an error if it didn't fire in a reasonable amount of time. Generally,
// when this happens, developers should remove and reinstall plugins, since
// an inconsistent plugin is often the culprit.
const before = Date.now();

let didFireReady = false;
document.addEventListener('deviceready', () => {
console.log(`Ionic Native: deviceready event fired after ${Date.now() - before} ms`);
didFireReady = true;
});
let didFireReady = false;
win.document.addEventListener('deviceready', () => {
console.log(`Ionic Native: deviceready event fired after ${Date.now() - before} ms`);
didFireReady = true;
});

setTimeout(() => {
if (!didFireReady && window.cordova) {
console.warn(
`Ionic Native: deviceready did not fire within ${DEVICE_READY_TIMEOUT}ms. This can happen when plugins are in an inconsistent state. Try removing plugins from plugins/ and reinstalling them.`
);
}
}, DEVICE_READY_TIMEOUT);
setTimeout(() => {
if (!didFireReady && win.cordova) {
console.warn(
`Ionic Native: deviceready did not fire within ${DEVICE_READY_TIMEOUT}ms. This can happen when plugins are in an inconsistent state. Try removing plugins from plugins/ and reinstalling them.`
);
}
}, DEVICE_READY_TIMEOUT);
}
}
5 changes: 3 additions & 2 deletions src/@ionic-native/core/decorators/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,10 @@ export function getPromise<T>(callback: (resolve: Function, reject?: Function) =
}
};

if (window.angular) {
if (typeof window !== 'undefined' && window.angular) {
const doc = window.document;
const injector = window.angular
.element(document.querySelector('[ng-app]') || document.body)
.element(doc.querySelector('[ng-app]') || doc.body)
.injector();
if (injector) {
const $q = injector.get('$q');
Expand Down

0 comments on commit e3e8c85

Please sign in to comment.