feat(journal): seed declared variables on initialization
Implement `computeInitialValues` to calculate the starting state of declared variables and seed them into the journal stream store during the completions initialization process.
This commit is contained in:
@@ -25,7 +25,8 @@ import {
|
||||
} from "../../cli/completions/directive-scanner";
|
||||
import { parseDeclareCsv } from "./declare-parser";
|
||||
import type { VarDeclaration, TagModifier } from "./declare-parser";
|
||||
import { initReactivity } from "./var-reactivity";
|
||||
import { initReactivity, computeInitialValues } from "./var-reactivity";
|
||||
import { sendMessage, journalStreamState } from "../stores/journalStream";
|
||||
|
||||
export type { VarDeclaration, TagModifier };
|
||||
|
||||
@@ -171,7 +172,10 @@ const _initPromise: Promise<void> = (async () => {
|
||||
const serverData = await tryServer();
|
||||
if (serverData) {
|
||||
setCompletionsState({ status: "loaded", data: serverData });
|
||||
try { initReactivity({ declarations: serverData.declarations, tagModifiers: serverData.tagModifiers }); } catch (e) { console.warn("[completions] reactivity init error:", e); }
|
||||
try {
|
||||
initReactivity({ declarations: serverData.declarations, tagModifiers: serverData.tagModifiers });
|
||||
seedDeclaredVariables();
|
||||
} catch (e) { console.warn("[completions] reactivity init error:", e); }
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -180,7 +184,10 @@ const _initPromise: Promise<void> = (async () => {
|
||||
const data = await scanClientSide();
|
||||
if (data.dice.length > 0 || data.links.length > 0) {
|
||||
setCompletionsState({ status: "loaded", data });
|
||||
try { initReactivity({ declarations: data.declarations, tagModifiers: data.tagModifiers }); } catch (e) { console.warn("[completions] reactivity init error:", e); }
|
||||
try {
|
||||
initReactivity({ declarations: data.declarations, tagModifiers: data.tagModifiers });
|
||||
seedDeclaredVariables();
|
||||
} catch (e) { console.warn("[completions] reactivity init error:", e); }
|
||||
} else {
|
||||
setCompletionsState({ status: "empty" });
|
||||
}
|
||||
@@ -230,4 +237,15 @@ export function useJournalCompletions(): {
|
||||
tagModifiers: [],
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Seed declared variables into the store on load
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
function seedDeclaredVariables(): void {
|
||||
const initial = computeInitialValues(journalStreamState.variables);
|
||||
for (const { key, value } of initial) {
|
||||
sendMessage("var", { action: "set", key, value });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user