Skip to content

Commit 91395bf

Browse files
committed
incorporating feedback
1 parent 2ab02ea commit 91395bf

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

packages/data-connect/src/core/Cache.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ type Value = string | number | boolean | null | undefined | object | Value[];
2626
*/
2727
export interface QueryResultData {
2828
[key: string]: Value;
29-
__typename?: string;
30-
__id?: string;
29+
__typename: string;
30+
__id: string;
3131
}
3232

3333
/**
@@ -68,7 +68,15 @@ export class BackingDataObject {
6868
private serverValues: Map<string, Value>;
6969

7070
/** A list of listeners (StubDataObjects) that need to be updated when values change. */
71-
listeners: Set<StubDataObject>;
71+
private listeners: Set<StubDataObject>;
72+
/** Add a listener to this BDO */
73+
addListener(listener: StubDataObject): void {
74+
this.listeners.add(listener);
75+
}
76+
/** Remove a listener from this BDO */
77+
removeListener(listener: StubDataObject): void {
78+
this.listeners.delete(listener);
79+
}
7280

7381
constructor(
7482
typedKey: string,
@@ -173,13 +181,15 @@ export class Cache {
173181
for (const key in queryResult.data) {
174182
const queryData = queryResult.data[key];
175183
if (Array.isArray(queryData)) {
184+
const sdoList: StubDataObjectList = [];
176185
queryData.forEach(qd => {
177186
const sdo: StubDataObject = {
178187
...qd
179188
// todo: add in non-cacheable fields
180189
};
181-
stubResultTree[key] = sdo;
190+
sdoList.push(sdo);
182191
const bdo: BackingDataObject = this.updateBdoCache(qd, sdo);
192+
stubResultTree[key] = sdoList;
183193
});
184194
} else {
185195
const sdo: StubDataObject = {
@@ -211,7 +221,7 @@ export class Cache {
211221
// key = "id" or "title", etc.
212222
backingDataObject.updateFromServer(value, key);
213223
}
214-
backingDataObject.listeners.add(stubDataObject);
224+
backingDataObject.addListener(stubDataObject);
215225
} else {
216226
// BDO does not exist, so create a new one.
217227
const serverValues = new Map<string, Value>(Object.entries(data));

0 commit comments

Comments
 (0)