Skip to content

Commit e7070b1

Browse files
authored
refactor(guide): rename stage results keys to byKey and byType (#959)
1 parent cc7eb86 commit e7070b1

5 files changed

Lines changed: 75 additions & 73 deletions

File tree

packages/client/src/clients/guide/client.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -868,14 +868,14 @@ export class KnockGuideClient {
868868
if (!this.stage || this.stage.status === "closed") return;
869869

870870
// Deep merge to accumulate the results.
871-
const queriedByKey = this.stage.results.key || {};
871+
const queriedByKey = this.stage.results.byKey || {};
872872
if (filters.key) {
873873
queriedByKey[filters.key] = {
874874
...(queriedByKey[filters.key] || {}),
875875
...{ [limit]: result },
876876
};
877877
}
878-
const queriedByType = this.stage.results.type || {};
878+
const queriedByType = this.stage.results.byType || {};
879879
if (filters.type) {
880880
queriedByType[filters.type] = {
881881
...(queriedByType[filters.type] || {}),
@@ -885,7 +885,7 @@ export class KnockGuideClient {
885885

886886
this.stage = {
887887
...this.stage,
888-
results: { key: queriedByKey, type: queriedByType },
888+
results: { byKey: queriedByKey, byType: queriedByType },
889889
};
890890
}
891891

packages/client/src/clients/guide/types.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -296,8 +296,8 @@ type SelectionResultByLimit = {
296296
};
297297

298298
type RecordedSelectionResults = {
299-
key?: Record<KnockGuide["key"], SelectionResultByLimit>;
300-
type?: Record<KnockGuide["type"], SelectionResultByLimit>;
299+
byKey?: Record<KnockGuide["key"], SelectionResultByLimit>;
300+
byType?: Record<KnockGuide["type"], SelectionResultByLimit>;
301301
};
302302

303303
export type GroupStage = {

packages/client/test/clients/guide/guide.test.ts

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4152,11 +4152,11 @@ describe("KnockGuideClient", () => {
41524152
const stage = client.getStage();
41534153
expect(stage).toBeDefined();
41544154
expect(stage!.status).toBe("open");
4155-
expect(stage!.results.key).toBeDefined();
4156-
expect(stage!.results.key!["onboarding"]).toBeDefined();
4157-
expect(stage!.results.key!["onboarding"]!.one).toBeDefined();
4158-
expect(stage!.results.key!["onboarding"]!.one!.metadata).toBeDefined();
4159-
expect(stage!.results.key!["onboarding"]!.one!.metadata!.limit).toBe(
4155+
expect(stage!.results.byKey).toBeDefined();
4156+
expect(stage!.results.byKey!["onboarding"]).toBeDefined();
4157+
expect(stage!.results.byKey!["onboarding"]!.one).toBeDefined();
4158+
expect(stage!.results.byKey!["onboarding"]!.one!.metadata).toBeDefined();
4159+
expect(stage!.results.byKey!["onboarding"]!.one!.metadata!.limit).toBe(
41604160
"one",
41614161
);
41624162
});
@@ -4181,9 +4181,9 @@ describe("KnockGuideClient", () => {
41814181

41824182
const stage = client.getStage();
41834183
expect(stage).toBeDefined();
4184-
expect(stage!.results.type).toBeDefined();
4185-
expect(stage!.results.type!["card"]).toBeDefined();
4186-
expect(stage!.results.type!["card"]!.one).toBeDefined();
4184+
expect(stage!.results.byType).toBeDefined();
4185+
expect(stage!.results.byType!["card"]).toBeDefined();
4186+
expect(stage!.results.byType!["card"]!.one).toBeDefined();
41874187
});
41884188

41894189
test("does not record when not debugging", () => {
@@ -4248,8 +4248,8 @@ describe("KnockGuideClient", () => {
42484248
client.selectGuide(stateWithGuides, { type: "banner" });
42494249

42504250
const stage = client.getStage();
4251-
expect(stage!.results.key!["onboarding"].one).toBeDefined();
4252-
expect(stage!.results.type!["banner"].one).toBeDefined();
4251+
expect(stage!.results.byKey!["onboarding"].one).toBeDefined();
4252+
expect(stage!.results.byType!["banner"].one).toBeDefined();
42534253
});
42544254

42554255
test("selectGuides records result with 'all' limit", () => {
@@ -4272,14 +4272,14 @@ describe("KnockGuideClient", () => {
42724272
client.selectGuides(stateWithGuides, { type: "card" });
42734273

42744274
const stage = client.getStage();
4275-
expect(stage!.results.type).toBeDefined();
4276-
expect(stage!.results.type!["card"]).toBeDefined();
4277-
expect(stage!.results.type!["card"]!.all).toBeDefined();
4278-
expect(stage!.results.type!["card"]!.all!.metadata!.limit).toBe("all");
4275+
expect(stage!.results.byType).toBeDefined();
4276+
expect(stage!.results.byType!["card"]).toBeDefined();
4277+
expect(stage!.results.byType!["card"]!.all).toBeDefined();
4278+
expect(stage!.results.byType!["card"]!.all!.metadata!.limit).toBe("all");
42794279

42804280
// selectGuides calls selectGuide internally with recordSelectQuery: false,
42814281
// so the "one" limit should NOT be recorded for the same type filter.
4282-
expect(stage!.results.type!["card"]!.one).toBeUndefined();
4282+
expect(stage!.results.byType!["card"]!.one).toBeUndefined();
42834283
});
42844284

42854285
test("does not record when stage is closed", () => {
@@ -4344,8 +4344,8 @@ describe("KnockGuideClient", () => {
43444344
client.selectGuide(stateWithGuides, { key: "onboarding" });
43454345

43464346
const stage = client.getStage();
4347-
expect(stage!.results.key).toBeDefined();
4348-
expect(stage!.results.key!["onboarding"]).toBeDefined();
4347+
expect(stage!.results.byKey).toBeDefined();
4348+
expect(stage!.results.byKey!["onboarding"]).toBeDefined();
43494349
});
43504350
});
43514351

packages/react/src/modules/guide/components/Toolbar/V2/useInspectGuideClientStore.ts

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ type SelectionResultByLimit = {
5959
all?: KnockGuideSelectionResult;
6060
};
6161
type SelectionResultByQuery = {
62-
key?: SelectionResultByLimit;
63-
type?: SelectionResultByLimit;
62+
byKey?: SelectionResultByLimit;
63+
byType?: SelectionResultByLimit;
6464
};
6565
type SelectableStatusPresent = {
6666
status: "returned" | "throttled" | "queried";
@@ -157,8 +157,8 @@ const inferSelectByKeyReturnStatus = (
157157
query: SelectionResultByQuery,
158158
): SelectableStatusPresent["status"] => {
159159
const includeThrottled =
160-
!!query.key?.one?.metadata?.opts?.includeThrottled ||
161-
!!query.key?.all?.metadata?.opts?.includeThrottled;
160+
!!query.byKey?.one?.metadata?.opts?.includeThrottled ||
161+
!!query.byKey?.all?.metadata?.opts?.includeThrottled;
162162

163163
// If unthrottled, then it should always be returned.
164164
if (guide.bypass_global_group_limit) {
@@ -185,9 +185,10 @@ const inferSelectOneByTypeReturnStatus = (
185185
stage: KnockGuideClientGroupStage,
186186
query: SelectionResultByQuery,
187187
): SelectableStatusPresent["status"] => {
188-
const includeThrottled = !!query.type?.one?.metadata?.opts?.includeThrottled;
188+
const includeThrottled =
189+
!!query.byType?.one?.metadata?.opts?.includeThrottled;
189190

190-
const result = query.type!.one!;
191+
const result = query.byType!.one!;
191192
if (result.size === 0) {
192193
return "queried";
193194
}
@@ -229,7 +230,7 @@ const inferSelectAllByTypeReturnStatus = (
229230
stage: KnockGuideClientGroupStage,
230231
query: SelectionResultByQuery,
231232
): SelectableStatusPresent["status"] => {
232-
const result = query.type!.all!;
233+
const result = query.byType!.all!;
233234
if (result.size === 0) {
234235
return "queried";
235236
}
@@ -241,7 +242,8 @@ const inferSelectAllByTypeReturnStatus = (
241242
const guidesByKey: Record<KnockGuide["key"], KnockGuide> = byKey(guides);
242243

243244
// If includeThrottled given, then expect all selected guides to be returned.
244-
const includeThrottled = !!query.type?.all?.metadata?.opts?.includeThrottled;
245+
const includeThrottled =
246+
!!query.byType?.all?.metadata?.opts?.includeThrottled;
245247
if (includeThrottled) {
246248
return guidesByKey[guide.key] ? "returned" : "queried";
247249
}
@@ -270,14 +272,14 @@ const inferSelectReturnStatus = (
270272
) => {
271273
// Querying by key can only return up to a max of one guide, regardless of
272274
// useGuide or useGuides, and should take precedence in status designation.
273-
if (query.key) {
275+
if (query.byKey) {
274276
return inferSelectByKeyReturnStatus(guide, snapshot, stage, query);
275277
}
276278

277-
if (query.type?.all) {
279+
if (query.byType?.all) {
278280
return inferSelectAllByTypeReturnStatus(guide, snapshot, stage, query);
279281
}
280-
if (query.type?.one) {
282+
if (query.byType?.one) {
281283
return inferSelectOneByTypeReturnStatus(guide, snapshot, stage, query);
282284
}
283285

@@ -295,11 +297,11 @@ const toSelectableStatus = (
295297
}
296298

297299
const query = {
298-
key: (stage.results.key || {})[guide.key],
299-
type: (stage.results.type || {})[guide.type],
300+
byKey: (stage.results.byKey || {})[guide.key],
301+
byType: (stage.results.byType || {})[guide.type],
300302
};
301303

302-
const queried = Boolean(query.key || query.type);
304+
const queried = Boolean(query.byKey || query.byType);
303305
if (!queried) {
304306
// No present query in the current location can select this guide.
305307
return { status: undefined };

0 commit comments

Comments
 (0)