fix: status tiles show device name instead of blank — use deviceName not name
buildStatusTileHTML received session.name (undefined for status entries) instead of session.deviceName. Offline/unreachable tiles showed blank. Fixed all 4 call sites in renderGrid to pass session.deviceName. Updated two existing tests to use deviceName (not name) in status entry objects — reflecting the real federation data shape.
This commit is contained in:
@@ -760,8 +760,8 @@ function renderGrid(sessions) {
|
|||||||
// Build status tiles for auth_failed/unreachable sessions even when no regular sessions exist
|
// Build status tiles for auth_failed/unreachable sessions even when no regular sessions exist
|
||||||
var statusTilesHtml = '';
|
var statusTilesHtml = '';
|
||||||
(sessions || []).forEach(function(session) {
|
(sessions || []).forEach(function(session) {
|
||||||
if (session.status === 'auth_failed') statusTilesHtml += buildStatusTileHTML(session.name, 'Auth required', 'auth');
|
if (session.status === 'auth_failed') statusTilesHtml += buildStatusTileHTML(session.deviceName, 'Auth required', 'auth');
|
||||||
else if (session.status === 'unreachable') statusTilesHtml += buildStatusTileHTML(session.name, 'Offline', 'offline');
|
else if (session.status === 'unreachable') statusTilesHtml += buildStatusTileHTML(session.deviceName, 'Offline', 'offline');
|
||||||
});
|
});
|
||||||
if (grid) grid.innerHTML = statusTilesHtml;
|
if (grid) grid.innerHTML = statusTilesHtml;
|
||||||
// Only show empty-state when there are truly no tiles at all
|
// Only show empty-state when there are truly no tiles at all
|
||||||
@@ -803,8 +803,8 @@ function renderGrid(sessions) {
|
|||||||
// Append status tiles for auth_failed and unreachable sessions
|
// Append status tiles for auth_failed and unreachable sessions
|
||||||
var statusTilesHtml = '';
|
var statusTilesHtml = '';
|
||||||
(sessions || []).forEach(function(session) {
|
(sessions || []).forEach(function(session) {
|
||||||
if (session.status === 'auth_failed') statusTilesHtml += buildStatusTileHTML(session.name, 'Auth required', 'auth');
|
if (session.status === 'auth_failed') statusTilesHtml += buildStatusTileHTML(session.deviceName, 'Auth required', 'auth');
|
||||||
else if (session.status === 'unreachable') statusTilesHtml += buildStatusTileHTML(session.name, 'Offline', 'offline');
|
else if (session.status === 'unreachable') statusTilesHtml += buildStatusTileHTML(session.deviceName, 'Offline', 'offline');
|
||||||
});
|
});
|
||||||
if (grid) grid.innerHTML = html + statusTilesHtml;
|
if (grid) grid.innerHTML = html + statusTilesHtml;
|
||||||
|
|
||||||
|
|||||||
@@ -626,7 +626,7 @@ test('renderGrid includes auth tile HTML when a session has auth_failed status',
|
|||||||
|
|
||||||
const sessions = [
|
const sessions = [
|
||||||
{ name: 'my-session', snapshot: 'hello' },
|
{ name: 'my-session', snapshot: 'hello' },
|
||||||
{ name: 'Workstation', status: 'auth_failed' },
|
{ deviceName: 'Workstation', status: 'auth_failed' },
|
||||||
];
|
];
|
||||||
app.renderGrid(sessions);
|
app.renderGrid(sessions);
|
||||||
|
|
||||||
@@ -651,7 +651,7 @@ test('renderGrid includes offline tile HTML when a session has unreachable statu
|
|||||||
|
|
||||||
const sessions = [
|
const sessions = [
|
||||||
{ name: 'my-session', snapshot: 'hello' },
|
{ name: 'my-session', snapshot: 'hello' },
|
||||||
{ name: 'Dev Server', status: 'unreachable' },
|
{ deviceName: 'Dev Server', status: 'unreachable' },
|
||||||
];
|
];
|
||||||
app.renderGrid(sessions);
|
app.renderGrid(sessions);
|
||||||
|
|
||||||
@@ -4730,3 +4730,31 @@ test('updateFaviconBadge does not show activity for only-hidden sessions with be
|
|||||||
app._setServerSettings(null);
|
app._setServerSettings(null);
|
||||||
app._setCurrentSessions([]);
|
app._setCurrentSessions([]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// --- renderGrid: status tiles use deviceName not name ---
|
||||||
|
|
||||||
|
test('renderGrid status tiles use session.deviceName not session.name for offline devices', () => {
|
||||||
|
// Status entries (unreachable/auth_failed) have deviceName but no name.
|
||||||
|
// buildStatusTileHTML must receive session.deviceName so the tile shows the device label.
|
||||||
|
const grid = { innerHTML: '' };
|
||||||
|
const emptyState = { style: {}, classList: { add() {}, remove() {} } };
|
||||||
|
const origGetById = globalThis.document.getElementById;
|
||||||
|
globalThis.document.getElementById = (id) => {
|
||||||
|
if (id === 'session-grid') return grid;
|
||||||
|
if (id === 'empty-state') return emptyState;
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
|
||||||
|
// An unreachable device: has deviceName but no name (as federation returns it)
|
||||||
|
app.renderGrid([{ status: 'unreachable', deviceName: 'my-server', remoteId: 1 }]);
|
||||||
|
|
||||||
|
assert.ok(grid.innerHTML.includes('my-server'),
|
||||||
|
'offline status tile HTML must include the deviceName "my-server"');
|
||||||
|
|
||||||
|
// Also verify an auth_failed device shows its deviceName
|
||||||
|
app.renderGrid([{ status: 'auth_failed', deviceName: 'auth-box', remoteId: 2 }]);
|
||||||
|
assert.ok(grid.innerHTML.includes('auth-box'),
|
||||||
|
'auth_failed status tile HTML must include the deviceName "auth-box"');
|
||||||
|
|
||||||
|
globalThis.document.getElementById = origGetById;
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user