mirror of
https://github.com/wasrusgen/zashita-brandbook.git
synced 2026-06-03 17:44:47 +00:00
feat: Telegram MiniApp - user auth, BackButton, MainButton, haptic, tg_id saved
This commit is contained in:
parent
2bd9ec9621
commit
738dfb28dd
72
mockup.html
72
mockup.html
@ -6,16 +6,80 @@
|
|||||||
<script>
|
<script>
|
||||||
(function(){
|
(function(){
|
||||||
var tg = window.Telegram && window.Telegram.WebApp;
|
var tg = window.Telegram && window.Telegram.WebApp;
|
||||||
if(tg){
|
if (!tg) return;
|
||||||
|
|
||||||
tg.ready();
|
tg.ready();
|
||||||
tg.expand();
|
tg.expand();
|
||||||
document.documentElement.classList.add('tma');
|
document.documentElement.classList.add('tma');
|
||||||
// Нативная кнопка «назад» TG
|
|
||||||
|
// Тема из Telegram
|
||||||
|
var colorScheme = tg.colorScheme; // 'dark' | 'light'
|
||||||
|
if (colorScheme === 'dark') document.documentElement.classList.add('tg-dark');
|
||||||
|
|
||||||
|
// Данные пользователя из Telegram
|
||||||
|
var tgUser = tg.initDataUnsafe && tg.initDataUnsafe.user;
|
||||||
|
if (tgUser) {
|
||||||
|
window._tgUser = tgUser;
|
||||||
|
// Сохраняем в localStorage для использования в напоминаниях и авторизации
|
||||||
|
try {
|
||||||
|
var b2b = JSON.parse(localStorage.getItem('zashita_b2b') || '{}');
|
||||||
|
if (!b2b.name && tgUser.first_name) b2b.name = tgUser.first_name + (tgUser.last_name ? ' ' + tgUser.last_name : '');
|
||||||
|
if (!b2b.telegram && tgUser.username) b2b.telegram = '@' + tgUser.username;
|
||||||
|
b2b.tg_id = tgUser.id;
|
||||||
|
b2b.tg_lang = tgUser.language_code;
|
||||||
|
localStorage.setItem('zashita_b2b', JSON.stringify(b2b));
|
||||||
|
} catch(e){}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Нативная кнопка «назад» — управляет навигацией
|
||||||
tg.BackButton.onClick(function(){
|
tg.BackButton.onClick(function(){
|
||||||
var screens = document.querySelectorAll('.screen.on');
|
var screens = document.querySelectorAll('.screen.on');
|
||||||
if(screens.length && screens[0].id !== 'start'){ window.go('start'); }
|
if (screens.length && screens[0].id !== 'start') {
|
||||||
});
|
window.go('start');
|
||||||
|
} else {
|
||||||
|
tg.BackButton.hide();
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Показываем/скрываем BackButton при навигации
|
||||||
|
var _origGo = window.go;
|
||||||
|
window.go = function(id) {
|
||||||
|
if (_origGo) _origGo(id);
|
||||||
|
if (id === 'start') tg.BackButton.hide();
|
||||||
|
else tg.BackButton.show();
|
||||||
|
};
|
||||||
|
|
||||||
|
// MainButton — основное действие (меняется контекстно)
|
||||||
|
window._tgSetMainBtn = function(text, color, fn) {
|
||||||
|
tg.MainButton.setParams({ text: text, color: color || '#B91C1C', text_color: '#FFFFFF' });
|
||||||
|
tg.MainButton.onClick(fn);
|
||||||
|
tg.MainButton.show();
|
||||||
|
};
|
||||||
|
window._tgHideMainBtn = function() { tg.MainButton.hide(); };
|
||||||
|
|
||||||
|
// Хаптик при важных действиях
|
||||||
|
window._tgHaptic = function(type) {
|
||||||
|
if (tg.HapticFeedback) {
|
||||||
|
if (type === 'success') tg.HapticFeedback.notificationOccurred('success');
|
||||||
|
else if (type === 'error') tg.HapticFeedback.notificationOccurred('error');
|
||||||
|
else tg.HapticFeedback.impactOccurred('medium');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Нативный алерт вместо toast в TG
|
||||||
|
var _origToast = window.toast;
|
||||||
|
window.toast = function(msg) {
|
||||||
|
if (tg && tg.showPopup) {
|
||||||
|
// Только важные сообщения показываем как popup, остальные — тихо
|
||||||
|
if (msg && (msg.includes('✅') || msg.includes('❌') || msg.includes('⚠️'))) {
|
||||||
|
tg.showAlert(msg.replace(/[✅❌⚠️🔔📋📂]/g, '').trim());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (_origToast) _origToast(msg);
|
||||||
|
};
|
||||||
|
|
||||||
|
console.log('[TMA] @wasrusgen1_protect_bot · user:', tgUser && tgUser.id);
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
<link rel="stylesheet" href="tokens.css">
|
<link rel="stylesheet" href="tokens.css">
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user