Skip to content

Commit d93e4e5

Browse files
committed
➖ Remove download library
1 parent 7f1cfc3 commit d93e4e5

File tree

3 files changed

+287
-658
lines changed

3 files changed

+287
-658
lines changed

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,6 @@
120120
},
121121
"dependencies": {
122122
"deepslate": "^0.19.2",
123-
"download": "^8.0.0",
124123
"fflate": "^0.8.2",
125124
"generic-stream": "^1.2.6",
126125
"marked": "^4.3.0",

src/systems/minecraft-temp/assetManager.ts

Lines changed: 41 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { PACKAGE } from '../../constants'
22
import { getCurrentVersion, getLatestVersion } from './versionManager'
33

4-
import EVENTS from '@events'
5-
import download from 'download'
4+
import EVENTS from '@aj/util/events'
5+
import { app } from 'electron'
66
import { type Unzipped } from 'fflate'
77
import {
88
showOfflineError,
@@ -15,20 +15,48 @@ const ASSET_OVERRIDES: Record<string, string> = {}
1515
async function downloadJar(url: string, savePath: string) {
1616
updateLoadingProgressLabel('Downloading Minecraft Assets...')
1717

18-
const data = await download(url, { retry: { retries: 3 } })
19-
.on('downloadProgress', progress => {
20-
updateLoadingProgress(progress.percent * 100)
21-
})
22-
.catch((error: any) => {
23-
console.error('Failed to download Minecraft client:', error)
24-
})
25-
26-
if (!data) {
18+
let attempts = 3
19+
let failed = false
20+
let sink: Uint8Array
21+
do {
22+
try {
23+
const res = await fetch(url)
24+
if (!res) throw new Error('Failed to fetch Minecraft client.')
25+
const reader = res.body?.getReader()
26+
if (!reader) throw new Error('Failed to get reader from Minecraft client response.')
27+
const length = parseInt(res.headers.get('Content-Length') ?? '0')
28+
sink = new Uint8Array(length)
29+
let offset = 0
30+
while (true) {
31+
const { done, value } = await reader.read()
32+
if (done) break
33+
if (!value) throw new Error('Failed to read Minecraft client response.')
34+
sink.set(value, offset)
35+
offset += value.length
36+
updateLoadingProgress((offset / length) * 100)
37+
}
38+
failed = false
39+
} catch (e) {
40+
console.error('Failed to download Minecraft client:', e)
41+
failed = true
42+
} finally {
43+
attempts--
44+
}
45+
} while (attempts > 0)
46+
// const data = await download(url, { retry: { retries: 3 } })
47+
// .on('downloadProgress', progress => {
48+
// updateLoadingProgress(progress.percent * 100)
49+
// })
50+
// .catch((error: any) => {
51+
// console.error('Failed to download Minecraft client:', error)
52+
// })
53+
54+
if (failed) {
2755
showOfflineError()
2856
throw new Error('Failed to download Minecraft client after 3 retries.')
2957
}
3058

31-
await fs.promises.writeFile(savePath, data)
59+
await fs.promises.writeFile(savePath, sink!)
3260
}
3361

3462
export async function getLatestVersionClientDownloadUrl() {
@@ -55,7 +83,7 @@ export async function getLatestVersionClientDownloadUrl() {
5583
}
5684

5785
function getCachedJarFilePath() {
58-
const userDataPath = electron.app.getPath('userData')
86+
const userDataPath = (electron?.app ?? app).getPath('userData')
5987
return PathModule.join(userDataPath, `${PACKAGE.name}/latest.jar`)
6088
}
6189

0 commit comments

Comments
 (0)