Compare commits

2 Commits
Author SHA1 Message Date
539943419 53ab0ad45b feat: update... 2024-09-29 01:29:26 +08:00
539943419 641700d730 feat: 优化lodash导入 2024-09-27 22:07:38 +08:00
8 changed files with 33 additions and 13 deletions

No files matched your search

+25 -6
View File
@@ -1,19 +1,20 @@
import config from "@/config";
import generateId from "@/hooks/generateId";
import useMiaoFetchApi from "@/hooks/useMiaoFetchApi";
// import { debounce } from "lodash";
import type { stats, file, directory } from "@/types/type.ts";
const miaoFetchApi = useMiaoFetchApi();
const vItemMap = new Map();
export interface Tree {
name: string;
type: 'directory';
type: "directory";
path: string;
stats: stats;
files?: {
name: string;
type: 'file';
type: "file";
size: number;
stats: stats;
url: string;
@@ -29,6 +30,7 @@ export class VirtualFile {
this.parent = parent;
this.type = "file";
this.id = generateId();
vItemMap.set(this.path, this);
}
name: string;
type: "file";
@@ -36,7 +38,7 @@ export class VirtualFile {
stats: stats;
parent: VirtualDirectory;
id: number;
storage: {[key: string]: any} = {};
storage: { [key: string]: any } = {};
get path() {
return `${this.parent.path}${this.name}`;
}
@@ -47,11 +49,15 @@ export class VirtualFile {
}
class VirtualDirectory {
/**
* 除非为根节点,否则必须设置parent
*/
constructor(info: directory, parent?: VirtualDirectory) {
this.name = info.name;
this.stats = info.stats;
this.parent = parent ?? undefined;
this.id = generateId();
vItemMap.set(this.path, this);
}
// 文件夹名
name: string;
@@ -60,15 +66,18 @@ class VirtualDirectory {
// 子目录
directories?: VirtualDirectory[];
// 没啥意义,标注一下就是了
type: "directory" = 'directory';
type: "directory" = "directory";
// 文件夹创建时间等杂项属性
stats: stats;
// 父文件夹
parent?: VirtualDirectory;
_isUpdated: boolean = false;
id: number;
storage: {[key: string]: any} = {};
// 用来存储一些标记信息啥的
storage: { [key: string]: any } = {};
/**
* 获取相对于根目录的路径的层数
@@ -101,6 +110,13 @@ class VirtualDirectory {
return [...this.parent.getParents, this];
}
/**
* 获取当前文件夹是否已经请求过至少一次数据
*/
get isUpdated() {
return this._isUpdated;
}
/**
* 获取 layer 级父文件夹, 如getParent(1)就返回父级
* @param {number} layer 需要跳转的层数
@@ -131,7 +147,10 @@ class VirtualDirectory {
};
}
// todo: 重构这个函数
updateContent(content: (file | directory)[]) {
this._isUpdated = true;
this.files = this.files ?? [];
this.directories = this.directories ?? [];
const fileNames: string[] = this.files.map(v => v.name);
+1 -1
View File
@@ -35,7 +35,7 @@ import useDataBus from '@/hooks/useDataBus'
import useUploadQueue from '@/hooks/useUploadQueue'
import useVirtualPages from '@/hooks/useVirtualPages'
import { filePicker, renderIcon } from '@/hooks/miaoTools'
import { uniq } from 'lodash'
import uniq from 'lodash/uniq'
// 导入子组件
import miaoDirectoryTop from './components/miaoDirectoryTop.vue'
+1 -1
View File
@@ -10,7 +10,7 @@
<script setup lang="ts">
import VirtualDirectory, { VirtualFile } from '@/class/VirtualDirectory'
import { cloneDeep } from 'lodash';
import cloneDeep from 'lodash/cloneDeep';
import { inject, onMounted, ref } from 'vue'
import buildFromTree from '../../hooks/buildFromTree';
+1 -1
View File
@@ -64,7 +64,7 @@ import miaoMask from '@/components/miaoMask.vue'
import miaoDropHandler from '@/components/miaoDropHandler.vue'
import miaoMessageProvider from '@/components/miaoAlertTipProvider.vue'
import VirtualDirectory, { VirtualFile } from '@/class/VirtualDirectory'
import { uniq } from 'lodash'
import uniq from 'lodash/uniq'
import { computed, nextTick, onMounted, ref, watch } from 'vue'
import { NScrollbar } from 'naive-ui'
import { ChevronBack, ChevronForward } from '@vicons/ionicons5'
+1 -1
View File
@@ -17,7 +17,7 @@ const pluginConfig: registerComponentOption = {
return false
}
for (let i of vFiles) {
for (let s of ['mp3']) {
for (let s of ['mp3', 'flac', 'ogg']) {
if (i.name.endsWith(s)) {
return true
}
@@ -23,7 +23,8 @@ import "./src/APlayer.fix.css"
// @ts-ignore
import APlayer from 'APlayer';
import config from '@/config';
import { difference, uniq } from 'lodash';
import difference from 'lodash/difference';
import uniq from 'lodash/uniq'
import apType from './types/ap';
const miaoMessageRef = ref<InstanceType<typeof miaoAlertTipProvider>>()
@@ -15,7 +15,7 @@ import '@/style/xgplayer.scss'
import TextTrack from 'xgplayer/es/plugins/track'
import 'xgplayer/es/plugins/track/index.css'
import axios from 'axios'
import { uniq } from 'lodash'
import uniq from 'lodash/uniq'
import lockScreen from './playerPlugin/lockScreen/lockScreen'
import xgplayerVueApp from './src/XGPlayerVuePluginRoot.vue'
import useXGPlayerVueFrame from './playerPlugin/xgplayer-vue-frame/xgplayer-vue-frame'
@@ -7,7 +7,7 @@
<script setup lang="ts">
import { Component, toRaw } from "vue";
import Player from "xgplayer/es/player";
import { pick } from "lodash";
import pick from "lodash/pick";
const props = defineProps({
player: {
type: Player,