From cb3d43976fec01fd0fd3c63dc3b2cabd4a99c505 Mon Sep 17 00:00:00 2001 From: Arnis Vuskans Date: Thu, 6 Jun 2019 00:55:36 +0300 Subject: [PATCH] polyfill window add, removeEventListener in fastboot for firebase sdk --- addon/-private/firebase/initializer.js | 3 +++ addon/-private/firebase/prepare.js | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 addon/-private/firebase/prepare.js diff --git a/addon/-private/firebase/initializer.js b/addon/-private/firebase/initializer.js index 453c3833..900fab69 100644 --- a/addon/-private/firebase/initializer.js +++ b/addon/-private/firebase/initializer.js @@ -1,6 +1,7 @@ import firebase from 'firebase'; import { resolve } from 'rsvp'; import { isFastBoot } from '../util/fastboot'; +import prepare from './prepare'; let _id = 0; @@ -32,6 +33,8 @@ export default class FirebaseInitializer { _prepare() { let { identifier, id, opts } = this; + prepare(this.sender); + this.app = firebase.initializeApp(opts.firebase, `${identifier}-${id}`); let firestore = this.app.firestore(); diff --git a/addon/-private/firebase/prepare.js b/addon/-private/firebase/prepare.js new file mode 100644 index 00000000..6d70d814 --- /dev/null +++ b/addon/-private/firebase/prepare.js @@ -0,0 +1,18 @@ +import { isFastBoot } from '../util/fastboot'; + +const noop = () => {}; + +const workaroundWindowEventListenersInFastBoot = () => { + if(!window.addEventListener) { + window.addEventListener = noop; + } + if(!window.removeEventListener) { + window.removeEventListener = noop; + } +} + +export default sender => { + if(isFastBoot(sender)) { + workaroundWindowEventListenersInFastBoot(); + } +}