livedesk 0.1.262 → 0.1.263
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/hub/src/live-desk-update.js +35 -7
- package/package.json +1 -1
|
@@ -188,8 +188,16 @@ export function createLiveDeskUpdateManager({
|
|
|
188
188
|
};
|
|
189
189
|
|
|
190
190
|
const getStatus = () => {
|
|
191
|
-
const
|
|
191
|
+
const managerUpdateAvailable = !!latestRelease
|
|
192
192
|
&& compareVersions(latestRelease.latestManagerVersion, currentManagerVersion) > 0;
|
|
193
|
+
const clientDevices = connectedDevices(remoteHub);
|
|
194
|
+
const outdatedClientDevices = latestRelease
|
|
195
|
+
? clientDevices.filter(device => !isVersionAtLeast(device.agentVersion, latestRelease.latestClientVersion))
|
|
196
|
+
: [];
|
|
197
|
+
const clientPackageUpdateAvailable = !!latestRelease
|
|
198
|
+
&& compareVersions(latestRelease.latestClientVersion, currentClientVersion) > 0;
|
|
199
|
+
const clientUpdateAvailable = clientPackageUpdateAvailable || outdatedClientDevices.length > 0;
|
|
200
|
+
const updateAvailable = managerUpdateAvailable || clientUpdateAvailable;
|
|
193
201
|
const activeRun = statusForRun(run);
|
|
194
202
|
return {
|
|
195
203
|
currentVersion: String(currentManagerVersion || ''),
|
|
@@ -197,10 +205,14 @@ export function createLiveDeskUpdateManager({
|
|
|
197
205
|
latestVersion: latestRelease?.latestManagerVersion || '',
|
|
198
206
|
latestClientVersion: latestRelease?.latestClientVersion || '',
|
|
199
207
|
updateAvailable,
|
|
208
|
+
managerUpdateAvailable,
|
|
209
|
+
clientUpdateAvailable,
|
|
210
|
+
clientPackageUpdateAvailable,
|
|
211
|
+
outdatedClientCount: outdatedClientDevices.length,
|
|
200
212
|
checkedAt: latestRelease?.checkedAt || '',
|
|
201
213
|
checkError,
|
|
202
214
|
restartSupported: !!restartSupported,
|
|
203
|
-
canApply: updateAvailable && !!restartSupported,
|
|
215
|
+
canApply: updateAvailable && (!managerUpdateAvailable && !clientPackageUpdateAvailable || !!restartSupported),
|
|
204
216
|
...(activeRun || { state: 'idle', operationId: '', targetCount: 0, completedCount: 0, waitingCount: 0, failedCount: 0, targets: [] })
|
|
205
217
|
};
|
|
206
218
|
};
|
|
@@ -257,7 +269,12 @@ export function createLiveDeskUpdateManager({
|
|
|
257
269
|
clearInterval(runTimer);
|
|
258
270
|
runTimer = null;
|
|
259
271
|
}
|
|
260
|
-
|
|
272
|
+
if (run.needsHubRestart) {
|
|
273
|
+
requestRestart();
|
|
274
|
+
} else {
|
|
275
|
+
run.state = 'clients-updated';
|
|
276
|
+
touch();
|
|
277
|
+
}
|
|
261
278
|
return;
|
|
262
279
|
}
|
|
263
280
|
if (now() - Date.parse(run.startedAt) >= LIVE_DESK_UPDATE_TIMEOUT_MS) {
|
|
@@ -303,13 +320,18 @@ export function createLiveDeskUpdateManager({
|
|
|
303
320
|
}
|
|
304
321
|
const release = latestRelease || await checkLatest();
|
|
305
322
|
if (!release) return { ok: false, error: checkError || 'LiveDesk update check failed.', ...getStatus() };
|
|
306
|
-
|
|
323
|
+
const managerNeedsUpdate = compareVersions(release.latestManagerVersion, currentManagerVersion) > 0;
|
|
324
|
+
const clientPackageNeedsUpdate = compareVersions(release.latestClientVersion, currentClientVersion) > 0;
|
|
325
|
+
const connected = connectedDevices(remoteHub);
|
|
326
|
+
const outdatedClients = connected.filter(device => !isVersionAtLeast(device.agentVersion, release.latestClientVersion));
|
|
327
|
+
const needsHubRestart = managerNeedsUpdate || clientPackageNeedsUpdate;
|
|
328
|
+
if (!managerNeedsUpdate && !clientPackageNeedsUpdate && outdatedClients.length === 0) {
|
|
307
329
|
return { ok: false, error: 'LiveDesk is already up to date.', ...getStatus() };
|
|
308
330
|
}
|
|
309
|
-
if (!restartSupported) {
|
|
331
|
+
if (needsHubRestart && !restartSupported) {
|
|
310
332
|
return { ok: false, error: 'Hub launcher restart is unavailable. Start LiveDesk through npx livedesk@latest.', ...getStatus() };
|
|
311
333
|
}
|
|
312
|
-
const targets =
|
|
334
|
+
const targets = managerNeedsUpdate || clientPackageNeedsUpdate ? connected : outdatedClients;
|
|
313
335
|
const credentials = remoteHub.getStatus({ includeSecrets: true });
|
|
314
336
|
run = {
|
|
315
337
|
operationId: randomUUID(),
|
|
@@ -318,6 +340,7 @@ export function createLiveDeskUpdateManager({
|
|
|
318
340
|
updatedAt: new Date(now()).toISOString(),
|
|
319
341
|
latestManagerVersion: release.latestManagerVersion,
|
|
320
342
|
latestClientVersion: release.latestClientVersion,
|
|
343
|
+
needsHubRestart,
|
|
321
344
|
error: '',
|
|
322
345
|
targets: targets.map(device => ({
|
|
323
346
|
deviceId: String(device.deviceId || ''),
|
|
@@ -339,7 +362,12 @@ export function createLiveDeskUpdateManager({
|
|
|
339
362
|
return { ok: false, error: run.error, ...getStatus() };
|
|
340
363
|
}
|
|
341
364
|
if (run.targets.length === 0) {
|
|
342
|
-
|
|
365
|
+
if (run.needsHubRestart) {
|
|
366
|
+
requestRestart();
|
|
367
|
+
} else {
|
|
368
|
+
run.state = 'clients-updated';
|
|
369
|
+
touch();
|
|
370
|
+
}
|
|
343
371
|
return { ok: true, ...getStatus() };
|
|
344
372
|
}
|
|
345
373
|
run.state = 'waiting-for-clients';
|