feat: 添加专辑浏览功能并优化侧边栏
在Home.vue中添加专辑浏览功能,显示专辑封面。将类型定义从apis/index.ts移动到vite-env.d.ts中以便全局使用。优化Sidebar.vue中的导航链接样式,添加图标。更新manifest.json以允许加载特定域名的图片资源。
This commit is contained in:
parent
a6ab9aacb5
commit
df01f1a579
|
@ -21,7 +21,7 @@
|
||||||
},
|
},
|
||||||
"permissions": ["tabs", "webRequest"],
|
"permissions": ["tabs", "webRequest"],
|
||||||
"content_security_policy": {
|
"content_security_policy": {
|
||||||
"extension_pages": "default-src 'self'; script-src 'self' http://localhost:5173; style-src 'self' 'unsafe-inline'; connect-src 'self' ws://localhost:5173 https://monster-siren.hypergryph.com;",
|
"extension_pages": "default-src 'self'; script-src 'self' http://localhost:5173; style-src 'self' 'unsafe-inline'; connect-src 'self' ws://localhost:5173 https://monster-siren.hypergryph.com; img-src 'self' https://web.hycdn.cn;",
|
||||||
"sandbox": "sandbox"
|
"sandbox": "sandbox"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,39 +4,6 @@ const msrInstance = axios.create({
|
||||||
baseURL: 'https://monster-siren.hypergryph.com/api/',
|
baseURL: 'https://monster-siren.hypergryph.com/api/',
|
||||||
})
|
})
|
||||||
|
|
||||||
type SongList = {
|
|
||||||
list: Song[]
|
|
||||||
}
|
|
||||||
|
|
||||||
type Song = {
|
|
||||||
cid: string
|
|
||||||
name: string
|
|
||||||
albumCid: string
|
|
||||||
sourceUrl?: string
|
|
||||||
lyricUrl?: string | null
|
|
||||||
mvUrl?: string | null
|
|
||||||
mvCoverUrl?: string | null
|
|
||||||
artists: string[]
|
|
||||||
}
|
|
||||||
|
|
||||||
type Album = {
|
|
||||||
cid: string
|
|
||||||
name: string
|
|
||||||
intro?: string
|
|
||||||
belong?: string
|
|
||||||
coverUrl: string
|
|
||||||
coverDeUrl?: string
|
|
||||||
artistes: string[]
|
|
||||||
}
|
|
||||||
|
|
||||||
type AlbumList = Album[]
|
|
||||||
|
|
||||||
interface ApiResponse {
|
|
||||||
code: number
|
|
||||||
msg: string
|
|
||||||
data: unknown
|
|
||||||
}
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
async getSongs() {
|
async getSongs() {
|
||||||
const songs: {
|
const songs: {
|
||||||
|
|
|
@ -8,10 +8,20 @@
|
||||||
<div class="font-semibold text-white/50 text-xs mb-2">音乐库</div>
|
<div class="font-semibold text-white/50 text-xs mb-2">音乐库</div>
|
||||||
<ul class="flex flex-col gap-1">
|
<ul class="flex flex-col gap-1">
|
||||||
<li>
|
<li>
|
||||||
<RouterLink to="/"><div class="text-sm px-2 py-1 hover:bg-white/5 w-full text-left rounded-md">最新音乐</div></RouterLink>
|
<RouterLink to="/">
|
||||||
|
<div class="text-sm px-2 py-1 hover:bg-white/5 w-full text-left rounded-md">
|
||||||
|
<i class="ri-fire-line" />
|
||||||
|
<span>浏览</span>
|
||||||
|
</div>
|
||||||
|
</RouterLink>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<RouterLink to="/feelinglucky"><div class="text-sm px-2 py-1 hover:bg-white/5 w-full text-left rounded-md">手气不错</div></RouterLink>
|
<RouterLink to="/feelinglucky">
|
||||||
|
<div class="text-sm px-2 py-1 hover:bg-white/5 w-full text-left rounded-md">
|
||||||
|
<i class="ri-dice-5-line" />
|
||||||
|
<span>手气不错</span>
|
||||||
|
</div>
|
||||||
|
</RouterLink>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,13 +1,22 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import apis from '../apis'
|
import apis from '../apis'
|
||||||
import { onMounted } from 'vue'
|
import { onMounted, ref } from 'vue'
|
||||||
|
|
||||||
|
const albums = ref([] as AlbumList)
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
const res = await apis.getAlbums()
|
const res = await apis.getAlbums()
|
||||||
console.log(res)
|
albums.value = res
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="text-white">hello</div>
|
<div class="text-white flex flex-col gap-4 mb-16">
|
||||||
|
<h1 class="text-4xl font-semibold pt-8 px-4 sticky top-0 bg-gradient-to-b from-[#00000080] to-transparent">浏览</h1>
|
||||||
|
<div class="grid grid-cols-5">
|
||||||
|
<div v-for="album in albums" :key="album.cid">
|
||||||
|
<img :src="album.coverUrl" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
33
src/vite-env.d.ts
vendored
33
src/vite-env.d.ts
vendored
|
@ -1 +1,34 @@
|
||||||
/// <reference types="vite/client" />
|
/// <reference types="vite/client" />
|
||||||
|
|
||||||
|
type SongList = {
|
||||||
|
list: Song[]
|
||||||
|
}
|
||||||
|
|
||||||
|
type Song = {
|
||||||
|
cid: string
|
||||||
|
name: string
|
||||||
|
albumCid: string
|
||||||
|
sourceUrl?: string
|
||||||
|
lyricUrl?: string | null
|
||||||
|
mvUrl?: string | null
|
||||||
|
mvCoverUrl?: string | null
|
||||||
|
artists: string[]
|
||||||
|
}
|
||||||
|
|
||||||
|
type Album = {
|
||||||
|
cid: string
|
||||||
|
name: string
|
||||||
|
intro?: string
|
||||||
|
belong?: string
|
||||||
|
coverUrl: string
|
||||||
|
coverDeUrl?: string
|
||||||
|
artistes: string[]
|
||||||
|
}
|
||||||
|
|
||||||
|
type AlbumList = Album[]
|
||||||
|
|
||||||
|
interface ApiResponse {
|
||||||
|
code: number
|
||||||
|
msg: string
|
||||||
|
data: unknown
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user