From 7640102fd10621beb681df11c353ae2e2f9183bc Mon Sep 17 00:00:00 2001 From: Morgan Chen Date: Fri, 10 Mar 2023 13:53:00 -0800 Subject: [PATCH 1/4] Add new web persistence --- firestore-next/test.firestore.js | 41 ++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/firestore-next/test.firestore.js b/firestore-next/test.firestore.js index 214077fd..aaf8f69e 100644 --- a/firestore-next/test.firestore.js +++ b/firestore-next/test.firestore.js @@ -74,22 +74,33 @@ describe("firestore", () => { const db = getFirestore(app); - // [START initialize_persistence] - const { enableIndexedDbPersistence } = require("firebase/firestore"); + const { + initializeFirestore, + memoryLocalCache, + persistentLocalCache, + persistentSingleTabManager, + persistentMultipleTabManager + } = require("firebase/firestore"); - enableIndexedDbPersistence(db) - .catch((err) => { - if (err.code == 'failed-precondition') { - // Multiple tabs open, persistence can only be enabled - // in one tab at a a time. - // ... - } else if (err.code == 'unimplemented') { - // The current browser does not support all of the - // features required to enable persistence - // ... - } - }); - // Subsequent queries will use persistence, if it was enabled successfully + // [START initialize_persistence] + // This is the default behavior if no persistence is specified. + initializeFirestore(app, {localCache: memoryLocalCache()}); + + // Use IndexedDb persistence. + initializeFirestore(app, {localCache: persistentLocalCache(/*settings*/{})}); + + // Use IndexedDb persistence. Defaults to single-tab persistence if no tab + // manager is specified. + initializeFirestore(app, + {localCache: + persistentLocalCache(/*settings*/{tabManager: persistentSingleTabManager()}) + }); // Same as enableIndexedDbPersistence + + // Use multi-tab IndexedDb persistence. + initializeFirestore(app, + {localCache: + persistentLocalCache(/*settings*/{tabManager: persistentMultipleTabManager()}) + }); // Same as enableMultiTabIndexedDbPersistence // [END initialize_persistence] }); From da1e1883e06659fff03813a88687a707675ab41d Mon Sep 17 00:00:00 2001 From: Morgan Chen Date: Tue, 21 Mar 2023 16:42:13 -0400 Subject: [PATCH 2/4] code review changes --- firestore-next/test.firestore.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/firestore-next/test.firestore.js b/firestore-next/test.firestore.js index aaf8f69e..2975cfdd 100644 --- a/firestore-next/test.firestore.js +++ b/firestore-next/test.firestore.js @@ -83,24 +83,27 @@ describe("firestore", () => { } = require("firebase/firestore"); // [START initialize_persistence] + // Memory cache is the default if no config is specified. + initializeFirestore(app); + // This is the default behavior if no persistence is specified. initializeFirestore(app, {localCache: memoryLocalCache()}); - // Use IndexedDb persistence. + // Defaults to single-tab persistence if no tab manager is specified. initializeFirestore(app, {localCache: persistentLocalCache(/*settings*/{})}); - // Use IndexedDb persistence. Defaults to single-tab persistence if no tab - // manager is specified. + // Same as `initializeFirestore(app, {localCache: persistentLocalCache(/*settings*/{})})`, + // but more explicit about tab management. initializeFirestore(app, {localCache: persistentLocalCache(/*settings*/{tabManager: persistentSingleTabManager()}) - }); // Same as enableIndexedDbPersistence + }); // Use multi-tab IndexedDb persistence. initializeFirestore(app, {localCache: persistentLocalCache(/*settings*/{tabManager: persistentMultipleTabManager()}) - }); // Same as enableMultiTabIndexedDbPersistence + }); // [END initialize_persistence] }); From cfb6cc3782601fffabdc4d4cada0d5a0a79ecc5f Mon Sep 17 00:00:00 2001 From: Morgan Chen Date: Tue, 28 Oct 2025 14:03:25 -0700 Subject: [PATCH 3/4] fix snippet --- firestore-next/test.firestore.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/firestore-next/test.firestore.js b/firestore-next/test.firestore.js index 2975cfdd..0300fb6f 100644 --- a/firestore-next/test.firestore.js +++ b/firestore-next/test.firestore.js @@ -84,7 +84,7 @@ describe("firestore", () => { // [START initialize_persistence] // Memory cache is the default if no config is specified. - initializeFirestore(app); + initializeFirestore(app, {}); // This is the default behavior if no persistence is specified. initializeFirestore(app, {localCache: memoryLocalCache()}); @@ -96,7 +96,7 @@ describe("firestore", () => { // but more explicit about tab management. initializeFirestore(app, {localCache: - persistentLocalCache(/*settings*/{tabManager: persistentSingleTabManager()}) + persistentLocalCache(/*settings*/{tabManager: persistentSingleTabManager({})}) }); // Use multi-tab IndexedDb persistence. From 48813654909f2b6a8c41e58ed5c3b21283bf678b Mon Sep 17 00:00:00 2001 From: Morgan Chen Date: Tue, 28 Oct 2025 14:03:50 -0700 Subject: [PATCH 4/4] run snippets --- .../test-firestore/initialize_persistence.js | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/snippets/firestore-next/test-firestore/initialize_persistence.js b/snippets/firestore-next/test-firestore/initialize_persistence.js index acd5e988..c08d8825 100644 --- a/snippets/firestore-next/test-firestore/initialize_persistence.js +++ b/snippets/firestore-next/test-firestore/initialize_persistence.js @@ -5,19 +5,25 @@ // 'npm run snippets'. // [START initialize_persistence_modular] -import { enableIndexedDbPersistence } from "firebase/firestore"; +// Memory cache is the default if no config is specified. +initializeFirestore(app, {}); -enableIndexedDbPersistence(db) - .catch((err) => { - if (err.code == 'failed-precondition') { - // Multiple tabs open, persistence can only be enabled - // in one tab at a a time. - // ... - } else if (err.code == 'unimplemented') { - // The current browser does not support all of the - // features required to enable persistence - // ... - } +// This is the default behavior if no persistence is specified. +initializeFirestore(app, {localCache: memoryLocalCache()}); + +// Defaults to single-tab persistence if no tab manager is specified. +initializeFirestore(app, {localCache: persistentLocalCache(/*settings*/{})}); + +// Same as `initializeFirestore(app, {localCache: persistentLocalCache(/*settings*/{})})`, +// but more explicit about tab management. +initializeFirestore(app, + {localCache: + persistentLocalCache(/*settings*/{tabManager: persistentSingleTabManager({})}) +}); + +// Use multi-tab IndexedDb persistence. +initializeFirestore(app, + {localCache: + persistentLocalCache(/*settings*/{tabManager: persistentMultipleTabManager()}) }); -// Subsequent queries will use persistence, if it was enabled successfully // [END initialize_persistence_modular] \ No newline at end of file