Skip to content

Commit d0deafa

Browse files
committed
Adding multiple symbolic ref : Fixed
1 parent 7472d3d commit d0deafa

3 files changed

Lines changed: 78 additions & 7 deletions

File tree

‎src/components/ReferenceSuggestionDialog.tsx‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,13 @@ export function ReferenceSuggestionDialog({
7878
}
7979
}, [opened, definitionId]);
8080

81+
useEffect(() => {
82+
setIndex((i) => Math.min(i, Math.max(0, suggestions.length - 1)));
83+
setSelectedCandidate(null);
84+
setError(null);
85+
setSearchQuery("");
86+
}, [suggestions]);
87+
8188
const current = suggestions[index];
8289
const sniffyCandidateKeys = useMemo(
8390
() =>
@@ -128,7 +135,6 @@ export function ReferenceSuggestionDialog({
128135
setError(null);
129136
try {
130137
await onAccept(current, selectedCandidate);
131-
goNext();
132138
} catch (err) {
133139
const message =
134140
err instanceof Error ? err.message : "Could not insert reference.";

‎src/components/StexCuration.tsx‎

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,42 @@ export function StexCuration({ identity }: { identity: FileIdentity }) {
234234
setSuggestOpen(true);
235235
}
236236

237+
async function reloadSniffySession(definitionId: string) {
238+
await queryClient.invalidateQueries({
239+
queryKey: ["definitionsByIdentity", identity],
240+
refetchType: "none",
241+
});
242+
243+
const updatedData = await queryClient.fetchQuery({
244+
queryKey: ["definitionsByIdentity", identity],
245+
queryFn: () =>
246+
getDefinitionsByIdentity({
247+
data: identity,
248+
}),
249+
});
250+
const updatedDef = updatedData.definitions.find(
251+
(definition) => definition.id === definitionId,
252+
);
253+
254+
if (!updatedDef) {
255+
setActiveDefText("");
256+
setActiveDefStatement(null);
257+
setSuggestions([]);
258+
setSuggestCandidateSymRefs({});
259+
return;
260+
}
261+
262+
const session = suggestRefsForDefinition(updatedDef, sniffyCatalog);
263+
264+
setActiveDefText(extractPlainText(updatedDef.statement));
265+
setActiveDefStatement(updatedDef.statement);
266+
setSuggestions(session.suggestions);
267+
setSuggestCandidateSymRefs({
268+
...buildCandidateSymRefMap(sniffyCatalog, definitionId),
269+
...session.candidateSymRefs,
270+
});
271+
}
272+
237273
async function handleAcceptSuggestion(
238274
s: SuggestedReference,
239275
candidate: SuggestedReferenceCandidate,
@@ -255,9 +291,7 @@ export function StexCuration({ identity }: { identity: FileIdentity }) {
255291
},
256292
});
257293

258-
await queryClient.invalidateQueries({
259-
queryKey: ["definitionsByIdentity", identity],
260-
});
294+
await reloadSniffySession(activeDefId);
261295
}
262296

263297
async function handleReplaceNode(

‎src/routes/files/$documentId.tsx‎

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,39 @@ function RouteComponent() {
420420
setSuggestOpen(true);
421421
}
422422

423+
async function reloadSniffySession(definitionId: string) {
424+
await queryClient.invalidateQueries({
425+
queryKey: ["definitions", documentId],
426+
refetchType: "none",
427+
});
428+
429+
const updatedDefinitions = await queryClient.fetchQuery({
430+
queryKey: ["definitions", documentId],
431+
queryFn: () => listDefinition({ data: { documentId } }),
432+
});
433+
const updatedDef = updatedDefinitions.find(
434+
(definition) => definition.id === definitionId,
435+
);
436+
437+
if (!updatedDef) {
438+
setActiveDefText("");
439+
setActiveDefStatement(null);
440+
setSuggestions([]);
441+
setSuggestCandidateSymRefs({});
442+
return;
443+
}
444+
445+
const session = suggestRefsForDefinition(updatedDef, sniffyCatalog);
446+
447+
setActiveDefText(extractPlainText(updatedDef.statement));
448+
setActiveDefStatement(updatedDef.statement);
449+
setSuggestions(session.suggestions);
450+
setSuggestCandidateSymRefs({
451+
...buildCandidateSymRefMap(sniffyCatalog, definitionId),
452+
...session.candidateSymRefs,
453+
});
454+
}
455+
423456
async function handleAcceptSuggestion(
424457
s: SuggestedReference,
425458
candidate: SuggestedReferenceCandidate,
@@ -441,9 +474,7 @@ function RouteComponent() {
441474
},
442475
});
443476

444-
await queryClient.invalidateQueries({
445-
queryKey: ["definitions", documentId],
446-
});
477+
await reloadSniffySession(activeDefId);
447478
}
448479

449480
function handleEditDefinitionMeta(item: ExtractedItem) {

0 commit comments

Comments
 (0)