aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/src/meshbay_hub/static
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static')
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/group-settings.js16
1 files changed, 11 insertions, 5 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/group-settings.js b/packages/meshbay-hub/src/meshbay_hub/static/group-settings.js
index f8b4aa5..ce36a40 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/group-settings.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/group-settings.js
@@ -88,6 +88,14 @@ function SharedDirectoriesTable({ roots, groupId, transport, signFn,
const displayRoots = serverRoots.map(r =>
optimistic[r.name] ? { ...r, ...optimistic[r.name] } : r);
+ // Paths are the operator's own view and do not cross MNP: the roots table
+ // rides in the index payload, which every member receives, and it tells them
+ // what exists and whether it is readable — never where on the operator's
+ // disk it lives. So the column appears when the answer is actually
+ // available (the loopback API, which is already this machine only) and is
+ // left out otherwise, rather than printing a row of blanks.
+ const hasPaths = displayRoots.some((r) => r.path);
+
// Which door a change goes through. MNP first: it is the only one that
// exists for an operator on the web, and it is signed, which the loopback
// API is not (it is authorized by being on localhost with the run token).
@@ -261,7 +269,7 @@ function SharedDirectoriesTable({ roots, groupId, transport, signFn,
<thead>
<tr>
<th class="sdt-col-dir">${t('node.directory')}</th>
- <th class="sdt-col-path">${t('node.root_path')}</th>
+ ${hasPaths && html`<th class="sdt-col-path">${t('node.root_path')}</th>`}
${canEdit && html`<th class="sdt-col-toggle">${t('node.root_rw')}</th>`}
${canEdit && !isLocal && html`<th class="sdt-col-toggle">${t('node.removable')}</th>`}
<th class="sdt-col-actions"></th>
@@ -283,10 +291,8 @@ function SharedDirectoriesTable({ roots, groupId, transport, signFn,
${!isLocal && r.available === false && !r.ejected && html`
<span class="node-root-badge node-root-badge-warn">${t('node.unavailable')}</span>`}
</td>
- ${/* Two roots can never share a name, so the name is the identity —
- but it is the *basename*, and two libraries under different
- parents look identical without this. */''}
- <td class="sdt-col-path" title=${r.path || ''}>${r.path || ''}</td>
+ ${hasPaths && html`
+ <td class="sdt-col-path" title=${r.path || ''}>${r.path || ''}</td>`}
${canEdit && html`
<td class="sdt-col-toggle">
<${ToggleSwitch} checked=${!!r.writable} disabled=${busy || !!r.ejected}