修复Q Builder中SchemeSetting初始化的问题。

This commit is contained in:
徐涛 2025-03-31 06:23:03 +08:00
parent efb2237135
commit cb9a01109e

View File

@ -79,7 +79,7 @@ export function QSchemeBuilder({ scheme, onBuildCompleted }: QSchemeBuilderProps
return []; return [];
}, []); }, []);
const collectSchemeSource = (formData: FormData): QSchemeSource => { const collectSchemeSource = (formData: FormData): [QSchemeSource, SchemeSetting] => {
const schemeSetting = new SchemeSetting( const schemeSetting = new SchemeSetting(
new ColorShifting( new ColorShifting(
Number(formData.get('hover_chroma')) / 100, Number(formData.get('hover_chroma')) / 100,
@ -105,26 +105,29 @@ export function QSchemeBuilder({ scheme, onBuildCompleted }: QSchemeBuilderProps
Number(formData.get('wacg')) as WACGSetting, Number(formData.get('wacg')) as WACGSetting,
); );
const dumpedSetting = schemeSetting.toJsValue() as QSchemeSetting; const dumpedSetting = schemeSetting.toJsValue() as QSchemeSetting;
return { return [
primary: defaultEmptyFormData(formData, 'primary', null), {
secondary: defaultEmptyFormData(formData, 'secondary', null), primary: defaultEmptyFormData(formData, 'primary', null),
tertiary: defaultEmptyFormData(formData, 'tertiary', null), secondary: defaultEmptyFormData(formData, 'secondary', null),
accent: defaultEmptyFormData(formData, 'accent', null), tertiary: defaultEmptyFormData(formData, 'tertiary', null),
danger: defaultEmptyFormData(formData, 'danger', null), accent: defaultEmptyFormData(formData, 'accent', null),
success: defaultEmptyFormData(formData, 'success', null), danger: defaultEmptyFormData(formData, 'danger', null),
warning: defaultEmptyFormData(formData, 'warn', null), success: defaultEmptyFormData(formData, 'success', null),
info: defaultEmptyFormData(formData, 'info', null), warning: defaultEmptyFormData(formData, 'warn', null),
foreground: defaultEmptyFormData(formData, 'foreground', null), info: defaultEmptyFormData(formData, 'info', null),
background: defaultEmptyFormData(formData, 'background', null), foreground: defaultEmptyFormData(formData, 'foreground', null),
setting: dumpedSetting, background: defaultEmptyFormData(formData, 'background', null),
}; setting: dumpedSetting,
},
schemeSetting,
];
}; };
const [, handleDraftAction] = useActionState<Map<string, string>, FormData>( const [, handleDraftAction] = useActionState<Map<string, string>, FormData>(
(_state, formData) => { (_state, formData) => {
const errMsg = new Map<string, string>(); const errMsg = new Map<string, string>();
const source = collectSchemeSource(formData); const [source] = collectSchemeSource(formData);
updateScheme((prev) => { updateScheme((prev) => {
prev.schemeStorage.source = source; prev.schemeStorage.source = source;
return prev; return prev;
@ -154,7 +157,7 @@ export function QSchemeBuilder({ scheme, onBuildCompleted }: QSchemeBuilderProps
} }
if (!isEmpty(errMsg)) return errMsg; if (!isEmpty(errMsg)) return errMsg;
try { try {
const source = collectSchemeSource(formData); const [source, setting] = collectSchemeSource(formData);
const generatedScheme = every([source.secondary, source.tertiary, source.accent], isNil) const generatedScheme = every([source.secondary, source.tertiary, source.accent], isNil)
? colorFn?.generate_q_scheme_automatically( ? colorFn?.generate_q_scheme_automatically(
source.primary ?? '', source.primary ?? '',
@ -164,7 +167,7 @@ export function QSchemeBuilder({ scheme, onBuildCompleted }: QSchemeBuilderProps
source.info ?? '', source.info ?? '',
source.foreground ?? '', source.foreground ?? '',
source.background ?? '', source.background ?? '',
schemeSetting, setting,
) )
: colorFn?.generate_q_scheme_manually( : colorFn?.generate_q_scheme_manually(
source.primary ?? '', source.primary ?? '',
@ -177,7 +180,7 @@ export function QSchemeBuilder({ scheme, onBuildCompleted }: QSchemeBuilderProps
source.info ?? '', source.info ?? '',
source.foreground ?? '', source.foreground ?? '',
source.background ?? '', source.background ?? '',
schemeSetting, setting,
); );
updateScheme((prev) => { updateScheme((prev) => {
prev.schemeStorage.source = source; prev.schemeStorage.source = source;