feat: 添加专辑浏览功能并优化侧边栏

在Home.vue中添加专辑浏览功能,显示专辑封面。将类型定义从apis/index.ts移动到vite-env.d.ts中以便全局使用。优化Sidebar.vue中的导航链接样式,添加图标。更新manifest.json以允许加载特定域名的图片资源。
This commit is contained in:
Astrian Zheng 2025-05-24 11:26:00 +10:00
parent a6ab9aacb5
commit df01f1a579
Signed by: Astrian
SSH Key Fingerprint: SHA256:rVnhx3DAKjujCwWE13aDl7uV6+9U1MvydLkNRXJrBiA
5 changed files with 58 additions and 39 deletions

View File

@ -21,7 +21,7 @@
},
"permissions": ["tabs", "webRequest"],
"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"
}
}

View File

@ -4,39 +4,6 @@ const msrInstance = axios.create({
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 {
async getSongs() {
const songs: {

View File

@ -8,10 +8,20 @@
<div class="font-semibold text-white/50 text-xs mb-2">音乐库</div>
<ul class="flex flex-col gap-1">
<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>
<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>
</ul>
</div>

View File

@ -1,13 +1,22 @@
<script setup lang="ts">
import apis from '../apis'
import { onMounted } from 'vue'
import { onMounted, ref } from 'vue'
const albums = ref([] as AlbumList)
onMounted(async () => {
const res = await apis.getAlbums()
console.log(res)
albums.value = res
})
</script>
<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>

33
src/vite-env.d.ts vendored
View File

@ -1 +1,34 @@
/// <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
}