dexie-cloud-addon 4.0.1-beta.43 → 4.0.1-beta.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2664,14 +2664,17 @@ const DISABLE_SERVICEWORKER_STRATEGY = (isSafari && safariVersion <= 605) || //
2664
2664
  */
2665
2665
  function dbOnClosed(db, handler) {
2666
2666
  db.on.close.subscribe(handler);
2667
- const origClose = db.close;
2668
- db.close = function () {
2667
+ // @ts-ignore
2668
+ const origClose = db._close;
2669
+ // @ts-ignore
2670
+ db._close = function () {
2669
2671
  origClose.call(this);
2670
2672
  handler();
2671
2673
  };
2672
2674
  return () => {
2673
2675
  db.on.close.unsubscribe(handler);
2674
- db.close = origClose;
2676
+ // @ts-ignore
2677
+ db._close = origClose;
2675
2678
  };
2676
2679
  }
2677
2680
 
@@ -3580,13 +3583,17 @@ function connectWebSocket(db) {
3580
3583
  return db.cloud.persistedSyncState.pipe(filter((syncState) => (syncState === null || syncState === void 0 ? void 0 : syncState.realms.includes(userLogin.userId)) || false), take(1), map((syncState) => [userLogin, syncState]));
3581
3584
  }
3582
3585
  return new BehaviorSubject([userLogin, syncState]);
3583
- }), switchMap(([userLogin, syncState]) => __awaiter(this, void 0, void 0, function* () { return [userLogin, yield computeRealmSetHash(syncState)]; })), switchMap(([userLogin, realmSetHash]) =>
3584
- // Let server end query changes from last entry of same client-ID and forward.
3585
- // If no new entries, server won't bother the client. If new entries, server sends only those
3586
- // and the baseRev of the last from same client-ID.
3587
- userLogin
3588
- ? new WSObservable(db.cloud.options.databaseUrl, db.cloud.persistedSyncState.value.serverRevision, realmSetHash, db.cloud.persistedSyncState.value.clientIdentity, messageProducer, db.cloud.webSocketStatus, userLogin.accessToken, userLogin.accessTokenExpiration)
3589
- : from([])), catchError((error) => {
3586
+ }), switchMap(([userLogin, syncState]) => __awaiter(this, void 0, void 0, function* () { return [userLogin, yield computeRealmSetHash(syncState)]; })), distinctUntilChanged(([prevUser, prevHash], [currUser, currHash]) => prevUser === currUser && prevHash === currHash), switchMap(([userLogin, realmSetHash]) => {
3587
+ // Let server end query changes from last entry of same client-ID and forward.
3588
+ // If no new entries, server won't bother the client. If new entries, server sends only those
3589
+ // and the baseRev of the last from same client-ID.
3590
+ if (userLogin) {
3591
+ return new WSObservable(db.cloud.options.databaseUrl, db.cloud.persistedSyncState.value.serverRevision, realmSetHash, db.cloud.persistedSyncState.value.clientIdentity, messageProducer, db.cloud.webSocketStatus, userLogin.accessToken, userLogin.accessTokenExpiration);
3592
+ }
3593
+ else {
3594
+ return from([]);
3595
+ }
3596
+ }), catchError((error) => {
3590
3597
  if ((error === null || error === void 0 ? void 0 : error.name) === 'TokenExpiredError') {
3591
3598
  console.debug('WebSocket observable: Token expired. Refreshing token...');
3592
3599
  return of(true).pipe(switchMap(() => __awaiter(this, void 0, void 0, function* () {
@@ -3608,15 +3615,19 @@ function connectWebSocket(db) {
3608
3615
  return from(waitAndReconnectWhenUserDoesSomething(error)).pipe(switchMap(() => createObservable()));
3609
3616
  }));
3610
3617
  }
3611
- return createObservable().subscribe((msg) => {
3612
- if (msg) {
3613
- console.debug('WS got message', msg);
3614
- db.messageConsumer.enqueue(msg);
3615
- }
3616
- }, (error) => {
3617
- console.error('Oops! The main observable errored!', error);
3618
- }, () => {
3619
- console.error('Oops! The main observable completed!');
3618
+ return createObservable().subscribe({
3619
+ next: (msg) => {
3620
+ if (msg) {
3621
+ console.debug('WS got message', msg);
3622
+ db.messageConsumer.enqueue(msg);
3623
+ }
3624
+ },
3625
+ error: (error) => {
3626
+ console.error('WS got error', error);
3627
+ },
3628
+ complete: () => {
3629
+ console.debug('WS observable completed');
3630
+ },
3620
3631
  });
3621
3632
  }
3622
3633
 
@@ -4392,7 +4403,7 @@ const getInvitesObservable = associate((db) => {
4392
4403
  const emailMembersById = membersByEmail.reduce(reducer, {});
4393
4404
  const membersById = accessControl.selfMembers.reduce(reducer, emailMembersById);
4394
4405
  return Object.values(membersById)
4395
- .filter((invite) => !invite.accepted && !invite.rejected)
4406
+ .filter((invite) => !invite.accepted)
4396
4407
  .map((invite) => (Object.assign(Object.assign({}, invite), { accept() {
4397
4408
  return __awaiter(this, void 0, void 0, function* () {
4398
4409
  yield db.members.update(invite.id, { accepted: new Date() });
@@ -4444,7 +4455,7 @@ function dexieCloud(dexie) {
4444
4455
  });
4445
4456
  const syncComplete = new Subject();
4446
4457
  dexie.cloud = {
4447
- version: '4.0.1-beta.43',
4458
+ version: '4.0.1-beta.44',
4448
4459
  options: Object.assign({}, DEFAULT_OPTIONS),
4449
4460
  schema: null,
4450
4461
  get currentUserId() {
@@ -4705,7 +4716,7 @@ function dexieCloud(dexie) {
4705
4716
  });
4706
4717
  }
4707
4718
  }
4708
- dexieCloud.version = '4.0.1-beta.43';
4719
+ dexieCloud.version = '4.0.1-beta.44';
4709
4720
  Dexie.Cloud = dexieCloud;
4710
4721
 
4711
4722
  // In case the SW lives for a while, let it reuse already opened connections: