@@ -14,6 +14,7 @@ import normalizePageTitle from "roamjs-components/queries/normalizePageTitle";
1414import deriveDiscourseNodeAttribute from "~/utils/deriveDiscourseNodeAttribute" ;
1515import getSettingValueFromTree from "roamjs-components/util/getSettingValueFromTree" ;
1616import getBasicTreeByParentUid from "roamjs-components/queries/getBasicTreeByParentUid" ;
17+ import getSubTree from "roamjs-components/util/getSubTree" ;
1718import nanoid from "nanoid" ;
1819import getPageUidByPageTitle from "roamjs-components/queries/getPageUidByPageTitle" ;
1920import getDiscourseContextResults from "~/utils/getDiscourseContextResults" ;
@@ -23,6 +24,7 @@ import getDiscourseRelations from "~/utils/getDiscourseRelations";
2324import ExtensionApiContextProvider from "roamjs-components/components/ExtensionApiContext" ;
2425import { OnloadArgs } from "roamjs-components/types/native" ;
2526import getPageTitleByPageUid from "roamjs-components/queries/getPageTitleByPageUid" ;
27+ import internalError from "~/utils/internalError" ;
2628
2729type 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