mirror of
https://github.com/kuaifan/dootask.git
synced 2026-06-01 13:10:50 +00:00
feat(upload): 添加上传进度显示和错误处理,记录上传耗时
This commit is contained in:
parent
981a5c9f0f
commit
025f45df0a
52
electron/build.js
vendored
52
electron/build.js
vendored
@ -26,6 +26,7 @@ let buildChecked = false,
|
|||||||
updaterChecked = false;
|
updaterChecked = false;
|
||||||
|
|
||||||
const shellQuote = (value) => `'${String(value).replace(/'/g, `'\\''`)}'`;
|
const shellQuote = (value) => `'${String(value).replace(/'/g, `'\\''`)}'`;
|
||||||
|
const elapsedSeconds = (startTime) => `${((Date.now() - startTime) / 1000).toFixed(1)}s`;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检测并下载更新器
|
* 检测并下载更新器
|
||||||
@ -368,6 +369,7 @@ class WebsitePublisher {
|
|||||||
*/
|
*/
|
||||||
async uploadPackage(localFile, options = {}) {
|
async uploadPackage(localFile, options = {}) {
|
||||||
const filename = path.basename(localFile)
|
const filename = path.basename(localFile)
|
||||||
|
const startTime = Date.now()
|
||||||
let spinner = ora(`Upload [0%] ${filename}`).start()
|
let spinner = ora(`Upload [0%] ${filename}`).start()
|
||||||
const formData = new FormData()
|
const formData = new FormData()
|
||||||
formData.append("version", this.version)
|
formData.append("version", this.version)
|
||||||
@ -378,33 +380,41 @@ class WebsitePublisher {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
formData.append("file", fs.createReadStream(localFile))
|
formData.append("file", fs.createReadStream(localFile))
|
||||||
const {status, data} = await axiosAutoTry({
|
let result
|
||||||
axios: {
|
try {
|
||||||
method: 'post',
|
result = await axiosAutoTry({
|
||||||
url: `${this.baseUrl}/api/upload/package`,
|
axios: {
|
||||||
data: formData,
|
method: 'post',
|
||||||
headers: {
|
url: `${this.baseUrl}/api/upload/package`,
|
||||||
'Authorization': `Bearer ${this.token}`,
|
data: formData,
|
||||||
'Content-Type': 'multipart/form-data;boundary=' + formData.getBoundary(),
|
headers: {
|
||||||
|
'Authorization': `Bearer ${this.token}`,
|
||||||
|
'Content-Type': 'multipart/form-data;boundary=' + formData.getBoundary(),
|
||||||
|
},
|
||||||
|
onUploadProgress: progress => {
|
||||||
|
const complete = Math.min(99, Math.round(progress.loaded / progress.total * 100 | 0)) + '%'
|
||||||
|
spinner.text = `Upload [${complete}] ${filename}`
|
||||||
|
},
|
||||||
},
|
},
|
||||||
onUploadProgress: progress => {
|
onRetry: (err) => {
|
||||||
const complete = Math.min(99, Math.round(progress.loaded / progress.total * 100 | 0)) + '%'
|
const reason = err?.response?.status || err?.code || err?.message || ''
|
||||||
spinner.text = `Upload [${complete}] ${filename}`
|
spinner.warn(`Upload [retry] ${filename} (${elapsedSeconds(startTime)})${reason ? ': ' + reason : ''}`)
|
||||||
|
spinner = ora(`Upload [0%] ${filename}`).start()
|
||||||
},
|
},
|
||||||
},
|
retryNumber: 3
|
||||||
onRetry: (err) => {
|
})
|
||||||
const reason = err?.response?.status || err?.code || err?.message || ''
|
} catch (error) {
|
||||||
spinner.warn(`Upload [retry] ${filename}${reason ? ': ' + reason : ''}`)
|
const reason = error?.response?.status || error?.code || error?.message || 'unknown error'
|
||||||
spinner = ora(`Upload [0%] ${filename}`).start()
|
spinner.fail(`Upload [fail] ${filename} (${elapsedSeconds(startTime)}): ${reason}`)
|
||||||
},
|
throw error
|
||||||
retryNumber: 3
|
}
|
||||||
})
|
const {status, data} = result
|
||||||
if (status !== 200 || !utils.isJson(data) || !data.success) {
|
if (status !== 200 || !utils.isJson(data) || !data.success) {
|
||||||
const reason = data?.message || `status ${status}`
|
const reason = data?.message || `status ${status}`
|
||||||
spinner.fail(`Upload [fail] ${filename}: ${reason}`)
|
spinner.fail(`Upload [fail] ${filename} (${elapsedSeconds(startTime)}): ${reason}`)
|
||||||
throw new Error(`Upload failed: ${filename}: ${reason}`)
|
throw new Error(`Upload failed: ${filename}: ${reason}`)
|
||||||
}
|
}
|
||||||
spinner.succeed(`Upload [100%] ${filename}`)
|
spinner.succeed(`Upload [100%] ${filename} (${elapsedSeconds(startTime)})`)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user