show progress for imports and deletions
This commit is contained in:
parent
38eea05789
commit
5e342b6fe5
13 changed files with 343 additions and 115 deletions
|
|
@ -160,15 +160,22 @@ function clearPlaytime(id) {
|
|||
return updateGame(id, { playSeconds: 0, lastPlayed: 0 })
|
||||
}
|
||||
|
||||
function removeGame(id) {
|
||||
// A portable app's folder is removed along with its registry entry - measured
|
||||
// first (staging) so the renderer can show a bar while the tree is walked,
|
||||
// instead of freezing on one rmSync of a multi-GB game.
|
||||
async function removeGame(id, onProgress) {
|
||||
const games = loadGames()
|
||||
const idx = games.findIndex(g => g.id === id)
|
||||
if (idx === -1) return false
|
||||
const g = games[idx]
|
||||
if (g.imported && g.path && g.path.startsWith(DIRS.APPS)) {
|
||||
try {
|
||||
require('fs').rmSync(g.path, { recursive: true, force: true })
|
||||
} catch {}
|
||||
const emit = (phase, detail) => {
|
||||
if (onProgress) onProgress({ phase, label: g.name || id, ...detail })
|
||||
}
|
||||
const { treeSize, removeTree } = require('./fsutil')
|
||||
emit('count', { files: 0, bytes: 0 })
|
||||
const total = await treeSize(g.path)
|
||||
await removeTree(g.path, p => emit('remove', { files: p.files, bytes: p.bytes, totalFiles: total.files, totalBytes: total.bytes }))
|
||||
}
|
||||
// prefix imports live inside the prefix: deleting launcher files would
|
||||
// nuke the user's prefix (installed DLLs, saves of every other app), so
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue