2026-03-29 16:25:40 -05:00
|
|
|
import { useMemo } from "react";
|
|
|
|
|
import type {
|
|
|
|
|
ConditionalMessage,
|
|
|
|
|
FieldConditionalMessage,
|
|
|
|
|
MessageConditionContext,
|
|
|
|
|
} from "@/components/config-form/section-configs/types";
|
2026-09-18 08:33:23 -05:00
|
|
|
import { resolveMessageKey } from "@/utils/runtimeOverrides";
|
2026-03-29 16:25:40 -05:00
|
|
|
|
|
|
|
|
export function useConfigMessages(
|
|
|
|
|
messages: ConditionalMessage[] | undefined,
|
|
|
|
|
fieldMessages: FieldConditionalMessage[] | undefined,
|
|
|
|
|
context: MessageConditionContext | undefined,
|
|
|
|
|
): {
|
|
|
|
|
activeMessages: ConditionalMessage[];
|
|
|
|
|
activeFieldMessages: FieldConditionalMessage[];
|
|
|
|
|
} {
|
|
|
|
|
const activeMessages = useMemo(() => {
|
|
|
|
|
if (!messages || !context) return [];
|
2026-09-18 08:33:23 -05:00
|
|
|
return messages
|
|
|
|
|
.filter((msg) => msg.condition(context))
|
|
|
|
|
.map((msg) => ({ ...msg, messageKey: resolveMessageKey(msg, context) }));
|
2026-03-29 16:25:40 -05:00
|
|
|
}, [messages, context]);
|
|
|
|
|
|
|
|
|
|
const activeFieldMessages = useMemo(() => {
|
|
|
|
|
if (!fieldMessages || !context) return [];
|
2026-09-18 08:33:23 -05:00
|
|
|
return fieldMessages
|
|
|
|
|
.filter((msg) => msg.condition(context))
|
|
|
|
|
.map((msg) => ({ ...msg, messageKey: resolveMessageKey(msg, context) }));
|
2026-03-29 16:25:40 -05:00
|
|
|
}, [fieldMessages, context]);
|
|
|
|
|
|
|
|
|
|
return { activeMessages, activeFieldMessages };
|
|
|
|
|
}
|