diff --git a/app/routers/dashboard.py b/app/routers/dashboard.py index 6abd441..514d604 100644 --- a/app/routers/dashboard.py +++ b/app/routers/dashboard.py @@ -69,7 +69,41 @@ def _sidebar_data(request: Request, repos: list[dict]) -> dict: ws_cookie = request.cookies.get("flowdeck_workspace", "") active_ws_name = "Workspace" workspace_pages = [] - if ws_cookie: + gitea_workspace = False + + if ws_cookie and ws_cookie.startswith("gitea:"): + # Gitea workspace: fetch repo tree for sidebar + parts = ws_cookie.split(":", 2) + if len(parts) >= 3: + gitea_owner = parts[1] + gitea_repo = parts[2] + active_ws_name = f"{gitea_owner}/{gitea_repo}" + gitea_workspace = True + # Fetch root tree from Gitea API (use admin token as fallback) + try: + from app.services.gitea_client import get_user_gitea_client, GiteaClient + gitea = get_user_gitea_client(request) or GiteaClient() + import asyncio + tree_items = asyncio.run(gitea.get_repo_contents(gitea_owner, gitea_repo)) + for item in tree_items: + is_folder = item.get("type") == "dir" + workspace_pages.append({ + "id": item.get("path", ""), + "name": item.get("name", ""), + "icon": "πŸ“" if is_folder else "πŸ“„", + "url": f"javascript:void(0)", + "active": False, + "indent": 0, + "depth": 0, + "has_children": is_folder, + "children": [], + "_gitea_path": item.get("path", ""), + "_gitea_type": "folder" if is_folder else "file", + "_gitea_sha": item.get("sha", ""), + }) + except Exception: + pass + elif ws_cookie: workspace_pages = _load_workspace_pages(ws_cookie) try: with get_conn() as conn: @@ -83,6 +117,7 @@ def _sidebar_data(request: Request, repos: list[dict]) -> dict: "workspace_name": ws, "workspace_initial": initial, "active_ws_name": active_ws_name, "workspace_pages": workspace_pages, + "gitea_workspace": gitea_workspace, "current_page": "Dashboard", "last_edited": "now", "recent_pages": recent_pages, "private_pages": [], diff --git a/app/templates/base.html b/app/templates/base.html index a26c61a..4a45e43 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -28,7 +28,10 @@ @contextmenu.prevent="showContextMenu($event, '{{ page.id }}', '{{ page.name }}')" data-page-id="{{ page.id }}" data-page-depth="{{ depth }}" - data-has-children="{{ 'true' if page.has_children else 'false' }}"> + data-has-children="{{ 'true' if page.has_children else 'false' }}" + {% if page._gitea_path %}data-gitea-path="{{ page._gitea_path }}"{% endif %} + {% if page._gitea_type %}data-gitea-type="{{ page._gitea_type }}"{% endif %} + {% if page._gitea_sha %}data-gitea-sha="{{ page._gitea_sha }}"{% endif %}> {# Toggle chevron β€” only visible for items with children #} {% if page.has_children %} + @@ -20,16 +20,7 @@ {% block content %} -
- -
-
πŸ“ GITEA REPO
+
+ + - -
Loading…
- - -