@zacksmash/vue-open-ai-apps
Version:
Open AI Apps SDK helpers for Vue
30 lines (24 loc) • 815 B
text/typescript
import type { Ref } from "vue";
import { useOpenAIGlobal } from "../properties/useOpenAIGlobal";
import type { OpenAIGlobals, UnknownObject } from "../types";
export function useWidgetState<T extends OpenAIGlobals["widgetState"]>() {
const widgetState = useOpenAIGlobal("widgetState") as Ref<T | null>;
async function setWidgetState(next: T): Promise<void> {
if (
typeof window === "undefined" ||
!window.openai?.setWidgetState ||
typeof window.openai?.setWidgetState !== "function"
)
return;
widgetState.value = next;
try {
await window.openai?.setWidgetState(next as UnknownObject);
} catch (err) {
console.error("setWidgetState failed", err);
}
}
return { widgetState, setWidgetState } as {
widgetState: typeof widgetState;
setWidgetState: typeof setWidgetState;
};
}