Skip to content

Commit 88a8055

Browse files
authored
Fix 'window is not defined' error when calling clearIndexedDbPersistence
1 parent 933ba9d commit 88a8055

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

Diff for: .changeset/gentle-rocks-repeat.md

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@firebase/firestore': patch
3+
'firebase': patch
4+
---
5+
6+
Fix 'window is not defined' error when calling `clearIndexedDbPersistence` from a service worker

Diff for: packages/firestore/externs.json

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
"packages/util/dist/src/emulator.d.ts",
3232
"packages/util/dist/src/environment.d.ts",
3333
"packages/util/dist/src/compat.d.ts",
34+
"packages/util/dist/src/global.d.ts",
3435
"packages/util/dist/src/obj.d.ts",
3536
"packages/firestore/src/protos/firestore_bundle_proto.ts",
3637
"packages/firestore/src/protos/firestore_proto_api.ts",

Diff for: packages/firestore/src/local/simple_db.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* limitations under the License.
1616
*/
1717

18-
import { getUA, isIndexedDBAvailable } from '@firebase/util';
18+
import { getGlobal, getUA, isIndexedDBAvailable } from '@firebase/util';
1919

2020
import { debugAssert } from '../util/assert';
2121
import { Code, FirestoreError } from '../util/error';
@@ -24,7 +24,7 @@ import { Deferred } from '../util/promise';
2424

2525
import { PersistencePromise } from './persistence_promise';
2626

27-
// References to `window` are guarded by SimpleDb.isAvailable()
27+
// References to `indexedDB` are guarded by SimpleDb.isAvailable() and getGlobal()
2828
/* eslint-disable no-restricted-globals */
2929

3030
const LOG_TAG = 'SimpleDb';
@@ -164,7 +164,10 @@ export class SimpleDb {
164164
/** Deletes the specified database. */
165165
static delete(name: string): Promise<void> {
166166
logDebug(LOG_TAG, 'Removing database:', name);
167-
return wrapRequest<void>(window.indexedDB.deleteDatabase(name)).toPromise();
167+
const globals = getGlobal();
168+
return wrapRequest<void>(
169+
globals.indexedDB.deleteDatabase(name)
170+
).toPromise();
168171
}
169172

170173
/** Returns true if IndexedDB is available in the current environment. */

0 commit comments

Comments
 (0)