57 lines
2.2 KiB
Python
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
|