desktop_app/app/controllers/main_controller.py
2025-09-26 04:23:37 +03:00

57 lines
2.2 KiB
Python

from PySide6.QtWidgets import QStackedWidget
from app.ui.views.login_view import LoginView
from app.ui.views.yobble_home_view import YobbleHomeView # <--- Изменено
from typing import Optional
from threading import Thread
import time # эмуляция задержки от сервера
from app.core.database import get_last_login, get_session, set_last_login
class MainController(QStackedWidget):
def __init__(self):
super().__init__()
self.login_view: Optional[LoginView] = None
self.yobble_home_view: Optional[YobbleHomeView] = None # <--- Изменено
self.init_app()
def init_app(self):
"""Проверяет наличие сессии для автологина."""
last_login = get_last_login()
if last_login:
session = get_session(last_login)
if session:
self.handle_login_success(last_login)
return
self.show_login()
def show_login(self):
self.login_view = LoginView(on_login=self.handle_login_success)
self.addWidget(self.login_view)
self.setCurrentWidget(self.login_view)
self.login_view.show()
def handle_login_success(self, username: str):
"""Обрабатывает успешный вход в систему."""
set_last_login(username)
if self.login_view:
self.login_view.close()
self.removeWidget(self.login_view)
self.login_view = None
# Отображаем новый главный экран
self.yobble_home_view = YobbleHomeView(username=username)
self.addWidget(self.yobble_home_view)
self.setCurrentWidget(self.yobble_home_view)
self.yobble_home_view.show()
# 🔹 Оставляем фоновое обновление на будущее
Thread(target=self.update_data_from_server, args=(username,), daemon=True).start()
def update_data_from_server(self, username: str):
# Эмуляция запроса
time.sleep(2)
print(f"[Sync] Обновляем данные для пользователя: {username}")
# Здесь будет логика обновления данных для YobbleHome