Skip to content

Commit 4152a29

Browse files
Remove unused lastUpdateTime (#1130)
1 parent bc40f0e commit 4152a29

File tree

2 files changed

+4
-55
lines changed

2 files changed

+4
-55
lines changed

packages/firestore/src/local/shared_client_state.ts

Lines changed: 2 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,6 @@ export class MutationMetadata {
264264
* serialization. The TargetId is omitted as it is encoded as part of the key.
265265
*/
266266
interface QueryTargetStateSchema {
267-
lastUpdateTime: number;
268267
state: QueryTargetState;
269268
error?: { code: string; message: string }; // Only set when state === 'rejected'
270269
}
@@ -277,7 +276,6 @@ interface QueryTargetStateSchema {
277276
export class QueryTargetMetadata {
278277
constructor(
279278
readonly targetId: TargetId,
280-
readonly lastUpdateTime: Date,
281279
readonly state: QueryTargetState,
282280
readonly error?: FirestoreError
283281
) {
@@ -299,7 +297,6 @@ export class QueryTargetMetadata {
299297

300298
let validData =
301299
typeof targetState === 'object' &&
302-
isSafeInteger(targetState.lastUpdateTime) &&
303300
['not-current', 'current', 'rejected'].indexOf(targetState.state) !==
304301
-1 &&
305302
(targetState.error === undefined ||
@@ -322,7 +319,6 @@ export class QueryTargetMetadata {
322319
if (validData) {
323320
return new QueryTargetMetadata(
324321
targetId,
325-
new Date(targetState.lastUpdateTime),
326322
targetState.state,
327323
firestoreError
328324
);
@@ -337,7 +333,6 @@ export class QueryTargetMetadata {
337333

338334
toLocalStorageJSON(): string {
339335
const targetState: QueryTargetStateSchema = {
340-
lastUpdateTime: this.lastUpdateTime.getTime(),
341336
state: this.state
342337
};
343338

@@ -358,7 +353,6 @@ export class QueryTargetMetadata {
358353
* key.
359354
*/
360355
interface ClientStateSchema {
361-
lastUpdateTime: number;
362356
activeTargetIds: number[];
363357
}
364358

@@ -368,7 +362,6 @@ interface ClientStateSchema {
368362
*/
369363
// Visible for testing.
370364
export interface ClientState {
371-
readonly lastUpdateTime: Date;
372365
readonly activeTargetIds: TargetIdSet;
373366
}
374367

@@ -379,7 +372,6 @@ export interface ClientState {
379372
class RemoteClientState implements ClientState {
380373
private constructor(
381374
readonly clientId: ClientId,
382-
readonly lastUpdateTime: Date,
383375
readonly activeTargetIds: TargetIdSet
384376
) {}
385377

@@ -395,7 +387,6 @@ class RemoteClientState implements ClientState {
395387

396388
let validData =
397389
typeof clientState === 'object' &&
398-
isSafeInteger(clientState.lastUpdateTime) &&
399390
clientState.activeTargetIds instanceof Array;
400391

401392
let activeTargetIdsSet = targetIdSet();
@@ -408,11 +399,7 @@ class RemoteClientState implements ClientState {
408399
}
409400

410401
if (validData) {
411-
return new RemoteClientState(
412-
clientId,
413-
new Date(clientState.lastUpdateTime),
414-
activeTargetIdsSet
415-
);
402+
return new RemoteClientState(clientId, activeTargetIdsSet);
416403
} else {
417404
error(
418405
LOG_TAG,
@@ -482,11 +469,6 @@ export class SharedOnlineState {
482469
// Visible for testing.
483470
export class LocalClientState implements ClientState {
484471
activeTargetIds = targetIdSet();
485-
lastUpdateTime: Date;
486-
487-
constructor() {
488-
this.lastUpdateTime = new Date();
489-
}
490472

491473
addQueryTarget(targetId: TargetId): void {
492474
assert(
@@ -500,18 +482,12 @@ export class LocalClientState implements ClientState {
500482
this.activeTargetIds = this.activeTargetIds.delete(targetId);
501483
}
502484

503-
/** Sets the update time to the current time. */
504-
refreshLastUpdateTime(): void {
505-
this.lastUpdateTime = new Date();
506-
}
507-
508485
/**
509486
* Converts this entry into a JSON-encoded format we can use for LocalStorage.
510487
* Does not encode `clientId` as it is part of the key in LocalStorage.
511488
*/
512489
toLocalStorageJSON(): string {
513490
const data: ClientStateSchema = {
514-
lastUpdateTime: this.lastUpdateTime.getTime(),
515491
activeTargetIds: this.activeTargetIds.toArray()
516492
};
517493
return JSON.stringify(data);
@@ -849,9 +825,6 @@ export class WebStorageSharedClientState implements SharedClientState {
849825
}
850826

851827
private persistClientState(): void {
852-
// TODO(multitab): Consider rate limiting/combining state updates for
853-
// clients that frequently update their client state.
854-
this.localClientState.refreshLastUpdateTime();
855828
this.setItem(
856829
this.localClientStorageKey,
857830
this.localClientState.toLocalStorageJSON()
@@ -891,14 +864,8 @@ export class WebStorageSharedClientState implements SharedClientState {
891864
state: QueryTargetState,
892865
error?: FirestoreError
893866
): void {
894-
const targetMetadata = new QueryTargetMetadata(
895-
targetId,
896-
/* lastUpdateTime= */ new Date(),
897-
state,
898-
error
899-
);
900-
901867
const targetKey = this.toLocalStorageQueryTargetMetadataKey(targetId);
868+
const targetMetadata = new QueryTargetMetadata(targetId, state, error);
902869
this.setItem(targetKey, targetMetadata.toLocalStorageJSON());
903870
}
904871

packages/firestore/test/unit/local/web_storage_shared_client_state.test.ts

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,6 @@ import * as objUtils from '../../../src/util/obj';
4747
import { targetIdSet } from '../../../src/model/collections';
4848
import { SortedSet } from '../../../src/util/sorted_set';
4949

50-
/**
51-
* The tests assert that the lastUpdateTime of each row in LocalStorage gets
52-
* updated. We allow a 0.1s difference in update time to account for processing
53-
* and locking time in LocalStorage.
54-
*/
55-
const GRACE_INTERVAL_MS = 100;
56-
5750
const AUTHENTICATED_USER = new User('test');
5851
const UNAUTHENTICATED_USER = User.UNAUTHENTICATED;
5952
const TEST_ERROR = new FirestoreError('internal', 'Test Error');
@@ -234,14 +227,7 @@ describe('WebStorageSharedClientState', () => {
234227
)
235228
);
236229

237-
expect(Object.keys(actual)).to.have.members([
238-
'lastUpdateTime',
239-
'activeTargetIds'
240-
]);
241-
expect(actual.lastUpdateTime)
242-
.to.be.a('number')
243-
.greaterThan(Date.now() - GRACE_INTERVAL_MS)
244-
.and.at.most(Date.now());
230+
expect(Object.keys(actual)).to.have.members(['activeTargetIds']);
245231
expect(actual.activeTargetIds)
246232
.to.be.an('array')
247233
.and.have.members(activeTargetIds);
@@ -313,7 +299,7 @@ describe('WebStorageSharedClientState', () => {
313299
const actual = JSON.parse(localStorage.getItem(targetKey(targetId)));
314300
expect(actual.state).to.equal(queryTargetState);
315301

316-
const expectedMembers = ['state', 'lastUpdateTime'];
302+
const expectedMembers = ['state'];
317303
if (queryTargetState === 'rejected') {
318304
expectedMembers.push('error');
319305
expect(actual.error.code).to.equal(err.code);
@@ -771,7 +757,6 @@ describe('WebStorageSharedClientState', () => {
771757
targetKey(firstClientTargetId),
772758
new QueryTargetMetadata(
773759
firstClientTargetId,
774-
new Date(),
775760
'not-current'
776761
).toLocalStorageJSON()
777762
);
@@ -789,7 +774,6 @@ describe('WebStorageSharedClientState', () => {
789774
targetKey(firstClientTargetId),
790775
new QueryTargetMetadata(
791776
firstClientTargetId,
792-
new Date(),
793777
'current'
794778
).toLocalStorageJSON()
795779
);
@@ -807,7 +791,6 @@ describe('WebStorageSharedClientState', () => {
807791
targetKey(1),
808792
new QueryTargetMetadata(
809793
firstClientTargetId,
810-
new Date(),
811794
'rejected',
812795
TEST_ERROR
813796
).toLocalStorageJSON()
@@ -831,7 +814,6 @@ describe('WebStorageSharedClientState', () => {
831814
targetKey(firstClientTargetId),
832815
new QueryTargetMetadata(
833816
firstClientTargetId,
834-
new Date(),
835817
'invalid' as any // tslint:disable-line:no-any
836818
).toLocalStorageJSON()
837819
);

0 commit comments

Comments
 (0)