mirror of
https://git.unlock-music.dev/um/web.git
synced 2025-11-05 11:31:24 +00:00
fixes
This commit is contained in:
@@ -22,7 +22,7 @@
|
||||
<script>
|
||||
import {spawn, Worker, Pool} from "threads"
|
||||
import {CommonDecrypt} from "@/decrypt/common.ts";
|
||||
import {DecryptQueue} from "@/component/utils";
|
||||
import {DecryptQueue} from "@/utils/utils";
|
||||
|
||||
export default {
|
||||
name: "FileSelector",
|
||||
@@ -42,10 +42,10 @@ export default {
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
if (window.Worker) {
|
||||
if (window.Worker && process.env.NODE_ENV === 'production') {
|
||||
console.log("Using Worker Pool")
|
||||
this.queue = Pool(
|
||||
() => spawn(new Worker('@/component/worker.ts')),
|
||||
() => spawn(new Worker('@/utils/worker.ts')),
|
||||
navigator.hardwareConcurrency || 1
|
||||
)
|
||||
} else {
|
||||
@@ -64,7 +64,7 @@ export default {
|
||||
this.$emit("success", await dec(file));
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
this.$emit("error", file)
|
||||
this.$emit("error", e, file.name)
|
||||
} finally {
|
||||
this.task_finished++
|
||||
}
|
||||
|
||||
@@ -11,22 +11,22 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="歌曲">
|
||||
<template slot-scope="scope">
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.title }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="歌手">
|
||||
<template slot-scope="scope">
|
||||
<template #default="scope">
|
||||
<p>{{ scope.row.artist }}</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="专辑">
|
||||
<template slot-scope="scope">
|
||||
<template #default="scope">
|
||||
<p>{{ scope.row.album }}</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作">
|
||||
<template slot-scope="scope">
|
||||
<template #default="scope">
|
||||
<el-button circle
|
||||
icon="el-icon-video-play" type="success" @click="handlePlay(scope.$index, scope.row)">
|
||||
</el-button>
|
||||
@@ -42,25 +42,25 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {DownloadBlobMusic, RemoveBlobMusic} from '@/component/utils'
|
||||
import {DownloadBlobMusic, RemoveBlobMusic} from '@/utils/utils'
|
||||
|
||||
export default {
|
||||
name: "PreviewTable",
|
||||
props: {
|
||||
tableData: {type: Array, required: true},
|
||||
filename_format: {type: String, required: true}
|
||||
policy: {type: Number, required: true}
|
||||
},
|
||||
|
||||
methods: {
|
||||
handlePlay(index, row) {
|
||||
this.$emit("music_changed", row.file);
|
||||
this.$emit("play", row.file);
|
||||
},
|
||||
handleDelete(index, row) {
|
||||
RemoveBlobMusic(row);
|
||||
this.tableData.splice(index, 1);
|
||||
},
|
||||
handleDownload(row) {
|
||||
DownloadBlobMusic(row, this.download_format)
|
||||
DownloadBlobMusic(row, this.policy)
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
import {DecryptResult} from "@/decrypt/entity";
|
||||
|
||||
export function DownloadBlobMusic(data: DecryptResult, format: string) {//todo: use enum
|
||||
const a = document.createElement('a');
|
||||
a.href = data.file;
|
||||
switch (format) {
|
||||
default:
|
||||
case "1":
|
||||
a.download = data.artist + " - " + data.title + "." + data.ext;
|
||||
break;
|
||||
case "2":
|
||||
a.download = data.title + "." + data.ext;
|
||||
break;
|
||||
case "3":
|
||||
a.download = data.title + " - " + data.artist + "." + data.ext;
|
||||
break;
|
||||
case "4":
|
||||
a.download = data.rawFilename + "." + data.ext;
|
||||
break;
|
||||
}
|
||||
document.body.append(a);
|
||||
a.click();
|
||||
a.remove();
|
||||
}
|
||||
|
||||
export function RemoveBlobMusic(data: DecryptResult) {
|
||||
URL.revokeObjectURL(data.file);
|
||||
if (data.picture?.startsWith("blob:")) {
|
||||
URL.revokeObjectURL(data.picture);
|
||||
}
|
||||
}
|
||||
|
||||
export class DecryptQueue {
|
||||
private readonly pending: (() => Promise<void>)[];
|
||||
|
||||
constructor() {
|
||||
this.pending = []
|
||||
}
|
||||
|
||||
queue(fn: () => Promise<void>) {
|
||||
this.pending.push(fn)
|
||||
this.consume()
|
||||
}
|
||||
|
||||
private consume() {
|
||||
const fn = this.pending.shift()
|
||||
if (fn) fn().then(() => this.consume).catch(console.error)
|
||||
}
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
import {expose} from "threads/worker";
|
||||
import {CommonDecrypt} from "@/decrypt/common";
|
||||
|
||||
expose(CommonDecrypt)
|
||||
Reference in New Issue
Block a user