'use client' import type { FC } from 'react' import React, { useCallback } from 'react' import produce from 'immer' import cn from 'classnames' import s from './style.module.css' import Switch from '@/app/components/base/switch' import { FeatureEnum } from '@/app/components/base/features/types' import { useFeaturesStore } from '@/app/components/base/features/hooks' import { useModalContext } from '@/context/modal-context' export type IFeatureItemProps = { icon: React.ReactNode previewImgClassName?: string title: string description: string value: boolean onChange: (type: FeatureEnum, value: boolean) => void type: FeatureEnum } const FeatureItem: FC = ({ icon, previewImgClassName, title, description, value, onChange, type, }) => { const featuresStore = useFeaturesStore() const { setShowModerationSettingModal } = useModalContext() const handleChange = useCallback((newValue: boolean) => { const { features, setFeatures, } = featuresStore!.getState() if (newValue && !features.moderation?.type && type === FeatureEnum.moderation) { setShowModerationSettingModal({ payload: { enabled: true, type: 'keywords', config: { keywords: '', inputs_config: { enabled: true, preset_response: '', }, }, }, onSaveCallback: (newModeration) => { setFeatures(produce(features, (draft) => { draft.moderation = newModeration })) }, onCancelCallback: () => { setFeatures(produce(features, (draft) => { draft.moderation = { enabled: false } })) }, }) return } onChange(type, newValue) }, [type, onChange, featuresStore, setShowModerationSettingModal]) return (
{/* icon */}
{icon}
{title}
{description}
{ previewImgClassName && (
) }
) } export default React.memo(FeatureItem)