feat(miniapp): кабинет как полноценный Telegram Mini App (тема, BackButton, защита закрытия, хаптик) + бот: постоянная кнопка-меню Кабинет + привязка tg клиента

This commit is contained in:
wasrusgen 2026-06-03 19:21:29 +03:00
parent 4d492bf1d4
commit 4dccf23849

View File

@ -437,6 +437,9 @@ function go(n){
if(n===3)renderDocs();
if(n===4)renderAnalysis();
if(n===5)renderSpecPane();
// Telegram: нативная «Назад» + лёгкий хаптик
const _tg=window.__tg;
if(_tg){try{if(_tg.BackButton){if(n&&n!==1)_tg.BackButton.show();else _tg.BackButton.hide();}if(_tg.HapticFeedback)_tg.HapticFeedback.selectionChanged();}catch(e){}}
// Док «Спросить Елену» — только на этапах 3-5
const dock=document.getElementById("askDock");
if(dock){
@ -568,9 +571,20 @@ async function askElena(){
}
async function init(){
// Telegram Mini App: развернуть на весь экран + токен из start_param если нет в URL
// ── Telegram Mini App: полноценная интеграция ──
const tg=window.Telegram&&window.Telegram.WebApp;
if(tg){try{tg.ready();tg.expand();const sp=tg.initDataUnsafe&&tg.initDataUnsafe.start_param;if(sp&&!token){token=sp;localStorage.setItem("cab_token",token);}}catch(e){}}
if(tg){try{
tg.ready();tg.expand();
const sp=tg.initDataUnsafe&&tg.initDataUnsafe.start_param;if(sp&&!token){token=sp;localStorage.setItem("cab_token",token);}
// Тема под бренд: тёмная шапка, светлый фон
if(tg.setHeaderColor)tg.setHeaderColor('#0F0F1A');
if(tg.setBackgroundColor)tg.setBackgroundColor('#F5F6F8');
// Защита от случайного смахивания вниз (не терять диалог)
if(tg.enableClosingConfirmation)tg.enableClosingConfirmation();
// Нативная кнопка «Назад» Telegram → к разговору с Еленой
if(tg.BackButton){tg.BackButton.onClick(()=>go(1));}
window.__tg=tg;
}catch(e){}}
if(token){const r=await fetch(`${API}/api/project/${token}`);if(r.ok){state=await r.json();renderAll();
fillProfile();
// Если профиль не заполнен — открыть вкладку Профиль