新增插件市场手动刷新功能

This commit is contained in:
jxxghp
2025-06-09 20:35:05 +08:00
parent a2c176bdee
commit 1c62465c3e
+30 -3
View File
@@ -93,6 +93,9 @@ const SearchDialog = ref(false)
// 插件市场设置窗口 // 插件市场设置窗口
const MarketSettingDialog = ref(false) const MarketSettingDialog = ref(false)
// 插件市场刷新状态
const isMarketRefreshing = ref(false)
// 搜索关键字 // 搜索关键字
const keyword = ref('') const keyword = ref('')
@@ -651,12 +654,13 @@ async function fetchInstalledPlugins() {
} }
// 获取未安装插件列表数据 // 获取未安装插件列表数据
async function fetchUninstalledPlugins() { async function fetchUninstalledPlugins(force: boolean = false) {
try { try {
loading.value = true loading.value = true
uninstalledList.value = await api.get('plugin/', { uninstalledList.value = await api.get('plugin/', {
params: { params: {
state: 'market', state: 'market',
force: force,
}, },
}) })
// 设置更新状态 // 设置更新状态
@@ -762,6 +766,19 @@ function marketSettingDone() {
refreshData() refreshData()
} }
// 手动刷新插件市场
async function refreshMarket() {
isMarketRefreshing.value = true
try {
await fetchUninstalledPlugins(true)
await getPluginStatistics()
} catch (error) {
console.error(error)
} finally {
isMarketRefreshing.value = false
}
}
// 处理掉github地址的前缀 // 处理掉github地址的前缀
function handleRepoUrl(url: string | undefined) { function handleRepoUrl(url: string | undefined) {
if (!url) return '' if (!url) return ''
@@ -1336,6 +1353,16 @@ function onDragStartPlugin(evt: any) {
</VCardText> </VCardText>
</VCard> </VCard>
</VMenu> </VMenu>
<VBtn
v-if="activeTab === 'market'"
icon="mdi-refresh"
variant="text"
color="gray"
size="default"
class="settings-icon-button"
:loading="isMarketRefreshing"
@click="refreshMarket"
/>
<VBtn <VBtn
v-if="activeTab === 'market'" v-if="activeTab === 'market'"
icon="mdi-store-cog" icon="mdi-store-cog"
@@ -1456,10 +1483,10 @@ function onDragStartPlugin(evt: any) {
<VWindowItem value="market"> <VWindowItem value="market">
<transition name="fade-slide" appear> <transition name="fade-slide" appear>
<div> <div>
<LoadingBanner v-if="!isAppMarketLoaded" class="mt-12" /> <LoadingBanner v-if="!isAppMarketLoaded || isMarketRefreshing" class="mt-12" />
<!-- 资源列表 --> <!-- 资源列表 -->
<VInfiniteScroll <VInfiniteScroll
v-if="isAppMarketLoaded" v-if="isAppMarketLoaded && !isMarketRefreshing"
mode="intersect" mode="intersect"
side="end" side="end"
:items="displayUninstalledList" :items="displayUninstalledList"