Revert "firestore: minor refactor of listener registration of "versio… · firebase/firebase-js-sdk@9771bff (original) (raw)

`@@ -19,10 +19,9 @@ import { getGlobal, getUA, isIndexedDBAvailable } from '@firebase/util';

`

19

19

``

20

20

`import { debugAssert } from '../util/assert';

`

21

21

`import { Code, FirestoreError } from '../util/error';

`

22

``

`-

import { logDebug, logError, logWarn } from '../util/log';

`

``

22

`+

import { logDebug, logError } from '../util/log';

`

23

23

`import { Deferred } from '../util/promise';

`

24

24

``

25

``

`-

import { DatabaseDeletedListener } from './persistence';

`

26

25

`import { PersistencePromise } from './persistence_promise';

`

27

26

``

28

27

`` // References to indexedDB are guarded by SimpleDb.isAvailable() and getGlobal()

``

`@@ -159,7 +158,8 @@ export class SimpleDbTransaction {

`

159

158

` */

`

160

159

`export class SimpleDb {

`

161

160

`private db?: IDBDatabase;

`

162

``

`-

private databaseDeletedListener?: DatabaseDeletedListener;

`

``

161

`+

private lastClosedDbVersion: number | null = null;

`

``

162

`+

private versionchangelistener?: (event: IDBVersionChangeEvent) => void;

`

163

163

``

164

164

`/** Deletes the specified database. */

`

165

165

`static delete(name: string): Promise {

`

`@@ -365,35 +365,22 @@ export class SimpleDb {

`

365

365

`});

`

366

366

`}

`

367

367

``

368

``

`-

this.db.addEventListener(

`

369

``

`-

'versionchange',

`

370

``

`-

event => {

`

371

``

`-

// Notify the listener if another tab attempted to delete the IndexedDb

`

372

``

`-

// database, such as by calling clearIndexedDbPersistence().

`

373

``

`-

if (event.newVersion === null) {

`

374

``

`-

logWarn(

`

375

``

`` -

Received "versionchange" event with newVersion===null; +

``

376

``

`-

'notifying the registered DatabaseDeletedListener, if any'

`

377

``

`-

);

`

378

``

`-

this.databaseDeletedListener?.();

`

379

``

`-

}

`

380

``

`-

},

`

381

``

`-

{ passive: true }

`

382

``

`-

);

`

``

368

`+

if (this.versionchangelistener) {

`

``

369

`+

this.db.onversionchange = event => this.versionchangelistener!(event);

`

``

370

`+

}

`

383

371

``

384

372

`return this.db;

`

385

373

`}

`

386

374

``

387

``

`-

setDatabaseDeletedListener(

`

388

``

`-

databaseDeletedListener: DatabaseDeletedListener

`

``

375

`+

setVersionChangeListener(

`

``

376

`+

versionChangeListener: (event: IDBVersionChangeEvent) => void

`

389

377

`): void {

`

390

``

`-

if (this.databaseDeletedListener) {

`

391

``

`-

throw new Error(

`

392

``

`-

'setDatabaseDeletedListener() may only be called once, ' +

`

393

``

`-

'and it has already been called'

`

394

``

`-

);

`

``

378

`+

this.versionchangelistener = versionChangeListener;

`

``

379

`+

if (this.db) {

`

``

380

`+

this.db.onversionchange = (event: IDBVersionChangeEvent) => {

`

``

381

`+

return versionChangeListener(event);

`

``

382

`+

};

`

395

383

`}

`

396

``

`-

this.databaseDeletedListener = databaseDeletedListener;

`

397

384

`}

`

398

385

``

399

386

`async runTransaction(

`