fix: role chooser игнорировал hash #tgWebAppData от Telegram

При открытии MiniApp Telegram ставит location.hash = '#tgWebAppData=...'.
Старая проверка !location.hash считала это занятым роутом и пропускала
chooser. Теперь проверяем только наши роуты #/podbor / #/clients и т.п.

Cache bust v=20260513o.
This commit is contained in:
wasrusgen 2026-05-13 10:12:30 +03:00
parent b352c4927f
commit c9b78d9e5b
2 changed files with 16 additions and 12 deletions

View File

@ -725,8 +725,12 @@ async function init() {
window.addEventListener("hashchange", routeByHash);
const qp = new URLSearchParams(window.location.search);
// Telegram ставит #tgWebAppData=... в hash при открытии — это НЕ наш роут.
// Считаем «есть навигационный hash» только если он начинается с #/
const hasAppRoute = location.hash.startsWith("#/");
const goScreen = qp.get("go");
if (goScreen && !location.hash) {
if (goScreen && !hasAppRoute) {
const map = {
podbor: "#/podbor",
clients: "#/clients",
@ -740,7 +744,7 @@ async function init() {
// Если нет ?role= в URL — показываем выбор роли (универсально для всех клиентов)
const explicitRole = qp.get("role");
if (!explicitRole && !location.hash) {
if (!explicitRole && !hasAppRoute) {
renderRoleChooser();
hideSplash();
return;

View File

@ -12,8 +12,8 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Geist:wght@400;500;600&family=Newsreader:ital,wght@0,400..600;1,400..600&family=Instrument+Serif:ital@0;1&family=JetBrains+Mono:wght@400;500&display=swap">
<script src="https://telegram.org/js/telegram-web-app.js"></script>
<link rel="stylesheet" href="assets/styles.css?v=20260513n">
<link rel="stylesheet" href="assets/podbor.css?v=20260513n">
<link rel="stylesheet" href="assets/styles.css?v=20260513o">
<link rel="stylesheet" href="assets/podbor.css?v=20260513o">
</head>
<body>
<!-- Splash — за пределами #app, render-функции его не смывают -->
@ -34,13 +34,13 @@
</div>
</div>
<main id="app"></main>
<script src="assets/icons.js?v=20260513n"></script>
<script src="assets/podbor.config.js?v=20260513n"></script>
<script src="assets/podbor.picts.js?v=20260513n"></script>
<script src="assets/podbor.js?v=20260513n"></script>
<script src="assets/clients.js?v=20260513n"></script>
<script src="assets/measurements.js?v=20260513n"></script>
<script src="assets/request.js?v=20260513n"></script>
<script src="assets/app.js?v=20260513n"></script>
<script src="assets/icons.js?v=20260513o"></script>
<script src="assets/podbor.config.js?v=20260513o"></script>
<script src="assets/podbor.picts.js?v=20260513o"></script>
<script src="assets/podbor.js?v=20260513o"></script>
<script src="assets/clients.js?v=20260513o"></script>
<script src="assets/measurements.js?v=20260513o"></script>
<script src="assets/request.js?v=20260513o"></script>
<script src="assets/app.js?v=20260513o"></script>
</body>
</html>