mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-09-06 08:06:43 +08:00
fix: 优化插件市场刷新按钮状态
This commit is contained in:
@@ -10,6 +10,7 @@ interface DynamicHeaderTabButton {
|
|||||||
class?: string
|
class?: string
|
||||||
action?: () => void
|
action?: () => void
|
||||||
show?: boolean | ComputedRef<boolean>
|
show?: boolean | ComputedRef<boolean>
|
||||||
|
loading?: boolean | ComputedRef<boolean>
|
||||||
dataAttr?: string // 用于VMenu定位的data属性
|
dataAttr?: string // 用于VMenu定位的data属性
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ interface DynamicHeaderTab {
|
|||||||
class?: string
|
class?: string
|
||||||
action?: () => void
|
action?: () => void
|
||||||
show?: boolean | ComputedRef<boolean>
|
show?: boolean | ComputedRef<boolean>
|
||||||
|
loading?: boolean | ComputedRef<boolean>
|
||||||
dataAttr?: string
|
dataAttr?: string
|
||||||
}>
|
}>
|
||||||
routePath?: string // 用于标识哪个路由注册的
|
routePath?: string // 用于标识哪个路由注册的
|
||||||
@@ -395,6 +396,7 @@ onMounted(async () => {
|
|||||||
:color="typeof button.color === 'string' ? button.color : (button.color as any)?.value || 'gray'"
|
:color="typeof button.color === 'string' ? button.color : (button.color as any)?.value || 'gray'"
|
||||||
:size="button.size || 'default'"
|
:size="button.size || 'default'"
|
||||||
:class="button.class || 'settings-icon-button'"
|
:class="button.class || 'settings-icon-button'"
|
||||||
|
:loading="typeof button.loading === 'boolean' ? button.loading : (button.loading as any)?.value || false"
|
||||||
:data-menu-activator="button.dataAttr"
|
:data-menu-activator="button.dataAttr"
|
||||||
@click="button.action"
|
@click="button.action"
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -92,6 +92,7 @@ registerHeaderTab({
|
|||||||
variant: 'text',
|
variant: 'text',
|
||||||
color: 'gray',
|
color: 'gray',
|
||||||
class: 'settings-icon-button',
|
class: 'settings-icon-button',
|
||||||
|
loading: computed(() => isMarketRefreshing.value),
|
||||||
action: () => {
|
action: () => {
|
||||||
refreshMarket()
|
refreshMarket()
|
||||||
},
|
},
|
||||||
@@ -879,19 +880,16 @@ function marketSettingDone() {
|
|||||||
|
|
||||||
// 手动刷新插件市场
|
// 手动刷新插件市场
|
||||||
async function refreshMarket() {
|
async function refreshMarket() {
|
||||||
const showMarketLoading = !isAppMarketLoaded.value
|
if (isMarketRefreshing.value) return
|
||||||
if (showMarketLoading) {
|
|
||||||
isMarketRefreshing.value = true
|
isMarketRefreshing.value = true
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
await fetchUninstalledPlugins(true, { silent: isAppMarketLoaded.value, source: 'manual' })
|
await fetchUninstalledPlugins(true, { silent: false, source: 'manual' })
|
||||||
await getPluginStatistics()
|
await getPluginStatistics()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error)
|
console.error(error)
|
||||||
} finally {
|
} finally {
|
||||||
if (showMarketLoading) {
|
isMarketRefreshing.value = false
|
||||||
isMarketRefreshing.value = false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user