diff --git a/src/api/branding.ts b/src/api/branding.ts index 5136814..748041d 100644 --- a/src/api/branding.ts +++ b/src/api/branding.ts @@ -265,6 +265,14 @@ export const brandingApi = { } }, + // Update gift enabled (admin only) + updateGiftEnabled: async (enabled: boolean): Promise => { + const response = await apiClient.patch('/cabinet/branding/gift-enabled', { + enabled, + }); + return response.data; + }, + // Get analytics counters (public, no auth required) getAnalyticsCounters: async (): Promise => { try { diff --git a/src/components/admin/BrandingTab.tsx b/src/components/admin/BrandingTab.tsx index 5a3c620..4bab96c 100644 --- a/src/components/admin/BrandingTab.tsx +++ b/src/components/admin/BrandingTab.tsx @@ -35,6 +35,11 @@ export function BrandingTab({ accentColor = '#3b82f6' }: BrandingTabProps) { queryFn: brandingApi.getEmailAuthEnabled, }); + const { data: giftSettings } = useQuery({ + queryKey: ['gift-enabled'], + queryFn: brandingApi.getGiftEnabled, + }); + // Mutations const updateBrandingMutation = useMutation({ mutationFn: brandingApi.updateName, @@ -76,6 +81,13 @@ export function BrandingTab({ accentColor = '#3b82f6' }: BrandingTabProps) { }, }); + const updateGiftMutation = useMutation({ + mutationFn: (enabled: boolean) => brandingApi.updateGiftEnabled(enabled), + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ['gift-enabled'] }); + }, + }); + const handleLogoUpload = (e: React.ChangeEvent) => { const file = e.target.files?.[0]; if (file) { @@ -225,6 +237,18 @@ export function BrandingTab({ accentColor = '#3b82f6' }: BrandingTabProps) { disabled={updateEmailAuthMutation.isPending} /> + +
+
+ {t('admin.settings.giftEnabled')} +

{t('admin.settings.giftEnabledDesc')}

+
+ updateGiftMutation.mutate(!(giftSettings?.enabled ?? false))} + disabled={updateGiftMutation.isPending} + /> +
diff --git a/src/locales/en.json b/src/locales/en.json index ad055ea..e4f06db 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1696,6 +1696,8 @@ "darkTheme": "Dark theme", "emailAuth": "Email auth", "emailAuthDesc": "Allow login via email", + "giftEnabled": "Gift subscription", + "giftEnabledDesc": "Allow users to gift a subscription to another user", "favoritesEmpty": "No favorites yet", "favoritesHint": "Star settings to add them here", "interfaceOptions": "Interface options", diff --git a/src/locales/fa.json b/src/locales/fa.json index f94bde1..19f79af 100644 --- a/src/locales/fa.json +++ b/src/locales/fa.json @@ -1367,6 +1367,8 @@ "darkTheme": "پوسته تیره", "emailAuth": "احراز هویت ایمیل", "emailAuthDesc": "اجازه ورود با ایمیل", + "giftEnabled": "اشتراک هدیه", + "giftEnabledDesc": "امکان ارسال اشتراک به عنوان هدیه به کاربر دیگر", "favoritesEmpty": "هنوز علاقه‌مندی ندارید", "favoritesHint": "ستاره بزنید تا تنظیمات اینجا اضافه شوند", "interfaceOptions": "گزینه‌های رابط کاربری", diff --git a/src/locales/ru.json b/src/locales/ru.json index 6abfecc..e787c60 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -1706,6 +1706,8 @@ "autoFullscreenDesc": "В Telegram WebApp", "emailAuth": "Email авторизация", "emailAuthDesc": "Регистрация и вход через email", + "giftEnabled": "Подписка в подарок", + "giftEnabledDesc": "Возможность отправить подписку в подарок другому пользователю", "availableThemes": "Доступные темы", "darkTheme": "Тёмная", "lightTheme": "Светлая", diff --git a/src/locales/zh.json b/src/locales/zh.json index c7eb3b1..5a7bb5b 100644 --- a/src/locales/zh.json +++ b/src/locales/zh.json @@ -1405,6 +1405,8 @@ "darkTheme": "暗色主题", "emailAuth": "邮箱认证", "emailAuthDesc": "允许通过邮箱登录", + "giftEnabled": "赠送订阅", + "giftEnabledDesc": "允许用户将订阅作为礼物赠送给其他用户", "favoritesEmpty": "暂无收藏", "favoritesHint": "点击星标将设置添加到这里", "interfaceOptions": "界面选项",