fix: chargement tree sidebar 100% client-side (pas de asyncio.run)
FlowDeck CI / test (push) Failing after 4s
FlowDeck CI / docker (push) Has been skipped

Avant: _sidebar_data() utilisait asyncio.run() → RuntimeWarning + 302 redirects
Après: gitea_workspace.html appelle loadSidebarTree() → fetch API → injecte dans #sidebar-workspace-items

- base.html: ajout id='sidebar-workspace-items' sur le <ul> workspace
- dashboard.py: _sidebar_data() ne fait plus de fetch serveur, juste passe owner/repo
This commit is contained in:
2026-07-13 16:43:34 -04:00
parent e78ca4b775
commit 6b000d892b
3 changed files with 29 additions and 26 deletions
+2 -25
View File
@@ -72,37 +72,14 @@ def _sidebar_data(request: Request, repos: list[dict]) -> dict:
gitea_workspace = False
if ws_cookie and ws_cookie.startswith("gitea:"):
# Gitea workspace: fetch repo tree for sidebar
# Gitea workspace: set owner/repo for client-side tree loading
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
workspace_pages = [] # loaded client-side
elif ws_cookie:
workspace_pages = _load_workspace_pages(ws_cookie)
try: