feat: 添加prettier格式化代码

This commit is contained in:
539943419 committed 2024-12-25 19:44:18 +08:00
1 parent 5823d5876b
commit f33e9386cd
81 files changed
+8114 -7395

No files matched your search

+154 -150
View File
@@ -1,165 +1,169 @@
import generateId from "@/hooks/generateId";
import useMiaoFetchApi from "@/hooks/useMiaoFetchApi";
import VirtualDirectory from "./VirtualDirectory";
import generateId from '@/hooks/generateId'
import useMiaoFetchApi from '@/hooks/useMiaoFetchApi'
import VirtualDirectory from './VirtualDirectory'
const miaoFetchApi = useMiaoFetchApi();
const miaoFetchApi = useMiaoFetchApi()
export class UploadQueueItem {
constructor(
file: File,
targetDirectory: VirtualDirectory,
config?: {
onSuccess?: () => void;
onFailed?: () => void;
}
) {
this.file = file;
this.targetDirectory = targetDirectory;
this.uid = generateId();
this.status = "waiting";
this.process = 0;
this.onSuccess = config && config.onSuccess;
this.onFailed = config && config.onFailed;
}
uid: number;
file: File;
targetDirectory: VirtualDirectory;
status: "waiting" | "uploading" | "success" | "failed";
process: number;
failedReason: unknown | undefined;
constructor(
file: File,
targetDirectory: VirtualDirectory,
config?: {
onSuccess?: () => void
onFailed?: () => void
}
) {
this.file = file
this.targetDirectory = targetDirectory
this.uid = generateId()
this.status = 'waiting'
this.process = 0
this.onSuccess = config && config.onSuccess
this.onFailed = config && config.onFailed
}
uid: number
file: File
targetDirectory: VirtualDirectory
status: 'waiting' | 'uploading' | 'success' | 'failed'
process: number
failedReason: unknown | undefined
onSuccess?: () => void;
onFailed?: () => void;
onSuccess?: () => void
onFailed?: () => void
_abort: (() => void | undefined) | undefined;
_status: Promise<any> | undefined;
_abort: (() => void | undefined) | undefined
_status: Promise<any> | undefined
/**
* 开始上传文件
*/
startUpload() {
if (this.status === "uploading") {
return;
}
const { abort, response } = miaoFetchApi.upload(this.file, this.targetDirectory, {
onProcess: percent => {
this.process = percent;
}
});
this._abort = abort;
this._status = response;
this.status = "uploading";
response
.then(() => {
this.status = "success";
this.onSuccess && this.onSuccess();
this._abort = undefined;
this._status = undefined;
})
.catch(e => {
this.status = "failed";
this.failedReason = e;
this.onFailed && this.onFailed();
});
}
/**
* 开始上传文件
*/
startUpload() {
if (this.status === 'uploading') {
return
}
const { abort, response } = miaoFetchApi.upload(
this.file,
this.targetDirectory,
{
onProcess: (percent) => {
this.process = percent
}
}
)
this._abort = abort
this._status = response
this.status = 'uploading'
response
.then(() => {
this.status = 'success'
this.onSuccess && this.onSuccess()
this._abort = undefined
this._status = undefined
})
.catch((e) => {
this.status = 'failed'
this.failedReason = e
this.onFailed && this.onFailed()
})
}
/**
* 终止上传文件
*/
abortUpload() {
this._abort && this._abort();
this.status = "failed";
this.failedReason = "abort";
}
/**
* 终止上传文件
*/
abortUpload() {
this._abort && this._abort()
this.status = 'failed'
this.failedReason = 'abort'
}
}
export default class UploadQueue {
constructor() {
this.uid = generateId();
this.queue = [];
this.mode = "serial";
}
uid: number;
queue: UploadQueueItem[];
current: UploadQueueItem | undefined;
constructor() {
this.uid = generateId()
this.queue = []
this.mode = 'serial'
}
uid: number
queue: UploadQueueItem[]
current: UploadQueueItem | undefined
// 未来再去实现,目前就是串行的
// 好像也不用去实现
mode: "serial" | "parallel";
get status() {
for (let item of this.queue) {
if (item.status === "uploading") {
return "busy";
}
}
return "free";
}
// 未来再去实现,目前就是串行的
// 好像也不用去实现
mode: 'serial' | 'parallel'
get status() {
for (let item of this.queue) {
if (item.status === 'uploading') {
return 'busy'
}
}
return 'free'
}
/**
* 获取下一个需要被上传的item
*/
get nextUplpadItem() {
for (let item of this.queue) {
if (item.status === "waiting") {
return item;
}
}
}
/**
* 获取下一个需要被上传的item
*/
get nextUplpadItem() {
for (let item of this.queue) {
if (item.status === 'waiting') {
return item
}
}
}
/**
* 开始串行的上传循环
*/
loop() {
if (this.status === "busy") {
return;
}
if (this.nextUplpadItem) {
this.nextUplpadItem.startUpload();
}
}
/**
* 开始串行的上传循环
*/
loop() {
if (this.status === 'busy') {
return
}
if (this.nextUplpadItem) {
this.nextUplpadItem.startUpload()
}
}
/**
* 向上传文件队列输送一批新的文件
* @param {any} files 需要上传的文件
* @param {any} targetDirectory 目标文件夹
* @param {any} option 每个文件上传完成以后都会触发一遍的回调函数
* @returns {any}
*/
push(
files: File[],
targetDirectory: VirtualDirectory,
option?: {
/**
* 每个文件上传完成以后都会触发一遍的回调函数
*/
onFinish?: () => void;
/**
* 是否立即开始上传,若否则按队列顺序一个一个上传
*/
immediately?: boolean;
}
) {
const onFinish = option?.onFinish;
const immediately = option?.immediately ?? false;
const uploadQueue = files.map(file => {
return new UploadQueueItem(file, targetDirectory, {
onSuccess: () => {
this.loop();
onFinish && onFinish();
},
onFailed: () => {
this.loop();
}
});
});
this.queue.push(...uploadQueue);
if (!immediately) {
this.loop();
} else {
uploadQueue.forEach(item => {
item.startUpload();
});
}
return uploadQueue;
}
/**
* 向上传文件队列输送一批新的文件
* @param {any} files 需要上传的文件
* @param {any} targetDirectory 目标文件夹
* @param {any} option 每个文件上传完成以后都会触发一遍的回调函数
* @returns {any}
*/
push(
files: File[],
targetDirectory: VirtualDirectory,
option?: {
/**
* 每个文件上传完成以后都会触发一遍的回调函数
*/
onFinish?: () => void
/**
* 是否立即开始上传,若否则按队列顺序一个一个上传
*/
immediately?: boolean
}
) {
const onFinish = option?.onFinish
const immediately = option?.immediately ?? false
const uploadQueue = files.map((file) => {
return new UploadQueueItem(file, targetDirectory, {
onSuccess: () => {
this.loop()
onFinish && onFinish()
},
onFailed: () => {
this.loop()
}
})
})
this.queue.push(...uploadQueue)
if (!immediately) {
this.loop()
} else {
uploadQueue.forEach((item) => {
item.startUpload()
})
}
return uploadQueue
}
}