diff --git a/server.py b/server.py index 01aac81..dca9a50 100644 --- a/server.py +++ b/server.py @@ -513,10 +513,18 @@ async def ui_registry_page(request: Request): rows = "" for name, asset in sorted(assets.items(), key=lambda x: x[1].get("created_at", ""), reverse=True): hash_short = asset.get("content_hash", "")[:16] + "..." + owner = asset.get("owner", "unknown") + asset_type = asset.get("asset_type", "") + type_color = "bg-blue-600" if asset_type == "image" else "bg-purple-600" if asset_type == "video" else "bg-gray-600" rows += f''' -
{hash_short}{webfinger}No asset named "{name}" exists.
+ + ''' + return HTMLResponse(base_html("Asset Not Found", content, username)) + + asset = assets[name] + owner = asset.get("owner", "unknown") + content_hash = asset.get("content_hash", "") + asset_type = asset.get("asset_type", "") + tags = asset.get("tags", []) + description = asset.get("description", "") + origin = asset.get("origin", {}) + created_at = asset.get("created_at", "")[:10] + + type_color = "bg-blue-600" if asset_type == "image" else "bg-purple-600" if asset_type == "video" else "bg-gray-600" + + # Origin display + origin_html = "" + if origin: + origin_type = origin.get("type", "unknown") + if origin_type == "self": + origin_html = 'Original content by author' + elif origin_type == "external": + origin_url = origin.get("url", "") + origin_note = origin.get("note", "") + origin_html = f''' + {origin_url} + ''' + if origin_note: + origin_html += f'{origin_note}
' + + # Tags display + tags_html = "" + if tags: + tags_html = " ".join([f'{t}' for t in tags]) + else: + tags_html = 'No tags' + + content = f''' + + +{description if description else 'No description'}
++ Object URL: https://{DOMAIN}/objects/{content_hash} +
+No user named "{username}" exists.
+ + ''' + return HTMLResponse(base_html("User Not Found", content, current_user)) + + # Get user's assets + registry = load_registry() + all_assets = registry.get("assets", {}) + user_assets = {name: asset for name, asset in all_assets.items() if asset.get("owner") == username} + + # Get user's activities + all_activities = load_activities() + actor_id = f"https://{DOMAIN}/users/{username}" + user_activities = [a for a in all_activities if a.get("actor_id") == actor_id] + + webfinger = f"@{username}@{DOMAIN}" + + # Assets table + if user_assets: + rows = "" + for name, asset in sorted(user_assets.items(), key=lambda x: x[1].get("created_at", ""), reverse=True): + hash_short = asset.get("content_hash", "")[:16] + "..." + asset_type = asset.get("asset_type", "") + type_color = "bg-blue-600" if asset_type == "image" else "bg-purple-600" if asset_type == "video" else "bg-gray-600" + rows += f''' +{hash_short}| Name | +Type | +Content Hash | +Tags | +
|---|
No published assets yet.
' + + content = f''' + + +{webfinger}
+ + Actor URL: https://{DOMAIN}/users/{username} +
++ Outbox: https://{DOMAIN}/users/{username}/outbox +
+