This commit is contained in:
2026-04-06 15:40:06 +05:00
parent 10fb240dcd
commit 7435992e15
21 changed files with 993 additions and 150 deletions

View File

@@ -1,5 +1,6 @@
import flet as ft
from view import resolve_view, PUBLIC_ROUTES, PROTECTED_PREFIXES
import theme_manager as tm
async def _redirect_to_login(page: ft.Page):
@@ -42,6 +43,10 @@ async def _handle_route_change(page: ft.Page, e: ft.RouteChangeEvent):
views = resolve_view(page, route)
# Применяем сохранённые настройки пользователя перед построением виджетов
tm.apply_scale(page)
tm.apply_theme(page)
# Неизвестный маршрут → на страницу пользователя
if views is None:
await page.push_route(f"/user/{url_key}")
@@ -62,4 +67,17 @@ def setup_router(page: ft.Page):
async def _on_route_change(e: ft.RouteChangeEvent):
await _handle_route_change(page, e)
def _on_resize(e):
"""Пересчитать масштаб при изменении размера окна/повороте телефона,
но только если пользователь не менял его вручную (нет сохранён. префа)."""
uid = tm._get_uid(page)
if uid not in tm._user_prefs:
new_scale = tm.auto_scale(page)
if abs(new_scale - (page.session.store.get("ds_scale_last") or 0)) > 0.05:
page.session.store.set("ds_scale_last", new_scale)
tm.apply_scale(page, new_scale)
# перезагрузим текущий маршрут чтобы виджеты пересоздались
page.go(page.route)
page.on_route_change = _on_route_change
page.on_resize = _on_resize