fix(frontend): isolate account helper data loading

This commit is contained in:
wucm667
2026-08-17 11:04:50 +08:00
parent 396a9d1130
commit 1977810cf2
2 changed files with 27 additions and 7 deletions
+13 -6
View File
@@ -2454,12 +2454,19 @@ onMounted(async () => {
load()
loadUpstreamBillingProbeGlobalState()
try {
const [p, g] = await Promise.all([adminAPI.proxies.getAll(), adminAPI.groups.getAll()])
proxies.value = p
groups.value = g
} catch (error) {
console.error('Failed to load proxies/groups:', error)
const [proxiesResult, groupsResult] = await Promise.allSettled([
adminAPI.proxies.getAll(),
adminAPI.groups.getAll()
])
if (proxiesResult.status === 'fulfilled') {
proxies.value = proxiesResult.value
} else {
console.error('Failed to load proxies:', proxiesResult.reason)
}
if (groupsResult.status === 'fulfilled') {
groups.value = groupsResult.value
} else {
console.error('Failed to load groups:', groupsResult.reason)
}
window.addEventListener('scroll', handleScroll, true)
window.addEventListener('resize', handleViewportResize)
@@ -101,7 +101,10 @@ function mountView() {
Pagination: true,
ConfirmDialog: true,
AccountTableActions: { template: '<div><slot name="beforeCreate" /><slot name="after" /></div>' },
AccountTableFilters: { template: '<div></div>' },
AccountTableFilters: {
props: ['groups'],
template: '<div data-test="account-filters" :data-group-count="groups.length"></div>'
},
AccountBulkActionsBar: true,
AccountActionMenu: true,
ImportDataModal: true,
@@ -155,6 +158,16 @@ describe('admin AccountsView usage windows hint', () => {
getAllGroups.mockResolvedValue([])
})
it('keeps groups available when loading proxies fails', async () => {
getAllProxies.mockRejectedValue(new Error('proxy service unavailable'))
getAllGroups.mockResolvedValue([{ id: 7, name: 'production' }])
const wrapper = mountView()
await flushPromises()
expect(wrapper.get('[data-test="account-filters"]').attributes('data-group-count')).toBe('1')
})
it('renders an explanatory tooltip next to the usage windows column header', async () => {
const wrapper = mountView()
await flushPromises()