aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/src/meshbay_node/ui
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/ui')
-rw-r--r--packages/meshbay-node/src/meshbay_node/ui/app.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/ui/app.py b/packages/meshbay-node/src/meshbay_node/ui/app.py
index de2542e..22b5afb 100644
--- a/packages/meshbay-node/src/meshbay_node/ui/app.py
+++ b/packages/meshbay-node/src/meshbay_node/ui/app.py
@@ -437,6 +437,34 @@ def create_ui_app(state: dict) -> FastAPI:
"current_dir": progress.current_dir,
}
+ @app.get("/api/index-status")
+ async def index_status_all():
+ """
+ Every group's indexing at once, for the client's progress band — which
+ is on screen whatever page the operator is on, so it cannot ask per
+ group. Names roots, like `current_dir` above: loopback only, the
+ operator's own screen. Reads state["indexers"] for the same reason.
+ """
+ config = state.get("config")
+ names = {g.id: g.name for g in config.groups} if config else {}
+ groups = []
+ for gid, indexer in list(state.get("indexers", {}).items()):
+ p = indexer.progress
+ groups.append({
+ "group_id": gid,
+ "group_name": names.get(gid, gid[:8]),
+ "scanning": p.scanning,
+ "kind": p.kind,
+ "root": p.root,
+ "current_dir": p.current_dir,
+ "scanned_bytes": p.scanned_bytes,
+ "total_bytes": p.total_bytes,
+ "files_done": p.files_done,
+ "files_total": p.files_total,
+ "queued": list(p.queued),
+ })
+ return {"groups": groups}
+
# ── Enabled apps (operator only, localhost) ────────────────────────────
#
# Same loopback shape as member-upload: the Create Group wizard sets this