39 lines
975 B
TypeScript
39 lines
975 B
TypeScript
"use client";
|
|
|
|
import { useMemo, useRef } from "react";
|
|
import type { App } from "@/lib/types";
|
|
|
|
/**
|
|
* 解析 app.app_config(可能是 JSON 字符串或对象)。
|
|
* completion-ui / workflow-ui / agent-ui 共用。
|
|
*/
|
|
export function useAppConfig(app: App): Record<string, unknown> {
|
|
return useMemo(() => {
|
|
try {
|
|
if (typeof app.app_config === "string")
|
|
return JSON.parse(app.app_config);
|
|
return app.app_config || {};
|
|
} catch {
|
|
return {};
|
|
}
|
|
}, [app.app_config]);
|
|
}
|
|
|
|
/**
|
|
* 解析 app.suggested_prompts(可能是 JSON 字符串或数组)。
|
|
* chatbot-ui / agent-ui 共用。
|
|
*/
|
|
export function useSuggestedPrompts(app: App): string[] {
|
|
return useRef(
|
|
(() => {
|
|
try {
|
|
if (typeof app.suggested_prompts === "string")
|
|
return JSON.parse(app.suggested_prompts) as string[];
|
|
return (app.suggested_prompts as string[]) || [];
|
|
} catch {
|
|
return [];
|
|
}
|
|
})(),
|
|
).current;
|
|
}
|