feat(notebook): lock material source to notebook when studioToken is provided

- Auto-switch materialSource to 'notebook' on mount when initialNotebookId is set
- Replace material source dropdown with static label when studioToken is present

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
xuhdandClaude Sonnet 4.6 committed 2026-06-05 13:45:24 +08:00
1 parent 0e7149eec3
commit d57bcd9aa2
1 file changed
+15
@@ -97,6 +97,14 @@ export function AIWritingForm({
[models, modelName], [models, modelName],
); );
// initialNotebookId 存在时自动切换素材来源为「我的笔记」
useEffect(() => {
if (initialNotebookId != null) {
setMaterialSource('notebook');
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
// 初始化时加载文章类型 // 初始化时加载文章类型
useEffect(() => { useEffect(() => {
refreshTypes(); refreshTypes();
@@ -276,6 +284,12 @@ export function AIWritingForm({
<div className="mt-4 space-y-2"> <div className="mt-4 space-y-2">
<label className={FIELD_LABEL_CLASS}>素材来源</label> <label className={FIELD_LABEL_CLASS}>素材来源</label>
{/* studioToken 模式:素材来源已锁定为「我的笔记」,不可切换 */}
{studioToken ? (
<div className={`${FIELD_TRIGGER_CLASS} flex items-center px-3 border rounded-xl bg-white text-sm text-muted-foreground`}>
我的笔记
</div>
) : (
<Select <Select
value={materialSource} value={materialSource}
onValueChange={(v) => handleMaterialSourceChange(v as MaterialSource)} onValueChange={(v) => handleMaterialSourceChange(v as MaterialSource)}
@@ -293,6 +307,7 @@ export function AIWritingForm({
))} ))}
</SelectContent> </SelectContent>
</Select> </Select>
)}
{/* 选了"我的笔记"才展示笔记本 / 文档选择器 */} {/* 选了"我的笔记"才展示笔记本 / 文档选择器 */}
{materialSource === 'notebook' && ( {materialSource === 'notebook' && (