diff --git a/src/meshcore_hub/api/routes/nodes.py b/src/meshcore_hub/api/routes/nodes.py index 5002104..9725f28 100644 --- a/src/meshcore_hub/api/routes/nodes.py +++ b/src/meshcore_hub/api/routes/nodes.py @@ -22,6 +22,7 @@ def _get_adopted_by(node: Node) -> Optional[AdoptedByUser]: user_id=profile.user_id, name=profile.name, callsign=profile.callsign, + profile_id=profile.id, ) return None diff --git a/src/meshcore_hub/common/schemas/nodes.py b/src/meshcore_hub/common/schemas/nodes.py index 3f0ef87..7952b9b 100644 --- a/src/meshcore_hub/common/schemas/nodes.py +++ b/src/meshcore_hub/common/schemas/nodes.py @@ -78,6 +78,7 @@ class AdoptedByUser(BaseModel): user_id: str = Field(..., description="OIDC subject identifier") name: Optional[str] = Field(default=None, description="User display name") callsign: Optional[str] = Field(default=None, description="Amateur radio callsign") + profile_id: str = Field(..., description="User profile UUID for profile links") class Config: from_attributes = True diff --git a/src/meshcore_hub/web/static/js/spa/pages/node-detail.js b/src/meshcore_hub/web/static/js/spa/pages/node-detail.js index 5fca300..7857fe9 100644 --- a/src/meshcore_hub/web/static/js/spa/pages/node-detail.js +++ b/src/meshcore_hub/web/static/js/spa/pages/node-detail.js @@ -303,7 +303,10 @@ function renderAdoptionSection(node, config) { return html`

${t('nodes.ownership')}

-

${t('nodes.adopted_by', { name: ownerName })}

+

+ ${t('nodes.adopted_by_prefix')} + ${ownerName} +

`; } @@ -323,7 +326,10 @@ function renderAdoptionSection(node, config) {

${t('nodes.ownership')}

-

${t('nodes.adopted_by', { name: ownerName })}

+

+ ${t('nodes.adopted_by_prefix')} + ${ownerName} +

${releaseBtnHtml}
diff --git a/src/meshcore_hub/web/static/locales/en.json b/src/meshcore_hub/web/static/locales/en.json index 4c5a94e..5ae02b4 100644 --- a/src/meshcore_hub/web/static/locales/en.json +++ b/src/meshcore_hub/web/static/locales/en.json @@ -155,6 +155,7 @@ "adopt": "Adopt", "release": "Release", "adopted_by": "Adopted by {{name}}", + "adopted_by_prefix": "Adopted by", "not_adopted": "This node has not been adopted by any operator.", "adopt_success": "Node adopted successfully", "release_success": "Node released successfully",