'use client'; import React from 'react'; import { Switch } from '@/components/common/Switch'; import type { NotificationPreference } from '@/api/notifications'; const NOTIFICATION_TYPES = [ { key: 'lesson_created', label: 'Создание занятия', description: 'Уведомления о новых занятиях' }, { key: 'lesson_cancelled', label: 'Отмена занятия', description: 'Уведомления об отмене занятий' }, { key: 'lesson_reminder', label: 'Напоминания о занятиях', description: 'Напоминания о предстоящих занятиях' }, { key: 'homework_assigned', label: 'Назначение ДЗ', description: 'Уведомления о новых домашних заданиях' }, { key: 'homework_submitted', label: 'Сдача ДЗ', description: 'Уведомления о сданных домашних заданиях' }, { key: 'homework_reviewed', label: 'Проверка ДЗ', description: 'Уведомления о проверенных домашних заданиях' }, { key: 'message_received', label: 'Сообщения', description: 'Уведомления о новых сообщениях в чате' }, { key: 'subscription_expiring', label: 'Истечение подписки', description: 'Уведомления об истечении подписки' }, { key: 'subscription_expired', label: 'Подписка истекла', description: 'Уведомления об истекшей подписке' }, ]; const PARENT_EXCLUDED_TYPES = [ 'lesson_created', 'lesson_cancelled', 'lesson_reminder', 'homework_assigned', 'homework_submitted', 'homework_reviewed', ]; interface NotificationSettingsSectionProps { preferences: NotificationPreference | null; onChange: (prefs: NotificationPreference) => void; userRole?: string; hasTelegram?: boolean; disabled?: boolean; } export function NotificationSettingsSection({ preferences, onChange, userRole = 'mentor', hasTelegram = false, disabled = false, }: NotificationSettingsSectionProps) { const types = userRole === 'parent' ? NOTIFICATION_TYPES.filter((t) => !PARENT_EXCLUDED_TYPES.includes(t.key)) : NOTIFICATION_TYPES; const toggleChannel = (field: keyof NotificationPreference, value: boolean) => { if (!preferences) return; onChange({ ...preferences, [field]: value }); }; const toggleType = (notificationType: string, channel: 'in_app' | 'email' | 'telegram', value: boolean) => { if (!preferences) return; const typePrefs = { ...(preferences.type_preferences || {}) }; if (!typePrefs[notificationType]) typePrefs[notificationType] = {}; typePrefs[notificationType] = { ...typePrefs[notificationType], [channel]: value }; onChange({ ...preferences, type_preferences: typePrefs }); }; const getTypeValue = (typeKey: string, channel: 'in_app' | 'email' | 'telegram') => { const typePrefs = preferences?.type_preferences?.[typeKey]; if (typePrefs && typePrefs[channel] !== undefined) return typePrefs[channel]; if (channel === 'in_app') return preferences?.in_app_enabled ?? true; if (channel === 'email') return preferences?.email_enabled ?? true; return preferences?.telegram_enabled ?? false; }; const isChannelDisabled = (channel: 'in_app' | 'email' | 'telegram') => { if (preferences?.enabled === false) return true; if (channel === 'in_app') return !(preferences?.in_app_enabled ?? true); if (channel === 'email') return !(preferences?.email_enabled ?? true); return !(preferences?.telegram_enabled ?? false) || !hasTelegram; }; if (!preferences) return null; return (