From 1ee0b0a7cdcb4684c4ddb793a9808400892d392e Mon Sep 17 00:00:00 2001
From: 3252a8 <3252a8@proton.me>
Date: Thu, 4 Jun 2026 11:15:28 +0300
Subject: [PATCH] feat: add email-only telegram demo states
---
docs-site/public/demo/demo-shell.js | 2 ++
docs-site/src/pages/demo.astro | 2 ++
docs/getting-started/demo.md | 2 ++
frontend/src/lib/webapp/previewMock.js | 44 +++++++++++++++++++++++---
4 files changed, 45 insertions(+), 5 deletions(-)
diff --git a/docs-site/public/demo/demo-shell.js b/docs-site/public/demo/demo-shell.js
index 2bf6b07..5c334ee 100644
--- a/docs-site/public/demo/demo-shell.js
+++ b/docs-site/public/demo/demo-shell.js
@@ -9,6 +9,8 @@ const stateMocks = new Set([
"depleted",
"no-subscription",
"trial",
+ "trial-telegram",
+ "referral-telegram",
"devices",
"notifications",
"auth",
diff --git a/docs-site/src/pages/demo.astro b/docs-site/src/pages/demo.astro
index 75f8f1a..0a7ec7d 100644
--- a/docs-site/src/pages/demo.astro
+++ b/docs-site/src/pages/demo.astro
@@ -467,6 +467,8 @@ const docsHref = '/getting-started/demo/';
+
+
diff --git a/docs/getting-started/demo.md b/docs/getting-started/demo.md
index c3e6caa..1da0a6c 100644
--- a/docs/getting-started/demo.md
+++ b/docs/getting-started/demo.md
@@ -11,6 +11,8 @@
- [Админка: пользователи](/demo/admin/users)
- [Админка: бэкапы](/demo/admin/backups)
- [Пробный период](/demo/home?mock=trial)
+- [Email-only: нужен Telegram для триала](/demo/home?mock=trial-telegram)
+- [Email-only: нужен Telegram для реферального бонуса](/demo/home?mock=referral-telegram)
- [Докупка устройств](/demo/devices?mock=devices)
- [Запуск бота для Telegram-уведомлений](/demo/home?mock=notifications)
- [Вход и регистрация](/demo/login?mock=auth)
diff --git a/frontend/src/lib/webapp/previewMock.js b/frontend/src/lib/webapp/previewMock.js
index ecfe638..7cf57e8 100644
--- a/frontend/src/lib/webapp/previewMock.js
+++ b/frontend/src/lib/webapp/previewMock.js
@@ -672,6 +672,20 @@ function applyInactiveSubscriptionScenario({ trialAvailable = false } = {}) {
DEMO_DATASET.tariff_change_options || DEV_MOCK.data.tariff_change_options;
}
+function applyEmailOnlyAccountPatch({
+ email = "preview-user@mailinator.com",
+ referredById = null,
+} = {}) {
+ DEV_MOCK.data.user = {
+ ...(DEV_MOCK.data.user || {}),
+ telegram_id: null,
+ telegram_linked: false,
+ email,
+ email_verified: true,
+ referred_by_id: referredById,
+ };
+}
+
export function applyPreviewMock(kind) {
const mode = String(kind || "")
.trim()
@@ -720,11 +734,7 @@ export function applyPreviewMock(kind) {
if (mode === "trial-telegram" || mode === "trial_requires_telegram") {
applyInactiveSubscriptionScenario();
- DEV_MOCK.data.user = {
- ...(DEV_MOCK.data.user || {}),
- telegram_id: null,
- telegram_linked: false,
- };
+ applyEmailOnlyAccountPatch({ email: "trial-user@mailinator.com" });
DEV_MOCK.data.settings.trial_enabled = true;
DEV_MOCK.data.settings.trial_available = false;
DEV_MOCK.data.settings.trial_requires_telegram = true;
@@ -732,6 +742,30 @@ export function applyPreviewMock(kind) {
DEV_MOCK.data.referral = {
...(DEV_MOCK.data.referral || {}),
welcome_bonus_days: 3,
+ welcome_bonus_requires_telegram: false,
+ welcome_bonus_block_reason: "",
+ };
+ return;
+ }
+
+ if (
+ mode === "referral-telegram" ||
+ mode === "referral_welcome_telegram" ||
+ mode === "referral-welcome-telegram"
+ ) {
+ applyInactiveSubscriptionScenario();
+ applyEmailOnlyAccountPatch({
+ email: "referral-user@mailinator.com",
+ referredById: 910001,
+ });
+ DEV_MOCK.data.settings.trial_enabled = true;
+ DEV_MOCK.data.settings.trial_available = false;
+ DEV_MOCK.data.settings.trial_requires_telegram = false;
+ DEV_MOCK.data.settings.trial_block_reason = "";
+ DEV_MOCK.data.referral = {
+ ...(DEV_MOCK.data.referral || {}),
+ welcome_bonus_days: 3,
+ welcome_bonus_without_telegram_enabled: false,
welcome_bonus_requires_telegram: true,
welcome_bonus_block_reason: "telegram_required",
};