Skip to content

Commit 96eaea0

Browse files
Break the PR into smaller PRs
1 parent c567f2e commit 96eaea0

File tree

3 files changed

+24
-32
lines changed

3 files changed

+24
-32
lines changed

src/storages/AbstractMySegmentsCacheSync.ts

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,12 @@ export abstract class AbstractMySegmentsCacheSync implements ISegmentsCacheSync
4949
* For client-side synchronizer: it resets or updates the cache.
5050
*/
5151
resetSegments(segmentsData: MySegmentsData | IMySegmentsResponse): boolean {
52+
this.setChangeNumber(segmentsData.cn);
53+
5254
const { added, removed } = segmentsData as MySegmentsData;
53-
let isDiff = false;
5455

5556
if (added && removed) {
57+
let isDiff = false;
5658

5759
added.forEach(segment => {
5860
isDiff = this.addSegment(segment) || isDiff;
@@ -61,40 +63,32 @@ export abstract class AbstractMySegmentsCacheSync implements ISegmentsCacheSync
6163
removed.forEach(segment => {
6264
isDiff = this.removeSegment(segment) || isDiff;
6365
});
64-
} else {
6566

66-
const names = ((segmentsData as IMySegmentsResponse).k || []).map(s => s.n).sort();
67-
const storedSegmentKeys = this.getRegisteredSegments().sort();
67+
return isDiff;
68+
}
6869

69-
// Extreme fast => everything is empty
70-
if (!names.length && !storedSegmentKeys.length) {
71-
isDiff = false;
72-
} else {
70+
const names = ((segmentsData as IMySegmentsResponse).k || []).map(s => s.n).sort();
71+
const storedSegmentKeys = this.getRegisteredSegments().sort();
7372

74-
let index = 0;
73+
// Extreme fast => everything is empty
74+
if (!names.length && !storedSegmentKeys.length) return false;
7575

76-
while (index < names.length && index < storedSegmentKeys.length && names[index] === storedSegmentKeys[index]) index++;
76+
let index = 0;
7777

78-
// Quick path => no changes
79-
if (index === names.length && index === storedSegmentKeys.length) {
80-
isDiff = false;
81-
} else {
78+
while (index < names.length && index < storedSegmentKeys.length && names[index] === storedSegmentKeys[index]) index++;
8279

83-
// Slowest path => add and/or remove segments
84-
for (let removeIndex = index; removeIndex < storedSegmentKeys.length; removeIndex++) {
85-
this.removeSegment(storedSegmentKeys[removeIndex]);
86-
}
80+
// Quick path => no changes
81+
if (index === names.length && index === storedSegmentKeys.length) return false;
8782

88-
for (let addIndex = index; addIndex < names.length; addIndex++) {
89-
this.addSegment(names[addIndex]);
90-
}
83+
// Slowest path => add and/or remove segments
84+
for (let removeIndex = index; removeIndex < storedSegmentKeys.length; removeIndex++) {
85+
this.removeSegment(storedSegmentKeys[removeIndex]);
86+
}
9187

92-
isDiff = true;
93-
}
94-
}
88+
for (let addIndex = index; addIndex < names.length; addIndex++) {
89+
this.addSegment(names[addIndex]);
9590
}
9691

97-
this.setChangeNumber(segmentsData.cn);
98-
return isDiff;
92+
return true;
9993
}
10094
}

src/storages/AbstractSplitsCacheSync.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,9 @@ export abstract class AbstractSplitsCacheSync implements ISplitsCacheSync {
1414
protected abstract setChangeNumber(changeNumber: number): boolean | void
1515

1616
update(toAdd: ISplit[], toRemove: ISplit[], changeNumber: number): boolean {
17-
let updated = toAdd.map(addedFF => this.addSplit(addedFF)).some(result => result);
18-
updated = toRemove.map(removedFF => this.removeSplit(removedFF.name)).some(result => result) || updated;
1917
this.setChangeNumber(changeNumber);
20-
return updated;
18+
const updated = toAdd.map(addedFF => this.addSplit(addedFF)).some(result => result);
19+
return toRemove.map(removedFF => this.removeSplit(removedFF.name)).some(result => result) || updated;
2120
}
2221

2322
abstract getSplit(name: string): ISplit | null

src/storages/inLocalStorage/RBSegmentsCacheInLocal.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,9 @@ export class RBSegmentsCacheInLocal implements IRBSegmentsCacheSync {
2626
}
2727

2828
update(toAdd: IRBSegment[], toRemove: IRBSegment[], changeNumber: number): boolean {
29-
let updated = toAdd.map(toAdd => this.add(toAdd)).some(result => result);
30-
updated = toRemove.map(toRemove => this.remove(toRemove.name)).some(result => result) || updated;
3129
this.setChangeNumber(changeNumber);
32-
return updated;
30+
const updated = toAdd.map(toAdd => this.add(toAdd)).some(result => result);
31+
return toRemove.map(toRemove => this.remove(toRemove.name)).some(result => result) || updated;
3332
}
3433

3534
private setChangeNumber(changeNumber: number) {

0 commit comments

Comments
 (0)