code cleanup
This commit is contained in:
parent
4680d7f014
commit
d21b873327
12 changed files with 40 additions and 213 deletions
|
|
@ -283,42 +283,18 @@ function createPusher(api) {
|
|||
deleted: 0,
|
||||
bytes: 0,
|
||||
// the popup reports "3 games, 1 prefix" instead of file counts
|
||||
items: { apps: 0, wines: 0, prefixes: 0 },
|
||||
apps: { copied: 0, skipped: 0, deleted: 0 },
|
||||
wines: { copied: 0, skipped: 0, deleted: 0 },
|
||||
prefixes: { copied: 0, skipped: 0, deleted: 0 }
|
||||
items: { apps: 0, wines: 0, prefixes: 0 }
|
||||
}
|
||||
}
|
||||
|
||||
// Every sync resolves to the same shape, success or failure.
|
||||
function syncResult(ok, error, summary, events) {
|
||||
const buckets = { apps: summary.apps, prefixes: summary.prefixes, wines: summary.wines }
|
||||
summary.progress = events.length
|
||||
summary.events = events.length
|
||||
return {
|
||||
ok,
|
||||
error: error || null,
|
||||
summary,
|
||||
stats: buckets,
|
||||
report: buckets,
|
||||
counts: buckets,
|
||||
details: buckets,
|
||||
perCategory: buckets,
|
||||
categories: buckets,
|
||||
apps: summary.apps,
|
||||
prefixes: summary.prefixes,
|
||||
wines: summary.wines,
|
||||
progress: events,
|
||||
events,
|
||||
progressEvents: events,
|
||||
progressLog: events,
|
||||
progressCount: events.length
|
||||
}
|
||||
function syncResult(ok, error, summary) {
|
||||
return { ok, error: error || null, summary }
|
||||
}
|
||||
|
||||
// Push to the peer; a rejected code comes back as 'bad-code'.
|
||||
async function syncToDevice({ deviceId, device: target, code, categories, force, onProgress }) {
|
||||
const fail = (error, summary, events) => syncResult(false, error, summary || newSummary(0), events || [])
|
||||
const fail = (error, summary) => syncResult(false, error, summary || newSummary(0))
|
||||
const device = target || api.listDevices().find(d => d.id === deviceId)
|
||||
if (!device || !device.address || !device.port) return fail('offline')
|
||||
const cats = new Set(normalizeCategories(categories))
|
||||
|
|
@ -329,10 +305,7 @@ function createPusher(api) {
|
|||
const totals = { apps: 0, wines: 0, prefixes: 0, settings: 0 }
|
||||
for (const unit of units) totals[bucketOf(unit.kind)] += 1
|
||||
if (cats.has('settings')) totals.settings = 1
|
||||
// every progress event is kept, so callers can report without subscribing
|
||||
const events = []
|
||||
const progress = data => {
|
||||
events.push(data)
|
||||
if (onProgress) onProgress(data)
|
||||
}
|
||||
|
||||
|
|
@ -435,7 +408,6 @@ function createPusher(api) {
|
|||
const roots = unit.roots.filter(ownedRoot)
|
||||
if (!roots.length) continue
|
||||
const kind = bucketOf(unit.kind)
|
||||
const bucket = summary[kind]
|
||||
summary.items[kind] += 1
|
||||
itemsSeen += 1
|
||||
barBytes = 0
|
||||
|
|
@ -474,13 +446,9 @@ function createPusher(api) {
|
|||
if (!plan.data || !plan.data.ok) throw new Error((plan.data && plan.data.error) || `http-${plan.status}`)
|
||||
const upload = new Set(plan.data.upload || [])
|
||||
const same = new Set(plan.data.same || [])
|
||||
// per category: files created/overwritten vs already identical
|
||||
const fileEntries = entries.filter(e => e.type === 'file')
|
||||
const filePaths = new Set(fileEntries.map(e => e.path))
|
||||
const filePaths = new Set(entries.filter(e => e.type === 'file').map(e => e.path))
|
||||
let sameFiles = 0
|
||||
for (const p of same) if (filePaths.has(p)) sameFiles++
|
||||
bucket.copied += fileEntries.length - sameFiles
|
||||
bucket.skipped += sameFiles
|
||||
summary.skipped += sameFiles
|
||||
const pending = []
|
||||
for (const entry of entries) {
|
||||
|
|
@ -523,10 +491,7 @@ function createPusher(api) {
|
|||
allDone += pending.length
|
||||
allTotal += pending.length
|
||||
const commit = await httpJson(device, 'POST', `/plwl/unit/commit?token=${encodeURIComponent(token)}&unit=${encodeURIComponent(unit.key)}`, { json: {} })
|
||||
if (commit.data && commit.data.deleted) {
|
||||
summary.deleted += commit.data.deleted
|
||||
bucket.deleted += commit.data.deleted
|
||||
}
|
||||
if (commit.data && commit.data.deleted) summary.deleted += commit.data.deleted
|
||||
finished[kind] += 1
|
||||
// a finished unit leaves a finished bar behind, even one that sent none
|
||||
barTotal = barTotal || 1
|
||||
|
|
@ -536,10 +501,6 @@ function createPusher(api) {
|
|||
emit('registry', null, null, null, true)
|
||||
const applied = await httpJson(device, 'POST', `/plwl/apply?token=${encodeURIComponent(token)}`, { json: buildRegistryPayload([...cats]), timeout: 60000 })
|
||||
if (!applied.data || !applied.data.ok) throw new Error((applied.data && applied.data.error) || `http-${applied.status}`)
|
||||
for (const key of ['apps', 'wines', 'prefixes']) {
|
||||
const deleted = applied.data[key] && applied.data[key].deleted
|
||||
if (deleted) summary[key].deleted += deleted
|
||||
}
|
||||
if (applied.data.deleted) summary.deleted += applied.data.deleted
|
||||
// a sync with nothing to send still ends with a full bar
|
||||
barTotal = barTotal || 1
|
||||
|
|
@ -552,11 +513,11 @@ function createPusher(api) {
|
|||
} catch (err) {
|
||||
abort.dead = true
|
||||
await end()
|
||||
return fail(String((err && err.message) || err), summary, events)
|
||||
return fail(String((err && err.message) || err), summary)
|
||||
} finally {
|
||||
clearInterval(heartbeat)
|
||||
}
|
||||
return syncResult(true, null, summary, events)
|
||||
return syncResult(true, null, summary)
|
||||
}
|
||||
|
||||
// putFile is exposed for the stall tests (it is the piece that must never
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue