50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
import flet as ft
|
|
from pages.auth.auth import Auth
|
|
from pages.home.dashboard import Dashboard
|
|
|
|
import os
|
|
os.environ["FLET_SECRET_KEY"] = os.urandom(12).hex()
|
|
|
|
def main(page: ft.Page):
|
|
page.title = "Solar DB"
|
|
page.theme_mode = ft.ThemeMode.LIGHT
|
|
page.theme = ft.Theme(color_scheme=ft.ColorScheme(primary=ft.Colors.BLUE))
|
|
page.vertical_alignment = ft.MainAxisAlignment.CENTER
|
|
page.horizontal_alignment = ft.CrossAxisAlignment.CENTER
|
|
page.padding = 0
|
|
|
|
def route_change(route):
|
|
page.controls.clear()
|
|
|
|
if route == "/auth":
|
|
if page.client_storage.get("is_authenticated"):
|
|
page.go("/dashboard")
|
|
return
|
|
login = Auth(page)
|
|
page.add(login.build())
|
|
page.update()
|
|
return
|
|
|
|
if route in ("/dashboard", "/", None):
|
|
if not page.client_storage.get("is_authenticated"):
|
|
page.go("/auth")
|
|
return
|
|
dashboard = Dashboard(page)
|
|
page.add(dashboard.build())
|
|
page.update()
|
|
return
|
|
|
|
# 5) Fallback 404
|
|
page.add(ft.Text("404: Page not found"))
|
|
page.update()
|
|
|
|
page.on_route_change = lambda _: route_change(page.route)
|
|
page.go("/auth")
|
|
|
|
ft.app(
|
|
target=main,
|
|
assets_dir="assets",
|
|
upload_dir="uploads",
|
|
view=ft.WEB_BROWSER,
|
|
port=5000
|
|
) |