fix: local sessions 404 — use remoteId (not deviceId) for routing attribute
buildTileHTML and buildSidebarHTML were using session.deviceId for the data-remote-id attribute. Since deviceId is now non-null for ALL sessions (including local), openSession() routed local sessions through federation endpoints which returned 404. Fixed to use session.remoteId which is null for local sessions, preserving the local vs federation routing distinction.
This commit is contained in:
+10
-5
@@ -531,9 +531,12 @@ function buildTileHTML(session, index, mobile) {
|
|||||||
}
|
}
|
||||||
const lastLines = allLines.slice(_lineCount).join('\n');
|
const lastLines = allLines.slice(_lineCount).join('\n');
|
||||||
|
|
||||||
// Prefer deviceId (device_id string from backend) over legacy integer remoteId
|
// Use remoteId (null for local sessions, device_id string for remote sessions) so
|
||||||
var _effRemoteId = session.deviceId != null ? session.deviceId : session.remoteId;
|
// openSession() can correctly distinguish local vs federation routing.
|
||||||
const remoteIdAttr = _effRemoteId != null ? ` data-remote-id="${escapeHtml(_effRemoteId)}"` : '';
|
// deviceId is the local device's own UUID for local sessions — using it here would
|
||||||
|
// cause openSession() to route local sessions through /api/federation/{deviceId}/…
|
||||||
|
// which returns 404 because the local device is not a registered remote instance.
|
||||||
|
const remoteIdAttr = session.remoteId != null ? ` data-remote-id="${escapeHtml(String(session.remoteId))}"` : '';
|
||||||
return (
|
return (
|
||||||
`<article class="${classes}" data-session="${escapedName}" data-session-key="${escapeHtml(session.sessionKey || name)}"${remoteIdAttr} tabindex="0" role="listitem" aria-label="${escapedName}">` +
|
`<article class="${classes}" data-session="${escapedName}" data-session-key="${escapeHtml(session.sessionKey || name)}"${remoteIdAttr} tabindex="0" role="listitem" aria-label="${escapedName}">` +
|
||||||
`<div class="tile-header">` +
|
`<div class="tile-header">` +
|
||||||
@@ -588,8 +591,10 @@ function buildSidebarHTML(session, currentSession) {
|
|||||||
}
|
}
|
||||||
const lastLines = allLines.slice(-20).join('\n');
|
const lastLines = allLines.slice(-20).join('\n');
|
||||||
|
|
||||||
// Prefer deviceId (device_id string from backend) over legacy integer remoteId
|
// Use remoteId (null for local sessions, device_id string for remote sessions).
|
||||||
var _sidebarEffRemoteId = session.deviceId != null ? session.deviceId : (session.remoteId != null ? session.remoteId : '');
|
// Do NOT use deviceId here: for local sessions deviceId is the local machine's UUID
|
||||||
|
// which is not a registered remote_instance, so routing through federation would 404.
|
||||||
|
var _sidebarEffRemoteId = session.remoteId != null ? String(session.remoteId) : '';
|
||||||
return (
|
return (
|
||||||
`<article class="${classes}" data-session="${escapedName}" data-remote-id="${escapeHtml(_sidebarEffRemoteId)}" tabindex="0" role="listitem">` +
|
`<article class="${classes}" data-session="${escapedName}" data-remote-id="${escapeHtml(_sidebarEffRemoteId)}" tabindex="0" role="listitem">` +
|
||||||
`<div class="sidebar-item-header">` +
|
`<div class="sidebar-item-header">` +
|
||||||
|
|||||||
Reference in New Issue
Block a user