Skip to content

Commit 415f5bb

Browse files
authored
eng-1516: detect discourse context score discrepancies (#862)
1 parent cd30dd5 commit 415f5bb

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

apps/roam/src/components/DiscourseContextOverlay.tsx

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import normalizePageTitle from "roamjs-components/queries/normalizePageTitle";
1414
import deriveDiscourseNodeAttribute from "~/utils/deriveDiscourseNodeAttribute";
1515
import getSettingValueFromTree from "roamjs-components/util/getSettingValueFromTree";
1616
import getBasicTreeByParentUid from "roamjs-components/queries/getBasicTreeByParentUid";
17+
import getSubTree from "roamjs-components/util/getSubTree";
1718
import nanoid from "nanoid";
1819
import getPageUidByPageTitle from "roamjs-components/queries/getPageUidByPageTitle";
1920
import getDiscourseContextResults from "~/utils/getDiscourseContextResults";
@@ -23,6 +24,7 @@ import getDiscourseRelations from "~/utils/getDiscourseRelations";
2324
import ExtensionApiContextProvider from "roamjs-components/components/ExtensionApiContext";
2425
import { OnloadArgs } from "roamjs-components/types/native";
2526
import getPageTitleByPageUid from "roamjs-components/queries/getPageTitleByPageUid";
27+
import internalError from "~/utils/internalError";
2628

2729
type DiscourseData = {
2830
results: Awaited<ReturnType<typeof getDiscourseContextResults>>;
@@ -180,6 +182,19 @@ const useDiscourseContext = (uid: string, tag: string) => {
180182
.then(({ refs, results }) => {
181183
const discourseNode = findDiscourseNode({ uid: uid });
182184
if (discourseNode) {
185+
const numResults = results
186+
.map(
187+
(entry) =>
188+
Object.keys(
189+
(
190+
entry as unknown as {
191+
label: string;
192+
results: Record<string, unknown>;
193+
}
194+
).results,
195+
).length,
196+
)
197+
.reduce((acc, cur) => acc + cur, 0);
183198
const attribute = getSettingValueFromTree({
184199
tree: getBasicTreeByParentUid(discourseNode.type),
185200
key: "Overlay",
@@ -192,6 +207,28 @@ const useDiscourseContext = (uid: string, tag: string) => {
192207
setResults(results);
193208
setRefs(refs);
194209
setScore(score);
210+
211+
const nodeType = discourseNode.type;
212+
const attributeNode = getSubTree({
213+
tree: getBasicTreeByParentUid(nodeType || ""),
214+
key: "Attributes",
215+
});
216+
const scoreFormula = attributeNode?.children
217+
? getSettingValueFromTree({
218+
tree: attributeNode.children,
219+
key: attribute,
220+
})
221+
: "";
222+
if (scoreFormula === "" && score !== numResults) {
223+
internalError({
224+
error: "DiscourseContext: Score does not match Num relations",
225+
context: {
226+
uid,
227+
score,
228+
numResults,
229+
},
230+
});
231+
}
195232
});
196233
}
197234
})

0 commit comments

Comments
 (0)